diff --git a/PySONIC/core/__init__.py b/PySONIC/core/__init__.py index 8811ce2..cf0b3a1 100644 --- a/PySONIC/core/__init__.py +++ b/PySONIC/core/__init__.py @@ -1,48 +1,48 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-06-06 13:36:00 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-01-30 12:39:04 +# @Last Modified time: 2020-02-03 16:58:45 from types import MethodType import inspect import sys from .simulators import * from .batches import * from .model import * from .pneuron import * from .bls import * from .translators import * from .nbls import * from .vclamp import * from .lookups import * from .protocols import * -from .sources import * +from .drives import * from ..neurons import getPointNeuron def getModelsDict(): ''' Construct a dictionary of all model classes, indexed by simulation key. ''' current_module = sys.modules[__name__] models_dict = {} for _, obj in inspect.getmembers(current_module): if inspect.isclass(obj) and hasattr(obj, 'simkey') and isinstance(obj.simkey, str): models_dict[obj.simkey] = obj return models_dict # Add an initFromMeta method to the Pointneuron class (done here to avoid circular import) PointNeuron.initFromMeta = MethodType( lambda self, meta: getPointNeuron(meta['neuron']), PointNeuron) models_dict = getModelsDict() def getModel(meta): ''' Return appropriate model object based on a dictionary of meta-information. ''' simkey = meta['simkey'] try: return models_dict[simkey].initFromMeta(meta) except KeyError: raise ValueError(f'Unknown model type:{simkey}') diff --git a/PySONIC/core/astim_titrations.log b/PySONIC/core/astim_titrations.log index 9c16ed6..e310df6 100644 --- a/PySONIC/core/astim_titrations.log +++ b/PySONIC/core/astim_titrations.log @@ -1,1467 +1,1468 @@ -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.96, method='sonic', xfunc=None, Arange=None) 82360.83984374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.97, method='sonic', xfunc=None, Arange=None) 78131.10351562494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35430.908203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 100000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35559.082031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 36099.243164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 1000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 37023.925781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 2000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 3000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 41491.69921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 44201.66015624997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 -titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 45318.60351562497 -titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 34787.75024414061 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 33755.493164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 38809.20410156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 527188.1103515623 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 405725.09765624977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 322375.48828124977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 262774.6582031249 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 219396.97265624988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 44879.15039062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.96, method='sonic', xfunc=None, Arange=None) 82360.83984374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.97, method='sonic', xfunc=None, Arange=None) 78131.10351562494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35430.908203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 100000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35559.082031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 36099.243164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 1000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 37023.925781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 2000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 3000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 41491.69921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 44201.66015624997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 -titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 45318.60351562497 -titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 34787.75024414061 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 33755.493164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 149450.68359374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 209362.79296874988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 275592.0410156249 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 238970.94726562488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 321130.37109374977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 452453.61328124977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 165948.48632812488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 548419.1894531248 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 70715.33203124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 378652.95410156227 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 135855.10253906244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 124035.64453124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 67932.12890624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 74157.71484374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 114367.67578124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 65313.72070312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105871.58203124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98565.67382812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 77984.61914062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82086.18164062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 185815.14358520496 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 86773.68164062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92427.06298828119 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 62878.41796874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 58630.37109374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 49694.82421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 52331.54296874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 50939.94140624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 60562.13378906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 55288.69628906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 56900.02441406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 48669.43359374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 53750.61035156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 46765.13671874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 47676.08642578122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 41931.15234374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 45840.45410156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 43395.99609374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45007.32421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 42663.57421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40264.89257812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 41345.21484374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 39752.19726562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 40786.74316406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 44162.750244140596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 39294.43359374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 38342.28515624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 38800.04882812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 37481.689453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 37902.83203124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37097.167968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 36291.503906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 36676.025390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 35925.292968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 35577.392578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 33947.753906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34419.250488281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 35266.113281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34185.791015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33288.574218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 34931.945800781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33068.847656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 34680.175781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 32867.431640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 32482.910156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 32702.636718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 30889.892578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 31842.041015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 453479.00390624977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 378845.21484374977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 31695.556640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 551065.0634765623 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 320798.4924316404 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 31475.830078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 275015.2587890624 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 238311.76757812488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 208648.68164062488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 185192.87109374988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 148937.98828124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 165417.48046874988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 135479.73632812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 31402.587890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 123687.74414062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 114147.94921874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 31329.345703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105670.16601562494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98474.12109374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92395.01953124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 31269.836425781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 70935.05859374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 78112.79296874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 86789.70336914057 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 68151.85546874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 65588.37890624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 74336.24267578122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82168.57910156244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31237.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31182.861328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 63132.476806640596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 60859.68017578122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 58882.14111328122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 57197.57080078122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 55627.44140624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 54089.35546874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31127.643585205064 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31091.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 49035.64453124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 51324.46289062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 50061.03515624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 52660.56060791013 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 46252.44140624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 47131.34765624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 48044.586181640596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31052.39868164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45405.57861328122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 30944.824218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 43835.44921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 30963.134765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 43103.02734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 44599.91455078122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 42398.07128906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 41217.04101562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 41743.46923828122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40704.34570312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 40205.38330078122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 39733.88671874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 38854.98046874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 39294.43359374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 37243.652343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 36877.441406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 38003.54003906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 38415.52734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37609.86328124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 36163.330078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 35504.150390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 35852.050781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34753.417968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 34313.964843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34973.144531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 34533.691406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 35211.181640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 34094.238281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33892.822265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33526.611328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33361.816406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 33027.648925781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 33215.332031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32775.878906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32883.45336914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 583190.9179687498 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32409.667968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32510.375976562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 494219.97070312477 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 289270.0195312499 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 414033.508300781 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 339321.89941406227 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 261895.75195312488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32217.407226562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 229531.86035156238 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 196691.89453124988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 174133.30078124988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 161682.12890624988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 105944.82421874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 110778.80859374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 122515.86914062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 137837.2192382812 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 116070.55664062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 150731.2774658202 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 101495.36132812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 94885.25390624994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32061.767578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 88897.70507812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31915.283203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 84191.89453124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 81262.20703124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 73645.01953124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 78511.04736328119 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31851.196289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 71447.75390624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 69689.94140624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 68005.37109374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 66421.50878906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 64947.50976562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 63555.90820312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 62246.70410156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 61047.36328124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 59875.48828124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 58850.09765624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 57824.70703124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31622.314453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31750.488281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31786.53717041014 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 55993.65234374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 56890.86914062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 55133.05664062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39953.61328124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 53576.66015624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 54327.39257812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 52111.81640624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 52803.03955078122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 51452.63671874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 49694.82421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 50793.45703124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 49255.37109374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 50161.74316406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 48834.22851562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 48449.70703124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 48037.71972656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 47662.35351562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 46618.65234374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 47296.14257812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 46945.953369140596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 45666.50390624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 46284.48486328122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 45977.78320312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 45373.53515624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 44815.06347656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 45098.87695312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 44567.87109374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 44055.17578124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 43835.44921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 44302.36816406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 43615.72265624997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 43048.09570312497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 43395.99609374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 43208.31298828122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 42883.30078124997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 42736.81640624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 42590.33203124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 42443.84765624997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 495007.32421874977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 42315.67382812497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 574420.1660156248 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 406484.98535156227 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 42182.92236328122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 532608.0322265623 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 382946.77734374977 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 432785.7971191404 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 462668.6096191404 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 361047.36328124977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 42077.63671874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 41949.46289062497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 292272.9492187499 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 65075.68359374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 323986.81640624977 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 341564.94140624977 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 278869.6289062499 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 307507.32421874977 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 266198.7304687499 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 254214.47753906238 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 233404.54101562488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 243235.0158691405 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 41802.97851562497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 224038.69628906238 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 215167.23632812488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 206726.07421874988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 41638.18359374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 199346.92382812488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 192297.36328124988 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 173034.66796874988 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 185577.39257812488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 179141.23535156238 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 167642.21191406238 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 162506.10351562488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 157580.56640624988 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 152819.82421874988 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 143975.83007812494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 140148.92578124994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 148237.6098632812 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 41271.97265624997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 129455.56640624994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 132897.94921874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 41445.92285156247 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 136441.04003906244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 41125.48828124997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 126159.66796874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 40937.80517578122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 122937.01171874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 120007.32421874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 112188.72070312494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 117315.67382812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 40777.58789062497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 109753.41796874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 102868.65234374994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 114697.19409942621 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 105084.22851562494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 107370.75805664057 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 100817.87109374994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 98931.88476562494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 93640.13671874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 97114.56298828119 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 90344.23828124994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 91973.87695312494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 95352.17285156244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 40631.10351562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 40319.82421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 40134.429931640596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 40466.30859374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 88764.95361328119 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 87229.15649414057 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 85748.29101562494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 83120.72753906244 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 81921.38671874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 84372.71118164057 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 80694.58007812494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 78405.76171874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 79531.86035156244 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 77307.12890624994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 76208.49609374994 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 515176.39160156227 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 73132.32421874997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 74116.51611328122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 75145.33996582025 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 234283.44726562488 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 72134.39941406247 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 328985.59570312477 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 112316.89453124994 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 137750.24414062494 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 175259.39941406238 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 71887.20703124997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 94519.04296874994 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 71186.82861328122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 70367.43164062497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 69561.76757812497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 81573.48632812494 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 68769.83642578122 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 68005.37109374997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 64888.00048828122 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 54766.84570312497 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 66540.52734374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 67272.94921874997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 65808.10546874997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 50958.25195312497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 59028.62548828122 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 48101.80664062497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 45739.74609374997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 43615.72265624997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 35119.628906249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 36163.330078124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 41711.42578124997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 37059.4024658203 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 35440.063476562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 35147.094726562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 38067.62695312497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 35073.852539062485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 40393.06640624997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 34753.417968749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 34918.212890624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 34419.250488281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 34606.933593749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 33975.219726562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 34268.188476562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 34121.704101562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 33837.31842041014 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 33581.542968749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 32807.922363281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 33233.642578124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 33361.816406249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 33462.524414062485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 32922.363281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 33142.089843749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 33013.916015624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 32720.947265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 32556.152343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 32441.711425781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 32363.891601562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 32281.494140624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 32208.251953124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 32061.767578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 31842.041015624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 31915.283203124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 31777.954101562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 31711.57836914061 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 527188.1103515623 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 405725.09765624977 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 31420.612335205064 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 322375.48828124977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 262774.6582031249 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 219396.97265624988 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 31384.277343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 31549.072265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 142785.64453124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 187042.23632812488 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 31475.830078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 127844.23828124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 115612.79296874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 162300.10986328113 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 105578.61328124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 97375.48828124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 90563.96484374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 84503.17382812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 71594.23828124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 75549.31640624994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 79815.67382812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 68518.06640624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 65734.86328124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 63125.61035156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 60708.61816406247 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 31329.345703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 58703.61328124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 55407.71484374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 53869.62890624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 56980.133056640596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 52478.02734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 51104.73632812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 48916.62597656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 49868.77441406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 48010.25390624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 47149.65820312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 46343.99414062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 44805.90820312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 45547.48535156247 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31237.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 44082.64160156247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 43414.30664062497 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 31265.258789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 42755.12695312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 42150.87890624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 41592.40722656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 41143.79882812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 40713.50097656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 40319.82421874997 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31182.861328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 39147.94921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 39514.16015624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 39898.68164062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 38781.73828124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 38415.52734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 37417.602539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 37756.34765624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 37115.478515624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 38076.78222656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 36804.199218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31036.376953124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 36236.572265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 35952.758789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 35705.566406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 35440.063476562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 35192.871093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 34991.455078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 34826.660156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 34634.399414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 34460.449218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34313.964843749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31123.352050781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 33966.064453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34126.281738281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 30905.91430664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 33673.095703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 33819.580078124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 30963.134765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33380.126953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33233.642578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33096.313476562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31091.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 32849.121093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 32995.605468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32720.947265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32510.375976562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32409.667968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32263.183593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32189.941406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32079.792022705064 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32043.457031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31970.214843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31896.972656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31823.730468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31768.798828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31622.314453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31713.795661926255 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31567.311286926255 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 266784.6679687499 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 435681.15234374977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 232067.87109374988 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 181329.34570312488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 365020.75195312477 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 310144.04296874977 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 203758.6212158202 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 528221.5118408201 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 162725.83007812488 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 134234.61914062494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 87432.86132812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 146905.51757812494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 68884.27734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 71667.48046874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 122955.32226562494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 75109.86328124994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 113854.98046874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98767.08984374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92861.93847656244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105743.40820312494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82800.29296874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 78807.44934082025 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 66275.02441406247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 59509.27734374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 61594.390869140596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 63862.60986328122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 57824.70703124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 56213.37890624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 54693.60351562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 51892.08984374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 50601.19628906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 53244.781494140596 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 49475.09765624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 46691.89453124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 47570.80078124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 48522.94921874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45831.29882812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 45007.32421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 44219.97070312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 43487.54882812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 41510.00976562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 42764.28222656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 42095.94726562497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40979.00390624997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 40026.85546874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 40484.61914062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 39532.47070312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 39093.01757812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 38653.56445312497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 37463.378906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37829.58984374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 38227.84423828122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 36730.957031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 36364.746093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 37058.25805664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 35119.628906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 35412.597656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 35705.566406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 36016.845703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34858.703613281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 34020.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 34634.399414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 34414.672851562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 34202.9571533203 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33819.580078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33435.058593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 33288.574218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 33103.17993164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33615.87524414061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 101577.75878906244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32807.922363281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32949.829101562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 62750.24414062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 46797.18017578122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32702.636718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 38369.75097656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32556.152343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 30450.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 28527.832031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32437.133789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32263.183593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 27282.714843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32070.922851562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32148.742675781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31997.680664062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 25633.621215820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31924.438476562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 24973.29711914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31489.562988281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 24751.281738281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 23428.344726562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 23199.462890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 23693.847656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 23945.617675781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 22622.680664062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 22988.891601562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 22467.041015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 22174.072265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 21954.345703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 22045.32623291014 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 21524.047851562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 21459.38873291014 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 21384.42993164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 21239.089965820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 21162.414550781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21091.46118164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21084.594726562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21011.352539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 20942.687988281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 20938.110351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 102447.50976562494 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 63629.15039062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 47644.04296874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 39093.01757812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 34121.704101562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29132.080078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 31125.64086914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28179.931640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27502.441406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 26989.746093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26330.566406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25469.970703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25266.26586914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 20864.868164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25186.157226562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 20871.73461914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25112.915039062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25044.250488281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 20869.445800781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24751.281738281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 20000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24426.269531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24133.300781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23492.431640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23281.860351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 22996.902465820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22760.009765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22833.251953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22613.525390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22540.283203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22476.196289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22409.82055664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22027.587890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21807.861328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21524.047851562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21457.67211914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21377.563476562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 125720.21484374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 82168.57910156244 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 63464.35546874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 51306.15234374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 44366.45507812497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 40466.30859374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 38195.80078124997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21235.656738281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 35192.871093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 34259.033203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 33526.611328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 32940.673828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 32427.978515624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 31311.035156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 30743.408203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 30303.955078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 30505.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 30139.160156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 29946.899414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 29791.259765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 29644.775390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 29515.457153320298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 29406.738281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 29260.253906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 28994.750976562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21089.172363281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 28775.024414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 28601.074218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 28381.347656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 28234.863281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 27886.962890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 28042.602539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 27740.478515624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 27593.994140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 27461.242675781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 27355.957031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 27227.783203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 27099.323272705064 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 27008.056640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 26916.503906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 26715.087890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 26477.050781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 26550.292968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 26364.89868164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 26797.485351562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 26289.367675781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 26218.41430664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 26184.082031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 25964.355468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 26037.597656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 25909.423828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 25845.336914062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 25543.212890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 25630.187988281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 25451.660156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 25524.902343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 25405.883789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 25305.175781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 25332.641601562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 25250.244140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 25231.933593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 25112.915039062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 25030.517578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 25046.53930664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 24957.275390624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 533679.1992187498 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 279089.3554687499 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 24901.77154541014 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 149482.7270507812 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 93200.68359374994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 67817.68798828122 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 24824.523925781235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 54968.26171874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 47497.55859374997 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 42617.79785156247 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 39605.71289062497 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 24753.57055664061 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 37316.894531249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 35412.597656249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 34167.480468749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 33215.332031249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 24737.548828124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 32363.891601562485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 31631.469726562485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 30432.128906249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 29919.433593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 28747.558593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 29067.993164062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 28454.589843749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 29443.216323852525 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 28161.621093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 27648.925781249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 27886.962890624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 27227.783203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 27429.199218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 27062.988281249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 26861.572265624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 26696.777343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 26257.324218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 26403.808593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 26550.292968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 24453.735351562485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 26129.150390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 25776.672363281235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 25999.832153320298 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 25483.703613281235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 25396.728515624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 25231.933593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 25323.486328124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 4000000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 24385.070800781235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 24819.946289062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 24754.714965820298 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 24426.269531249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 24060.058593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 24151.611328124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 24234.008789062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 23913.574218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 23767.089843749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 23693.847656249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 23547.363281249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 23419.189453124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 23345.947265624985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 23286.437988281235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 23254.394531249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 23126.220703124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 23062.133789062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 23034.667968749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 22888.183593749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 22769.165039062485 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 22741.699218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 22668.457031249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 22595.214843749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 22556.30493164061 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 22480.773925781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) nan -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 22407.531738281235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 22334.289550781235 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 29772.949218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 22229.003906249985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 27429.199218749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 22174.072265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 22114.562988281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 25524.902343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 25323.486328124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 25186.157226562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 24893.188476562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 24819.946289062485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 24737.548828124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 24673.461914062485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24600.219726562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24600.219726562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 24206.542968749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 24078.369140624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23941.040039062485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23492.431640624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23583.41217041014 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23281.860351562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 23199.462890624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 23034.667968749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22773.742675781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22846.984863281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22627.258300781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22700.500488281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22595.214843749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22320.556640624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22261.047363281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22100.830078124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22229.003906249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21963.500976562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21881.103515624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21675.109863281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21748.352050781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21601.867675781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21514.892578124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 89792.63305664057 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21450.805664062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 55700.68359374997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 42984.00878906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 36616.516113281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 33068.847656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 30757.141113281235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29205.322265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27960.205078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28527.832031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 27520.751953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 27154.541015624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21385.574340820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26843.261718749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26577.758789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 26146.88873291014 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25982.666015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21308.898925781235 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25556.945800781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25451.660156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25250.244140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25341.22467041014 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21237.94555664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 25103.759765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 25030.517578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24966.430664062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24608.230590820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24499.511718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 24151.611328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24311.828613281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 24005.126953124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23858.642578124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23721.313476562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23254.394531249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23359.680175781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 23052.978515624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22888.183593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21084.594726562485 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22741.699218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22630.691528320298 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22557.449340820298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22036.743164062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21954.345703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21894.836425781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21817.016601562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21597.290039062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21528.625488281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21384.42993164061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21308.898925781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 102429.19921874994 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 63757.32421874997 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21237.94555664061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 47744.75097656247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 34167.480468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 39175.41503906247 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 31164.550781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29132.080078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28161.621093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21089.172363281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 26989.746093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27461.242675781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26330.566406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25469.970703124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25259.399414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25103.759765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25039.672851562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24746.704101562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24827.957153320298 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24387.35961914061 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24238.586425781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24092.102050781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23272.705078124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 22993.469238281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22833.251953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22760.009765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22540.283203124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22613.525390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22476.196289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22407.531738281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22027.587890624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21807.861328124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21514.892578124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21377.563476562485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21455.383300781235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21235.656738281235 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), 500000.0, PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21796.875 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 30078.125 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 38203.125 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 46328.125 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 46328.125 -titrate(NeuronalBilayerSonophore(32.0 nm, ThalamicRE), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 43710.9375 -titrate(NeuronalBilayerSonophore(32.0 nm, FrankenhaeuserHuxley), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 86054.6875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 36093.75 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 35429.6875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 100000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 35546.875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 1000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 37031.25 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 2000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 39179.6875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 3000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 41484.375 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 44218.75 -titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 76015.625 -titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 45312.5 -titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 34804.6875 -titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), 500000.0, PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 33828.125 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 20000.0, PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 137929.6875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 141484.375 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 1000000.0, PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 149921.875 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 2000000.0, PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 185781.25 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 4000000.0, PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 213984.375 -titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), 500000.0, PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 38828.125 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.96, method='sonic', xfunc=None, Arange=None) 82360.83984374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.97, method='sonic', xfunc=None, Arange=None) 78131.10351562494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35430.908203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(100.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35559.082031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 36099.243164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(1.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 37023.925781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(2.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(3.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 41491.69921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 44201.66015624997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 +titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 45318.60351562497 +titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 34787.75024414061 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 33755.493164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 38809.20410156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 527188.1103515623 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 405725.09765624977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 322375.48828124977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 262774.6582031249 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 219396.97265624988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 44879.15039062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.96, method='sonic', xfunc=None, Arange=None) 82360.83984374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.50), fs=0.97, method='sonic', xfunc=None, Arange=None) 78131.10351562494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35430.908203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(100.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 35559.082031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 36099.243164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(1.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 37023.925781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(2.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(3.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 41491.69921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 44201.66015624997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 +titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 45318.60351562497 +titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 34787.75024414061 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 33755.493164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 149450.68359374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 209362.79296874988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 275592.0410156249 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 238970.94726562488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 321130.37109374977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 452453.61328124977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 165948.48632812488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 548419.1894531248 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 70715.33203124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 378652.95410156227 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 135855.10253906244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 124035.64453124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 67932.12890624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 74157.71484374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 114367.67578124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 65313.72070312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105871.58203124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98565.67382812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 77984.61914062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82086.18164062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 185815.14358520496 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 86773.68164062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92427.06298828119 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 62878.41796874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 58630.37109374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 49694.82421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 52331.54296874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 50939.94140624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 60562.13378906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 55288.69628906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 56900.02441406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 48669.43359374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 53750.61035156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 46765.13671874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 47676.08642578122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 41931.15234374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 45840.45410156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 43395.99609374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45007.32421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 42663.57421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40264.89257812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 41345.21484374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 39752.19726562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 40786.74316406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 44162.750244140596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 39294.43359374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 38342.28515624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 38800.04882812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 37481.689453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 37902.83203124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37097.167968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 36291.503906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 36676.025390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 35925.292968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 35577.392578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 33947.753906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34419.250488281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 35266.113281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34185.791015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33288.574218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 34931.945800781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33068.847656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 34680.175781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 32867.431640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 32482.910156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 32702.636718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 30889.892578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 31842.041015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 453479.00390624977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 378845.21484374977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 31695.556640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 551065.0634765623 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 320798.4924316404 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 31475.830078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 275015.2587890624 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 238311.76757812488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 208648.68164062488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 185192.87109374988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 148937.98828124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 165417.48046874988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 135479.73632812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 31402.587890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 123687.74414062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 114147.94921874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 31329.345703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105670.16601562494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98474.12109374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92395.01953124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 31269.836425781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 70935.05859374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 78112.79296874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 86789.70336914057 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 68151.85546874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 65588.37890624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 74336.24267578122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82168.57910156244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31237.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31182.861328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 63132.476806640596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 60859.68017578122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 58882.14111328122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 57197.57080078122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 55627.44140624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 54089.35546874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31127.643585205064 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31091.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 49035.64453124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 51324.46289062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 50061.03515624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 52660.56060791013 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 46252.44140624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 47131.34765624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 48044.586181640596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31052.39868164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45405.57861328122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 30944.824218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 43835.44921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 30963.134765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 43103.02734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 44599.91455078122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 42398.07128906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 41217.04101562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 41743.46923828122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40704.34570312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 40205.38330078122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 39733.88671874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 38854.98046874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 39294.43359374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 37243.652343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 36877.441406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 38003.54003906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 38415.52734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37609.86328124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 36163.330078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 35504.150390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 35852.050781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34753.417968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 34313.964843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34973.144531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 34533.691406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 35211.181640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 34094.238281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33892.822265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33526.611328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33361.816406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 33027.648925781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 33215.332031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32775.878906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32883.45336914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 583190.9179687498 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32409.667968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32510.375976562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 494219.97070312477 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 289270.0195312499 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 414033.508300781 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 339321.89941406227 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 261895.75195312488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32217.407226562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 229531.86035156238 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 196691.89453124988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 174133.30078124988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 161682.12890624988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 105944.82421874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 110778.80859374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 122515.86914062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 137837.2192382812 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 116070.55664062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 150731.2774658202 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 101495.36132812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 94885.25390624994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32061.767578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 88897.70507812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31915.283203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 84191.89453124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 81262.20703124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 75988.76953124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 73645.01953124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 78511.04736328119 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31851.196289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 71447.75390624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 69689.94140624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 68005.37109374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 66421.50878906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 64947.50976562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 63555.90820312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 62246.70410156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 61047.36328124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 59875.48828124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 58850.09765624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 57824.70703124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31622.314453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31750.488281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31786.53717041014 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 55993.65234374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 56890.86914062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 55133.05664062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 39953.61328124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 53576.66015624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 54327.39257812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 52111.81640624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 52803.03955078122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 51452.63671874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 49694.82421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 50793.45703124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 49255.37109374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 50161.74316406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 48834.22851562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 48449.70703124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 48037.71972656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 47662.35351562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 46618.65234374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 47296.14257812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 46945.953369140596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 45666.50390624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 46284.48486328122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 45977.78320312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 45373.53515624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 44815.06347656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 45098.87695312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 44567.87109374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 44055.17578124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 43835.44921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 44302.36816406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 43615.72265624997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 43048.09570312497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 43395.99609374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 43208.31298828122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 42883.30078124997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 42736.81640624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 42590.33203124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 42443.84765624997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 495007.32421874977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 42315.67382812497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 574420.1660156248 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 406484.98535156227 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 42182.92236328122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 532608.0322265623 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 382946.77734374977 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 432785.7971191404 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 462668.6096191404 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 361047.36328124977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 42077.63671874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 41949.46289062497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 292272.9492187499 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 65075.68359374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 323986.81640624977 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 341564.94140624977 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 278869.6289062499 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 307507.32421874977 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 266198.7304687499 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 254214.47753906238 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 233404.54101562488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 243235.0158691405 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 41802.97851562497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 224038.69628906238 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 215167.23632812488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 206726.07421874988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 41638.18359374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 199346.92382812488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 192297.36328124988 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 173034.66796874988 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 185577.39257812488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 179141.23535156238 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 167642.21191406238 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 162506.10351562488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 157580.56640624988 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 152819.82421874988 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 143975.83007812494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 140148.92578124994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 148237.6098632812 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 41271.97265624997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 129455.56640624994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 132897.94921874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 41445.92285156247 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 136441.04003906244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 41125.48828124997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 126159.66796874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 40937.80517578122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 122937.01171874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 120007.32421874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 112188.72070312494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 117315.67382812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 40777.58789062497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 109753.41796874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 102868.65234374994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 114697.19409942621 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 105084.22851562494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 107370.75805664057 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 100817.87109374994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 98931.88476562494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 93640.13671874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 97114.56298828119 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 90344.23828124994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 91973.87695312494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 95352.17285156244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 40631.10351562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 40319.82421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 40134.429931640596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 40466.30859374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 88764.95361328119 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 87229.15649414057 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 85748.29101562494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 83120.72753906244 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 81921.38671874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 84372.71118164057 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 80694.58007812494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 78405.76171874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 79531.86035156244 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 77307.12890624994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 76208.49609374994 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 515176.39160156227 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 73132.32421874997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 74116.51611328122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 75145.33996582025 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 234283.44726562488 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 72134.39941406247 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 328985.59570312477 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 112316.89453124994 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 137750.24414062494 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 175259.39941406238 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 71887.20703124997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 94519.04296874994 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 71186.82861328122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 70367.43164062497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 69561.76757812497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 81573.48632812494 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 68769.83642578122 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 68005.37109374997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 64888.00048828122 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 54766.84570312497 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 66540.52734374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 67272.94921874997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 65808.10546874997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 50958.25195312497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 59028.62548828122 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 48101.80664062497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 45739.74609374997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 43615.72265624997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 35119.628906249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 36163.330078124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 41711.42578124997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 37059.4024658203 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 35440.063476562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 35147.094726562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 39166.25976562497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 38067.62695312497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 35073.852539062485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 40393.06640624997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 35064.697265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 34753.417968749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 35046.386718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 34918.212890624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 34419.250488281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 34606.933593749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 33975.219726562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 33728.027343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 34268.188476562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 34121.704101562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 33837.31842041014 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 33581.542968749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 32807.922363281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 33233.642578124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 33361.816406249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 33462.524414062485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 32922.363281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 33142.089843749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 33013.916015624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 32720.947265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 32556.152343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 32441.711425781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 32363.891601562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 32281.494140624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 32208.251953124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 32135.009765624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 32061.767578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 31842.041015624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 31915.283203124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 31777.954101562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 31711.57836914061 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 527188.1103515623 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 405725.09765624977 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 31420.612335205064 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 322375.48828124977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 262774.6582031249 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 219396.97265624988 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 31384.277343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 31549.072265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 142785.64453124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 187042.23632812488 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 31475.830078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 127844.23828124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 115612.79296874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 162300.10986328113 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 105578.61328124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 97375.48828124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 90563.96484374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 84503.17382812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 71594.23828124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 75549.31640624994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 79815.67382812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 68518.06640624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 65734.86328124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 63125.61035156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 60708.61816406247 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 31329.345703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 58703.61328124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 55407.71484374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 53869.62890624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 56980.133056640596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 52478.02734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 51104.73632812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 48916.62597656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 49868.77441406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 48010.25390624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 47149.65820312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 46343.99414062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 44805.90820312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 45547.48535156247 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31237.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 44082.64160156247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 43414.30664062497 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 31265.258789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 42755.12695312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 42150.87890624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 41592.40722656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 41143.79882812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 40713.50097656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 40319.82421874997 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31182.861328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 39147.94921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 39514.16015624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 39898.68164062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 38781.73828124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 38415.52734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 37417.602539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 37756.34765624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 37115.478515624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 38076.78222656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 36804.199218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31036.376953124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 36236.572265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 35952.758789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 35705.566406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 35440.063476562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 35192.871093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 34991.455078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 34826.660156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 34634.399414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 34460.449218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 34313.964843749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31123.352050781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 33966.064453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34126.281738281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 30905.91430664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 33673.095703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 33819.580078124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 30963.134765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33380.126953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33233.642578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33096.313476562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31091.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 32849.121093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 32995.605468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32720.947265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32629.394531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32510.375976562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32409.667968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32263.183593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32189.941406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32079.792022705064 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32043.457031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31970.214843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31896.972656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31823.730468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31768.798828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31677.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31622.314453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31713.795661926255 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31567.311286926255 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 266784.6679687499 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 435681.15234374977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 232067.87109374988 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 181329.34570312488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 365020.75195312477 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 310144.04296874977 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 203758.6212158202 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 528221.5118408201 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 162725.83007812488 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 134234.61914062494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 87432.86132812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 146905.51757812494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 68884.27734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 71667.48046874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 122955.32226562494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 75109.86328124994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 113854.98046874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 98767.08984374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 92861.93847656244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 105743.40820312494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 82800.29296874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 78807.44934082025 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 66275.02441406247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 59509.27734374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 61594.390869140596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 63862.60986328122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 57824.70703124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 56213.37890624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 54693.60351562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 51892.08984374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 50601.19628906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 53244.781494140596 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 49475.09765624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 46691.89453124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 47570.80078124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 48522.94921874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 45831.29882812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 45007.32421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 44219.97070312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 43487.54882812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 41510.00976562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 42764.28222656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 42095.94726562497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 40979.00390624997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 40026.85546874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 40484.61914062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 39532.47070312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 39093.01757812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 38653.56445312497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 37463.378906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 37829.58984374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 38227.84423828122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 36730.957031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 36364.746093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 37058.25805664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 35119.628906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 35412.597656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 35705.566406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 36016.845703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 34858.703613281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 34020.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 34634.399414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 34414.672851562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 34202.9571533203 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 33819.580078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 33435.058593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 33288.574218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 33103.17993164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 33615.87524414061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 101577.75878906244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 32807.922363281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 32949.829101562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 62750.24414062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 46797.18017578122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 32702.636718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 38369.75097656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 33508.300781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 32556.152343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 30450.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 32336.425781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 28527.832031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 32437.133789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 32263.183593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 27282.714843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 32070.922851562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 32148.742675781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 31997.680664062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 25633.621215820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 31924.438476562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 31530.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 24973.29711914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 31489.562988281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 24751.281738281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 31484.985351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 23428.344726562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 23199.462890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 23693.847656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 23945.617675781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 22622.680664062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 22988.891601562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 22467.041015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 22174.072265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 21954.345703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 22045.32623291014 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 21524.047851562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 21459.38873291014 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 21384.42993164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 21239.089965820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 21162.414550781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21091.46118164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21084.594726562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21011.352539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 20983.886718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 20942.687988281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 20938.110351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 102447.50976562494 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 63629.15039062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 47644.04296874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 39093.01757812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 20928.955078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 34121.704101562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29132.080078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 31125.64086914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28179.931640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27502.441406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 26989.746093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26330.566406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25469.970703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 20910.644531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25266.26586914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 20864.868164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25186.157226562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 20871.73461914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25112.915039062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25044.250488281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 20869.445800781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 20855.712890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24751.281738281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(20.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 20837.402343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24426.269531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24133.300781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23492.431640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23281.860351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 22996.902465820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22760.009765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22833.251953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22613.525390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22540.283203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22476.196289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22409.82055664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22027.587890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21807.861328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21524.047851562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21457.67211914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21377.563476562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 125720.21484374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 82168.57910156244 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 63464.35546874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 51306.15234374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 44366.45507812497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 40466.30859374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 38195.80078124997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21235.656738281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 36511.230468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 35192.871093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 34259.033203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 33526.611328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 32940.673828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 32427.978515624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 31988.525390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 31604.003906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 31311.035156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 30743.408203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 30303.955078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 30505.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 30139.160156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 29946.899414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 29791.259765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 29644.775390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 29515.457153320298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 24279.785156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 29406.738281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 29260.253906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 28994.750976562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21089.172363281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 28775.024414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 28601.074218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 28381.347656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 28234.863281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 27886.962890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 28042.602539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 27740.478515624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 27593.994140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 27461.242675781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 27355.957031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 27227.783203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 27099.323272705064 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 27008.056640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 26916.503906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 26715.087890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 26477.050781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 26550.292968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 26364.89868164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 26797.485351562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 26289.367675781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 26218.41430664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 26184.082031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 25964.355468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 26037.597656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 25909.423828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 25845.336914062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 25543.212890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 25630.187988281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 25451.660156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 25524.902343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 25405.883789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 25305.175781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 25332.641601562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 25250.244140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 25231.933593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 25112.915039062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 25030.517578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 25046.53930664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 24957.275390624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 533679.1992187498 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 279089.3554687499 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 24901.77154541014 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 149482.7270507812 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 93200.68359374994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 67817.68798828122 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 24824.523925781235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 54968.26171874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 47497.55859374997 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 42617.79785156247 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 39605.71289062497 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 24753.57055664061 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 37316.894531249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 35412.597656249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 34167.480468749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 33215.332031249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 31018.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 24737.548828124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 32363.891601562485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 31631.469726562485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 30432.128906249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 29919.433593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 28747.558593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 29067.993164062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 28454.589843749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 29443.216323852525 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 28161.621093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 27648.925781249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 27886.962890624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 27227.783203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 27429.199218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 27062.988281249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 26861.572265624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 26696.777343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 26257.324218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 26403.808593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 26550.292968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 24453.735351562485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 26129.150390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 25776.672363281235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 25999.832153320298 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 25483.703613281235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 25396.728515624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 25231.933593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 25323.486328124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 25158.691406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(4.0MHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 24385.070800781235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 24819.946289062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 24754.714965820298 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 24426.269531249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 24060.058593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 24151.611328124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 24234.008789062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 23913.574218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 23767.089843749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 23693.847656249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 23547.363281249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 23419.189453124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 23345.947265624985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 23286.437988281235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 23254.394531249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 23126.220703124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 23062.133789062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 23034.667968749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 22888.183593749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 22769.165039062485 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 22741.699218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 22668.457031249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 22595.214843749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 22556.30493164061 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 22480.773925781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) nan +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 22407.531738281235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 22334.289550781235 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 29772.949218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 22229.003906249985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 27429.199218749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 22174.072265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 22114.562988281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 25524.902343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 25323.486328124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 25186.157226562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 24893.188476562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 25085.449218749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 24819.946289062485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 24737.548828124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 24673.461914062485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 24664.306640624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24604.797363281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24600.219726562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24600.219726562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24517.822265624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24353.027343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 24206.542968749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 24078.369140624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23941.040039062485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23492.431640624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23583.41217041014 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23281.860351562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 23199.462890624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 23034.667968749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22773.742675781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22846.984863281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22627.258300781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22700.500488281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22595.214843749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22320.556640624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22261.047363281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22100.830078124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22229.003906249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21963.500976562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21881.103515624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21675.109863281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21748.352050781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21601.867675781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21514.892578124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 89792.63305664057 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21450.805664062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 55700.68359374997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 42984.00878906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 36616.516113281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 33068.847656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 30757.141113281235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29205.322265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27960.205078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28527.832031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 27520.751953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 27154.541015624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21385.574340820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26843.261718749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26577.758789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 26348.876953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 26146.88873291014 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25982.666015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25817.871093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21308.898925781235 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25689.697265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25556.945800781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25451.660156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25250.244140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25341.22467041014 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21237.94555664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 25103.759765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 25030.517578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24966.430664062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24865.722656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24810.791015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24608.230590820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24499.511718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 24151.611328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24311.828613281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 24005.126953124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23858.642578124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23721.313476562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23254.394531249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23359.680175781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 23052.978515624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22961.425781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22888.183593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22814.941406249985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21084.594726562485 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22741.699218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22630.691528320298 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22557.449340820298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22521.972656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22448.730468749985 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 100.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22036.743164062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21954.345703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21894.836425781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21817.016601562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21597.290039062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21528.625488281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21384.42993164061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21368.408203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21308.898925781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.01), fs=1.0, method='sonic', xfunc=None, Arange=None) 102429.19921874994 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 63757.32421874997 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21237.94555664061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 47744.75097656247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.05), fs=1.0, method='sonic', xfunc=None, Arange=None) 34167.480468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.04), fs=1.0, method='sonic', xfunc=None, Arange=None) 39175.41503906247 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.06), fs=1.0, method='sonic', xfunc=None, Arange=None) 31164.550781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.07), fs=1.0, method='sonic', xfunc=None, Arange=None) 29132.080078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 28161.621093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21089.172363281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.10), fs=1.0, method='sonic', xfunc=None, Arange=None) 26989.746093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.09), fs=1.0, method='sonic', xfunc=None, Arange=None) 27461.242675781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.11), fs=1.0, method='sonic', xfunc=None, Arange=None) 26623.535156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21075.439453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.12), fs=1.0, method='sonic', xfunc=None, Arange=None) 26330.566406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.14), fs=1.0, method='sonic', xfunc=None, Arange=None) 25891.113281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.13), fs=1.0, method='sonic', xfunc=None, Arange=None) 26110.839843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21057.128906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.15), fs=1.0, method='sonic', xfunc=None, Arange=None) 25744.628906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.16), fs=1.0, method='sonic', xfunc=None, Arange=None) 25598.144531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 10.0Hz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21015.930175781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.17), fs=1.0, method='sonic', xfunc=None, Arange=None) 25469.970703124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.18), fs=1.0, method='sonic', xfunc=None, Arange=None) 25378.417968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.20), fs=1.0, method='sonic', xfunc=None, Arange=None) 25177.001953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.19), fs=1.0, method='sonic', xfunc=None, Arange=None) 25259.399414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.21), fs=1.0, method='sonic', xfunc=None, Arange=None) 25103.759765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.23), fs=1.0, method='sonic', xfunc=None, Arange=None) 25012.207031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.24), fs=1.0, method='sonic', xfunc=None, Arange=None) 24938.964843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.22), fs=1.0, method='sonic', xfunc=None, Arange=None) 25039.672851562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.25), fs=1.0, method='sonic', xfunc=None, Arange=None) 24884.033203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.27), fs=1.0, method='sonic', xfunc=None, Arange=None) 24792.480468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.29), fs=1.0, method='sonic', xfunc=None, Arange=None) 24719.238281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.28), fs=1.0, method='sonic', xfunc=None, Arange=None) 24746.704101562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.26), fs=1.0, method='sonic', xfunc=None, Arange=None) 24827.957153320298 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.31), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.30), fs=1.0, method='sonic', xfunc=None, Arange=None) 24678.039550781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.32), fs=1.0, method='sonic', xfunc=None, Arange=None) 24645.996093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.33), fs=1.0, method='sonic', xfunc=None, Arange=None) 24591.064453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.34), fs=1.0, method='sonic', xfunc=None, Arange=None) 24572.753906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.35), fs=1.0, method='sonic', xfunc=None, Arange=None) 24387.35961914061 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.36), fs=1.0, method='sonic', xfunc=None, Arange=None) 24238.586425781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.37), fs=1.0, method='sonic', xfunc=None, Arange=None) 24092.102050781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.38), fs=1.0, method='sonic', xfunc=None, Arange=None) 23986.816406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.39), fs=1.0, method='sonic', xfunc=None, Arange=None) 23840.332031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.40), fs=1.0, method='sonic', xfunc=None, Arange=None) 23712.158203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.41), fs=1.0, method='sonic', xfunc=None, Arange=None) 23620.605468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.42), fs=1.0, method='sonic', xfunc=None, Arange=None) 23474.121093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.43), fs=1.0, method='sonic', xfunc=None, Arange=None) 23400.878906249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.44), fs=1.0, method='sonic', xfunc=None, Arange=None) 23272.705078124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.45), fs=1.0, method='sonic', xfunc=None, Arange=None) 23181.152343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.46), fs=1.0, method='sonic', xfunc=None, Arange=None) 23107.910156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.48), fs=1.0, method='sonic', xfunc=None, Arange=None) 22915.649414062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.47), fs=1.0, method='sonic', xfunc=None, Arange=None) 22993.469238281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.49), fs=1.0, method='sonic', xfunc=None, Arange=None) 22833.251953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.50), fs=1.0, method='sonic', xfunc=None, Arange=None) 22760.009765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.51), fs=1.0, method='sonic', xfunc=None, Arange=None) 22686.767578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.53), fs=1.0, method='sonic', xfunc=None, Arange=None) 22540.283203124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.52), fs=1.0, method='sonic', xfunc=None, Arange=None) 22613.525390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.54), fs=1.0, method='sonic', xfunc=None, Arange=None) 22476.196289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.55), fs=1.0, method='sonic', xfunc=None, Arange=None) 22407.531738281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.56), fs=1.0, method='sonic', xfunc=None, Arange=None) 22375.488281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.57), fs=1.0, method='sonic', xfunc=None, Arange=None) 22302.246093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.58), fs=1.0, method='sonic', xfunc=None, Arange=None) 22247.314453124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.59), fs=1.0, method='sonic', xfunc=None, Arange=None) 22183.227539062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.60), fs=1.0, method='sonic', xfunc=None, Arange=None) 22155.761718749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.61), fs=1.0, method='sonic', xfunc=None, Arange=None) 22082.519531249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.62), fs=1.0, method='sonic', xfunc=None, Arange=None) 22027.587890624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.63), fs=1.0, method='sonic', xfunc=None, Arange=None) 22009.277343749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.66), fs=1.0, method='sonic', xfunc=None, Arange=None) 21862.792968749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.65), fs=1.0, method='sonic', xfunc=None, Arange=None) 21890.258789062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.64), fs=1.0, method='sonic', xfunc=None, Arange=None) 21936.035156249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.68), fs=1.0, method='sonic', xfunc=None, Arange=None) 21789.550781249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.67), fs=1.0, method='sonic', xfunc=None, Arange=None) 21807.861328124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.69), fs=1.0, method='sonic', xfunc=None, Arange=None) 21734.619140624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.70), fs=1.0, method='sonic', xfunc=None, Arange=None) 21716.308593749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.72), fs=1.0, method='sonic', xfunc=None, Arange=None) 21643.066406249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.71), fs=1.0, method='sonic', xfunc=None, Arange=None) 21661.376953124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.73), fs=1.0, method='sonic', xfunc=None, Arange=None) 21588.134765624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.75), fs=1.0, method='sonic', xfunc=None, Arange=None) 21514.892578124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.74), fs=1.0, method='sonic', xfunc=None, Arange=None) 21569.824218749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.78), fs=1.0, method='sonic', xfunc=None, Arange=None) 21441.650390624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.80), fs=1.0, method='sonic', xfunc=None, Arange=None) 21377.563476562485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.77), fs=1.0, method='sonic', xfunc=None, Arange=None) 21455.383300781235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.79), fs=1.0, method='sonic', xfunc=None, Arange=None) 21423.339843749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.76), fs=1.0, method='sonic', xfunc=None, Arange=None) 21496.582031249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.81), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.82), fs=1.0, method='sonic', xfunc=None, Arange=None) 21350.097656249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.84), fs=1.0, method='sonic', xfunc=None, Arange=None) 21295.166015624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.83), fs=1.0, method='sonic', xfunc=None, Arange=None) 21304.321289062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.85), fs=1.0, method='sonic', xfunc=None, Arange=None) 21276.855468749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.86), fs=1.0, method='sonic', xfunc=None, Arange=None) 21235.656738281235 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.87), fs=1.0, method='sonic', xfunc=None, Arange=None) 21221.923828124985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.88), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.89), fs=1.0, method='sonic', xfunc=None, Arange=None) 21203.613281249985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.90), fs=1.0, method='sonic', xfunc=None, Arange=None) 21157.836914062485 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.93), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.91), fs=1.0, method='sonic', xfunc=None, Arange=None) 21148.681640624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.92), fs=1.0, method='sonic', xfunc=None, Arange=None) 21130.371093749985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.94), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.95), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.96), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.97), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.98), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalLTS), AcousticDrive(500.0kHz), PulsedProtocol(1.0s, 0.0s, 1.0kHz, 0.99), fs=1.0, method='sonic', xfunc=None, Arange=None) 21002.197265624985 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', xfunc=None, Arange=None) 21796.875 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.08), fs=1.0, method='sonic', xfunc=None, Arange=None) 30078.125 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.03), fs=1.0, method='sonic', xfunc=None, Arange=None) 38203.125 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', xfunc=None, Arange=None) 46328.125 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamoCortical), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 0.02), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 46328.125 +titrate(NeuronalBilayerSonophore(32.0 nm, ThalamicRE), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 43710.9375 +titrate(NeuronalBilayerSonophore(32.0 nm, FrankenhaeuserHuxley), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 86054.6875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 36093.75 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 35429.6875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(100.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 35546.875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(1.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 37031.25 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(2.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 39179.6875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(3.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 41484.375 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 44218.75 +titrate(NeuronalBilayerSonophore(16.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 76015.625 +titrate(NeuronalBilayerSonophore(22.6 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 45312.5 +titrate(NeuronalBilayerSonophore(45.3 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 34804.6875 +titrate(NeuronalBilayerSonophore(64.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(150.0ms, 100.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 33828.125 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(20.0kHz), PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 137929.6875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 141484.375 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(1.0MHz), PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 149921.875 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(2.0MHz), PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 185781.25 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(4.0MHz), PulsedProtocol(30.0ms, 0.0s, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 213984.375 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(100.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 38828.125 +titrate(NeuronalBilayerSonophore(32.0 nm, CorticalRS), AcousticDrive(500.0kHz), PulsedProtocol(34.0ms, 50.0ms, 100.0Hz, 1.00), fs=1.0, method='sonic', qss_vars=None, xfunc=None, Arange=None) 69843.75 diff --git a/PySONIC/core/bls.py b/PySONIC/core/bls.py index b1b589e..c0a1686 100644 --- a/PySONIC/core/bls.py +++ b/PySONIC/core/bls.py @@ -1,814 +1,814 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2016-09-29 16:16:19 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 19:43:42 +# @Last Modified time: 2020-02-03 19:43:02 from enum import Enum import os import json import numpy as np import pandas as pd import scipy.integrate as integrate from scipy.optimize import brentq, curve_fit from .model import Model from .simulators import PeriodicSimulator -from .sources import * +from .drives import Drive, AcousticDrive from ..utils import logger, si_format, debug from ..constants import * class PmCompMethod(Enum): ''' Enum: types of computation method for the intermolecular pressure ''' direct = 1 predict = 2 def LennardJones(x, beta, alpha, C, m, n): ''' Generic expression of a Lennard-Jones function, adapted for the context of symmetric deflection (distance = 2x). :param x: deflection (i.e. half-distance) :param beta: x-shifting factor :param alpha: x-scaling factor :param C: y-scaling factor :param m: exponent of the repulsion term :param n: exponent of the attraction term :return: Lennard-Jones potential at given distance (2x) ''' return C * (np.power((alpha / (2 * x + beta)), m) - np.power((alpha / (2 * x + beta)), n)) def lookup(func): ''' Load parameters from lookup file, or compute them and store them in lookup file. ''' lookup_path = os.path.join(os.path.split(__file__)[0], 'bls_lookups.json') def wrapper(obj): akey = f'{obj.a * 1e9:.1f}' Qkey = f'{obj.Qm0 * 1e5:.2f}' # Open lookup files try: with open(lookup_path, 'r') as fh: lookups = json.load(fh) except FileNotFoundError: lookups = {} # If info not in lookups, compute parameters and add them if akey not in lookups or Qkey not in lookups[akey]: func(obj) if akey not in lookups: lookups[akey] = {Qkey: {'LJ_approx': obj.LJ_approx, 'Delta_eq': obj.Delta}} else: lookups[akey][Qkey] = {'LJ_approx': obj.LJ_approx, 'Delta_eq': obj.Delta} logger.debug('Saving BLS derived parameters to lookup file') with open(lookup_path, 'w') as fh: json.dump(lookups, fh, indent=2) # If lookup exists, load parameters from it else: logger.debug('Loading BLS derived parameters from lookup file') obj.LJ_approx = lookups[akey][Qkey]['LJ_approx'] obj.Delta = lookups[akey][Qkey]['Delta_eq'] return wrapper class BilayerSonophore(Model): ''' Definition of the Bilayer Sonophore Model - geometry - pressure terms - cavitation dynamics ''' # BIOMECHANICAL PARAMETERS T = 309.15 # Temperature (K) delta0 = 2.0e-9 # Thickness of the leaflet (m) Delta_ = 1.4e-9 # Initial gap between the two leaflets on a non-charged membrane at equil. (m) pDelta = 1.0e5 # Attraction/repulsion pressure coefficient (Pa) m = 5.0 # Exponent in the repulsion term (dimensionless) n = 3.3 # Exponent in the attraction term (dimensionless) rhoL = 1075.0 # Density of the surrounding fluid (kg/m^3) muL = 7.0e-4 # Dynamic viscosity of the surrounding fluid (Pa.s) muS = 0.035 # Dynamic viscosity of the leaflet (Pa.s) kA = 0.24 # Area compression modulus of the leaflet (N/m) alpha = 7.56 # Tissue shear loss modulus frequency coefficient (Pa.s) C0 = 0.62 # Initial gas molar concentration in the surrounding fluid (mol/m^3) kH = 1.613e5 # Henry's constant (Pa.m^3/mol) P0 = 1.0e5 # Static pressure in the surrounding fluid (Pa) Dgl = 3.68e-9 # Diffusion coefficient of gas in the fluid (m^2/s) xi = 0.5e-9 # Boundary layer thickness for gas transport across leaflet (m) c = 1515.0 # Speed of sound in medium (m/s) # BIOPHYSICAL PARAMETERS epsilon0 = 8.854e-12 # Vacuum permittivity (F/m) epsilonR = 1.0 # Relative permittivity of intramembrane cavity (dimensionless) rel_Zmin = -0.49 # relative deflection range lower bound (in multiples of Delta) tscale = 'us' # relevant temporal scale of the model simkey = 'MECH' # keyword used to characterize simulations made with this model def __init__(self, a, Cm0, Qm0, embedding_depth=0.0): ''' Constructor of the class. :param a: in-plane radius of the sonophore structure within the membrane (m) :param Cm0: membrane resting capacitance (F/m2) :param Qm0: membrane resting charge density (C/m2) :param embedding_depth: depth of the embedding tissue around the membrane (m) ''' # Extract resting constants and geometry self.Cm0 = Cm0 self.Qm0 = Qm0 self.a = a self.d = embedding_depth self.S0 = np.pi * self.a**2 # Initialize null elastic modulus for tissue self.kA_tissue = 0. # Compute Pm params self.computePMparams() # Compute initial volume and gas content self.V0 = np.pi * self.Delta * self.a**2 self.ng0 = self.gasPa2mol(self.P0, self.V0) @property def a(self): return self._a @a.setter def a(self, value): if value <= 0.: raise ValueError('Sonophore radius must be positive') self._a = value @property def Cm0(self): return self._Cm0 @Cm0.setter def Cm0(self, value): if value <= 0.: raise ValueError('Resting membrane capacitance must be positive') self._Cm0 = value @property def d(self): return self._d @d.setter def d(self, value): if value < 0.: raise ValueError('Embedding depth cannot be negative') self._d = value def __repr__(self): s = f'{self.__class__.__name__}({self.a * 1e9:.1f} nm' if self.d > 0.: s += f', d={si_format(self.d, precision=1)}m' return f'{s})' @classmethod def initFromMeta(cls, meta): return cls(meta['a'], meta['Cm0'], meta['Qm0']) - @property @staticmethod def inputs(): return { 'a': { 'desc': 'sonophore radius', 'label': 'a', 'unit': 'nm', 'factor': 1e9, 'precision': 0 }, 'Qm': { 'desc': 'membrane charge density', 'label': 'Q_m', 'unit': 'nC/cm^2', 'factor': 1e5, 'precision': 1 - } + }, + **AcousticDrive.inputs() } - def filecodes(self, US_source, Qm, PmCompMethod='predict'): + def filecodes(self, drive, Qm, PmCompMethod='predict'): return { 'simkey': self.simkey, 'a': f'{self.a * 1e9:.0f}nm', - **US_source.filecodes, + **drive.filecodes, 'Qm': f'{Qm * 1e5:.1f}nCcm2' } @staticmethod def getPltVars(wrapleft='df["', wrapright='"]'): return { 'Pac': { 'desc': 'acoustic pressure', 'label': 'P_{AC}', 'unit': 'kPa', 'factor': 1e-3, - 'func': f'meta["US_source"].computePressure({wrapleft}t{wrapright})' + 'func': f'meta["drive"].compute({wrapleft}t{wrapright})' }, 'Z': { 'desc': 'leaflets deflection', 'label': 'Z', 'unit': 'nm', 'factor': 1e9, 'bounds': (-1.0, 10.0) }, 'ng': { 'desc': 'gas content', 'label': 'n_g', 'unit': '10^{-22}\ mol', 'factor': 1e22, 'bounds': (1.0, 15.0) }, 'Pmavg': { 'desc': 'average intermolecular pressure', 'label': 'P_M', 'unit': 'kPa', 'factor': 1e-3, 'func': f'PMavgpred({wrapleft}Z{wrapright})' }, 'Telastic': { 'desc': 'leaflet elastic tension', 'label': 'T_E', 'unit': 'mN/m', 'factor': 1e3, 'func': f'TEleaflet({wrapleft}Z{wrapright})' }, 'Cm': { 'desc': 'membrane capacitance', 'label': 'C_m', 'unit': 'uF/cm^2', 'factor': 1e2, 'bounds': (0.0, 1.5), 'func': f'v_capacitance({wrapleft}Z{wrapright})' } } @property def pltScheme(self): return { 'P_{AC}': ['Pac'], 'Z': ['Z'], 'n_g': ['ng'] } @property def Zmin(self): return self.rel_Zmin * self.Delta def curvrad(self, Z): ''' Leaflet curvature radius (signed variable) :param Z: leaflet apex deflection (m) :return: leaflet curvature radius (m) ''' if Z == 0.0: return np.inf else: return (self.a**2 + Z**2) / (2 * Z) def v_curvrad(self, Z): ''' Vectorized curvrad function ''' return np.array(list(map(self.curvrad, Z))) def surface(self, Z): ''' Surface area of the stretched leaflet (spherical cap formula) :param Z: leaflet apex deflection (m) :return: stretched leaflet surface (m^2) ''' return np.pi * (self.a**2 + Z**2) def volume(self, Z): ''' Volume of the inter-leaflet space (cylinder +/- 2 spherical caps) :param Z: leaflet apex deflection (m) :return: bilayer sonophore inner volume (m^3) ''' return np.pi * self.a**2 * self.Delta\ * (1 + (Z / (3 * self.Delta) * (3 + Z**2 / self.a**2))) def arealStrain(self, Z): ''' Areal strain of the stretched leaflet epsilon = (S - S0)/S0 = (Z/a)^2 :param Z: leaflet apex deflection (m) :return: areal strain (dimensionless) ''' return (Z / self.a)**2 def capacitance(self, Z): ''' Membrane capacitance (parallel-plate capacitor evaluated at average inter-layer distance) :param Z: leaflet apex deflection (m) :return: capacitance per unit area (F/m2) ''' if Z == 0.0: return self.Cm0 else: return ((self.Cm0 * self.Delta / self.a**2) * (Z + (self.a**2 - Z**2 - Z * self.Delta) / (2 * Z) * np.log((2 * Z + self.Delta) / self.Delta))) def v_capacitance(self, Z): ''' Vectorized capacitance function ''' return np.array(list(map(self.capacitance, Z))) def derCapacitance(self, Z, U): ''' Evolution of membrane capacitance :param Z: leaflet apex deflection (m) :param U: leaflet apex deflection velocity (m/s) :return: time derivative of capacitance per unit area (F/m2.s) ''' dCmdZ = ((self.Cm0 * self.Delta / self.a**2) * ((Z**2 + self.a**2) / (Z * (2 * Z + self.Delta)) - ((Z**2 + self.a**2) * np.log((2 * Z + self.Delta) / self.Delta)) / (2 * Z**2))) return dCmdZ * U @staticmethod def localDeflection(r, Z, R): ''' Local leaflet deflection at specific radial distance (signed) :param r: in-plane distance from center of the sonophore (m) :param Z: leaflet apex deflection (m) :param R: leaflet curvature radius (m) :return: local transverse leaflet deviation (m) ''' if np.abs(Z) == 0.0: return 0.0 else: return np.sign(Z) * (np.sqrt(R**2 - r**2) - np.abs(R) + np.abs(Z)) def PMlocal(self, r, Z, R): ''' Local intermolecular pressure :param r: in-plane distance from center of the sonophore (m) :param Z: leaflet apex deflection (m) :param R: leaflet curvature radius (m) :return: local intermolecular pressure (Pa) ''' z = self.localDeflection(r, Z, R) relgap = (2 * z + self.Delta) / self.Delta_ return self.pDelta * ((1 / relgap)**self.m - (1 / relgap)**self.n) def PMavg(self, Z, R, S): ''' Average intermolecular pressure across the leaflet (computed by quadratic integration) :param Z: leaflet apex outward deflection value (m) :param R: leaflet curvature radius (m) :param S: surface of the stretched leaflet (m^2) :return: averaged intermolecular resultant pressure (Pa) .. warning:: quadratic integration is computationally expensive. ''' # Integrate intermolecular force over an infinitely thin ring of radius r from 0 to a fTotal, _ = integrate.quad(lambda r, Z, R: 2 * np.pi * r * self.PMlocal(r, Z, R), 0, self.a, args=(Z, R)) return fTotal / S def v_PMavg(self, Z, R, S): ''' Vectorized PMavg function ''' return np.array(list(map(self.PMavg, Z, R, S))) def LJfitPMavg(self): ''' Determine optimal parameters of a Lennard-Jones expression approximating the average intermolecular pressure. These parameters are obtained by a nonlinear fit of the Lennard-Jones function for a range of deflection values between predetermined Zmin and Zmax. :return: 3-tuple with optimized LJ parameters for PmAvg prediction (Map) and the standard and max errors of the prediction in the fitting range (in Pascals) ''' # Determine lower bound of deflection range: when Pm = Pmmax PMmax = LJFIT_PM_MAX # Pa Zlb_range = (self.Zmin, 0.0) Zlb = brentq(lambda Z, Pmmax: self.PMavg(Z, self.curvrad(Z), self.surface(Z)) - PMmax, *Zlb_range, args=(PMmax), xtol=1e-16) # Create vectors for geometric variables Zub = 2 * self.a Z = np.arange(Zlb, Zub, 1e-11) Pmavg = self.v_PMavg(Z, self.v_curvrad(Z), self.surface(Z)) # Compute optimal nonlinear fit of custom LJ function with initial guess x0_guess = self.delta0 C_guess = 0.1 * self.pDelta nrep_guess = self.m nattr_guess = self.n pguess = (x0_guess, C_guess, nrep_guess, nattr_guess) popt, _ = curve_fit(lambda x, x0, C, nrep, nattr: LennardJones(x, self.Delta, x0, C, nrep, nattr), Z, Pmavg, p0=pguess, maxfev=100000) (x0_opt, C_opt, nrep_opt, nattr_opt) = popt Pmavg_fit = LennardJones(Z, self.Delta, x0_opt, C_opt, nrep_opt, nattr_opt) # Compute prediction error residuals = Pmavg - Pmavg_fit ss_res = np.sum(residuals**2) N = residuals.size std_err = np.sqrt(ss_res / N) max_err = max(np.abs(residuals)) logger.debug('LJ approx: x0 = %.2f nm, C = %.2f kPa, m = %.2f, n = %.2f', x0_opt * 1e9, C_opt * 1e-3, nrep_opt, nattr_opt) LJ_approx = {"x0": x0_opt, "C": C_opt, "nrep": nrep_opt, "nattr": nattr_opt} return (LJ_approx, std_err, max_err) @lookup def computePMparams(self): # Find Delta that cancels out Pm + Pec at Z = 0 (m) if self.Qm0 == 0.0: D_eq = self.Delta_ else: (D_eq, Pnet_eq) = self.findDeltaEq(self.Qm0) assert Pnet_eq < PNET_EQ_MAX, 'High Pnet at Z = 0 with ∆ = %.2f nm' % (D_eq * 1e9) self.Delta = D_eq # Find optimal Lennard-Jones parameters to approximate PMavg (self.LJ_approx, std_err, _) = self.LJfitPMavg() assert std_err < PMAVG_STD_ERR_MAX, 'High error in PmAvg nonlinear fit:'\ ' std_err = %.2f Pa' % std_err def PMavgpred(self, Z): ''' Approximated average intermolecular pressure (using nonlinearly fitted Lennard-Jones function) :param Z: leaflet apex deflection (m) :return: predicted average intermolecular pressure (Pa) ''' return LennardJones(Z, self.Delta, self.LJ_approx['x0'], self.LJ_approx['C'], self.LJ_approx['nrep'], self.LJ_approx['nattr']) def Pelec(self, Z, Qm): ''' Electrical pressure term :param Z: leaflet apex deflection (m) :param Qm: membrane charge density (C/m2) :return: electrical pressure (Pa) ''' relS = self.S0 / self.surface(Z) abs_perm = self.epsilon0 * self.epsilonR # F/m return - relS * Qm**2 / (2 * abs_perm) # Pa def findDeltaEq(self, Qm): ''' Compute the Delta that cancels out the (Pm + Pec) equation at Z = 0 for a given membrane charge density, using the Brent method to refine the pressure root iteratively. :param Qm: membrane charge density (C/m2) :return: equilibrium value (m) and associated pressure (Pa) ''' def dualPressure(Delta): x = (self.Delta_ / Delta) return (self.pDelta * (x**self.m - x**self.n) + self.Pelec(0.0, Qm)) Delta_eq = brentq(dualPressure, 0.1 * self.Delta_, 2.0 * self.Delta_, xtol=1e-16) logger.debug('∆eq = %.2f nm', Delta_eq * 1e9) return (Delta_eq, dualPressure(Delta_eq)) def gasFlux(self, Z, P): ''' Gas molar flux through the sonophore boundary layers :param Z: leaflet apex deflection (m) :param P: internal gas pressure (Pa) :return: gas molar flux (mol/s) ''' dC = self.C0 - P / self.kH return 2 * self.surface(Z) * self.Dgl * dC / self.xi @classmethod def gasmol2Pa(cls, ng, V): ''' Internal gas pressure for a given molar content :param ng: internal molar content (mol) :param V: sonophore inner volume (m^3) :return: internal gas pressure (Pa) ''' return ng * Rg * cls.T / V @classmethod def gasPa2mol(cls, P, V): ''' Internal gas molar content for a given pressure :param P: internal gas pressure (Pa) :param V: sonophore inner volume (m^3) :return: internal gas molar content (mol) ''' return P * V / (Rg * cls.T) def PtotQS(self, Z, ng, Qm, Pac, Pm_comp_method): ''' Net quasi-steady pressure for a given acoustic pressure (Ptot = Pm + Pg + Pec - P0 - Pac) :param Z: leaflet apex deflection (m) :param ng: internal molar content (mol) :param Qm: membrane charge density (C/m2) :param Pac: acoustic pressure (Pa) :param Pm_comp_method: computation method for average intermolecular pressure :return: total balance pressure (Pa) ''' if Pm_comp_method is PmCompMethod.direct: Pm = self.PMavg(Z, self.curvrad(Z), self.surface(Z)) elif Pm_comp_method is PmCompMethod.predict: Pm = self.PMavgpred(Z) return Pm + self.gasmol2Pa(ng, self.volume(Z)) - self.P0 - Pac + self.Pelec(Z, Qm) def balancedefQS(self, ng, Qm, Pac=0.0, Pm_comp_method=PmCompMethod.predict): ''' Quasi-steady equilibrium deflection for a given acoustic pressure (computed by approximating the root of quasi-steady pressure) :param ng: internal molar content (mol) :param Qm: membrane charge density (C/m2) :param Pac: external acoustic perturbation (Pa) :param Pm_comp_method: computation method for average intermolecular pressure :return: leaflet deflection canceling quasi-steady pressure (m) ''' Zbounds = (self.Zmin, self.a) Plb, Pub = [self.PtotQS(x, ng, Qm, Pac, Pm_comp_method) for x in Zbounds] assert (Plb > 0 > Pub), '[{}, {}] is not a sign changing interval for PtotQS'.format(*Zbounds) return brentq(self.PtotQS, *Zbounds, args=(ng, Qm, Pac, Pm_comp_method), xtol=1e-16) def TEleaflet(self, Z): ''' Elastic tension in leaflet :param Z: leaflet apex deflection (m) :return: circumferential elastic tension (N/m) ''' return self.kA * self.arealStrain(Z) - def setTissueModulus(self, US_source): + def setTissueModulus(self, drive): ''' Set the frequency-dependent elastic modulus of the surrounding tissue. ''' - G_tissue = self.alpha * US_source.modulationFrequency # G'' (Pa) + G_tissue = self.alpha * drive.modulationFrequency # G'' (Pa) self.kA_tissue = 2 * G_tissue * self.d # kA of the tissue layer (N/m) def TEtissue(self, Z): ''' Elastic tension in surrounding viscoelastic layer :param Z: leaflet apex deflection (m) :return: circumferential elastic tension (N/m) ''' return self.kA_tissue * self.arealStrain(Z) def TEtot(self, Z): ''' Total elastic tension (leaflet + surrounding viscoelastic layer) :param Z: leaflet apex deflection (m) :return: circumferential elastic tension (N/m) ''' return self.TEleaflet(Z) + self.TEtissue(Z) def PEtot(self, Z, R): ''' Total elastic tension pressure (leaflet + surrounding viscoelastic layer) :param Z: leaflet apex deflection (m) :param R: leaflet curvature radius (m) :return: elastic tension pressure (Pa) ''' return - self.TEtot(Z) / R @classmethod def PVleaflet(cls, U, R): ''' Viscous stress pressure in leaflet :param U: leaflet apex deflection velocity (m/s) :param R: leaflet curvature radius (m) :return: leaflet viscous stress pressure (Pa) ''' return - 12 * U * cls.delta0 * cls.muS / R**2 @classmethod def PVfluid(cls, U, R): ''' Viscous stress pressure in surrounding medium :param U: leaflet apex deflection velocity (m/s) :param R: leaflet curvature radius (m) :return: fluid viscous stress pressure (Pa) ''' return - 4 * U * cls.muL / np.abs(R) @classmethod def accP(cls, Ptot, R): ''' Leaflet transverse acceleration resulting from pressure imbalance :param Ptot: net pressure (Pa) :param R: leaflet curvature radius (m) :return: pressure-driven acceleration (m/s^2) ''' return Ptot / (cls.rhoL * np.abs(R)) @staticmethod def accNL(U, R): ''' Leaflet transverse nonlinear acceleration :param U: leaflet apex deflection velocity (m/s) :param R: leaflet curvature radius (m) :return: nonlinear acceleration term (m/s^2) .. note:: A simplified version of nonlinear acceleration (neglecting dR/dH) is used here. ''' # return - (3/2 - 2*R/H) * U**2 / R return -(3 * U**2) / (2 * R) @staticmethod - def checkInputs(US_source, Qm, Pm_comp_method): + def checkInputs(drive, Qm, Pm_comp_method): ''' Check validity of stimulation parameters - :param US_source: acoustic source object + :param drive: acoustic drive object :param Qm: imposed membrane charge density (C/m2) :param Pm_comp_method: type of method used to compute average intermolecular pressure ''' - if not isinstance(US_source, AcousticSource) and not isinstance(US_source, AcousticSourceArray): - raise TypeError(f'Invalid "US_source" parameter (must be an "AcousticSource" object)') + if not isinstance(drive, Drive): + raise TypeError(f'Invalid "drive" parameter (must be an "Drive" object)') if not isinstance(Qm, float): raise TypeError(f'Invalid "Qm" parameter (must be float typed)') Qmin, Qmax = CHARGE_RANGE if Qm < Qmin or Qm > Qmax: raise ValueError( f'Invalid applied charge: {Qm * 1e5} nC/cm2 (must be within [{Qmin * 1e5}, {Qmax * 1e5}] interval') if not isinstance(Pm_comp_method, PmCompMethod): raise TypeError('Invalid Pm computation method (must be "PmCompmethod" type)') - def derivatives(self, t, y, US_source, Qm, Pm_comp_method=PmCompMethod.predict): + def derivatives(self, t, y, drive, Qm, Pm_comp_method=PmCompMethod.predict): ''' Evolution of the mechanical system :param t: time instant (s) :param y: vector of HH system variables at time t - :param US_source: acoustic source object + :param drive: acoustic drive object :param Qm: membrane charge density (F/m2) :param Pm_comp_method: computation method for average intermolecular pressure :return: vector of mechanical system derivatives at time t ''' # Split input vector explicitly U, Z, ng = y # Correct deflection value is below critical compression if Z < self.Zmin: logger.warning('Deflection out of range: Z = %.2f nm', Z * 1e9) Z = self.Zmin # Compute curvature radius R = self.curvrad(Z) # Compute total pressure Pg = self.gasmol2Pa(ng, self.volume(Z)) if Pm_comp_method is PmCompMethod.direct: Pm = self.PMavg(Z, self.curvrad(Z), self.surface(Z)) elif Pm_comp_method is PmCompMethod.predict: Pm = self.PMavgpred(Z) - Pac = US_source.computePressure(t) + Pac = drive.compute(t) Pv = self.PVleaflet(U, R) + self.PVfluid(U, R) Ptot = Pm + Pg - self.P0 - Pac + self.PEtot(Z, R) + Pv + self.Pelec(Z, Qm) # Compute derivatives dUdt = self.accP(Ptot, R) + self.accNL(U, R) dZdt = U dngdt = self.gasFlux(Z, Pg) # Return derivatives vector return [dUdt, dZdt, dngdt] - def computeInitialDeflection(self, US_source, Qm, dt, Pm_comp_method=PmCompMethod.predict): + def computeInitialDeflection(self, drive, Qm, dt, Pm_comp_method=PmCompMethod.predict): ''' Compute non-zero deflection value for a small perturbation (solving quasi-steady equation). ''' - Pac = US_source.computePressure(dt) + Pac = drive.compute(dt) return self.balancedefQS(self.ng0, Qm, Pac, Pm_comp_method) @classmethod @Model.checkOutputDir def simQueue(cls, freqs, amps, charges, **kwargs): - sources = createSources(freqs, amps) + drives = AcousticDrive.createQueue(freqs, amps) queue = [] - for source in sources: + for drive in drives: for Qm in charges: - queue.append([source, Qm]) + queue.append([drive, Qm]) return queue - def simCycles(self, US_source, Qm, n=None, Pm_comp_method=PmCompMethod.predict): + def simCycles(self, drive, Qm, n=None, Pm_comp_method=PmCompMethod.predict): ''' Simulate for a specific number of cycles or until periodic stabilization, for a specific set of ultrasound parameters, and return output data in a dataframe. - :param US_source: acoustic source object + :param drive: acoustic drive object :param Qm: imposed membrane charge density (C/m2) :param n: number of cycles (optional) :param Pm_comp_method: type of method used to compute average intermolecular pressure :return: output dataframe ''' # Determine time step - dt = US_source.dt + dt = drive.dt # Determine stop function if n is not None: stopfunc = lambda t, _, T: t[-1] > (n - 1) * T else: stopfunc = None # Set the tissue elastic modulus - self.setTissueModulus(US_source) + self.setTissueModulus(drive) # Compute initial non-zero deflection - Z = self.computeInitialDeflection(US_source, Qm, dt, Pm_comp_method=Pm_comp_method) + Z = self.computeInitialDeflection(drive, Qm, dt, Pm_comp_method=Pm_comp_method) # Set initial conditions y0 = np.array([0., 0., self.ng0]) y1 = np.array([0., Z, self.ng0]) # Initialize simulator and compute solution simulator = PeriodicSimulator( - lambda t, y: self.derivatives(t, y, US_source, Qm, Pm_comp_method), + lambda t, y: self.derivatives(t, y, drive, Qm, Pm_comp_method), ivars_to_check=[1, 2], stopfunc=stopfunc) - t, y, stim = simulator(y1, dt, US_source.periodicity) + t, y, stim = simulator(y1, dt, drive.periodicity) # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim, y0=y0) # Set last stimulation state to zero stim[-1] = 0 # Store output in dataframe and return return pd.DataFrame({ 't': t, 'stimstate': stim, 'Z': y[:, 1], 'ng': y[:, 2] }) @Model.addMeta @Model.logDesc @Model.checkSimParams - def simulate(self, US_source, Qm, Pm_comp_method=PmCompMethod.predict): + def simulate(self, drive, Qm, Pm_comp_method=PmCompMethod.predict): ''' Wrapper around the simUntilConvergence method, with decorators. ''' - return self.simCycles(US_source, Qm, Pm_comp_method=Pm_comp_method) + return self.simCycles(drive, Qm, Pm_comp_method=Pm_comp_method) - def meta(self, US_source, Qm, Pm_comp_method): + def meta(self, drive, Qm, Pm_comp_method): return { 'simkey': self.simkey, 'a': self.a, 'd': self.d, 'Cm0': self.Cm0, 'Qm0': self.Qm0, - 'US_source': US_source, + 'drive': drive, 'Qm': Qm, 'Pm_comp_method': Pm_comp_method } def desc(self, meta): - return f'{self}: simulation @ {meta["US_source"].desc}, Q = {si_format(meta["Qm"] * 1e-4, 2)}C/cm2' + return f'{self}: simulation @ {meta["drive"].desc}, Q = {si_format(meta["Qm"] * 1e-4, 2)}C/cm2' - def getCycleProfiles(self, US_source, Qm): + def getCycleProfiles(self, drive, Qm): ''' Simulate mechanical system and compute pressures over the last acoustic cycle - :param US_source: acoustic source object + :param drive: acoustic drive object :param Qm: imposed membrane charge density (C/m2) :return: dataframe with the time, kinematic and pressure profiles over the last cycle. ''' # Run default simulation and retrieve last cycle solution - logger.info(f'Running mechanical simulation (a = {si_format(self.a, 1)}m, {US_source.desc})') + logger.info(f'Running mechanical simulation (a = {si_format(self.a, 1)}m, {drive.desc})') data = self.simulate( - US_source, Qm, Pm_comp_method=PmCompMethod.direct)[0].iloc[-US_source.nPerCycle:, :] + drive, Qm, Pm_comp_method=PmCompMethod.direct)[0].iloc[-drive.nPerCycle:, :] # Extract relevant variables and de-offset time vector t, Z, ng = [data[key].values for key in ['t', 'Z', 'ng']] dt = (t[-1] - t[0]) / (NPC_DENSE - 1) t -= t[0] # Compute pressure cyclic profiles logger.info('Computing pressure cyclic profiles') R = self.v_curvrad(Z) U = np.diff(Z) / dt U = np.hstack((U, U[-1])) data = { 't': t, 'Z': Z, 'Cm': self.v_capacitance(Z), 'P_M': self.v_PMavg(Z, R, self.surface(Z)), 'P_Q': self.Pelec(Z, Qm), 'P_{VE}': self.PEtot(Z, R) + self.PVleaflet(U, R), 'P_V': self.PVfluid(U, R), 'P_G': self.gasmol2Pa(ng, self.volume(Z)), 'P_0': - np.ones(Z.size) * self.P0 } return pd.DataFrame(data, columns=data.keys()) diff --git a/PySONIC/core/bls_lookups.json b/PySONIC/core/bls_lookups.json index 54f922c..0534ed4 100644 --- a/PySONIC/core/bls_lookups.json +++ b/PySONIC/core/bls_lookups.json @@ -1,805 +1,816 @@ { "32.0": { "-80.00": { "LJ_approx": { "x0": 1.7875580514692446e-09, "C": 14506.791031634148, "nrep": 3.911252335063797, "nattr": 0.9495868868453603 }, "Delta_eq": 1.2344323203763867e-09 }, "-71.40": { "LJ_approx": { "x0": 1.710159362626304e-09, "C": 16757.44053535206, "nrep": 3.9149844779001572, "nattr": 0.9876139143736086 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.588820457014353e-09, "C": 21124.28839722447, "nrep": 3.9219530533405726, "nattr": 1.0531179666960837 }, "Delta_eq": 1.302942739961778e-09 }, "-71.90": { "LJ_approx": { "x0": 1.7142977983903395e-09, "C": 16627.43538695451, "nrep": 3.9147721975981384, "nattr": 0.9855168537576823 }, "Delta_eq": 1.2553492695740507e-09 }, "-89.50": { "LJ_approx": { "x0": 1.8913883171160228e-09, "C": 12016.525797229067, "nrep": 3.9069373029335464, "nattr": 0.9021994595277029 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.6390264131559902e-09, "C": 19180.97634755811, "nrep": 3.9188840789597705, "nattr": 1.0250251620607604 }, "Delta_eq": 1.281743450351987e-09 }, "-53.00": { "LJ_approx": { "x0": 1.5830321174402216e-09, "C": 21361.655211483354, "nrep": 3.9223254792281588, "nattr": 1.0564645995714745 }, "Delta_eq": 1.305609024046854e-09 }, "-53.58": { "LJ_approx": { "x0": 1.5863754403940291e-09, "C": 21224.206759769622, "nrep": 3.922109852077156, "nattr": 1.0545313303221624 }, "Delta_eq": 1.3040630712174578e-09 }, "-48.87": { "LJ_approx": { "x0": 1.5603070731170595e-09, "C": 22321.280954434333, "nrep": 3.9238276518118833, "nattr": 1.0698008224359472 }, "Delta_eq": 1.3165739825437056e-09 }, "0.00": { "LJ_approx": { "x0": 1.429523524073023e-09, "C": 28748.036227122713, "nrep": 3.9338919786768276, "nattr": 1.1551044201542804 }, "Delta_eq": 1.4e-09 }, "-70.00": { "LJ_approx": { "x0": 1.698788510560293e-09, "C": 17120.631318195712, "nrep": 3.915575488491436, "nattr": 0.9934238714780391 }, "Delta_eq": 1.2603339470322538e-09 }, "-58.00": { "LJ_approx": { "x0": 1.6131662659976035e-09, "C": 20156.47605325608, "nrep": 3.9204295233162925, "nattr": 1.0393049952285334 }, "Delta_eq": 1.2922508866011204e-09 }, "-140.00": { "LJ_approx": { "x0": 3.5396589580589484e-09, "C": 1255.8321160636908, "nrep": 3.879907809497444, "nattr": 0.4190657482583384 }, "Delta_eq": 1.1019265101358682e-09 }, "-200.00": { "LJ_approx": { "x0": 5.467498689940948e-09, "C": 298.4575230665454, "nrep": 3.8382806376855165, "nattr": 0.0014805372073950717 }, "Delta_eq": 1.0050623818936587e-09 }, "-60.00": { "LJ_approx": { "x0": 1.6260780786690872e-09, "C": 19662.79538138057, "nrep": 3.9196487714944097, "nattr": 1.0321270951610706 }, "Delta_eq": 1.2869009570089227e-09 } }, "64.0": { "-80.00": { "LJ_approx": { "x0": 1.783357531675752e-09, "C": 14639.319598806138, "nrep": 3.9113027551187414, "nattr": 0.9404151935643594 }, "Delta_eq": 1.2344323203763867e-09 }, "-71.90": { "LJ_approx": { "x0": 1.7103254451796522e-09, "C": 16775.90747591089, "nrep": 3.9148582072320104, "nattr": 0.9747613204242506 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.7061996856525807e-09, "C": 16906.878806702443, "nrep": 3.9150725853841957, "nattr": 0.976778398349503 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.585264156646392e-09, "C": 21303.176047683613, "nrep": 3.92211004079812, "nattr": 1.0402641595550777 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.886870747500225e-09, "C": 12129.260307725155, "nrep": 3.906945602966425, "nattr": 0.895598309376088 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.635297932833928e-09, "C": 19347.359224637305, "nrep": 3.9190113341505843, "nattr": 1.0129039638328117 }, "Delta_eq": 1.281743450351987e-09 }, "-58.00": { "LJ_approx": { "x0": 1.6095250707781465e-09, "C": 20329.27848623273, "nrep": 3.92057191136993, "nattr": 1.0267862446034561 }, "Delta_eq": 1.2922508866011204e-09 }, "-140.00": { "LJ_approx": { "x0": 3.5398097121754107e-09, "C": 1255.8690004347025, "nrep": 3.8798490490747404, "nattr": 0.4604604439108636 }, "Delta_eq": 1.1019265101358682e-09 }, "-200.00": { "LJ_approx": { "x0": 6.6005456899992844e-09, "C": 144.85407475420143, "nrep": 3.838295127819493, "nattr": 0.00992375961984237 }, "Delta_eq": 1.0050623818936587e-09 }, "-60.00": { "LJ_approx": { "x0": 1.6223930024686038e-09, "C": 19832.380892638503, "nrep": 3.9197835635468294, "nattr": 1.019801114668753 }, "Delta_eq": 1.2869009570089227e-09 } }, "50.0": { "-71.90": { "LJ_approx": { "x0": 1.7114794411958874e-09, "C": 16732.841575829825, "nrep": 3.914827883392826, "nattr": 0.9781401389550711 }, "Delta_eq": 1.2553492695740507e-09 } }, "10.0": { "0.00": { "LJ_approx": { "x0": 1.4403460578039628e-09, "C": 27932.27792195569, "nrep": 3.9334138654752686, "nattr": 1.19526523864855 }, "Delta_eq": 1.4e-09 }, "-71.90": { "LJ_approx": { "x0": 1.7286986021591825e-09, "C": 16087.514816365254, "nrep": 3.9147885683678543, "nattr": 1.012616990226475 }, "Delta_eq": 1.2553492695740507e-09 } }, "100.0": { "0.00": { "LJ_approx": { "x0": 1.4254455131143225e-09, "C": 29048.417918044444, "nrep": 3.9342659189249254, "nattr": 1.1351227816904121 }, "Delta_eq": 1.4e-09 }, "-71.90": { "LJ_approx": { "x0": 1.7087681652667724e-09, "C": 16833.83962398515, "nrep": 3.914908533680663, "nattr": 0.9697102045586926 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.7046480280451768e-09, "C": 16965.15489682674, "nrep": 3.9151238997284845, "nattr": 0.9716928395857687 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.5838767580748841e-09, "C": 21372.412565003375, "nrep": 3.922191259312523, "nattr": 1.0344167918733638 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.8850831984948754e-09, "C": 12173.857567383837, "nrep": 3.906959887367545, "nattr": 0.8923154523792497 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.6338405482612552e-09, "C": 19411.96069791924, "nrep": 3.9190798895919405, "nattr": 1.0073171165886772 }, "Delta_eq": 1.281743450351987e-09 } }, "500.0": { "0.00": { "LJ_approx": { "x0": 1.4236928207491738e-09, "C": 29174.423851140436, "nrep": 3.934489087598531, "nattr": 1.1244706663694597 }, "Delta_eq": 1.4e-09 } }, "15.0": { "-71.90": { "LJ_approx": { "x0": 1.722207527516432e-09, "C": 16331.124295102756, "nrep": 3.914721476976037, "nattr": 1.0021304453280393 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.7180439454408102e-09, "C": 16459.15520614834, "nrep": 3.9149304238974905, "nattr": 1.0043742068193204 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.5959361190370466e-09, "C": 20763.823187183425, "nrep": 3.921785737782814, "nattr": 1.0737976563473925 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.9002701433896942e-09, "C": 11795.576706463997, "nrep": 3.9070059150621814, "nattr": 0.9114123498082551 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.646473044478369e-09, "C": 18846.9803104403, "nrep": 3.918766624746869, "nattr": 1.044220870098494 }, "Delta_eq": 1.281743450351987e-09 } }, "70.0": { "-61.93": { "LJ_approx": { "x0": 1.6349587829329923e-09, "C": 19362.426097728276, "nrep": 3.9190260877993097, "nattr": 1.0116609492531905 }, "Delta_eq": 1.281743450351987e-09 }, "-71.90": { "LJ_approx": { "x0": 1.7099628637265945e-09, "C": 16789.420291577666, "nrep": 3.9148688185890483, "nattr": 0.9736446481917082 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.7058388214243274e-09, "C": 16920.455606556396, "nrep": 3.9150834388621805, "nattr": 0.9756530742858303 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.584940743805642e-09, "C": 21319.35643207058, "nrep": 3.9221277053335264, "nattr": 1.0389567310289958 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.886457143504779e-09, "C": 12139.584658299475, "nrep": 3.9069481854501382, "nattr": 0.8948872453823127 }, "Delta_eq": 1.2107230911508513e-09 } }, "150.0": { "-71.90": { "LJ_approx": { "x0": 1.707781542586275e-09, "C": 16870.340248462282, "nrep": 3.914948339378328, "nattr": 0.9660711186661354 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.7036651779798684e-09, "C": 17001.86272239105, "nrep": 3.9151643485118117, "nattr": 0.9680342060844059 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.5830041112065094e-09, "C": 21415.64649760579, "nrep": 3.9222512220871013, "nattr": 1.0303387653647968 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.883936689519767e-09, "C": 12202.390459945682, "nrep": 3.906974649816042, "nattr": 0.8898102498996743 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.6329212539031057e-09, "C": 19452.44141782297, "nrep": 3.9191317215599946, "nattr": 1.0033715654432673 }, "Delta_eq": 1.281743450351987e-09 } }, "16.0": { "-71.90": { "LJ_approx": { "x0": 1.721337196662225e-09, "C": 16363.738563915058, "nrep": 3.9147202446411637, "nattr": 1.0005179992350384 }, "Delta_eq": 1.2553492695740507e-09 }, "-71.40": { "LJ_approx": { "x0": 1.717176984027311e-09, "C": 16491.97282711717, "nrep": 3.9149293522242252, "nattr": 1.0027563589061772 }, "Delta_eq": 1.2566584760815426e-09 }, "-54.00": { "LJ_approx": { "x0": 1.5951507107307484e-09, "C": 20803.713978702526, "nrep": 3.921796023871708, "nattr": 1.0717457519944718 }, "Delta_eq": 1.302942739961778e-09 }, "-89.50": { "LJ_approx": { "x0": 1.899300769652515e-09, "C": 11819.650350288994, "nrep": 3.906993085458305, "nattr": 0.9105930969008011 }, "Delta_eq": 1.2107230911508513e-09 }, "-61.93": { "LJ_approx": { "x0": 1.6456524054221337e-09, "C": 18883.851022856303, "nrep": 3.918771854603072, "nattr": 1.042336408142498 }, "Delta_eq": 1.281743450351987e-09 }, "-58.00": { "LJ_approx": { "x0": 1.6196423302303851e-09, "C": 19847.346684716063, "nrep": 3.920294617611314, "nattr": 1.0573210567487794 }, "Delta_eq": 1.2922508866011204e-09 }, "-140.00": { "LJ_approx": { "x0": 3.536300349187651e-09, "C": 1259.968827699725, "nrep": 3.8800144975132485, "nattr": 0.35722933384459793 }, "Delta_eq": 1.1019265101358682e-09 }, "-200.00": { "LJ_approx": { "x0": 4.448077576688761e-09, "C": 658.9502615105886, "nrep": 3.8382596040618573, "nattr": -0.0007412836249291593 }, "Delta_eq": 1.0050623818936587e-09 }, "-60.00": { "LJ_approx": { "x0": 1.6326306076113028e-09, "C": 19359.641562109642, "nrep": 3.9195252093199606, "nattr": 1.0498037816897123 }, "Delta_eq": 1.2869009570089227e-09 } }, "40.0": { "-71.90": { "LJ_approx": { "x0": 1.7127556130633909e-09, "C": 16685.139617894773, "nrep": 3.9147997833590855, "nattr": 0.9816110605284186 }, "Delta_eq": 1.2553492695740507e-09 }, "-140.00": { "LJ_approx": { "x0": 3.5400899114625196e-09, "C": 1255.3328685760946, "nrep": 3.8798858604365565, "nattr": 0.4340973480775988 }, "Delta_eq": 1.1019265101358682e-09 } }, "30.0": { "-71.90": { "LJ_approx": { "x0": 1.7147994934556977e-09, "C": 16608.65261608246, "nrep": 3.914764637335829, "nattr": 0.9867268079339511 }, "Delta_eq": 1.2553492695740507e-09 } }, "25.4": { "-71.90": { "LJ_approx": { "x0": 1.7162265501918752e-09, "C": 16555.217050637588, "nrep": 3.9147464050871856, "nattr": 0.9900398844251959 }, "Delta_eq": 1.2553492695740507e-09 }, "-61.93": { "LJ_approx": { "x0": 1.6408385667642563e-09, "C": 19099.831853142834, "nrep": 3.9188405082474103, "nattr": 1.0301853851264013 }, "Delta_eq": 1.281743450351987e-09 } }, "40.3": { "-71.90": { "LJ_approx": { "x0": 1.7127058661258177e-09, "C": 16686.9995037205, "nrep": 3.914800799246736, "nattr": 0.981479342025535 }, "Delta_eq": 1.2553492695740507e-09 }, "-61.93": { "LJ_approx": { "x0": 1.637531858311385e-09, "C": 19247.790954282773, "nrep": 3.918928365198691, "nattr": 1.020450016688262 }, "Delta_eq": 1.281743450351987e-09 } }, "45.0": { "-71.90": { "LJ_approx": { "x0": 1.712051746586677e-09, "C": 16711.456749369456, "nrep": 3.914814642254888, "nattr": 0.979726839958776 }, "Delta_eq": 1.2553492695740507e-09 } }, "20.0": { "-71.90": { "LJ_approx": { "x0": 1.7186388439609698e-09, "C": 16464.85454836168, "nrep": 3.9147266088229755, "nattr": 0.9952322612710219 }, "Delta_eq": 1.2553492695740507e-09 }, "-140.00": { "LJ_approx": { "x0": 3.5381843063817075e-09, "C": 1257.5756585425543, "nrep": 3.8799713679048966, "nattr": 0.38013951841061877 }, "Delta_eq": 1.1019265101358682e-09 } }, "60.0": { "-71.90": { "LJ_approx": { "x0": 1.710603828012074e-09, "C": 16765.5278159216, "nrep": 3.9148503824940146, "nattr": 0.9756024890579372 }, "Delta_eq": 1.2553492695740507e-09 } }, "34.0": { "-71.90": { "LJ_approx": { "x0": 1.7138494069983225e-09, "C": 16644.21766668786, "nrep": 3.9147795488410644, "nattr": 0.9844103642751335 }, "Delta_eq": 1.2553492695740507e-09 } }, "22.6": { "-71.90": { "LJ_approx": { "x0": 1.717347083819261e-09, "C": 16513.244775760173, "nrep": 3.914735582752492, "nattr": 0.9925083846044295 }, "Delta_eq": 1.2553492695740507e-09 }, "-54.00": { "LJ_approx": { "x0": 1.5915583742563881e-09, "C": 20985.87279990122, "nrep": 3.9218681449692334, "nattr": 1.06169568520175 }, "Delta_eq": 1.302942739961778e-09 } }, "45.3": { "-71.90": { "LJ_approx": { "x0": 1.7120143529753677e-09, "C": 16712.8535932463, "nrep": 3.9148154954695285, "nattr": 0.9796234512533043 }, "Delta_eq": 1.2553492695740507e-09 } }, "31.0": { "0.00": { "LJ_approx": { "x0": 1.429704934686545e-09, "C": 28734.55271989346, "nrep": 3.9338783401809607, "nattr": 1.155904475115303 }, "Delta_eq": 1.4e-09 }, "-71.90": { "LJ_approx": { "x0": 1.714533452342314e-09, "C": 16618.61152256, "nrep": 3.9147686086169227, "nattr": 0.9860860917336786 }, "Delta_eq": 1.2553492695740507e-09 } }, "31.1": { "-71.90": { "LJ_approx": { "x0": 1.714515996985078e-09, "C": 16619.26565583038, "nrep": 3.914768856863524, "nattr": 0.986044873313721 }, "Delta_eq": 1.2553492695740507e-09 } }, "45.2": { "-71.90": { "LJ_approx": { "x0": 1.7120203335936594e-09, "C": 16712.630620283762, "nrep": 3.914815347514677, "nattr": 0.9796407085930723 }, "Delta_eq": 1.2553492695740507e-09 } }, "28.0": { "-140.00": { "LJ_approx": { "x0": 3.539662733628618e-09, "C": 1255.7594429416959, "nrep": 3.8799232005747073, "nattr": 0.4091144934965918 }, "Delta_eq": 1.1019265101358682e-09 } }, "52.0": { "-140.00": { "LJ_approx": { "x0": 3.540099825001411e-09, "C": 1255.4092689381769, "nrep": 3.8798640679267495, "nattr": 0.44958440372614994 }, "Delta_eq": 1.1019265101358682e-09 } }, "48.0": { "-140.00": { "LJ_approx": { "x0": 3.540113162797765e-09, "C": 1255.365483546012, "nrep": 3.8798702909870157, "nattr": 0.4451084636623491 }, "Delta_eq": 1.1019265101358682e-09 } }, "25.0": { "-140.00": { "LJ_approx": { "x0": 3.5394591974100957e-09, "C": 1255.9739311868518, "nrep": 3.8799379083844014, "nattr": 0.3998616563003167 }, "Delta_eq": 1.1019265101358682e-09 } }, "24.0": { "-140.00": { "LJ_approx": { "x0": 3.539294542800419e-09, "C": 1256.1755733964683, "nrep": 3.8799434079572483, "nattr": 0.3965246264708772 }, "Delta_eq": 1.1019265101358682e-09 } + }, + "26.0": { + "-71.90": { + "LJ_approx": { + "x0": 1.716013742853656e-09, + "C": 16563.186031095847, + "nrep": 3.914748825378261, + "nattr": 0.9895571841402089 + }, + "Delta_eq": 1.2553492695740507e-09 + } } } \ No newline at end of file diff --git a/PySONIC/core/drives.py b/PySONIC/core/drives.py new file mode 100644 index 0000000..a106c76 --- /dev/null +++ b/PySONIC/core/drives.py @@ -0,0 +1,430 @@ +# -*- coding: utf-8 -*- +# @Author: Theo Lemaire +# @Email: theo.lemaire@epfl.ch +# @Date: 2020-01-30 11:46:47 +# @Last Modified by: Theo Lemaire +# @Last Modified time: 2020-02-03 21:33:52 + +import abc +import numpy as np + +from ..utils import si_format +from ..constants import NPC_DENSE, NPC_SPARSE +from .batches import Batch + + +class Drive(metaclass=abc.ABCMeta): + ''' Generic interface to drive object. ''' + + @abc.abstractmethod + def __repr__(self): + ''' String representation. ''' + raise NotImplementedError + + @abc.abstractmethod + def __eq__(self, other): + ''' Equality operator. ''' + raise NotImplementedError + + @abc.abstractmethod + def copy(self): + ''' String representation. ''' + raise NotImplementedError + + @abc.abstractmethod + def checkInputs(self, *args): + ''' Check inputs. ''' + raise NotImplementedError + + @property + @staticmethod + @abc.abstractmethod + def inputs(): + raise NotImplementedError + + @property + @abc.abstractmethod + def meta(self): + raise NotImplementedError + + @property + @abc.abstractmethod + def desc(self): + raise NotImplementedError + + @property + @abc.abstractmethod + def filecodes(self): + raise NotImplementedError + + @abc.abstractmethod + def compute(self, t): + ''' Compute the input drive at a specific time. + + :param t: time (s) + :return: specific input drive + ''' + raise NotImplementedError + + @classmethod + def createQueue(cls, *args): + ''' Create a list of Drive objects for combinations of input parameters. ''' + if len(args) == 1: + return [cls(item) for item in args[0]] + else: + return [cls(*item) for item in Batch.createQueue(*args)] + + @property + def isResolved(self): + return True + + +class XDrive(Drive): + ''' Drive object that can be titrated to find the threshold value of one of its inputs. ''' + + @property + def xvar(self): + raise NotImplementedError + + @xvar.setter + def xvar(self, value): + raise NotImplementedError + + def updatedX(self, value): + other = self.copy() + other.xvar = value + return other + + @property + def is_resolved(self): + return self.xvar is not None + + + +class ElectricDrive(XDrive): + ''' Electric drive object with constant amplitude. ''' + + def __init__(self, A): + ''' Constructor. + + :param A: amplitude (mA/m2) + ''' + self.checkInputs(A) + self.A = A + + @property + def xvar(self): + return self.A + + @xvar.setter + def xvar(self, value): + self.checkInputs(value) + self.A = value + + def __repr__(self): + params = [] + if self.A is not None: + params.append(f'{si_format(self.A * 1e-3, 1, space="")}A/m2') + return f'{self.__class__.__name__}({", ".join(params)})' + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return False + return self.A == other.A + + def copy(self): + return self.__class__(self.A) + + def checkInputs(self, A): + if A is not None: + if not isinstance(A, float): + raise TypeError('Invalid amplitude (must be float typed)') + + @staticmethod + def inputs(): + return { + 'A': { + 'desc': 'current density amplitude', + 'label': 'A', + 'unit': 'mA/m2', + 'factor': 1e0, + 'precision': 1 + } + } + + @property + def meta(self): + return { + 'A': self.A + } + + @property + def desc(self): + return f'A = {si_format(self.A * 1e-3, 2)}A/m2' + + @property + def filecodes(self): + return {'A': f'{self.A:.2f}mAm2'} + + def compute(self, t): + return self.A + + +class VoltageDrive(Drive): + ''' Voltage drive object with a held potential and a step potential. ''' + + def __init__(self, Vhold, Vstep): + ''' Constructor. + + :param Vhold: held membrane potential (mV) + :param Vstep: step membrane potential (mV) + ''' + self.checkInputs(Vhold, Vstep) + self.Vhold = Vhold + self.Vstep = Vstep + + def __repr__(self): + return f'{self.__class__.__name__}({self.desc})' + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return False + return self.Vhold == other.Vhold and self.Vstep == other.Vstep + + def copy(self): + return self.__class__(self.Vhold, self.Vstep) + + def checkInputs(self, Vhold, Vstep): + for k, v in {'Vhold': Vhold, 'Vstep': Vstep}.items(): + if not isinstance(v, float): + raise TypeError(f'Invalid {k} parameter (must be float typed)') + + @staticmethod + def inputs(): + return { + 'Vhold': { + 'desc': 'held membrane potential', + 'label': 'V_{hold}', + 'unit': 'mV', + 'precision': 0 + }, + 'Vstep': { + 'desc': 'step membrane potential', + 'label': 'V_{step}', + 'unit': 'mV', + 'precision': 0 + } + } + + @property + def meta(self): + return { + 'Vhold': self.Vhold, + 'Vstep': self.Vstep, + } + + @property + def desc(self): + return f'Vhold = {self.Vhold:.1f}mV, Vstep = {self.Vstep:.1f}mV' + + @property + def filecodes(self): + return { + 'Vhold': f'{self.Vhold:.1f}mV', + 'Vstep': f'{self.Vstep:.1f}mV', + } + + def compute(self, t): + return self.Vstep + + +class AcousticDrive(XDrive): + ''' Acoustic drive object with intrinsic frequency and amplitude. ''' + + def __init__(self, f, A, phi=np.pi): + ''' Constructor. + + :param f: carrier frequency (Hz) + :param A: peak pressure amplitude (Pa) + :param phi: phase (rad) + ''' + self.checkInputs(f, A, phi) + self.f = f + self.A = A + self.phi = phi + + @property + def xvar(self): + return self.A + + @xvar.setter + def xvar(self, value): + self.checkInputs(self.f, value, self.phi) + self.A = value + + def __repr__(self): + params = [f'{si_format(self.f, 1, space="")}Hz'] + if self.A is not None: + params.append(f'{si_format(self.A, 1, space="")}Pa') + return f'{self.__class__.__name__}({", ".join(params)})' + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return False + return self.f == other.f and self.A == other.A and self.phi == other.phi + + def copy(self): + return self.__class__(self.f, self.A, phi=self.phi) + + def checkInputs(self, f, A, phi): + floatvars = {'f': f, 'phi': phi} + if A is not None: + floatvars['A'] = A + for k, v in floatvars.items(): + if not isinstance(v, float): + raise TypeError(f'Invalid {k} parameter (must be float typed)') + if f <= 0: + d = self.inputs()['f'] + raise ValueError(f'Invalid {d["desc"]}: {f * d.get("factor", 1)} {d["unit"]} (must be strictly positive)') + if A is not None and A < 0: + d = self.inputs()['A'] + raise ValueError(f'Invalid {d["desc"]}: {A * d.get("factor", 1)} {d["unit"]} (must be positive or null)') + + @staticmethod + def inputs(): + return { + 'f': { + 'desc': 'US drive frequency', + 'label': 'f', + 'unit': 'kHz', + 'factor': 1e-3, + 'precision': 0 + }, + 'A': { + 'desc': 'US pressure amplitude', + 'label': 'A', + 'unit': 'kPa', + 'factor': 1e-3, + 'precision': 2 + }, + 'phi': { + 'desc': 'US drive phase', + 'label': '\Phi', + 'unit': 'rad', + 'precision': 2 + } + } + + @property + def meta(self): + return { + 'f': self.f, + 'A': self.A + } + + @property + def desc(self): + return 'f = {}Hz, A = {}Pa'.format(*si_format([self.f, self.A], 2)) + + @property + def filecodes(self): + return { + 'f': f'{self.f * 1e-3:.0f}kHz', + 'A': f'{self.A * 1e-3:.2f}kPa' + } + + @property + def dt(self): + ''' Determine integration time step. ''' + return 1 / (NPC_DENSE * self.f) + + @property + def dt_sparse(self): + return 1 / (NPC_SPARSE * self.f) + + @property + def periodicity(self): + ''' Determine drive periodicity. ''' + return 1. / self.f + + @property + def nPerCycle(self): + return NPC_DENSE + + @property + def modulationFrequency(self): + return self.f + + def compute(self, t): + return self.A * np.sin(2 * np.pi * self.f * t - self.phi) + + +class AcousticDriveArray(Drive): + + def __init__(self, drives): + self.drives = {f'source {i + 1}': s for i, s in enumerate(drives)} + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return False + if self.ndrives != other.ndrives: + return False + if list(self.drives.keys()) != list(other.drives.keys()): + return False + for k, v in self.drives.items(): + if other.drives[k] != v: + return False + return True + + def copy(self): + return self.__class__([x.copy() for x in self.drives.values()]) + + @property + def ndrives(self): + return len(self.drives) + + @property + def meta(self): + return {k: s.meta for k, s in self.drives.items()} + + @property + def desc(self): + descs = [f'[{s.desc}]' for k, s in self.drives.items()] + return ', '.join(descs) + + @property + def filecodes(self): + return {k: s.filecodes for k, s in self.drives.items()} + + @property + def fmax(self): + return max(s.f for s in self.drives.values()) + + @property + def fmin(self): + return min(s.f for s in self.drives.values()) + + @property + def dt(self): + return 1 / (NPC_DENSE * self.fmax) + + @property + def dt_sparse(self): + return 1 / (NPC_SPARSE * self.fmax) + + @property + def periodicity(self): + if self.ndrives > 2: + raise ValueError('cannot compute periodicity for more than two drives') + return 1 / (self.fmax - self.fmin) + + @property + def nPerCycle(self): + return int(self.periodicity // self.dt) + + @property + def modulationFrequency(self): + return np.mean([s.f for s in self.drives.values()]) + + def compute(self, t): + return sum(s.compute(t) for s in self.drives.values()) diff --git a/PySONIC/core/model.py b/PySONIC/core/model.py index 0a7a252..7845818 100644 --- a/PySONIC/core/model.py +++ b/PySONIC/core/model.py @@ -1,275 +1,244 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-08-03 11:53:04 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 19:46:43 +# @Last Modified time: 2020-02-03 21:11:49 import os from functools import wraps from inspect import signature, getdoc import pickle import abc import inspect import numpy as np +from .drives import XDrive from .batches import Batch from ..utils import * class Model(metaclass=abc.ABCMeta): ''' Generic model interface. ''' titration_var = None @property @abc.abstractmethod def tscale(self): ''' Relevant temporal scale of the model. ''' raise NotImplementedError @property @abc.abstractmethod def simkey(self): ''' Keyword used to characterize simulations made with the model. ''' raise NotImplementedError - @property @abc.abstractmethod def __repr__(self): ''' String representation. ''' raise NotImplementedError def params(self): ''' Return a dictionary of all model parameters (class and instance attributes) ''' def toAvoid(p): return (p.startswith('__') and p.endswith('__')) or p.startswith('_abc_') class_attrs = inspect.getmembers(self.__class__, lambda a: not(inspect.isroutine(a))) inst_attrs = inspect.getmembers(self, lambda a: not(inspect.isroutine(a))) class_attrs = [a for a in class_attrs if not toAvoid(a[0])] inst_attrs = [a for a in inst_attrs if not toAvoid(a[0]) and a not in class_attrs] params_dict = {a[0]: a[1] for a in class_attrs + inst_attrs} return params_dict @classmethod def description(cls): return getdoc(cls).split('\n', 1)[0].strip() - @property @staticmethod @abc.abstractmethod def inputs(): ''' Return an informative dictionary on input variables used to simulate the model. ''' raise NotImplementedError - @property @abc.abstractmethod def filecodes(self, *args): ''' Return a dictionary of string-encoded inputs used for file naming. ''' raise NotImplementedError def filecode(self, *args): return filecode(self, *args) @classmethod @abc.abstractmethod def getPltVars(self, *args, **kwargs): ''' Return a dictionary with information about all plot variables related to the model. ''' raise NotImplementedError @property @abc.abstractmethod def pltScheme(self): ''' Return a dictionary model plot variables grouped by context. ''' raise NotImplementedError @staticmethod def checkOutputDir(queuefunc): ''' Check if an output directory is provided in input arguments, and if so, add it to each item of the returned queue (along with an "overwrite" boolean). ''' @wraps(queuefunc) def wrapper(self, *args, **kwargs): outputdir = kwargs.get('outputdir') queue = queuefunc(self, *args, **kwargs) if outputdir is not None: overwrite = kwargs.get('overwrite', True) queue = queuefunc(self, *args, **kwargs) for i, params in enumerate(queue): position_args, keyword_args = Batch.resolve(params) keyword_args['overwrite'] = overwrite keyword_args['outputdir'] = outputdir queue[i] = (position_args, keyword_args) else: if len(queue) > 5: logger.warning('Running more than 5 simulations without file saving') return queue return wrapper @classmethod @abc.abstractmethod def simQueue(cls, *args, outputdir=None, overwrite=True): return NotImplementedError @staticmethod @abc.abstractmethod def checkInputs(self, *args): ''' Check the validity of simulation input parameters. ''' raise NotImplementedError - @property @abc.abstractmethod def derivatives(self, *args, **kwargs): ''' Compute ODE derivatives for a specific set of ODE states and external parameters. ''' raise NotImplementedError - @property @abc.abstractmethod def simulate(self, *args, **kwargs): ''' Simulate the model's differential system for specific input parameters and return output data in a dataframe. ''' raise NotImplementedError @classmethod @abc.abstractmethod def meta(self, *args): ''' Return an informative dictionary about model and simulation parameters. ''' raise NotImplementedError @staticmethod def addMeta(simfunc): ''' Add an informative dictionary about model and simulation parameters to simulation output ''' @wraps(simfunc) def wrapper(self, *args, **kwargs): data, tcomp = timer(simfunc)(self, *args, **kwargs) logger.debug('completed in %ss', si_format(tcomp, 1)) # Add keyword arguments from simfunc signature if not provided bound_args = signature(simfunc).bind(self, *args, **kwargs) bound_args.apply_defaults() target_args = dict(bound_args.arguments) # Try to retrieve meta information try: meta_params_names = list(signature(self.meta).parameters.keys()) meta_params = [target_args[k] for k in meta_params_names] meta = self.meta(*meta_params) except KeyError as err: logger.error(f'Could not find {err} parameter in "{simfunc.__name__}" function') meta = {} # Add computation time to it meta['tcomp'] = tcomp # Return data with meta dict return data, meta return wrapper @staticmethod def logNSpikes(simfunc): ''' Log number of detected spikes on charge profile of simulation output. ''' @wraps(simfunc) def wrapper(self, *args, **kwargs): out = simfunc(self, *args, **kwargs) if out is None: return None data, meta = out nspikes = self.getNSpikes(data) logger.debug(f'{nspikes} spike{plural(nspikes)} detected') return data, meta return wrapper @staticmethod def checkSimParams(simfunc): ''' Check simulation parameters before launching simulation. ''' @wraps(simfunc) def wrapper(self, *args, **kwargs): args, kwargs = alignWithMethodDef(simfunc, args, kwargs) self.checkInputs(*args, *list(kwargs.values())) return simfunc(self, *args, **kwargs) return wrapper @staticmethod def logDesc(simfunc): ''' Log description of model and simulation parameters. ''' @wraps(simfunc) def wrapper(self, *args, **kwargs): args, kwargs = alignWithMethodDef(simfunc, args, kwargs) logger.info(self.desc(self.meta(*args, *list(kwargs.values())))) return simfunc(self, *args, **kwargs) return wrapper @staticmethod def checkTitrate(simfunc): - ''' If "None" amplitude provided in the list of input parameters, - perform a titration to find the threshold amplitude and add it to the list. + ''' If unresolved drive provided in the list of input parameters, + perform a titration to find the threshold drive, and simulate with resolved drive. ''' @wraps(simfunc) def wrapper(self, *args, **kwargs): - args = list(args) - to_titrate = False + # Extract drive object from args + drive, *other_args = args - # Get argument index from function signature - func_args = list(signature(simfunc).parameters.keys())[1:] - is_wrapped = False - try: - iarg = func_args.index(self.titration_var) - var = args[iarg] - if var is None: - # Generate new args list without argument - new_args = args.copy() - del new_args[iarg] - to_titrate = True - except ValueError as err: - iarg = func_args.index(self.titration_obj) - obj = args[iarg] - var = getattr(obj, self.titration_var) - is_wrapped = True - if var is None: - # Generate new args list with modified source - d = obj.meta.copy() - del d[self.titration_var] - new_args = args.copy() - new_args = new_args[:iarg] + list(d.values()) + new_args[iarg + 1:] - to_titrate = True - - # If argument is None - if to_titrate: - # Perform titration to find threshold argument value - xthr = self.titrate(*new_args) + # If drive is not fully resolved + if not drive.is_resolved: + # Titrate + xthr = self.titrate(*args) + + # If no threshold was found, return None if np.isnan(xthr): logger.error(f'Could not find threshold {self.titration_var}') return None - # Change the object titration variable if necessary - if is_wrapped: - setattr(obj, self.titration_var, xthr) - xthr = obj - - # Re-insert it into arguments list - args[iarg] = xthr + # Otherwise, update args list with resovled drive + args = (drive.updatedX(xthr), *other_args) # Execute simulation function return simfunc(self, *args, **kwargs) return wrapper def simAndSave(self, *args, **kwargs): return simAndSave(self, *args, **kwargs) def getOutput(self, outputdir, *args): ''' Get simulation output data for a specific parameters combination, by looking for an output file into a specific directory. If a corresponding output file is not found in the specified directory, the model is first run and results are saved in the output file. ''' fpath = f'{outputdir}/{self.filecode(*args)}.pkl' if not os.path.isfile(fpath): self.simAndSave(outputdir, *args, outputdir=outputdir) return loadData(fpath) diff --git a/PySONIC/core/nbls.py b/PySONIC/core/nbls.py index 3f4b676..26739a2 100644 --- a/PySONIC/core/nbls.py +++ b/PySONIC/core/nbls.py @@ -1,693 +1,689 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2016-09-29 16:16:19 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-03 14:34:29 +# @Last Modified time: 2020-02-03 21:40:24 import time from copy import deepcopy import logging import numpy as np import pandas as pd from .simulators import PWSimulator, HybridSimulator, PeriodicSimulator from .bls import BilayerSonophore from .pneuron import PointNeuron from .model import Model -from .sources import * -from .protocols import TimeProtocol, PulsedProtocol, createPulsedProtocols +from .drives import Drive, AcousticDrive +from .protocols import TimeProtocol, PulsedProtocol from ..utils import * from ..threshold import threshold from ..constants import * from ..postpro import getFixedPoints from .lookups import EffectiveVariablesLookup from ..neurons import getPointNeuron NEURONS_LOOKUP_DIR = os.path.abspath(os.path.split(__file__)[0] + "/../lookups/") class NeuronalBilayerSonophore(BilayerSonophore): ''' This class inherits from the BilayerSonophore class and receives an PointNeuron instance at initialization, to define the electro-mechanical NICE model and its SONIC variant. ''' tscale = 'ms' # relevant temporal scale of the model simkey = 'ASTIM' # keyword used to characterize simulations made with this model - titration_obj = 'US_source' # name of the object containing the titration variable - titration_var = 'Adrive' # name of the titration variable def __init__(self, a, pneuron, embedding_depth=0.0): ''' Constructor of the class. :param a: in-plane radius of the sonophore structure within the membrane (m) :param pneuron: point-neuron model :param embedding_depth: depth of the embedding tissue around the membrane (m) ''' # Check validity of input parameters if not isinstance(pneuron, PointNeuron): raise ValueError(f'Invalid neuron type: "{pneuron.name}" (must inherit from PointNeuron class)') self.pneuron = pneuron # Initialize BilayerSonophore parent object super().__init__(a, pneuron.Cm0, pneuron.Qm0, embedding_depth=embedding_depth) def __repr__(self): s = f'{self.__class__.__name__}({self.a * 1e9:.1f} nm, {self.pneuron}' if self.d > 0.: s += f', d={si_format(self.d, precision=1)}m' return f'{s})' @classmethod def initFromMeta(cls, meta): return cls(meta['a'], getPointNeuron(meta['neuron']), embedding_depth=meta['d']) def params(self): return {**super().params(), **self.pneuron.params()} def getPltVars(self, wrapleft='df["', wrapright='"]'): return {**super().getPltVars(wrapleft, wrapright), **self.pneuron.getPltVars(wrapleft, wrapright)} @property def pltScheme(self): return self.pneuron.pltScheme def filecode(self, *args): return Model.filecode(self, *args) - @property @staticmethod def inputs(): # Get parent input vars and supress irrelevant entries - bls_vars = BilayerSonophore.inputs - pneuron_vars = PointNeuron.inputs - del bls_vars['Qm'] - del pneuron_vars['Astim'] + inputvars = BilayerSonophore.inputs() + del inputvars['Qm'] # Fill in current input vars in appropriate order - inputvars = bls_vars - inputvars.update(pneuron_vars) - inputvars['fs'] = { - 'desc': 'sonophore membrane coverage fraction', - 'label': 'f_s', - 'unit': '\%', - 'factor': 1e2, - 'precision': 0 - } - inputvars['method'] = None + inputvars.update({ + **AcousticDrive.inputs(), + 'fs': { + 'desc': 'sonophore membrane coverage fraction', + 'label': 'f_s', + 'unit': '\%', + 'factor': 1e2, + 'precision': 0 + }, + 'method': None + }) return inputvars - def filecodes(self, US_source, pp, fs, method, qss_vars): + def filecodes(self, drive, pp, fs, method, qss_vars): codes = { 'simkey': self.simkey, 'neuron': self.pneuron.name, 'nature': pp.nature, 'a': f'{self.a * 1e9:.0f}nm', - **US_source.filecodes, + **drive.filecodes, **pp.filecodes, } codes['fs'] = f'fs{fs * 1e2:.0f}%' if fs < 1 else None codes['method'] = method codes['qss_vars'] = qss_vars return codes @staticmethod def interpOnOffVariable(key, Qm, stim, lkp): ''' Interpolate Q-dependent effective variable along ON and OFF periods of a solution. :param key: lookup variable key :param Qm: charge density solution vector :param stim: stimulation state solution vector :param lkp: dictionary of lookups for ON and OFF states :return: interpolated effective variable vector ''' x = np.zeros(stim.size) x[stim == 0] = lkp['OFF'].interpVar1D(Qm[stim == 0], key) x[stim == 1] = lkp['ON'].interpVar1D(Qm[stim == 1], key) return x @staticmethod def spatialAverage(fs, x, x0): ''' fs-modulated spatial averaging. ''' return fs * x + (1 - fs) * x0 @timer - def computeEffVars(self, US_source, Qm, fs): + def computeEffVars(self, drive, Qm, fs): ''' Compute "effective" coefficients of the HH system for a specific acoustic stimulus and charge density. A short mechanical simulation is run while imposing the specific charge density, until periodic stabilization. The HH coefficients are then averaged over the last acoustic cycle to yield "effective" coefficients. - :param US_source: acoustic source object + :param drive: acoustic drive object :param Qm: imposed charge density (C/m2) :param fs: list of sonophore membrane coverage fractions :return: list with computation time and a list of dictionaries of effective variables ''' # Run simulation and retrieve deflection and gas content vectors from last cycle - data = BilayerSonophore.simCycles(self, US_source, Qm) + data = BilayerSonophore.simCycles(self, drive, Qm) Z_last = data.loc[-NPC_DENSE:, 'Z'].values # m Cm_last = self.v_capacitance(Z_last) # F/m2 # For each coverage fraction effvars = [] for x in fs: # Compute membrane capacitance and membrane potential vectors Cm = self.spatialAverage(x, Cm_last, self.Cm0) # F/m2 Vm = Qm / Cm * 1e3 # mV # Compute average cycle value for membrane potential and rate constants effvars.append({**{'V': np.mean(Vm)}, **self.pneuron.getEffRates(Vm)}) # Log process - log = f'{self}: lookups @ {US_source.desc}, {Qm * 1e5:.2f} nC/cm2' + log = f'{self}: lookups @ {drive.desc}, {Qm * 1e5:.2f} nC/cm2' if len(fs) > 1: log += f', fs = {fs.min() * 1e2:.0f} - {fs.max() * 1e2:.0f}%' logger.info(log) # Return effective coefficients return effvars - def getLookupFileName(self, a=None, Fdrive=None, Adrive=None, fs=False): + def getLookupFileName(self, a=None, f=None, A=None, fs=False): fname = f'{self.pneuron.name}_lookups' if a is not None: fname += f'_{a * 1e9:.0f}nm' - if Fdrive is not None: - fname += f'_{Fdrive * 1e-3:.0f}kHz' - if Adrive is not None: - fname += f'_{Adrive * 1e-3:.0f}kPa' + if f is not None: + fname += f'_{f * 1e-3:.0f}kHz' + if A is not None: + fname += f'_{A * 1e-3:.0f}kPa' if fs is True: fname += '_fs' return f'{fname}.pkl' def getLookupFilePath(self, *args, **kwargs): return os.path.join(NEURONS_LOOKUP_DIR, self.getLookupFileName(*args, **kwargs)) def getLookup(self, *args, **kwargs): keep_tcomp = kwargs.pop('keep_tcomp', False) lookup_path = self.getLookupFilePath(*args, **kwargs) lkp = EffectiveVariablesLookup.fromPickle(lookup_path) if not keep_tcomp: del lkp.tables['tcomp'] return lkp - def getLookup2D(self, Fdrive, fs): - kwargs = {'a': self.a, 'Fdrive': Fdrive, 'fs': True} if fs < 1. else {} - lkp2d = self.getLookup(**kwargs).projectN({'a': self.a, 'f': Fdrive, 'fs': fs}) - return lkp2d + def getLookup2D(self, f, fs): + proj_kwargs = {'a': self.a, 'f': f, 'fs': fs} + if fs < 1.: + kwargs = proj_kwargs.copy() + kwargs['fs'] = True + else: + kwargs = {} + return self.getLookup(**kwargs).projectN(proj_kwargs) - def fullDerivatives(self, t, y, US_source, fs): + def fullDerivatives(self, t, y, drive, fs): ''' Compute the full system derivatives. :param t: specific instant in time (s) :param y: vector of state variables - :param US_source: acoustic source object + :param drive: acoustic drive object :param fs: sonophore membrane coverage fraction (-) :return: vector of derivatives ''' dydt_mech = BilayerSonophore.derivatives( - self, t, y[:3], US_source, y[3]) + self, t, y[:3], drive, y[3]) dydt_elec = self.pneuron.derivatives( t, y[3:], Cm=self.spatialAverage(fs, self.capacitance(y[1]), self.Cm0)) return dydt_mech + dydt_elec def effDerivatives(self, t, y, lkp1d, qss_vars): ''' Compute the derivatives of the n-ODE effective system variables, based on 1-dimensional linear interpolation of "effective" coefficients that summarize the system's behaviour over an acoustic cycle. :param t: specific instant in time (s) :param y: vector of HH system variables at time t :param lkp: dictionary of 1D data points of "effective" coefficients over the charge domain, for specific frequency and amplitude values. :param qss_vars: list of QSS variables :return: vector of effective system derivatives at time t ''' # Unpack values and interpolate lookup at current charge density Qm, *states = y lkp0d = lkp1d.interpolate1D(Qm) # Compute states dictionary from differential and QSS variables states_dict = {} i = 0 for k in self.pneuron.statesNames(): if k in qss_vars: states_dict[k] = self.pneuron.quasiSteadyStates()[k](lkp0d) else: states_dict[k] = states[i] i += 1 # Compute charge density derivative dQmdt = - self.pneuron.iNet(lkp0d['V'], states_dict) * 1e-3 # Compute states derivative vector only for differential variable dstates = [] for k in self.pneuron.statesNames(): if k not in qss_vars: dstates.append(self.pneuron.derEffStates()[k](lkp0d, states_dict)) return [dQmdt, *dstates] - def __simFull(self, US_source, pp, fs): + def __simFull(self, drive, pp, fs): # Determine time step - dt = US_source.dt + dt = drive.dt # Compute initial non-zero deflection - Z = self.computeInitialDeflection(US_source, self.Qm0, dt) + Z = self.computeInitialDeflection(drive, self.Qm0, dt) # Set initial conditions ss0 = self.pneuron.getSteadyStates(self.pneuron.Vm0) y0 = np.concatenate(([0., 0., self.ng0, self.Qm0], ss0)) y1 = np.concatenate(([0., Z, self.ng0, self.Qm0], ss0)) - US_source_OFF = US_source.copy() - US_source_OFF.Adrive = 0 + drive_OFF = drive.copy() + drive_OFF.A = 0 # Initialize simulator and compute solution logger.debug('Computing detailed solution') simulator = PWSimulator( - lambda t, y: self.fullDerivatives(t, y, US_source, fs), - lambda t, y: self.fullDerivatives(t, y, US_source_OFF, fs)) + lambda t, y: self.fullDerivatives(t, y, drive, fs), + lambda t, y: self.fullDerivatives(t, y, drive_OFF, fs)) t, y, stim = simulator( y1, dt, pp, target_dt=CLASSIC_TARGET_DT, print_progress=logger.getEffectiveLevel() <= logging.INFO, monitor_func=None) # monitor_func=lambda t, y: f't = {t * 1e3:.5f} ms, Qm = {y[3] * 1e5:.2f} nC/cm2') # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim, y0=y0) # Store output in dataframe and return data = pd.DataFrame({ 't': t, 'stimstate': stim, 'Z': y[:, 1], 'ng': y[:, 2], 'Qm': y[:, 3] }) data['Vm'] = data['Qm'].values / self.spatialAverage( fs, self.v_capacitance(data['Z'].values), self.Cm0) * 1e3 # mV for i in range(len(self.pneuron.states)): data[self.pneuron.statesNames()[i]] = y[:, i + 4] return data - def __simHybrid(self, US_source, pp, fs): + def __simHybrid(self, drive, pp, fs): # Determine time steps - dt_dense, dt_sparse = [US_source.dt, US_source.dt_sparse] + dt_dense, dt_sparse = [drive.dt, drive.dt_sparse] # Compute initial non-zero deflection - Z = self.computeInitialDeflection(US_source, self.Qm0, dt_dense) + Z = self.computeInitialDeflection(drive, self.Qm0, dt_dense) # Set initial conditions ss0 = self.pneuron.getSteadyStates(self.pneuron.Vm0) y0 = np.concatenate(([0., 0., self.ng0, self.Qm0], ss0)) y1 = np.concatenate(([0., Z, self.ng0, self.Qm0], ss0)) - US_source_OFF = US_source.copy() - US_source_OFF.Adrive = 0 + drive_OFF = drive.copy() + drive_OFF.A = 0 # Initialize simulator and compute solution is_dense_var = np.array([True] * 3 + [False] * (len(self.pneuron.states) + 1)) logger.debug('Computing hybrid solution') simulator = HybridSimulator( - lambda t, y: self.fullDerivatives(t, y, US_source, fs), - lambda t, y: self.fullDerivatives(t, y, US_source_OFF, fs), + lambda t, y: self.fullDerivatives(t, y, drive, fs), + lambda t, y: self.fullDerivatives(t, y, drive_OFF, fs), lambda t, y, Cm: self.pneuron.derivatives( t, y, Cm=self.spatialAverage(fs, Cm, self.Cm0)), lambda yref: self.capacitance(yref[1]), is_dense_var, ivars_to_check=[1, 2]) - t, y, stim = simulator(y1, dt_dense, dt_sparse, US_source.periodicity, pp) + t, y, stim = simulator(y1, dt_dense, dt_sparse, drive.periodicity, pp) # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim, y0=y0) # Store output in dataframe and return data = pd.DataFrame({ 't': t, 'stimstate': stim, 'Z': y[:, 1], 'ng': y[:, 2], 'Qm': y[:, 3] }) data['Vm'] = data['Qm'].values / self.spatialAverage( fs, self.v_capacitance(data['Z'].values), self.Cm0) * 1e3 # mV for i in range(len(self.pneuron.states)): data[self.pneuron.statesNames()[i]] = y[:, i + 4] return data - def __simSonic(self, US_source, pp, fs, qss_vars=None, pavg=False): - # Extract US parameters - Fdrive, Adrive = US_source.Fdrive, US_source.Adrive - + def __simSonic(self, drive, pp, fs, qss_vars=None, pavg=False): # Load appropriate 2D lookups - lkp2d = self.getLookup2D(Fdrive, fs) + lkp2d = self.getLookup2D(drive.f, fs) # Interpolate 2D lookups at zero and US amplitude - logger.debug('Interpolating lookups at A = %.2f kPa and A = 0', Adrive * 1e-3) - lkps1d = {'ON': lkp2d.project('A', Adrive), 'OFF': lkp2d.project('A', 0.)} + logger.debug('Interpolating lookups at A = %.2f kPa and A = 0', drive.A * 1e-3) + lkps1d = {'ON': lkp2d.project('A', drive.A), 'OFF': lkp2d.project('A', 0.)} # Adapt lookups and pulsing protocol if pulse-average mode is selected if pavg: lkps1d['ON'] = lkps1d['ON'] * pp.DC + lkps1d['OFF'] * (1 - pp.DC) tstim = (int(pp.tstim * pp.PRF) - 1 + pp.DC) / pp.PRF toffset = pp.tstim + pp.toffset - tstim tp = TimeProtocol(tstim, toffset) # # Determine QSS and differential variables if qss_vars is None: qss_vars = [] diff_vars = [item for item in self.pneuron.statesNames() if item not in qss_vars] # Create 1D lookup of QSS variables with reference charge vector QSS_1D_lkp = { key: EffectiveVariablesLookup( lkps1d['ON'].refs, {k: self.pneuron.quasiSteadyStates()[k](val) for k in qss_vars}) for key, val in lkps1d.items()} # Set initial conditions sstates = [self.pneuron.steadyStates()[k](self.pneuron.Vm0) for k in diff_vars] y0 = np.array([self.Qm0, *sstates]) # Initialize simulator and compute solution logger.debug('Computing effective solution') simulator = PWSimulator( lambda t, y: self.effDerivatives(t, y, lkps1d['ON'], qss_vars), lambda t, y: self.effDerivatives(t, y, lkps1d['OFF'], qss_vars)) t, y, stim = simulator(y0, self.pneuron.chooseTimeStep(), pp) # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim) # Store output vectors in dataframe: time, stim state, charge, potential # and other differential variables data = pd.DataFrame({ 't': t, 'stimstate': stim, 'Qm': y[:, 0] }) data['Vm'] = self.interpOnOffVariable('V', data['Qm'].values, stim, lkps1d) for key in ['Z', 'ng']: data[key] = np.full(t.size, np.nan) for i, k in enumerate(diff_vars): data[k] = y[:, i + 1] # Interpolate QSS variables along charge vector and store them in dataframe for k in qss_vars: data[k] = self.interpOnOffVariable(k, data['Qm'].values, stim, QSS_1D_lkp) return data def intMethods(self): ''' Listing of model integration methods. ''' return { 'full': self.__simFull, 'hybrid': self.__simHybrid, 'sonic': self.__simSonic } @classmethod @Model.checkOutputDir def simQueue(cls, freqs, amps, durations, offsets, PRFs, DCs, fs, methods, qss_vars, **kwargs): ''' Create a serialized 2D array of all parameter combinations for a series of individual parameter sweeps, while avoiding repetition of CW protocols for a given PRF sweep. :param freqs: list (or 1D-array) of US frequencies :param amps: list (or 1D-array) of acoustic amplitudes :param durations: list (or 1D-array) of stimulus durations :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) :param PRFs: list (or 1D-array) of pulse-repetition frequencies :param DCs: list (or 1D-array) of duty cycle values :param fs: sonophore membrane coverage fractions (-) :params methods: integration methods :param qss_vars: QSS variables :return: list of parameters (list) for each simulation ''' if ('full' in methods or 'hybrid' in methods) and kwargs['outputdir'] is None: logger.warning('Running cumbersome simulation(s) without file saving') if amps is None: amps = [None] - sources = createSources(freqs, amps) - protocols = createPulsedProtocols(durations, offsets, PRFs, DCs) + drives = AcousticDrive.createQueue(freqs, amps) + protocols = PulsedProtocol.createQueue(durations, offsets, PRFs, DCs) queue = [] - for s in sources: + for drive in drives: for pp in protocols: for cov in fs: for method in methods: - queue.append([s, pp, cov, method, qss_vars]) + queue.append([drive, pp, cov, method, qss_vars]) return queue - def checkInputs(self, US_source, pp, fs, method, qss_vars): - if not isinstance(US_source, AcousticSource) and not isinstance(US_source, AcousticSourceArray): - raise TypeError(f'Invalid "US_source" parameter (must be an "AcousticSource" object)') + def checkInputs(self, drive, pp, fs, method, qss_vars): + if not isinstance(drive, Drive): + raise TypeError(f'Invalid "drive" parameter (must be an "Drive" object)') if not isinstance(pp, PulsedProtocol): raise TypeError('Invalid pulsed protocol (must be "PulsedProtocol" instance)') if not isinstance(fs, float): raise TypeError(f'Invalid "fs" parameter (must be float typed)') if qss_vars is not None: if not isIterable(qss_vars) or not isinstance(qss_vars[0], str): raise ValueError('Invalid QSS variables: must be None or an iterable of strings') sn = self.pneuron.statesNames() for item in qss_vars: if item not in sn: raise ValueError(f'Invalid QSS variable: {item} (must be in {sn}') if method not in list(self.intMethods().keys()): raise ValueError(f'Invalid integration method: "{method}"') @Model.logNSpikes @Model.checkTitrate @Model.addMeta @Model.logDesc @Model.checkSimParams - def simulate(self, US_source, pp, fs=1., method='sonic', qss_vars=None): + def simulate(self, drive, pp, fs=1., method='sonic', qss_vars=None): ''' Simulate the electro-mechanical model for a specific set of US stimulation parameters, and return output data in a dataframe. - :param US_source: acoustic source object + :param drive: acoustic drive object :param pp: pulse protocol object :param fs: sonophore membrane coverage fraction (-) :param method: selected integration method :return: output dataframe ''' # Set the tissue elastic modulus - self.setTissueModulus(US_source) + self.setTissueModulus(drive) # Call appropriate simulation function and return simfunc = self.intMethods()[method] - simargs = [US_source, pp, fs] + simargs = [drive, pp, fs] if method == 'sonic': simargs.append(qss_vars) return simfunc(*simargs) - def meta(self, US_source, pp, fs, method, qss_vars): + def meta(self, drive, pp, fs, method, qss_vars): return { 'simkey': self.simkey, 'neuron': self.pneuron.name, 'a': self.a, 'd': self.d, - 'US_source': US_source, + 'drive': drive, 'pp': pp, 'fs': fs, 'method': method, 'qss_vars': qss_vars } def desc(self, meta): - s = f'{self}: {meta["method"]} simulation @ {meta["US_source"].desc}, {meta["pp"].desc}' + s = f'{self}: {meta["method"]} simulation @ {meta["drive"].desc}, {meta["pp"].desc}' if meta['fs'] < 1.0: s += f', fs = {(meta["fs"] * 1e2):.2f}%' if 'qss_vars' in meta and meta['qss_vars'] is not None: s += f" - QSS ({', '.join(meta['qss_vars'])})" return s @staticmethod def getNSpikes(data): return PointNeuron.getNSpikes(data) @logCache(os.path.join(os.path.split(__file__)[0], 'astim_titrations.log')) - def titrate(self, Fdrive, pp, fs=1., method='sonic', qss_vars=None, xfunc=None, Arange=None): + def titrate(self, drive, pp, fs=1., method='sonic', qss_vars=None, xfunc=None, Arange=None): ''' Use a binary search to determine the threshold amplitude needed to obtain neural excitation for a given frequency and pulsed protocol. - :param Fdrive: US frequency (Hz) + :param drive: unresolved acoustic drive object :param pp: pulse protocol object :param fs: sonophore membrane coverage fraction (-) :param method: integration method :param xfunc: function determining whether condition is reached from simulation output - :param Arange: search interval for Adrive, iteratively refined + :param Arange: search interval for acoustic amplitude, iteratively refined :return: determined threshold amplitude (Pa) ''' # Default output function if xfunc is None: xfunc = self.pneuron.titrationFunc # Default amplitude interval if Arange is None: Arange = [0., self.getLookup().refs['A'].max()] return threshold( lambda x: xfunc(self.simulate( - AcousticSource(Fdrive, x), pp, fs=fs, method=method, qss_vars=qss_vars)[0]), + drive.updatedX(x), pp, fs=fs, method=method, qss_vars=qss_vars)[0]), Arange, x0=ASTIM_AMP_INITIAL, eps_thr=ASTIM_ABS_CONV_THR, rel_eps_thr=1e0, precheck=True) - def getQuasiSteadyStates(self, Fdrive, amps=None, charges=None, DC=1.0, squeeze_output=False): + def getQuasiSteadyStates(self, f, amps=None, charges=None, DC=1.0, squeeze_output=False): ''' Compute the quasi-steady state values of the neuron's gating variables for a combination of US amplitudes, charge densities, at a specific US frequency and duty cycle. - :param Fdrive: US frequency (Hz) + :param f: US frequency (Hz) :param amps: US amplitudes (Pa) :param charges: membrane charge densities (C/m2) :param DC: duty cycle :return: 4-tuple with reference values of US amplitude and charge density, as well as interpolated Vmeff and QSS gating variables ''' # Get DC-averaged lookups interpolated at the appropriate amplitudes and charges - lkp = self.getLookup().projectDC(amps=amps, DC=DC).projectN({'a': self.a, 'f': Fdrive}) + lkp = self.getLookup().projectDC(amps=amps, DC=DC).projectN({'a': self.a, 'f': f}) if charges is not None: lkp = lkp.project('Q', charges) # Specify dimensions with A as the first axis A_axis = lkp.getAxisIndex('A') lkp.move('A', 0) nA = lkp.dims()[0] # Compute QSS states using these lookups QSS = EffectiveVariablesLookup( lkp.refs, {k: v(lkp) for k, v in self.pneuron.quasiSteadyStates().items()}) # Compress outputs if needed if squeeze_output: QSS = QSS.squeeze() lkp = lkp.squeeze() return lkp, QSS - def iNetQSS(self, Qm, Fdrive, Adrive, DC): + def iNetQSS(self, Qm, f, A, DC): ''' Compute quasi-steady state net membrane current for a given combination of US parameters and a given membrane charge density. :param Qm: membrane charge density (C/m2) - :param Fdrive: US frequency (Hz) - :param Adrive: US amplitude (Pa) + :param f: US frequency (Hz) + :param A: US amplitude (Pa) :param DC: duty cycle (-) :return: net membrane current (mA/m2) ''' lkp, QSS = self.getQuasiSteadyStates( - Fdrive, amps=Adrive, charges=Qm, DC=DC, squeeze_output=True) + f, amps=A, charges=Qm, DC=DC, squeeze_output=True) return self.pneuron.iNet(lkp['V'], QSS) # mA/m2 - def fixedPointsQSS(self, Fdrive, Adrive, DC, lkp, dQdt): + def fixedPointsQSS(self, f, A, DC, lkp, dQdt): ''' Compute QSS fixed points along the charge dimension for a given combination of US parameters, and determine their stability. - :param Fdrive: US frequency (Hz) - :param Adrive: US amplitude (Pa) + :param f: US frequency (Hz) + :param A: US amplitude (Pa) :param DC: duty cycle (-) :param lkp: lookup dictionary for effective variables along charge dimension :param dQdt: charge derivative profile along charge dimension :return: 2-tuple with values of stable and unstable fixed points ''' pltvars = self.getPltVars() - logger.debug(f'A = {Adrive * 1e-3:.2f} kPa, DC = {DC * 1e2:.0f}%') + logger.debug(f'A = {A * 1e-3:.2f} kPa, DC = {DC * 1e2:.0f}%') # Extract fixed points from QSS charge variation profile def dfunc(Qm): - return - self.iNetQSS(Qm, Fdrive, Adrive, DC) + return - self.iNetQSS(Qm, f, A, DC) fixed_points = getFixedPoints( lkp.refs['Q'], dQdt, filter='both', der_func=dfunc).tolist() dfunc = lambda x: np.array(self.effDerivatives(_, x, lkp)) # classified_fixed_points = {'stable': [], 'unstable': [], 'saddle': []} classified_fixed_points = [] np.set_printoptions(precision=2) # For each fixed point for i, Qm in enumerate(fixed_points): # Re-compute QSS at fixed point - *_, QSS = self.getQuasiSteadyStates(Fdrive, amps=Adrive, charges=Qm, DC=DC, + *_, QSS = self.getQuasiSteadyStates(f, amps=A, charges=Qm, DC=DC, squeeze_output=True) # Classify fixed point stability by numerically evaluating its Jacobian and # computing its eigenvalues x = np.array([Qm, *QSS.tables.values()]) eigvals, key = classifyFixedPoint(x, dfunc) # classified_fixed_points[key].append(Qm) classified_fixed_points.append((x, eigvals, key)) # eigenvalues.append(eigvals) logger.debug(f'{key} point @ Q = {(Qm * 1e5):.1f} nC/cm2') # eigenvalues = np.array(eigenvalues).T # print(eigenvalues.shape) return classified_fixed_points - def isStableQSS(self, Fdrive, Adrive, DC): + def isStableQSS(self, f, A, DC): lookups, QSS = self.getQuasiSteadyStates( - Fdrive, amps=Adrive, DCs=DC, squeeze_output=True) + f, amps=A, DCs=DC, squeeze_output=True) dQdt = -self.pneuron.iNet(lookups['V'], QSS.tables) # mA/m2 - classified_fixed_points = self.fixedPointsQSS(Fdrive, Adrive, DC, lookups, dQdt) + classified_fixed_points = self.fixedPointsQSS(f, A, DC, lookups, dQdt) return len(classified_fixed_points['stable']) > 0 class DrivenNeuronalBilayerSonophore(NeuronalBilayerSonophore): simkey = 'DASTIM' # keyword used to characterize simulations made with this model def __init__(self, Idrive, *args, **kwargs): self.Idrive = Idrive super().__init__(*args, **kwargs) def __repr__(self): return super().__repr__()[:-1] + f', Idrive = {self.Idrive:.2f} mA/m2)' @classmethod def initFromMeta(cls, meta): return cls(meta['Idrive'], meta['a'], getPointNeuron(meta['neuron']), embedding_depth=meta['d']) def params(self): return {**{'Idrive': self.Idrive}, **super().params()} - @property @staticmethod def inputs(): - inputvars = NeuronalBilayerSonophore.inputs + inputvars = NeuronalBilayerSonophore.inputs() inputvars['Idrive'] = { 'desc': 'driving current density', 'label': 'I_{drive}', 'unit': 'mA/m2', 'factor': 1e0, 'precision': 0 } return inputvars def filecodes(self, *args): codes = super().filecodes(*args) codes['Idrive'] = f'Idrive{self.Idrive:.1f}mAm2' return codes def fullDerivatives(self, *args): dydt = super().fullDerivatives(*args) dydt[3] += self.Idrive * 1e-3 return dydt def effDerivatives(self, *args): dQmdt, *dstates = super().effDerivatives(*args) dQmdt += self.Idrive * 1e-3 return [dQmdt, *dstates] - def meta(self, US_source, pp, fs, method, qss_vars): - d = super().meta(US_source, pp, fs, method, qss_vars) + def meta(self, drive, pp, fs, method, qss_vars): + d = super().meta(drive, pp, fs, method, qss_vars) d['Idrive'] = self.Idrive return d \ No newline at end of file diff --git a/PySONIC/core/pneuron.py b/PySONIC/core/pneuron.py index 3b36ec1..4096906 100644 --- a/PySONIC/core/pneuron.py +++ b/PySONIC/core/pneuron.py @@ -1,555 +1,547 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-08-03 11:53:04 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-03 15:11:03 +# @Last Modified time: 2020-02-03 21:04:14 import abc import inspect import numpy as np import pandas as pd -from .protocols import PulsedProtocol, createPulsedProtocols +from .protocols import PulsedProtocol from .model import Model from .lookups import EffectiveVariablesLookup from .simulators import PWSimulator +from .drives import Drive, ElectricDrive from ..postpro import detectSpikes, computeFRProfile from ..constants import * from ..utils import * from ..threshold import threshold class PointNeuron(Model): ''' Generic point-neuron model interface. ''' tscale = 'ms' # relevant temporal scale of the model simkey = 'ESTIM' # keyword used to characterize simulations made with this model - titration_var = 'Astim' # name of the titration parameter def __repr__(self): return self.__class__.__name__ @property @classmethod @abc.abstractmethod def name(cls): ''' Neuron name. ''' raise NotImplementedError @property @classmethod @abc.abstractmethod def Cm0(cls): ''' Neuron's resting capacitance (F/m2). ''' raise NotImplementedError @property @classmethod @abc.abstractmethod def Vm0(cls): ''' Neuron's resting membrane potential(mV). ''' raise NotImplementedError @property def Qm0(self): return self.Cm0 * self.Vm0 * 1e-3 # C/m2 - @property @staticmethod def inputs(): - return { - 'Astim': { - 'desc': 'current density amplitude', - 'label': 'A', - 'unit': 'mA/m2', - 'factor': 1e0, - 'precision': 1 - }, - **PulsedProtocol.inputs - } + return ElectricDrive.inputs() @classmethod - def filecodes(cls, Astim, pp): + def filecodes(cls, drive, pp): return { 'simkey': cls.simkey, 'neuron': cls.name, 'nature': pp.nature, - 'Astim': f'{Astim:.1f}mAm2', + **drive.filecodes, **pp.filecodes } @classmethod def getPltVars(cls, wrapleft='df["', wrapright='"]'): pltvars = { 'Qm': { 'desc': 'membrane charge density', 'label': 'Q_m', 'unit': 'nC/cm^2', 'factor': 1e5, 'bounds': ((cls.Vm0 - 20.0) * cls.Cm0 * 1e2, 60) }, 'Vm': { 'desc': 'membrane potential', 'label': 'V_m', 'unit': 'mV', 'bounds': (-150, 70) }, 'ELeak': { 'constant': 'obj.ELeak', 'desc': 'non-specific leakage current resting potential', 'label': 'V_{leak}', 'unit': 'mV', 'ls': '--', 'color': 'k' } } for cname in cls.getCurrentsNames(): cfunc = getattr(cls, cname) cargs = inspect.getargspec(cfunc)[0][1:] pltvars[cname] = { 'desc': inspect.getdoc(cfunc).splitlines()[0], 'label': f'I_{{{cname[1:]}}}', 'unit': 'A/m^2', 'factor': 1e-3, 'func': f"{cname}({', '.join([f'{wrapleft}{a}{wrapright}' for a in cargs])})" } for var in cargs: if var != 'Vm': pltvars[var] = { 'desc': cls.states[var], 'label': var, 'bounds': (-0.1, 1.1) } pltvars['iNet'] = { 'desc': inspect.getdoc(getattr(cls, 'iNet')).splitlines()[0], 'label': 'I_{net}', 'unit': 'A/m^2', 'factor': 1e-3, 'func': f'iNet({wrapleft}Vm{wrapright}, {wrapleft[:-1]}{cls.statesNames()}{wrapright[1:]})', 'ls': '--', 'color': 'black' } pltvars['dQdt'] = { 'desc': inspect.getdoc(getattr(cls, 'dQdt')).splitlines()[0], 'label': 'dQ_m/dt', 'unit': 'A/m^2', 'factor': 1e-3, 'func': f'dQdt({wrapleft}Vm{wrapright}, {wrapleft[:-1]}{cls.statesNames()}{wrapright[1:]})', 'ls': '--', 'color': 'black' } pltvars['iCap'] = { 'desc': inspect.getdoc(getattr(cls, 'iCap')).splitlines()[0], 'label': 'I_{cap}', 'unit': 'A/m^2', 'factor': 1e-3, 'func': f'iCap({wrapleft}t{wrapright}, {wrapleft}Vm{wrapright})' } for rate in cls.rates: if 'alpha' in rate: prefix, suffix = 'alpha', rate[5:] else: prefix, suffix = 'beta', rate[4:] pltvars[rate] = { 'label': '\\{}_{{{}}}'.format(prefix, suffix), 'unit': 'ms^{-1}', 'factor': 1e-3 } pltvars['FR'] = { 'desc': 'riring rate', 'label': 'FR', 'unit': 'Hz', 'factor': 1e0, # 'bounds': (0, 1e3), 'func': f'firingRateProfile({wrapleft[:-2]})' } return pltvars @classmethod def iCap(cls, t, Vm): ''' Capacitive current. ''' dVdt = np.insert(np.diff(Vm) / np.diff(t), 0, 0.) return cls.Cm0 * dVdt @property def pltScheme(self): pltscheme = { 'Q_m': ['Qm'], 'V_m': ['Vm'] } pltscheme['I'] = self.getCurrentsNames() + ['iNet'] for cname in self.getCurrentsNames(): if 'Leak' not in cname: key = f'i_{{{cname[1:]}}}\ kin.' cargs = inspect.getargspec(getattr(self, cname))[0][1:] pltscheme[key] = [var for var in cargs if var not in ['Vm', 'Cai']] return pltscheme @classmethod def statesNames(cls): ''' Return a list of names of all state variables of the model. ''' return list(cls.states.keys()) @classmethod @abc.abstractmethod def derStates(cls): ''' Dictionary of states derivatives functions ''' raise NotImplementedError @classmethod def getDerStates(cls, Vm, states): ''' Compute states derivatives array given a membrane potential and states dictionary ''' return np.array([cls.derStates()[k](Vm, states) for k in cls.statesNames()]) @classmethod @abc.abstractmethod def steadyStates(cls): ''' Return a dictionary of steady-states functions ''' raise NotImplementedError @classmethod def getSteadyStates(cls, Vm): ''' Compute array of steady-states for a given membrane potential ''' return np.array([cls.steadyStates()[k](Vm) for k in cls.statesNames()]) @classmethod def getDerEffStates(cls, lkp, states): ''' Compute effective states derivatives array given lookups and states dictionaries. ''' return np.array([ cls.derEffStates()[k](lkp, states) for k in cls.statesNames()]) @classmethod def getEffRates(cls, Vm): ''' Compute array of effective rate constants for a given membrane potential vector. ''' return {k: np.mean(np.vectorize(v)(Vm)) for k, v in cls.effRates().items()} def getLookup(self): ''' Get lookup of membrane potential rate constants interpolated along the neuron's charge physiological range. ''' Qmin, Qmax = expandRange(*self.Qbounds, exp_factor=10.) Qref = np.arange(Qmin, Qmax, 1e-5) # C/m2 Vref = Qref / self.Cm0 * 1e3 # mV tables = {k: np.vectorize(v)(Vref) for k, v in self.effRates().items()} return EffectiveVariablesLookup({'Q': Qref}, {'V': Vref, **tables}) @classmethod @abc.abstractmethod def currents(cls): ''' Dictionary of ionic currents functions (returning current densities in mA/m2) ''' @classmethod def iNet(cls, Vm, states): ''' net membrane current :param Vm: membrane potential (mV) :states: states of ion channels gating and related variables :return: current per unit area (mA/m2) ''' return sum([cfunc(Vm, states) for cfunc in cls.currents().values()]) @classmethod def dQdt(cls, Vm, states): ''' membrane charge density variation rate :param Vm: membrane potential (mV) :states: states of ion channels gating and related variables :return: variation rate (mA/m2) ''' return -cls.iNet(Vm, states) @classmethod def titrationFunc(cls, *args, **kwargs): ''' Default titration function. ''' return cls.isExcited(*args, **kwargs) @staticmethod def currentToConcentrationRate(z_ion, depth): ''' Compute the conversion factor from a specific ionic current (in mA/m2) into a variation rate of submembrane ion concentration (in M/s). :param: z_ion: ion valence :param depth: submembrane depth (m) :return: conversion factor (Mmol.m-1.C-1) ''' return 1e-6 / (z_ion * depth * FARADAY) @staticmethod def nernst(z_ion, Cion_in, Cion_out, T): ''' Nernst potential of a specific ion given its intra and extracellular concentrations. :param z_ion: ion valence :param Cion_in: intracellular ion concentration :param Cion_out: extracellular ion concentration :param T: temperature (K) :return: ion Nernst potential (mV) ''' return (Rg * T) / (z_ion * FARADAY) * np.log(Cion_out / Cion_in) * 1e3 @staticmethod def vtrap(x, y): ''' Generic function used to compute rate constants. ''' return x / (np.exp(x / y) - 1) @staticmethod def efun(x): ''' Generic function used to compute rate constants. ''' return x / (np.exp(x) - 1) @classmethod def ghkDrive(cls, Vm, Z_ion, Cion_in, Cion_out, T): ''' Use the Goldman-Hodgkin-Katz equation to compute the electrochemical driving force of a specific ion species for a given membrane potential. :param Vm: membrane potential (mV) :param Cin: intracellular ion concentration (M) :param Cout: extracellular ion concentration (M) :param T: temperature (K) :return: electrochemical driving force of a single ion particle (mC.m-3) ''' x = Z_ion * FARADAY * Vm / (Rg * T) * 1e-3 # [-] eCin = Cion_in * cls.efun(-x) # M eCout = Cion_out * cls.efun(x) # M return FARADAY * (eCin - eCout) * 1e6 # mC/m3 @classmethod def xBG(cls, Vref, Vm): ''' Compute dimensionless Borg-Graham ratio for a given voltage. :param Vref: reference voltage membrane (mV) :param Vm: membrane potential (mV) :return: dimensionless ratio ''' return (Vm - Vref) * FARADAY / (Rg * cls.T) * 1e-3 # [-] @classmethod def alphaBG(cls, alpha0, zeta, gamma, Vref, Vm): ''' Compute the activation rate constant for a given voltage and temperature, using a Borg-Graham formalism. :param alpha0: pre-exponential multiplying factor :param zeta: effective valence of the gating particle :param gamma: normalized position of the transition state within the membrane :param Vref: membrane voltage at which alpha = alpha0 (mV) :param Vm: membrane potential (mV) :return: rate constant (in alpha0 units) ''' return alpha0 * np.exp(-zeta * gamma * cls.xBG(Vref, Vm)) @classmethod def betaBG(cls, beta0, zeta, gamma, Vref, Vm): ''' Compute the inactivation rate constant for a given voltage and temperature, using a Borg-Graham formalism. :param beta0: pre-exponential multiplying factor :param zeta: effective valence of the gating particle :param gamma: normalized position of the transition state within the membrane :param Vref: membrane voltage at which beta = beta0 (mV) :param Vm: membrane potential (mV) :return: rate constant (in beta0 units) ''' return beta0 * np.exp(zeta * (1 - gamma) * cls.xBG(Vref, Vm)) @classmethod def getCurrentsNames(cls): return list(cls.currents().keys()) @staticmethod def firingRateProfile(*args, **kwargs): return computeFRProfile(*args, **kwargs) @property def Qbounds(self): ''' Determine bounds of membrane charge physiological range for a given neuron. ''' return np.array([np.round(self.Vm0 - 25.0), 50.0]) * self.Cm0 * 1e-3 # C/m2 @classmethod def isVoltageGated(cls, state): ''' Determine whether a given state is purely voltage-gated or not.''' return f'alpha{state.lower()}' in cls.rates @classmethod @Model.checkOutputDir def simQueue(cls, amps, durations, offsets, PRFs, DCs, **kwargs): ''' Create a serialized 2D array of all parameter combinations for a series of individual parameter sweeps. :param amps: list (or 1D-array) of acoustic amplitudes :param durations: list (or 1D-array) of stimulus durations :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) :param PRFs: list (or 1D-array) of pulse-repetition frequencies :param DCs: list (or 1D-array) of duty cycle values :return: list of parameters (list) for each simulation ''' if amps is None: amps = [None] - ppqueue = createPulsedProtocols(durations, offsets, PRFs, DCs) + drives = ElectricDrive.createQueue(amps) + protocols = PulsedProtocol.createQueue(durations, offsets, PRFs, DCs) queue = [] - for A in amps: - for item in ppqueue: - queue.append([A, item]) + for drive in drives: + for pp in protocols: + queue.append([drive, pp]) return queue @staticmethod - def checkInputs(Astim, pp): + def checkInputs(drive, pp): ''' Check validity of electrical stimulation parameters. - :param Astim: pulse amplitude (mA/m2) + :param drive: electric drive object :param pp: pulse protocol object ''' - if not isinstance(Astim, float): - raise TypeError('Invalid simulation amplitude (must be float typed)') + if not isinstance(drive, Drive): + raise TypeError(f'Invalid "drive" parameter (must be an "Drive" object)') if not isinstance(pp, PulsedProtocol): raise TypeError('Invalid pulsed protocol (must be "PulsedProtocol" instance)') def chooseTimeStep(self): ''' Determine integration time step based on intrinsic temporal properties. ''' return DT_EFFECTIVE @classmethod def derivatives(cls, t, y, Cm=None, Iinj=0.): ''' Compute system derivatives for a given membrane capacitance and injected current. :param t: specific instant in time (s) :param y: vector of HH system variables at time t :param Cm: membrane capacitance (F/m2) :param Iinj: injected current (mA/m2) :return: vector of system derivatives at time t ''' if Cm is None: Cm = cls.Cm0 Qm, *states = y Vm = Qm / Cm * 1e3 # mV states_dict = dict(zip(cls.statesNames(), states)) dQmdt = (Iinj - cls.iNet(Vm, states_dict)) * 1e-3 # A/m2 return [dQmdt, *cls.getDerStates(Vm, states_dict)] @Model.logNSpikes @Model.checkTitrate @Model.addMeta @Model.logDesc @Model.checkSimParams - def simulate(self, Astim, pp): + def simulate(self, drive, pp): ''' Simulate a specific neuron model for a set of simulation parameters, and return output data in a dataframe. - :param Astim: pulse amplitude (mA/m2) + :param drive: electric drive object :param pp: pulse protocol object :return: output dataframe ''' # Set initial conditions y0 = np.array((self.Qm0, *self.getSteadyStates(self.Vm0))) # Initialize simulator and compute solution logger.debug('Computing solution') simulator = PWSimulator( - lambda t, y: self.derivatives(t, y, Iinj=Astim), + lambda t, y: self.derivatives(t, y, Iinj=drive.A), lambda t, y: self.derivatives(t, y, Iinj=0.)) t, y, stim = simulator( y0, self.chooseTimeStep(), pp) # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim) # Store output in dataframe and return data = pd.DataFrame({ 't': t, 'stimstate': stim, 'Qm': y[:, 0], 'Vm': y[:, 0] / self.Cm0 * 1e3, }) for i in range(len(self.states)): data[self.statesNames()[i]] = y[:, i + 1] return data @classmethod - def meta(cls, Astim, pp): + def meta(cls, drive, pp): return { 'simkey': cls.simkey, 'neuron': cls.name, - 'Astim': Astim, + 'drive': drive, 'pp': pp } def desc(self, meta): - return f'{self}: simulation @ A = {si_format(meta["Astim"] * 1e-3, 2)}A/m2, {meta["pp"].desc}' + return f'{self}: simulation @ {meta["drive"].desc}, {meta["pp"].desc}' @staticmethod def getNSpikes(data): ''' Compute number of spikes in charge profile of simulation output. :param data: dataframe containing output time series :return: number of detected spikes ''' return detectSpikes(data)[0].size @staticmethod def getStabilizationValue(data): ''' Determine stabilization value from the charge profile of a simulation output. :param data: dataframe containing output time series :return: charge stabilization value (or np.nan if no stabilization detected) ''' # Extract charge signal posterior to observation window t, Qm = [data[key].values for key in ['t', 'Qm']] if t.max() <= TMIN_STABILIZATION: raise ValueError('solution length is too short to assess stabilization') Qm = Qm[t > TMIN_STABILIZATION] # Compute variation range Qm_range = np.ptp(Qm) logger.debug('%.2f nC/cm2 variation range over the last %.0f ms, Qmf = %.2f nC/cm2', Qm_range * 1e5, TMIN_STABILIZATION * 1e3, Qm[-1] * 1e5) # Return final value only if stabilization is detected if np.ptp(Qm) < QSS_Q_DIV_THR: return Qm[-1] else: return np.nan @classmethod def isExcited(cls, data): ''' Determine if neuron is excited from simulation output. :param data: dataframe containing output time series :return: boolean stating whether neuron is excited or not ''' return cls.getNSpikes(data) > 0 @classmethod def isSilenced(cls, data): ''' Determine if neuron is silenced from simulation output. :param data: dataframe containing output time series :return: boolean stating whether neuron is silenced or not ''' return not np.isnan(cls.getStabilizationValue(data)) - def titrate(self, pp, xfunc=None, Arange=(0., ESTIM_AMP_UPPER_BOUND)): + def titrate(self, drive, pp, choiceFunc=None, Arange=(0., ESTIM_AMP_UPPER_BOUND)): ''' Use a binary search to determine the threshold amplitude needed to obtain neural excitation for a given duration, PRF and duty cycle. + :param drive: unresolved electric drive object :param pp: pulsed protocol object :param xfunc: function determining whether condition is reached from simulation output - :param Arange: search interval for Astim, iteratively refined + :param Arange: search interval for electric current amplitude, iteratively refined :return: excitation threshold amplitude (mA/m2) ''' # Default output function - if xfunc is None: + if choiceFunc is None: xfunc = self.titrationFunc return threshold( - lambda x: xfunc(self.simulate(x, pp)[0]), + lambda x: xfunc(self.simulate(drive.updatedX(x), pp)[0]), Arange, x0=ESTIM_AMP_INITIAL, rel_eps_thr=ESTIM_REL_CONV_THR, precheck=False) diff --git a/PySONIC/core/protocols.py b/PySONIC/core/protocols.py index e9f8138..1eef9e7 100644 --- a/PySONIC/core/protocols.py +++ b/PySONIC/core/protocols.py @@ -1,173 +1,184 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-11-12 18:04:45 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 20:02:25 +# @Last Modified time: 2020-02-03 19:17:26 import numpy as np from ..utils import si_format from .batches import Batch class TimeProtocol: def __init__(self, tstim, toffset): ''' Class constructor. :param tstim: pulse duration (s) :param toffset: offset duration (s) ''' for k, v in {'stimulus': tstim, 'offset': toffset}.items(): if not isinstance(v, float): raise TypeError(f'Invalid {k} duration value (must be float typed)') if v < 0: raise ValueError(f'Invalid {k} duration: {(v * 1e3)} ms (must be positive or null)') # Assing attributes self.tstim = tstim self.toffset = toffset def __eq__(self, other): if not isinstance(other, self.__class__): return False return self.tstim == other.tstim and self.toffset == other.toffset def __repr__(self): params = [f'{si_format(x, 1, space="")}s' for x in [self.tstim, self.toffset]] return f'{self.__class__.__name__}({", ".join(params)})' @property def desc(self): return f'{si_format(self.tstim, 1)}s stim, {si_format(self.toffset, 1)}s offset' @property def filecodes(self): return {'tstim': f'{(self.tstim * 1e3):.0f}ms', 'toffset': None} @property @staticmethod def inputs(): return { 'tstim': { 'desc': 'stimulus duration', 'label': 't_{stim}', 'unit': 'ms', 'factor': 1e3, 'precision': 0 }, 'toffset': { 'desc': 'offset duration', 'label': 't_{offset}', 'unit': 'ms', 'factor': 1e3, 'precision': 0 } } + @classmethod + def createQueue(cls, durations, offsets): + ''' Create a serialized 2D array of all parameter combinations for a series of individual + parameter sweeps. + + :param durations: list (or 1D-array) of stimulus durations + :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) + :return: list of parameters (list) for each simulation + ''' + return [cls(*item) for item in Batch.createQueue(durations, offsets)] + class PulsedProtocol(TimeProtocol): def __init__(self, tstim, toffset, PRF=100., DC=1.): ''' Class constructor. :param tstim: pulse duration (s) :param toffset: offset duration (s) :param PRF: pulse repetition frequency (Hz) :param DC: pulse duty cycle (-) ''' super().__init__(tstim, toffset) if not isinstance(DC, float): raise TypeError('Invalid duty cycle value (must be float typed)') if DC <= 0.0 or DC > 1.0: raise ValueError(f'Invalid duty cycle: {DC} (must be within ]0; 1])') if DC < 1.0: if not isinstance(PRF, float): raise TypeError('Invalid PRF value (must be float typed)') if PRF is None: raise AttributeError('Missing PRF value (must be provided when DC < 1)') if PRF < 1 / tstim: raise ValueError(f'Invalid PRF: {PRF} Hz (PR interval exceeds stimulus duration)') # Assing attributes self.PRF = PRF self.DC = DC # Derived attributes self.T_ON = self.DC / self.PRF self.T_OFF = (1 - self.DC) / self.PRF self.npulses = int(np.round(self.tstim * self.PRF)) self.ttotal = self.tstim + self.toffset def __eq__(self, other): if not isinstance(other, self.__class__): return False return super().__eq__(other) and self.PRF == other.PRF and self.DC == other.DC def __repr__(self): params = [f'{si_format(self.PRF, 1, space="")}Hz', f'{self.DC:.2f}'] return f'{super().__repr__()[:-1]}, {", ".join(params)})' @property def desc(self): s = super().desc if self.DC < 1: s += f', {si_format(self.PRF, 2)}Hz PRF, {(self.DC * 1e2):.1f}% DC' return s @property def isCW(self): return self.DC == 1. @property def nature(self): return 'CW' if self.isCW else 'PW' @property def filecodes(self): if self.isCW: d = {'PRF': None, 'DC': None} else: d = {'PRF': f'PRF{self.PRF:.2f}Hz', 'DC': f'DC{self.DC * 1e2:04.1f}%'} return {**super().filecodes, **d} @property @staticmethod def inputs(): d = { 'PRF': { 'desc': 'pulse repetition frequency', 'label': 'PRF', 'unit': 'Hz', 'factor': 1e0, 'precision': 0 }, 'DC': { 'desc': 'duty cycle', 'label': 'DC', 'unit': '%', 'factor': 1e2, 'precision': 2 } } return {**TimeProtocol.inputs, **d} + @classmethod + def createQueue(cls, durations, offsets, PRFs, DCs): + ''' Create a serialized 2D array of all parameter combinations for a series of individual + parameter sweeps, while avoiding repetition of CW protocols for a given PRF sweep. -def createPulsedProtocols(durations, offsets, PRFs, DCs): - ''' Create a serialized 2D array of all parameter combinations for a series of individual - parameter sweeps, while avoiding repetition of CW protocols for a given PRF sweep. - - :param durations: list (or 1D-array) of stimulus durations - :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) - :param PRFs: list (or 1D-array) of pulse-repetition frequencies - :param DCs: list (or 1D-array) of duty cycle values - :return: list of parameters (list) for each simulation - ''' - DCs = np.array(DCs) - queue = [] - if 1.0 in DCs: - queue += Batch.createQueue(durations, offsets, min(PRFs), 1.0) - if np.any(DCs != 1.0): - queue += Batch.createQueue(durations, offsets, PRFs, DCs[DCs != 1.0]) - queue = [PulsedProtocol(*item) for item in queue] - return queue \ No newline at end of file + :param durations: list (or 1D-array) of stimulus durations + :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) + :param PRFs: list (or 1D-array) of pulse-repetition frequencies + :param DCs: list (or 1D-array) of duty cycle values + :return: list of parameters (list) for each simulation + ''' + DCs = np.array(DCs) + queue = [] + if 1.0 in DCs: + queue += Batch.createQueue(durations, offsets, min(PRFs), 1.0) + if np.any(DCs != 1.0): + queue += Batch.createQueue(durations, offsets, PRFs, DCs[DCs != 1.0]) + queue = [cls(*item) for item in queue] + return queue diff --git a/PySONIC/core/simulators.py b/PySONIC/core/simulators.py index cd04e43..f7c2f79 100644 --- a/PySONIC/core/simulators.py +++ b/PySONIC/core/simulators.py @@ -1,553 +1,552 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-05-28 14:45:12 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 20:04:41 +# @Last Modified time: 2020-02-03 16:55:09 import abc import numpy as np from scipy.integrate import ode, odeint, solve_ivp from tqdm import tqdm from ..utils import * from ..constants import * class Simulator(metaclass=abc.ABCMeta): ''' Generic interface to simulator object. ''' @staticmethod def initialize(y0): ''' Initialize global arrays. :param y0: vector of initial conditions :return: 3-tuple with the initialized time vector, solution matrix and state vector ''' t = np.array([0.]) y = np.atleast_2d(y0) stim = np.array([1]) return t, y, stim @staticmethod def appendSolution(t, y, stim, tnew, ynew, is_on): ''' Append to time vector, solution matrix and state vector. :param t: preceding time vector :param y: preceding solution matrix :param stim: preceding stimulation state vector :param tnew: integration time vector for current interval :param ynew: derivative function for current interval :param is_on: stimulation state for current interval :return: 3-tuple with the appended time vector, solution matrix and state vector ''' t = np.concatenate((t, tnew[1:])) y = np.concatenate((y, ynew[1:]), axis=0) stim = np.concatenate((stim, np.ones(tnew.size - 1) * is_on)) return t, y, stim @staticmethod def prependSolution(t, y, stim, y0=None): ''' Prepend initial conditions (prior to stimulation) to solution vectors. ''' if y0 is None: y0 = y[0, :] return np.insert(t, 0, 0.), np.vstack((y0, y)), np.insert(stim, 0, 0) @classmethod def integrate(cls, t, y, stim, tnew, dfunc, is_on, use_adaptive_dt=False): ''' Integrate system for a time interval and append to preceding solution arrays. :param t: preceding time vector :param y: preceding solution matrix :param stim: preceding stimulation state vector :param tnew: integration time vector for current interval :param dfunc: derivative function for current interval :param is_on: stimulation state for current interval :return: 3-tuple with the appended time vector, solution matrix and state vector ''' if tnew.size == 0: return t, y, stim if use_adaptive_dt: ynew = solve_ivp(dfunc, [tnew[0], tnew[-1]], y[-1], t_eval=tnew, method='LSODA').y.T else: ynew = odeint(dfunc, y[-1], tnew, tfirst=True) return cls.appendSolution(t, y, stim, tnew, ynew, is_on) @staticmethod def downsample(t, y, stim, target_dt): ''' Resample a solution to a new target time step. :param t: time vector :param y: solution matrix :param stim: stimulation state vector :target_dt: target time step after resampling :return: 3-tuple with the downsampled time vector, solution matrix and state vector ''' dt = t[2] - t[1] if dt >= target_dt: logger.warning(f'Hyper-sampling not supported -> keeping Fs = {si_format(1 / dt, 2)}Hz') return t, y, stim rf = int(np.round(target_dt / dt)) logger.debug(f'Downsampling output arrays by factor {rf} (Fs = {si_format(1 / (dt * rf), 2)}Hz)') return t[::rf], y[::rf, :], stim[::rf] - @property @abc.abstractmethod def compute(self): ''' Abstract compute method. ''' return 'Should never reach here' def __call__(self, *args, **kwargs): ''' Call and return compute method ''' return self.compute(*args, **kwargs) class PeriodicSimulator(Simulator): def __init__(self, dfunc, stopfunc=None, ivars_to_check=None): ''' Initialize simulator with specific derivative and stop functions :param dfunc: derivative function :param stopfunc: function estimating stopping criterion :param ivars_to_check: solution indexes of variables to check for stability ''' self.dfunc = dfunc self.ivars_to_check = ivars_to_check if stopfunc is not None: self.stopfunc = stopfunc else: self.stopfunc = self.isPeriodicallyStable @staticmethod def getNPerCycle(dt, T): ''' Compute number of samples per cycle given a time step and a specific periodicity. :param dt: integration time step (s) :param T: periodicity (s) :return: number of samples per cycle ''' return int(np.round(T / dt)) + 1 @classmethod def getTimeReference(cls, dt, T): ''' Compute reference integration time vector for a specific periodicity. :param dt: integration time step (s) :param T: periodicity (s) :return: time vector for 1 periodic cycle ''' return np.linspace(0, T, cls.getNPerCycle(dt, T)) def isPeriodicallyStable(self, t, y, T): ''' Assess the periodic stabilization of a solution, by evaluating the deviation of system variables between the last two periods. :param t: time vector :param y: solution matrix :param T: periodicity (s) :return: boolean stating whether the solution is periodically stable or not ''' # Extract the 2 cycles of interest from the solution n = self.getNPerCycle(t[1] - t[0], T) - 1 y_last = y[-n:, :] y_prec = y[-2 * n:-n, :] # For each variable of interest, evaluate the RMSE between the two cycles, the # variation range over the last cycle, and the ratio of these 2 quantities ratios = np.array([rmse(y_last[:, ivar], y_prec[:, ivar]) / np.ptp(y_last[:, ivar]) for ivar in self.ivars_to_check]) # Classify the solution as periodically stable only if all RMSE/PTP ratios # are below critical threshold is_periodically_stable = np.all(ratios < MAX_RMSE_PTP_RATIO) return is_periodically_stable def isAsymptoticallyStable(self, t, y, T): ''' Assess the asymptotically stabilization of a solution, by evaluating the deviation of system variables from their initial values. :param t: time vector :param y: solution matrix :param T: periodicity (s) :return: boolean stating whether the solution is asymptotically stable or not ''' n_history = int(self.t_history // T) # size of history n = self.getNPerCycle(t[1] - t[0], T) - 1 # For each variable to be checked convs = [None] * len(self.ivars_to_check) for i, ivar in enumerate(self.ivars_to_check): xdev = y[::n, ivar] - self.refs[i] # print(np.array(xdev) * 1e5) # If last deviation is too large -> divergence if np.abs(xdev[-1]) > self.div_thr[i]: return -1 # If last deviation or average deviation in recent history # is small enough -> convergence for x in [xdev[-1], np.mean(xdev[-n_history:])]: if np.abs(x) < self.conv_thr[i]: convs[i] = 1 # print(convs) return np.all(convs == 1) def stopFuncTmp(self, t, y, T): return self.isAsymptoticallyStable(t, y, T) != 0 def compute(self, y0, dt, T, t0=0., nmax=NCYCLES_MAX): ''' Simulate system with a specific periodicity until stopping criterion is met. :param y0: 1D vector of initial conditions :param dt: integration time step (s) :param T: periodicity (s) :param t0: starting time :return: 3-tuple with the time profile, the effective solution matrix and a state vector ''' # If none specified, set all variables to be checked for stability if self.ivars_to_check is None: self.ivars_to_check = range(y0.size) # Get reference time vector tref = self.getTimeReference(dt, T) # Initialize global arrays t, y, stim = self.initialize(y0) # Integrate system for a few cycles until stopping criterion is met icycle = 0 stop = False while not stop and icycle < nmax: t, y, stim = self.integrate(t, y, stim, tref + icycle * T, self.dfunc, True) if icycle > 0: stop = self.stopfunc(t, y, T) icycle += 1 t += t0 # Log stopping criterion t_str = f't = {t[-1] * 1e3:.5f} ms' if icycle == nmax: logger.warning(f'{t_str}: criterion not met -> stopping after {icycle} cycles') else: logger.debug(f'{t_str}: stopping criterion met after {icycle} cycles') # Return output variables return t, y, stim class OnOffSimulator(Simulator): def __init__(self, dfunc_on, dfunc_off): ''' Initialize simulator with specific derivative functions :param dfunc_on: derivative function for ON periods :param dfunc_off: derivative function for OFF periods ''' self.dfunc_on = dfunc_on self.dfunc_off = dfunc_off @staticmethod def getTimeReference(dt, tstim, toffset): ''' Compute reference integration time vectors for a specific stimulus application pattern. :param dt: integration time step (s) :param tstim: duration of US stimulation (s) :param toffset: duration of the offset (s) :return: 2-tuple with time vectors for ON and OFF periods ''' t_on = np.linspace(0, tstim, int(np.round(tstim / dt)) + 1) t_off = np.linspace(tstim, tstim + toffset, int(np.round(toffset / dt))) return t_on, t_off def compute(self, y0, dt, tp, target_dt=None): ''' Simulate system for a specific stimulus application pattern. :param y0: 1D vector of initial conditions :param dt: integration time step (s) :param tp: time protocol object :param target_dt: target time step after resampling :return: 3-tuple with the time profile, the effective solution matrix and a state vector ''' tstim, toffset = tp.tstim, tp.toffset # Get reference time vectors t_on, t_off = self.getTimeReference(dt, tstim, toffset) # Initialize global arrays t, y, stim = self.initialize(y0) # Integrate ON and OFF periods t, y, stim = self.integrate(t, y, stim, t_on, self.dfunc_on, True) t, y, stim = self.integrate(t, y, stim, t_off, self.dfunc_off, False) # Resample solution if specified if target_dt is not None: t, y, stim = self.downsample(t, y, stim, target_dt) # Return output variables return t, y, stim class PWSimulator(Simulator): def __init__(self, dfunc_on, dfunc_off): ''' Initialize simulator with specific derivative functions :param dfunc_on: derivative function for ON periods :param dfunc_off: derivative function for OFF periods ''' self.dfunc_on = dfunc_on self.dfunc_off = dfunc_off @staticmethod def getTimeReference(dt, tstim, toffset, PRF, DC): ''' Compute reference integration time vectors for a specific stimulus application pattern. :param dt: integration time step (s) :param tstim: duration of US stimulation (s) :param toffset: duration of the offset (s) :param PRF: pulse repetition frequency (Hz) :param DC: pulse duty cycle (-) :return: 3-tuple with time vectors for stimulus ON and OFF periods and stimulus offset ''' # Compute vector sizes T_ON = DC / PRF T_OFF = (1 - DC) / PRF # For high-PRF pulsed protocols: adapt time step to ensure minimal # number of samples during TON or TOFF dt_warning_msg = 'high-PRF protocol: lowering time step to %.2e s to properly integrate %s' for key, T in {'TON': T_ON, 'TOFF': T_OFF}.items(): if T > 0 and T / dt < MIN_SAMPLES_PER_PULSE_INTERVAL: dt = T / MIN_SAMPLES_PER_PULSE_INTERVAL logger.warning(dt_warning_msg, dt, key) # Initializing accurate time vectors pulse ON and OFF periods, as well as offset t_on = np.linspace(0, T_ON, int(np.round(T_ON / dt)) + 1) t_off = np.linspace(T_ON, 1 / PRF, int(np.round(T_OFF / dt))) t_offset = np.linspace(tstim, tstim + toffset, int(np.round(toffset / dt))) return t_on, t_off, t_offset @staticmethod def adjustPRF(tstim, PRF, DC, print_progress): ''' Adjust the PRF in case of continuous wave stimulus, in order to obtain the desired number of integration interval(s) during stimulus. :param tstim: duration of US stimulation (s) :param PRF: pulse repetition frequency (Hz) :param DC: pulse duty cycle (-) :param print_progress: boolean specifying whether to show a progress bar :return: adjusted PRF value (Hz) ''' if DC < 1.0: # if PW stimuli, then no change return PRF else: # if CW stimuli, then divide integration according to presence of progress bar return {True: 100., False: 1.}[print_progress] / tstim @staticmethod def getNPulses(tstim, PRF): ''' Calculate number of pulses from stimulus temporal pattern. :param tstim: duration of US stimulation (s) :param toffset: duration of the offset (s) :return: number of pulses during the stimulus ''' return int(np.round(tstim * PRF)) def compute(self, y0, dt, pp, target_dt=None, print_progress=False, monitor_func=None): ''' Simulate system for a specific stimulus application pattern. :param y0: 1D vector of initial conditions :param dt: integration time step (s) :param pp: pulse protocol object :param target_dt: target time step after resampling :param monitor: string specifying how to monitor integration to show a progress bar :return: 3-tuple with the time profile, the effective solution matrix and a state vector ''' tstim, toffset, PRF, DC = pp.tstim, pp.toffset, pp.PRF, pp.DC # Adjust PRF and get number of pulses if tstim > 0: PRF = self.adjustPRF(tstim, PRF, DC, print_progress) npulses = self.getNPulses(tstim, PRF) # Get reference time vectors t_on, t_off, t_offset = self.getTimeReference(dt, tstim, toffset, PRF, DC) # Initialize global arrays t, y, stim = self.initialize(y0) # Divide offset interval if print progress is True if print_progress: nslices_offset = int(np.round(toffset * npulses / tstim)) else: nslices_offset = 1 # Compute reference time vector for offset slices tslice = toffset / nslices_offset nperslice = int(np.round(tslice / dt)) tref_offset = np.linspace(0, tslice, nperslice) + tstim # Initialize progress bar if no monitoring function provided if print_progress: ntot = npulses + nslices_offset if monitor_func is None: setHandler(logger, TqdmHandler(my_log_formatter)) pbar = tqdm(total=ntot) else: logger.debug('integrating stimulus') # Integrate ON and OFF intervals of each pulse for i in range(npulses): for j, (tref, func) in enumerate(zip([t_on, t_off], [self.dfunc_on, self.dfunc_off])): t, y, stim = self.integrate(t, y, stim, tref + i / PRF, func, j == 0) # Monitor progress if print_progress: if monitor_func is None: pbar.update() else: logger.debug(f'slice {i + 1}/{ntot}: {monitor_func(t[-1], y[-1, :])}') # Integrate offset interval if print_progress and monitor_func is not None: logger.debug('integrating offset') for i in range(nslices_offset): t, y, stim = self.integrate(t, y, stim, tref_offset + i * tslice, self.dfunc_off, False) # Monitor progress if print_progress: if monitor_func is None: pbar.update() else: logger.debug(f'slice {npulses + i + 1}/{ntot}: {monitor_func(t[-1], y[-1, :])}') # Terminate progress bar if any if print_progress: if monitor_func is None: pbar.close() else: logger.debug('integration completed') # Resample solution if specified if target_dt is not None: t, y, stim = self.downsample(t, y, stim, target_dt) # Return output variables return t, y, stim class HybridSimulator(PWSimulator): def __init__(self, dfunc_on, dfunc_off, dfunc_sparse, predfunc, is_dense_var, stopfunc=None, ivars_to_check=None): ''' Initialize simulator with specific derivative functions :param dfunc_on: derivative function for ON periods :param dfunc_off: derivative function for OFF periods :param dfunc_sparse: derivative function for sparse integration :param predfunc: function computing the extra arguments necessary for sparse integration :param is_dense_var: boolean array stating for each variable if it evolves fast or not :param stopfunc: function estimating stopping criterion :param ivars_to_check: solution indexes of variables to check for stability ''' PWSimulator.__init__(self, dfunc_on, dfunc_off) self.sparse_solver = ode(dfunc_sparse) self.sparse_solver.set_integrator('dop853', nsteps=SOLVER_NSTEPS, atol=1e-12) self.predfunc = predfunc self.is_dense_var = is_dense_var self.is_sparse_var = np.invert(is_dense_var) self.stopfunc = stopfunc self.ivars_to_check = ivars_to_check def integrate(self, t, y, stim, tnew, dfunc, is_on): ''' Integrate system for a time interval and append to preceding solution arrays, using a hybrid scheme: - First, the full ODE system is integrated for a few cycles with a dense time granularity until a stopping criterion is met - Second, the profiles of all variables over the last cycle are downsampled to a far lower (i.e. sparse) sampling rate - Third, a subset of the ODE system is integrated with a sparse time granularity, for the remaining of the time interval, while the remaining variables are periodically expanded from their last cycle profile. :param t: preceding time vector :param y: preceding solution matrix :param stim: preceding stimulation state vector :param tnew: integration time vector for current interval :param dfunc: derivative function for current interval :param is_on: stimulation state for current interval :return: 3-tuple with the appended time vector, solution matrix and state vector ''' if tnew.size == 0: return t, y, stim # Initialize periodic solver dense_solver = PeriodicSimulator( dfunc, stopfunc=self.stopfunc, ivars_to_check=self.ivars_to_check) dt_dense = tnew[1] - tnew[0] npc_dense = dense_solver.getNPerCycle(dt_dense, self.T) # Until final integration time is reached while t[-1] < tnew[-1]: logger.debug(f't = {t[-1] * 1e3:.5f} ms: starting new hybrid integration') # Integrate dense system until stopping criterion is met tdense, ydense, stimdense = dense_solver.compute(y[-1], dt_dense, self.T, t0=t[-1]) t, y, stim = self.appendSolution(t, y, stim, tdense, ydense, is_on) # Resample signals over last cycle to match sparse time step tlast, ylast, stimlast = self.downsample( tdense[-npc_dense:], ydense[-npc_dense:], stimdense[-npc_dense:], self.dt_sparse) npc_sparse = tlast.size # Integrate until either the rest of the interval or max update interval is reached t0 = tdense[-1] tf = min(tnew[-1], tdense[0] + HYBRID_UPDATE_INTERVAL) nsparse = int(np.round((tf - t0) / self.dt_sparse)) tsparse = np.linspace(t0, tf, nsparse) ysparse = np.empty((nsparse, y.shape[1])) ysparse[0] = y[-1] self.sparse_solver.set_initial_value(y[-1, self.is_sparse_var], t[-1]) for j in range(1, tsparse.size): self.sparse_solver.set_f_params(self.predfunc(ylast[j % npc_sparse])) self.sparse_solver.integrate(tsparse[j]) if not self.sparse_solver.successful(): raise ValueError(f'integration error at t = {tsparse[j] * 1e3:.5f} ms') ysparse[j, self.is_dense_var] = ylast[j % npc_sparse, self.is_dense_var] ysparse[j, self.is_sparse_var] = self.sparse_solver.y t, y, stim = self.appendSolution(t, y, stim, tsparse, ysparse, is_on) return t, y, stim def compute(self, y0, dt_dense, dt_sparse, T, pp, print_progress=False): ''' Simulate system for a specific stimulus application pattern. :param y0: 1D vector of initial conditions :param dt_dense: dense integration time step (s) :param dt_sparse: sparse integration time step (s) :param T: periodicity (s) :param pp: pulse protocol object :param print_progress: boolean specifying whether to show a progress bar :return: 3-tuple with the time profile, the effective solution matrix and a state vector ''' # Set periodicity and sparse time step self.T = T self.dt_sparse = dt_sparse # Call and return parent compute method return PWSimulator.compute( self, y0, dt_dense, pp, target_dt=None, print_progress=print_progress) diff --git a/PySONIC/core/sources.py b/PySONIC/core/sources.py deleted file mode 100644 index 70ccc70..0000000 --- a/PySONIC/core/sources.py +++ /dev/null @@ -1,218 +0,0 @@ -# -*- coding: utf-8 -*- -# @Author: Theo Lemaire -# @Email: theo.lemaire@epfl.ch -# @Date: 2020-01-30 11:46:47 -# @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 20:05:30 - -import numpy as np - -from ..utils import si_format -from ..constants import NPC_DENSE, NPC_SPARSE -from .batches import Batch - - -class AcousticSource: - - def __init__(self, Fdrive, Adrive, phi=np.pi): - ''' Constructor. - - :param Fdrive: acoustic drive frequency (Hz) - :param Adrive: acoustic drive amplitude (Pa) - :param phi: acoustic drive phase (rad) - ''' - - # Check inputs - self.checkInputs(Fdrive, Adrive, phi) - - # Assign attributes - self.Fdrive = Fdrive - self.Adrive = Adrive - self.phi = phi - - def __repr__(self): - params = [f'{si_format(self.Fdrive, 1, space="")}Hz'] - if self.Adrive is not None: - params.append(f'{si_format(self.Adrive, 1, space="")}Pa') - return f'{self.__class__.__name__}({", ".join(params)})' - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - return self.Fdrive == other.Fdrive and self.Adrive == other.Adrive and self.phi == other.phi - - def copy(self): - return self.__class__(self.Fdrive, self.Adrive, phi=self.phi) - - def checkInputs(self, Fdrive, Adrive, phi): - ''' Check inputs. ''' - floatvars = {'Fdrive': Fdrive, 'phi': phi} - if Adrive is not None: - floatvars['Adrive'] = Adrive - for k, v in floatvars.items(): - if not isinstance(v, float): - raise TypeError(f'Invalid {k} parameter (must be float typed)') - if Fdrive <= 0: - d = self.inputs['Fdrive'] - raise ValueError(f'Invalid {d["desc"]}: {Fdrive * d.get("factor", 1)} {d["unit"]} (must be strictly positive)') - if Adrive is not None and Adrive < 0: - d = self.inputs['Adrive'] - raise ValueError(f'Invalid {d["desc"]}: {Adrive * d.get("factor", 1)} {d["unit"]} (must be positive or null)') - - @property - @staticmethod - def inputs(): - return { - 'Fdrive': { - 'desc': 'US drive frequency', - 'label': 'f', - 'unit': 'kHz', - 'factor': 1e-3, - 'precision': 0 - }, - 'Adrive': { - 'desc': 'US pressure amplitude', - 'label': 'A', - 'unit': 'kPa', - 'factor': 1e-3, - 'precision': 2 - }, - 'phi': { - 'desc': 'US drive phase', - 'label': '\Phi', - 'unit': 'rad', - 'precision': 2 - } - } - - @property - def meta(self): - return { - 'Fdrive': self.Fdrive, - 'Adrive': self.Adrive - } - - @property - def desc(self): - return 'f = {}Hz, A = {}Pa'.format(*si_format([self.Fdrive, self.Adrive], 2)) - - @property - def filecodes(self): - return { - 'Fdrive': f'{self.Fdrive * 1e-3:.0f}kHz', - 'Adrive': f'{self.Adrive * 1e-3:.2f}kPa' - } - - @property - def dt(self): - ''' Determine integration time step. ''' - return 1 / (NPC_DENSE * self.Fdrive) - - @property - def dt_sparse(self): - return 1 / (NPC_SPARSE * self.Fdrive) - - @property - def periodicity(self): - ''' Determine source periodicity. ''' - return 1. / self.Fdrive - - @property - def nPerCycle(self): - return NPC_DENSE - - @property - def modulationFrequency(self): - return self.Fdrive - - def computePressure(self, t): - ''' Compute the acoustic acoustic pressure at a specific time. - - :param t: time (s) - :return: acoustic pressure (Pa) - ''' - return self.Adrive * np.sin(2 * np.pi * self.Fdrive * t - self.phi) - - -class AcousticSourceArray: - - def __init__(self, sources): - self.sources = {f'source {i + 1}': s for i, s in enumerate(sources)} - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return False - if self.nsources != other.nsources: - return False - if list(self.sources.keys()) != list(other.sources.keys()): - return False - for k, v in self.sources.items(): - if other.sources[k] != v: - return False - return True - - def copy(self): - return self.__class__([x.copy() for x in self.sources.values()]) - - @property - def nsources(self): - return len(self.sources) - - @property - def meta(self): - return {k: s.meta for k, s in self.sources.items()} - - @property - def desc(self): - descs = [f'[{s.desc}]' for k, s in self.sources.items()] - return ', '.join(descs) - - @property - def filecodes(self): - return {k: s.filecodes for k, s in self.sources.items()} - - @property - def fmax(self): - return max(s.Fdrive for s in self.sources.values()) - - @property - def fmin(self): - return min(s.Fdrive for s in self.sources.values()) - - @property - def dt(self): - return 1 / (NPC_DENSE * self.fmax) - - @property - def dt_sparse(self): - return 1 / (NPC_SPARSE * self.fmax) - - @property - def periodicity(self): - ''' Determine source periodicity. ''' - if self.nsources > 2: - raise ValueError('cannot compute periodicity for more than two sources') - return 1 / (self.fmax - self.fmin) - - @property - def nPerCycle(self): - return int(self.periodicity // self.dt) - - @property - def modulationFrequency(self): - return np.mean([s.Fdrive for s in self.sources.values()]) - - def computePressure(self, t): - return sum(s.computePressure(t) for s in self.sources.values()) - - -def createSources(freqs, amps): - ''' Create a list of acoustic source objects for combinations of acoustic frequencies and amplitudes. - - :param freqs: list (or 1D-array) of US frequencies - :param amps: list (or 1D-array) of US amplitudes - :return: list of AcousticSource objects for each simulation - ''' - queue = Batch.createQueue(freqs, amps) - queue = [AcousticSource(*item) for item in queue] - return queue \ No newline at end of file diff --git a/PySONIC/core/vclamp.py b/PySONIC/core/vclamp.py index 14d5629..843e22b 100644 --- a/PySONIC/core/vclamp.py +++ b/PySONIC/core/vclamp.py @@ -1,177 +1,157 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-08-14 13:49:25 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 20:07:24 +# @Last Modified time: 2020-02-03 19:56:15 import numpy as np import pandas as pd from .batches import Batch from .protocols import TimeProtocol from .model import Model from .pneuron import PointNeuron from .simulators import OnOffSimulator +from .drives import Drive, VoltageDrive from ..constants import * from ..utils import * from ..neurons import getPointNeuron class VoltageClamp(Model): tscale = 'ms' # relevant temporal scale of the model simkey = 'VCLAMP' # keyword used to characterize simulations made with this model def __init__(self, pneuron): ''' Constructor of the class. :param pneuron: point-neuron model ''' # Check validity of input parameters if not isinstance(pneuron, PointNeuron): raise ValueError( f'Invalid neuron type: "{pneuron.name}" (must inherit from PointNeuron class)') self.pneuron = pneuron def __repr__(self): return f'{self.__class__.__name__}({self.pneuron})' @classmethod def initFromMeta(cls, meta): return cls(getPointNeuron(meta['neuron'])) def params(self): return self.pneuron.params() def getPltVars(self, wrapleft='df["', wrapright='"]'): return self.pneuron.getPltVars(wrapleft, wrapright) @property def pltScheme(self): return self.pneuron.pltScheme def filecode(self, *args): return Model.filecode(self, *args) - @property @staticmethod def inputs(): - # Get pneuron input vars and replace stimulation current by held and step voltages - inputvars = PointNeuron.inputs - for key in ['Astim', 'PRF', 'DC']: - del inputvars[key] - inputvars.update({ - 'Vhold': { - 'desc': 'held membrane potential', - 'label': 'V_{hold}', - 'unit': 'mV', - 'precision': 0 - }, - 'Vstep': { - 'desc': 'step membrane potential', - 'label': 'V_{step}', - 'unit': 'mV', - 'precision': 0 - } - }) - return inputvars + return VoltageDrive.inputs() - def filecodes(self, Vhold, Vstep, tp): + def filecodes(self, drive, tp): return { 'simkey': self.simkey, 'neuron': self.pneuron.name, - 'Vhold': f'{Vhold:.1f}mV', - 'Vstep': f'{Vstep:.1f}mV', + **drive.filecodes, **tp.filecodes } @classmethod @Model.checkOutputDir def simQueue(cls, holds, steps, durations, offsets, **kwargs): ''' Create a serialized 2D array of all parameter combinations for a series of individual parameter sweeps. :param holds: list (or 1D-array) of held membrane potentials :param steps: list (or 1D-array) of step membrane potentials :param durations: list (or 1D-array) of stimulus durations :param offsets: list (or 1D-array) of stimulus offsets (paired with durations array) :return: list of parameters (list) for each simulation ''' - queue = Batch.createQueue(holds, steps, durations, offsets) - queue = [[item[0], item[1], TimeProtocol(item[2], item[3])] for item in queue] + drives = VoltageDrive.createQueue(holds, steps) + protocols = TimeProtocol.createQueue(durations, offsets) + queue = [] + for drive in drives: + for tp in protocols: + queue.append([drive, tp]) return queue @staticmethod - def checkInputs(Vhold, Vstep, tp): + def checkInputs(drive, tp): ''' Check validity of stimulation parameters. - :param Vhold: held membrane potential (mV) - :param Vstep: step membrane potential (mV) + :param drive: voltage drive object :param tp: time protocol object ''' - for k, v in {'Vhold': Vhold, 'Vstep': Vstep}.items(): - if not isinstance(v, float): - raise TypeError(f'Invalid {k} parameter (must be float typed)') + if not isinstance(drive, Drive): + raise TypeError(f'Invalid "drive" parameter (must be an "Drive" object)') if not isinstance(tp, TimeProtocol): raise TypeError('Invalid time protocol (must be "TimeProtocol" instance)') def derivatives(self, t, y, Vm=None): if Vm is None: Vm = self.pneuron.Vm0 states_dict = dict(zip(self.pneuron.statesNames(), y)) return self.pneuron.getDerStates(Vm, states_dict) @Model.addMeta @Model.logDesc @Model.checkSimParams - def simulate(self, Vhold, Vstep, tp): + def simulate(self, drive, tp): ''' Simulate a specific neuron model for a set of simulation parameters, and return output data in a dataframe. - :param Vhold: held membrane potential (mV) - :param Vstep: step membrane potential (mV) + :param drive: voltage drive object :param tp: time protocol object :return: output dataframe ''' # Set initial conditions - y0 = self.pneuron.getSteadyStates(Vhold) + y0 = self.pneuron.getSteadyStates(drive.Vhold) # Initialize simulator and compute solution logger.debug('Computing solution') simulator = OnOffSimulator( - lambda t, y: self.derivatives(t, y, Vm=Vstep), - lambda t, y: self.derivatives(t, y, Vm=Vhold)) + lambda t, y: self.derivatives(t, y, Vm=drive.Vstep), + lambda t, y: self.derivatives(t, y, Vm=drive.Vhold)) t, y, stim = simulator(y0, DT_EFFECTIVE, tp) # Prepend initial conditions (prior to stimulation) t, y, stim = simulator.prependSolution(t, y, stim) # Compute clamped membrane potential vector Vm = np.zeros(stim.size) - Vm[stim == 0] = Vhold - Vm[stim == 1] = Vstep + Vm[stim == 0] = drive.Vhold + Vm[stim == 1] = drive.Vstep # Store output in dataframe and return data = pd.DataFrame({ 't': t, 'stimstate': stim, 'Qm': Vm * 1e-3 * self.pneuron.Cm0, 'Vm': Vm, }) for i in range(len(self.pneuron.states)): data[self.pneuron.statesNames()[i]] = y[:, i] return data - def meta(self, Vhold, Vstep, tp): + def meta(self, drive, tp): return { 'simkey': self.simkey, 'neuron': self.pneuron.name, - 'Vhold': Vhold, - 'Vstep': Vstep, + 'drive': drive, 'tp': tp } def desc(self, meta): - return '{}: simulation @ Vhold = {}V, Vstep = {}V, {}'.format( - self, *si_format([meta['Vhold'] * 1e-3, meta['Vstep'] * 1e-3], 1), meta['tp'].desc) + return f'{self}: simulation @ {meta["drive"].desc}, {meta["tp"].desc}' diff --git a/PySONIC/parsers.py b/PySONIC/parsers.py index 019313a..a3d12d7 100644 --- a/PySONIC/parsers.py +++ b/PySONIC/parsers.py @@ -1,732 +1,732 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-06-04 18:24:29 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 16:18:15 +# @Last Modified time: 2020-02-03 21:17:40 import os import logging import pprint import numpy as np import matplotlib.pyplot as plt from argparse import ArgumentParser from .utils import Intensity2Pressure, selectDirDialog, OpenFilesDialog, isIterable from .neurons import getPointNeuron, CorticalRS from .plt import GroupedTimeSeries, CompTimeSeries DEFAULT_OUTPUT_FOLDER = os.path.abspath(os.path.split(__file__)[0] + '../../../../dump') class Parser(ArgumentParser): ''' Generic parser interface. ''' dist_str = '[scale min max n]' def __init__(self): super().__init__() self.pp = pprint.PrettyPrinter(indent=4) self.defaults = {} self.allowed = {} self.factors = {} self.to_parse = {} self.addPlot() self.addVerbose() def pprint(self, args): self.pp.pprint(args) def getDistribution(self, xmin, xmax, nx, scale='lin'): if scale == 'log': xmin, xmax = np.log10(xmin), np.log10(xmax) return {'lin': np.linspace, 'log': np.logspace}[scale](xmin, xmax, nx) def getDistFromList(self, xlist): if not isinstance(xlist, list): raise TypeError('Input must be a list') if len(xlist) != 4: raise ValueError('List must contain exactly 4 arguments ([type, min, max, n])') scale = xlist[0] if scale not in ('log', 'lin'): raise ValueError('Unknown distribution type (must be "lin" or "log")') xmin, xmax = [float(x) for x in xlist[1:-1]] if xmin >= xmax: raise ValueError('Specified minimum higher or equal than specified maximum') nx = int(xlist[-1]) if nx < 2: raise ValueError('Specified number must be at least 2') return self.getDistribution(xmin, xmax, nx, scale=scale) def addRangeParam(self, key, desc, shortcut=None): if shortcut is not None: args = [f'-{shortcut}'] rangekey = shortcut else: args = [] rangekey = key args.append(f'--{key}') self.add_argument(*args, nargs='+', type=float, help=desc) self.add_argument( f'--{rangekey}range', type=str, nargs='+', help=f'Range of {desc}: {self.dist_str}') self.to_parse[key] = self.parseAmp def parseRangeParam(self, args, key): rangekey = f'{key}range' params = [key, rangekey] self.restrict(args) if key in args: return np.array(args[key]) * self.factors[key] elif rangekey in args: return self.getDistFromList(args[rangekey]) * self.factors[key] def addVerbose(self): self.add_argument( '-v', '--verbose', default=False, action='store_true', help='Increase verbosity') self.to_parse['loglevel'] = self.parseLogLevel def addPlot(self): self.add_argument( '-p', '--plot', type=str, nargs='+', help='Variables to plot') self.to_parse['pltscheme'] = self.parsePltScheme def addPhase(self): self.add_argument( '--phase', default=False, action='store_true', help='Phase plot') def addMPI(self): self.add_argument( '--mpi', default=False, action='store_true', help='Use multiprocessing') def addTest(self): self.add_argument( '--test', default=False, action='store_true', help='Run test configuration') def addSave(self): self.add_argument( '-s', '--save', default=False, action='store_true', help='Save output(s)') def addCheckForOutput(self): self.add_argument( '--checkout', default=False, action='store_true', help='Run only simulations for which there is no output file in the output directory') self.to_parse['overwrite'] = self.parseOverwrite def addOverwrite(self): self.add_argument( '--overwrite', default=False, action='store_true', help='Overwrite pre-existing simulation files with new output') def addFigureExtension(self): self.add_argument( '--figext', type=str, default='png', help='Figure type (extension)') def addCompare(self, desc='Comparative graph'): self.add_argument( '--compare', default=False, action='store_true', help=desc) def addSamplingRate(self): self.add_argument( '--sr', type=int, default=1, help='Sampling rate for plot') def addSpikes(self): self.add_argument( '--spikes', type=str, default='none', help='How to indicate spikes on charge profile ("none", "marks" or "details")') def addNColumns(self): self.add_argument( '--ncol', type=int, default=1, help='Number of columns in figure') def addNLevels(self): self.add_argument( '--nlevels', type=int, default=10, help='Number of levels') def addHideOutput(self): self.add_argument( '--hide', default=False, action='store_true', help='Hide output') def addTimeRange(self, default=None): self.add_argument( '--trange', type=float, nargs=2, default=default, help='Time lower and upper bounds (ms)') self.to_parse['trange'] = self.parseTimeRange def addPotentialBounds(self, default=None): self.add_argument( '--Vbounds', type=float, nargs=2, default=default, help='Membrane potential lower and upper bounds (mV)') def addFiringRateBounds(self, default): self.add_argument( '--FRbounds', type=float, nargs=2, default=default, help='Firing rate lower and upper bounds (Hz)') def addFiringRateScale(self, default='lin'): self.add_argument( '--FRscale', type=str, choices=('lin', 'log'), default=default, help='Firing rate scale for plot ("lin" or "log")') def addCmap(self, default=None): self.add_argument( '--cmap', type=str, default=default, help='Colormap name') def addCscale(self, default='lin'): self.add_argument( '--cscale', type=str, default=default, choices=('lin', 'log'), help='Color scale ("lin" or "log")') def addInputDir(self, dep_key=None): self.inputdir_dep_key = dep_key self.add_argument( '-i', '--inputdir', type=str, help='Input directory') self.to_parse['inputdir'] = self.parseInputDir def addOutputDir(self, dep_key=None): self.outputdir_dep_key = dep_key self.add_argument( '-o', '--outputdir', type=str, help='Output directory') self.to_parse['outputdir'] = self.parseOutputDir def addInputFiles(self, dep_key=None): self.inputfiles_dep_key = dep_key self.add_argument( '-i', '--inputfiles', type=str, help='Input files') self.to_parse['inputfiles'] = self.parseInputFiles def addPatches(self): self.add_argument( '--patches', type=str, default='one', help='Stimulus patching mode ("none", "one", all", or a boolean list)') self.to_parse['patches'] = self.parsePatches def addThresholdCurve(self): self.add_argument( '--threshold', default=False, action='store_true', help='Show threshold amplitudes') def addNeuron(self): self.add_argument( '-n', '--neuron', type=str, nargs='+', help='Neuron name (string)') self.to_parse['neuron'] = self.parseNeuron def parseNeuron(self, args): return [getPointNeuron(n) for n in args['neuron']] def addInteractive(self): self.add_argument( '--interactive', default=False, action='store_true', help='Make interactive') def addLabels(self): self.add_argument( '--labels', type=str, nargs='+', default=None, help='Labels') def addRelativeTimeBounds(self): self.add_argument( '--rel_tbounds', type=float, nargs='+', default=None, help='Relative time lower and upper bounds') def addPretty(self): self.add_argument( '--pretty', default=False, action='store_true', help='Make figure pretty') def addSubset(self, choices): self.add_argument( '--subset', type=str, nargs='+', default=['all'], choices=choices + ['all'], help='Run specific subset(s)') self.subset_choices = choices self.to_parse['subset'] = self.parseSubset def parseSubset(self, args): if args['subset'] == ['all']: return self.subset_choices else: return args['subset'] def parseTimeRange(self, args): if args['trange'] is None: return None return np.array(args['trange']) * 1e-3 def parsePatches(self, args): if args['patches'] not in ('none', 'one', 'all'): return eval(args['patches']) else: return args['patches'] def parseInputFiles(self, args): if self.inputfiles_dep_key is not None and not args[self.inputfiles_dep_key]: return None elif args['inputfiles'] is None: return OpenFilesDialog('pkl')[0] def parseDir(self, key, args, title, dep_key=None): if dep_key is not None and args[dep_key] is False: return None try: if args[key] is not None: return os.path.abspath(args[key]) else: return selectDirDialog(title=title) except ValueError: raise ValueError(f'No {key} selected') def parseInputDir(self, args): return self.parseDir( 'inputdir', args, 'Select input directory', self.inputdir_dep_key) def parseOutputDir(self, args): if hasattr(self, 'outputdir') and self.outputdir is not None: return self.outputdir else: if args['outputdir'] is not None and args['outputdir'] == 'dump': return DEFAULT_OUTPUT_FOLDER else: return self.parseDir( 'outputdir', args, 'Select output directory', self.outputdir_dep_key) def parseLogLevel(self, args): return logging.DEBUG if args.pop('verbose') else logging.INFO def parsePltScheme(self, args): if args['plot'] is None or args['plot'] == ['all']: return None else: return {x: [x] for x in args['plot']} def parseOverwrite(self, args): check_for_output = args.pop('checkout') return not check_for_output def restrict(self, args, keys): if sum([args[x] is not None for x in keys]) > 1: raise ValueError( f'You must provide only one of the following arguments: {", ".join(keys)}') def parse2array(self, args, key, factor=1): return np.array(args[key]) * factor def parse(self): args = vars(super().parse_args()) for k, v in self.defaults.items(): if k in args and args[k] is None: args[k] = v if isIterable(v) else [v] for k, parse_method in self.to_parse.items(): args[k] = parse_method(args) return args @staticmethod def parsePlot(args, output): render_args = {} if 'spikes' in args: render_args['spikes'] = args['spikes'] if args['compare']: if args['plot'] == ['all']: logger.error('Specific variables must be specified for comparative plots') return for key in ['cmap', 'cscale']: if key in args: render_args[key] = args[key] for pltvar in args['plot']: comp_plot = CompTimeSeries(output, pltvar) comp_plot.render(**render_args) else: scheme_plot = GroupedTimeSeries(output, pltscheme=args['pltscheme']) scheme_plot.render(**render_args) # phase_plot = PhaseDiagram(output, args['plot'][0]) # phase_plot.render( # # trange=args['trange'], # # rel_tbounds=args['rel_tbounds'], # labels=args['labels'], # prettify=args['pretty'], # cmap=args['cmap'], # cscale=args['cscale'] # ) plt.show() class TestParser(Parser): def __init__(self, valid_subsets): super().__init__() self.addProfiling() self.addSubset(valid_subsets) def addProfiling(self): self.add_argument( '--profile', default=False, action='store_true', help='Run with profiling') class FigureParser(Parser): def __init__(self, valid_subsets): super().__init__() self.addSubset(valid_subsets) self.addSave() self.addOutputDir(dep_key='save') class PlotParser(Parser): def __init__(self): super().__init__() self.addHideOutput() self.addInputFiles() self.addOutputDir(dep_key='save') self.addSave() self.addFigureExtension() self.addCmap() self.addPretty() self.addTimeRange() self.addCscale() self.addLabels() class TimeSeriesParser(PlotParser): def __init__(self): super().__init__() self.addSpikes() self.addSamplingRate() self.addCompare() self.addPatches() class SimParser(Parser): ''' Generic simulation parser interface. ''' def __init__(self, outputdir=None): super().__init__() self.outputdir = outputdir self.addMPI() self.addOutputDir(dep_key='save') self.addSave() self.addCheckForOutput() self.addCompare() self.addCmap() self.addCscale() def parse(self): args = super().parse() return args class MechSimParser(SimParser): ''' Parser to run mechanical simulations from the command line. ''' def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.defaults.update({ 'radius': 32.0, # nm 'embedding': 0., # um 'Cm0': CorticalRS().Cm0 * 1e2, # uF/m2 'Qm0': CorticalRS().Qm0 * 1e5, # nC/m2 'freq': 500.0, # kHz 'amp': 100.0, # kPa 'charge': 0., # nC/cm2 'fs': 100. # % }) self.factors.update({ 'radius': 1e-9, 'embedding': 1e-6, 'Cm0': 1e-2, 'Qm0': 1e-5, 'freq': 1e3, 'amp': 1e3, 'charge': 1e-5, 'fs': 1e-2 }) self.addRadius() self.addEmbedding() self.addCm0() self.addQm0() - self.addFdrive() - self.addAdrive() + self.addFrequency() + self.addAmplitude() self.addCharge() self.addFs() def addRadius(self): self.add_argument( '-a', '--radius', nargs='+', type=float, help='Sonophore radius (nm)') def addEmbedding(self): self.add_argument( '--embedding', nargs='+', type=float, help='Embedding depth (um)') def addCm0(self): self.add_argument( '--Cm0', type=float, nargs='+', help='Resting membrane capacitance (uF/cm2)') def addQm0(self): self.add_argument( '--Qm0', type=float, nargs='+', help='Resting membrane charge density (nC/cm2)') - def addFdrive(self): + def addFrequency(self): self.add_argument( '-f', '--freq', nargs='+', type=float, help='US frequency (kHz)') - def addAdrive(self): + def addAmplitude(self): self.add_argument( '-A', '--amp', nargs='+', type=float, help='Acoustic pressure amplitude (kPa)') self.add_argument( '--Arange', type=str, nargs='+', help=f'Amplitude range {self.dist_str} (kPa)') self.add_argument( '-I', '--intensity', nargs='+', type=float, help='Acoustic intensity (W/cm2)') self.add_argument( '--Irange', type=str, nargs='+', help=f'Intensity range {self.dist_str} (W/cm2)') self.to_parse['amp'] = self.parseAmp def addAscale(self, default='lin'): self.add_argument( '--Ascale', type=str, choices=('lin', 'log'), default=default, help='Amplitude scale for plot ("lin" or "log")') def addCharge(self): self.add_argument( '-Q', '--charge', nargs='+', type=float, help='Membrane charge density (nC/cm2)') def addFs(self): self.add_argument( '--fs', nargs='+', type=float, help='Sonophore coverage fraction (%%)') self.add_argument( '--spanFs', default=False, action='store_true', help='Span Fs from 1 to 100%%') self.to_parse['fs'] = self.parseFs def parseAmp(self, args): params = ['Irange', 'Arange', 'intensity', 'amp'] self.restrict(args, params[:-1]) - Irange, Arange, Int, Adrive = [args.pop(k) for k in params] + Irange, Arange, Int, A = [args.pop(k) for k in params] if Irange is not None: amps = Intensity2Pressure(self.getDistFromList(Irange) * 1e4) # Pa elif Int is not None: amps = Intensity2Pressure(np.array(Int) * 1e4) # Pa elif Arange is not None: amps = self.getDistFromList(Arange) * self.factors['amp'] # Pa else: - amps = np.array(Adrive) * self.factors['amp'] # Pa + amps = np.array(A) * self.factors['amp'] # Pa return amps def parseFs(self, args): if args.pop('spanFs', False): return np.arange(1, 101) * self.factors['fs'] # (-) else: return np.array(args['fs']) * self.factors['fs'] # (-) def parse(self): args = super().parse() for key in ['radius', 'embedding', 'Cm0', 'Qm0', 'freq', 'charge']: args[key] = self.parse2array(args, key, factor=self.factors[key]) return args @staticmethod def parseSimInputs(args): return [args[k] for k in ['freq', 'amp', 'charge']] class NeuronSimParser(SimParser): def __init__(self): super().__init__() self.defaults.update({ 'neuron': 'RS', 'tstim': 100.0, # ms 'toffset': 50. # ms }) self.factors.update({ 'tstim': 1e-3, 'toffset': 1e-3 }) self.addNeuron() self.addTstim() self.addToffset() def addTstim(self): self.add_argument( '-t', '--tstim', nargs='+', type=float, help='Stimulus duration (ms)') def addToffset(self): self.add_argument( '--toffset', nargs='+', type=float, help='Offset duration (ms)') class VClampParser(NeuronSimParser): def __init__(self): super().__init__() self.defaults.update({ 'vhold': -70.0, # mV 'vstep': 0.0 # mV }) self.factors.update({ 'vhold': 1., 'vstep': 1. }) self.addVhold() self.addVstep() def addVhold(self): self.add_argument( '--vhold', nargs='+', type=float, help='Held membrane potential (mV)') def addVstep(self): self.add_argument( '--vstep', nargs='+', type=float, help='Step membrane potential (mV)') self.add_argument( '--vsteprange', type=str, nargs='+', help=f'Step membrane potential range {self.dist_str} (mV)') self.to_parse['vstep'] = self.parseVstep def parseVstep(self, args): vstep_range, vstep = [args.pop(k) for k in ['vsteprange', 'vstep']] if vstep_range is not None: vsteps = self.getDistFromList(vstep_range) # mV else: vsteps = np.array(vstep) # mV return vsteps def parse(self, args=None): if args is None: args = super().parse() for key in ['vhold', 'vstep', 'tstim', 'toffset']: args[key] = self.parse2array(args, key, factor=self.factors[key]) return args @staticmethod def parseSimInputs(args): return [args[k] for k in ['vhold', 'vstep', 'tstim', 'toffset']] class PWSimParser(NeuronSimParser): ''' Generic parser interface to run PW patterned simulations from the command line. ''' def __init__(self): super().__init__() self.defaults.update({ 'PRF': 100.0, # Hz 'DC': 100.0 # % }) self.factors.update({ 'PRF': 1., 'DC': 1e-2 }) self.allowed.update({ 'DC': range(101) }) self.addPRF() self.addDC() self.addTitrate() self.addSpikes() def addPRF(self): self.add_argument( '--PRF', nargs='+', type=float, help='PRF (Hz)') def addDC(self): self.add_argument( '--DC', nargs='+', type=float, help='Duty cycle (%%)') self.add_argument( '--spanDC', default=False, action='store_true', help='Span DC from 1 to 100%%') self.to_parse['DC'] = self.parseDC def addTitrate(self): self.add_argument( '--titrate', default=False, action='store_true', help='Perform titration') def parseAmp(self, args): return NotImplementedError def parseDC(self, args): if args.pop('spanDC'): return np.arange(1, 101) * self.factors['DC'] # (-) else: return np.array(args['DC']) * self.factors['DC'] # (-) def parse(self, args=None): if args is None: args = super().parse() for key in ['tstim', 'toffset', 'PRF']: args[key] = self.parse2array(args, key, factor=self.factors[key]) return args @staticmethod def parseSimInputs(args): return [args[k] for k in ['amp', 'tstim', 'toffset', 'PRF', 'DC']] class EStimParser(PWSimParser): ''' Parser to run E-STIM simulations from the command line. ''' def __init__(self): super().__init__() self.defaults.update({'amp': 10.0}) # mA/m2 self.factors.update({'amp': 1.}) - self.addAstim() + self.addAmplitude() - def addAstim(self): + def addAmplitude(self): self.add_argument( '-A', '--amp', nargs='+', type=float, help='Amplitude of injected current density (mA/m2)') self.add_argument( '--Arange', type=str, nargs='+', help=f'Amplitude range {self.dist_str} (mA/m2)') - self.to_parse['amp'] = self.parseAmp + self.to_parse['amp'] = self.parseAmplitude def addVext(self): self.add_argument( '--Vext', nargs='+', type=float, help='Extracellular potential (mV)') - def parseAmp(self, args): + def parseAmplitude(self, args): if args.pop('titrate'): return None - Arange, Astim = [args.pop(k) for k in ['Arange', 'amp']] + Arange, A = [args.pop(k) for k in ['Arange', 'amp']] if Arange is not None: amps = self.getDistFromList(Arange) * self.factors['amp'] # mA/m2 else: - amps = np.array(Astim) * self.factors['amp'] # mA/m2 + amps = np.array(A) * self.factors['amp'] # mA/m2 return amps class AStimParser(PWSimParser, MechSimParser): ''' Parser to run A-STIM simulations from the command line. ''' def __init__(self): MechSimParser.__init__(self) PWSimParser.__init__(self) self.defaults.update({'method': 'sonic'}) self.allowed.update({'method': ['full', 'hybrid', 'sonic']}) self.addMethod() self.addQSSVars() def addMethod(self): self.add_argument( '-m', '--method', nargs='+', type=str, help=f'Numerical integration method ({", ".join(self.allowed["method"])})') self.to_parse['method'] = self.parseMethod def parseMethod(self, args): for item in args['method']: if item not in self.allowed['method']: raise ValueError(f'Unknown method type: "{item}"') return args['method'] def addQSSVars(self): self.add_argument( '--qss', nargs='+', type=str, help='QSS variables') def parseAmp(self, args): if args.pop('titrate'): return None return MechSimParser.parseAmp(self, args) def parse(self): args = PWSimParser.parse(self, args=MechSimParser.parse(self)) for k in ['Cm0', 'Qm0', 'embedding', 'charge']: del args[k] return args @staticmethod def parseSimInputs(args): return [args['freq']] + PWSimParser.parseSimInputs(args) + [args[k] for k in ['fs', 'method', 'qss']] diff --git a/PySONIC/plt/QSS.py b/PySONIC/plt/QSS.py index 96604c4..2065f82 100644 --- a/PySONIC/plt/QSS.py +++ b/PySONIC/plt/QSS.py @@ -1,452 +1,452 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-06-04 18:24:29 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:52:33 +# @Last Modified time: 2020-02-03 21:42:50 import inspect import logging import pandas as pd import numpy as np import matplotlib.pyplot as plt from ..core import NeuronalBilayerSonophore, Batch from .pltutils import * from ..utils import logger, fileCache, alert root = '../../../QSS analysis/data' FP_colors = { 'stable': 'tab:green', 'saddle': 'tab:orange', 'unstable': 'tab:red' } -def plotQSSdynamics(pneuron, a, Fdrive, Adrive, DC=1., fs=12): +def plotQSSdynamics(pneuron, a, f, A, DC=1., fs=12): ''' Plot effective membrane potential, quasi-steady states and resulting membrane currents as a function of membrane charge density, for a given acoustic amplitude. :param pneuron: point-neuron model :param a: sonophore radius (m) - :param Fdrive: US frequency (Hz) - :param Adrive: US amplitude (Pa) + :param f: US frequency (Hz) + :param A: US amplitude (Pa) :return: figure handle ''' # Get neuron-specific pltvars pltvars = pneuron.getPltVars() # Compute neuron-specific charge and amplitude dependent QS states at this amplitude - nbls = NeuronalBilayerSonophore(a, pneuron, Fdrive) - lookups, QSS = nbls.getQuasiSteadyStates(Fdrive, amps=Adrive, DCs=DC, squeeze_output=True) + nbls = NeuronalBilayerSonophore(a, pneuron, f) + lookups, QSS = nbls.getQuasiSteadyStates(f, amps=A, DCs=DC, squeeze_output=True) Qref = lookups.refs['Q'] Vmeff = lookups['V'] # Compute QSS currents and 1D charge variation array states = {k: QSS[k] for k in pneuron.states} currents = {name: cfunc(Vmeff, states) for name, cfunc in pneuron.currents().items()} iNet = sum(currents.values()) dQdt = -iNet # Compute stable and unstable fixed points - classified_FPs = nbls.fixedPointsQSS(Fdrive, Adrive, DC, lookups, dQdt) + classified_FPs = nbls.fixedPointsQSS(f, A, DC, lookups, dQdt) # Extract dimensionless states norm_QSS = {} for x in pneuron.states: if 'unit' not in pltvars[x]: norm_QSS[x] = QSS[x] # Create figure fig, axes = plt.subplots(3, 1, figsize=(7, 9)) axes[-1].set_xlabel('$\\rm Q_m\ (nC/cm^2)$', fontsize=fs) for ax in axes: for skey in ['top', 'right']: ax.spines[skey].set_visible(False) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) for item in ax.get_xticklabels(minor=True): item.set_visible(False) - fig.suptitle(f'{pneuron.name} neuron - QSS dynamics @ {Adrive * 1e-3:.2f} kPa, {DC * 1e2:.0f}%DC', + fig.suptitle(f'{pneuron.name} neuron - QSS dynamics @ {A * 1e-3:.2f} kPa, {DC * 1e2:.0f}%DC', fontsize=fs) # Subplot: Vmeff ax = axes[0] ax.set_ylabel('$V_m^*$ (mV)', fontsize=fs) ax.plot(Qref * 1e5, Vmeff, color='k') ax.axhline(pneuron.Vm0, linewidth=0.5, color='k') # Subplot: dimensionless quasi-steady states cset = plt.get_cmap('Dark2').colors + plt.get_cmap('tab10').colors ax = axes[1] ax.set_ylabel('QSS gating variables (-)', fontsize=fs) ax.set_yticks([0, 0.5, 1]) ax.set_ylim([-0.05, 1.05]) for i, (label, QS_state) in enumerate(norm_QSS.items()): ax.plot(Qref * 1e5, QS_state, label=label, c=cset[i]) # Subplot: currents ax = axes[2] cset = plt.get_cmap('tab10').colors ax.set_ylabel('QSS currents ($\\rm A/m^2$)', fontsize=fs) for i, (k, I) in enumerate(currents.items()): ax.plot(Qref * 1e5, -I * 1e-3, '--', c=cset[i], label='$\\rm -{}$'.format(pneuron.getPltVars()[k]["label"])) ax.plot(Qref * 1e5, -iNet * 1e-3, color='k', label='$\\rm -I_{Net}$') ax.axhline(0, color='k', linewidth=0.5) for k, v in classified_FPs.items(): if len(v) > 0: ax.scatter(np.array(v) * 1e5, np.zeros(len(v)), marker='.', s=200, facecolors=FP_colors[k], edgecolors='none', label=f'{k} fixed points', zorder=3) fig.tight_layout() fig.subplots_adjust(right=0.8) for ax in axes[1:]: ax.legend(loc='center right', fontsize=fs, frameon=False, bbox_to_anchor=(1.3, 0.5)) for ax in axes[:-1]: ax.set_xticklabels([]) fig.canvas.set_window_title( - f'{pneuron.name}_QSS_dynamics_vs_Qm_{Adrive * 1e-3:.2f}kPa_DC{DC * 1e2:.0f}%') + f'{pneuron.name}_QSS_dynamics_vs_Qm_{A * 1e-3:.2f}kPa_DC{DC * 1e2:.0f}%') return fig -def plotQSSVarVsQm(pneuron, a, Fdrive, varname, amps=None, DC=1., +def plotQSSVarVsQm(pneuron, a, f, varname, amps=None, DC=1., fs=12, cmap='viridis', yscale='lin', zscale='lin', mpi=False, loglevel=logging.INFO): ''' Plot a specific QSS variable (state or current) as a function of membrane charge density, for various acoustic amplitudes. :param pneuron: point-neuron model :param a: sonophore radius (m) - :param Fdrive: US frequency (Hz) + :param f: US frequency (Hz) :param amps: US amplitudes (Pa) :param DC: duty cycle (-) :param varname: extraction key for variable to plot :return: figure handle ''' # Extract information about variable to plot pltvar = pneuron.getPltVars()[varname] Qvar = pneuron.getPltVars()['Qm'] Afactor = 1e-3 logger.info('plotting %s neuron QSS %s vs. Qm for various amplitudes @ %.0f%% DC', pneuron.name, pltvar['desc'], DC * 1e2) - nbls = NeuronalBilayerSonophore(a, pneuron, Fdrive) + nbls = NeuronalBilayerSonophore(a, pneuron, f) # Get reference dictionaries for zero amplitude - lookups0, QSS0 = nbls.getQuasiSteadyStates(Fdrive, amps=0., squeeze_output=True) + lookups0, QSS0 = nbls.getQuasiSteadyStates(f, amps=0., squeeze_output=True) Vmeff0 = lookups0['V'] Qref = lookups0.refs['Q'] df0 = QSS0.tables df0['Vm'] = Vmeff0 # Create figure fig, ax = plt.subplots(figsize=(6, 4)) title = f'{pneuron.name} neuron - QSS {varname} vs. Qm - {DC * 1e2:.0f}% DC' ax.set_title(title, fontsize=fs) ax.set_xlabel('$\\rm {}\ ({})$'.format(Qvar["label"], Qvar["unit"]), fontsize=fs) ax.set_ylabel('$\\rm QSS\ {}\ ({})$'.format(pltvar["label"], pltvar.get("unit", "")), fontsize=fs) if yscale == 'log': ax.set_yscale('log') for key in ['top', 'right']: ax.spines[key].set_visible(False) # Plot y-variable reference line, if any y0 = None y0_str = f'{varname}0' if hasattr(pneuron, y0_str): y0 = getattr(pneuron, y0_str) * pltvar.get('factor', 1) elif varname in pneuron.getCurrentsNames() + ['iNet', 'dQdt']: y0 = 0. y0_str = '' if y0 is not None: ax.axhline(y0, label=y0_str, c='k', linewidth=0.5) # Plot reference QSS profile of variable as a function of charge density var0 = extractPltVar( pneuron, pltvar, pd.DataFrame({k: df0[k] for k in df0.keys()}), name=varname) ax.plot(Qref * Qvar['factor'], var0, '--', c='k', zorder=1, label='A = 0') if varname == 'dQdt': # Plot charge fixed points for each acoustic amplitude - classified_FPs = getQSSFixedPointsvsAdrive( - nbls, Fdrive, amps, DC, mpi=mpi, loglevel=loglevel) + classified_FPs = getQSSFixedPointsvsAmplitude( + nbls, f, amps, DC, mpi=mpi, loglevel=loglevel) for k, v in classified_FPs.items(): if len(v) > 0: _, Q_FPs = np.array(v).T ax.scatter(np.array(Q_FPs) * 1e5, np.zeros(len(v)), marker='.', s=100, facecolors=FP_colors[k], edgecolors='none', label=f'{k} fixed points') # Define color code mymap = plt.get_cmap(cmap) zref = amps * Afactor norm, sm = setNormalizer(mymap, (zref.min(), zref.max()), zscale) # Get amplitude-dependent QSS dictionary lookups, QSS = nbls.getQuasiSteadyStates( - Fdrive, amps=amps, DCs=DC, squeeze_output=True) + f, amps=amps, DCs=DC, squeeze_output=True) df = QSS.tables df['Vm'] = lookups['V'] # Plot QSS profiles for various amplitudes for i, A in enumerate(amps): var = extractPltVar( pneuron, pltvar, pd.DataFrame({k: df[k][i] for k in df.keys()}), name=varname) ax.plot(Qref * Qvar['factor'], var, c=sm.to_rgba(A * Afactor), zorder=0) # Add legend and adjust layout ax.legend(frameon=False, fontsize=fs) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) fig.tight_layout() fig.subplots_adjust(bottom=0.15, top=0.9, right=0.80, hspace=0.5) # Plot amplitude colorbar if amps is not None: cbarax = fig.add_axes([0.85, 0.15, 0.03, 0.75]) fig.colorbar(sm, cax=cbarax) cbarax.set_ylabel('Amplitude (kPa)', fontsize=fs) for item in cbarax.get_yticklabels(): item.set_fontsize(fs) fig.canvas.set_window_title('{}_QSS_{}_vs_Qm_{}A_{:.2f}-{:.2f}kPa_DC{:.0f}%'.format( pneuron.name, varname, zscale, amps.min() * 1e-3, amps.max() * 1e-3, DC * 1e2)) return fig # @fileCache( # root, -# lambda nbls, Fdrive, amps, DC: +# lambda nbls, f, amps, DC: # '{}_QSS_FPs_{:.0f}kHz_{:.2f}-{:.2f}kPa_DC{:.0f}%'.format( -# nbls.pneuron.name, Fdrive * 1e-3, amps.min() * 1e-3, amps.max() * 1e-3, DC * 1e2) +# nbls.pneuron.name, f * 1e-3, amps.min() * 1e-3, amps.max() * 1e-3, DC * 1e2) # ) # @alert -def getQSSFixedPointsvsAdrive(nbls, Fdrive, amps, DC, mpi=False, loglevel=logging.INFO): +def getQSSFixedPointsvsAmplitude(nbls, f, amps, DC, mpi=False, loglevel=logging.INFO): # Compute 2D QSS charge variation array lkp2d, QSS = nbls.getQuasiSteadyStates( - Fdrive, amps=amps, DC=DC, squeeze_output=True) + f, amps=amps, DC=DC, squeeze_output=True) dQdt = -nbls.pneuron.iNet(lkp2d['V'], QSS.tables) # mA/m2 # Generate batch queue queue = [] - for iA, Adrive in enumerate(amps): - queue.append([Fdrive, Adrive, DC, lkp2d.project('A', Adrive), dQdt[iA, :]]) + for iA, A in enumerate(amps): + queue.append([f, A, DC, lkp2d.project('A', A), dQdt[iA, :]]) # Run batch to find stable and unstable fixed points at each amplitude batch = Batch(nbls.fixedPointsQSS, queue) output = batch(mpi=mpi, loglevel=loglevel) classified_FPs = {} eigenvalues = [] for A, out in zip(amps, output): for item in out: x, eigvals, prop = item Qm = x[0] if prop not in classified_FPs: classified_FPs[prop] = [] classified_FPs[prop] += [(A, Qm)] eigenvalues.append(eigvals) eigenvalues = np.array(eigenvalues).T # Plot root locus diagram fig, ax = plt.subplots() ax.set_xlabel('$Re(\lambda)$') ax.set_ylabel('$Im(\lambda)$') ax.axhline(0, color='k') ax.axvline(0, color='k') ax.set_title('root locus diagram') states = ['Qm'] + nbls.pneuron.statesNames() for state, eigvals in zip(states, eigenvalues): ax.scatter(eigvals.real, eigvals.imag, label=f'$\lambda ({state})$') ax.legend() figs = [] for i, state in enumerate(states): tmp, ax = plt.subplots() ax.set_title(f'$\lambda ({state})$') ax.set_xlabel('Amplitude (kPa)') ax.set_ylabel('lambda amplitude') ax.set_xscale('log') for A, out in zip(amps, output): for item in out: x, eigvals, _ = item Lambda = eigvals[i] ax.scatter(A, Lambda.real, c='C0') ax.scatter(A, Lambda.imag, c='C1') figs.append(tmp) return classified_FPs def runAndGetStab(nbls, *args): args = list(args[:-1]) + [1., args[-1]] # hacking coverage fraction into args return nbls.pneuron.getStabilizationValue(nbls.getOutput(*args)[0]) @fileCache( root, - lambda nbls, Fdrive, amps, tstim, toffset, PRF, DC: + lambda nbls, f, amps, tstim, toffset, PRF, DC: '{}_sim_FPs_{:.0f}kHz_{:.0f}ms_offset{:.0f}ms_PRF{:.0f}Hz_{:.2f}-{:.2f}kPa_DC{:.0f}%'.format( - nbls.pneuron.name, Fdrive * 1e-3, tstim * 1e3, toffset * 1e3, PRF, + nbls.pneuron.name, f * 1e-3, tstim * 1e3, toffset * 1e3, PRF, amps.min() * 1e-3, amps.max() * 1e-3, DC * 1e2) ) -def getSimFixedPointsvsAdrive(nbls, Fdrive, amps, tstim, toffset, PRF, DC, +def getSimFixedPointsvsAmplitude(nbls, f, amps, tstim, toffset, PRF, DC, outputdir=None, mpi=False, loglevel=logging.INFO): # Run batch to find stabilization point from simulations (if any) at each amplitude - queue = [[nbls, outputdir, Fdrive, Adrive, tstim, toffset, PRF, DC, 'sonic'] for Adrive in amps] + queue = [[nbls, outputdir, f, A, tstim, toffset, PRF, DC, 'sonic'] for A in amps] batch = Batch(runAndGetStab, queue) output = batch(mpi=mpi, loglevel=loglevel) return list(zip(amps, output)) -def plotEqChargeVsAmp(pneuron, a, Fdrive, amps=None, tstim=None, toffset=None, PRF=None, +def plotEqChargeVsAmp(pneuron, a, f, amps=None, tstim=None, toffset=None, PRF=None, DC=1., fs=12, xscale='lin', compdir=None, mpi=False, loglevel=logging.INFO): ''' Plot the equilibrium membrane charge density as a function of acoustic amplitude, given an initial value of membrane charge density. :param pneuron: point-neuron model :param a: sonophore radius (m) - :param Fdrive: US frequency (Hz) + :param f: US frequency (Hz) :param amps: US amplitudes (Pa) :return: figure handle ''' logger.info('plotting equilibrium charges for various amplitudes') # Create figure fig, ax = plt.subplots(figsize=(6, 4)) figname = f'{pneuron.name} neuron - charge stability vs. amplitude @ {DC * 1e2:.0f}%DC' ax.set_title(figname) ax.set_xlabel('Amplitude (kPa)', fontsize=fs) ax.set_ylabel('$\\rm Q_m\ (nC/cm^2)$', fontsize=fs) if xscale == 'log': ax.set_xscale('log') for skey in ['top', 'right']: ax.spines[skey].set_visible(False) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) - nbls = NeuronalBilayerSonophore(a, pneuron, Fdrive) + nbls = NeuronalBilayerSonophore(a, pneuron, f) Afactor = 1e-3 # Plot charge fixed points for each acoustic amplitude - classified_FPs = getQSSFixedPointsvsAdrive( - nbls, Fdrive, amps, DC, mpi=mpi, loglevel=loglevel) + classified_FPs = getQSSFixedPointsvsAmplitude( + nbls, f, amps, DC, mpi=mpi, loglevel=loglevel) for k, v in classified_FPs.items(): if len(v) > 0: A_FPs, Q_FPs = np.array(v).T ax.scatter(np.array(A_FPs) * Afactor, np.array(Q_FPs) * 1e5, marker='.', s=20, facecolors=FP_colors[k], edgecolors='none', label=f'{k} fixed points') # Plot charge asymptotic stabilization points from simulations for each acoustic amplitude if compdir is not None: - stab_points = getSimFixedPointsvsAdrive( - nbls, Fdrive, amps, tstim, toffset, PRF, DC, + stab_points = getSimFixedPointsvsAmplitude( + nbls, f, amps, tstim, toffset, PRF, DC, outputdir=compdir, mpi=mpi, loglevel=loglevel) if len(stab_points) > 0: A_stab, Q_stab = np.array(stab_points).T ax.scatter(np.array(A_stab) * Afactor, np.array(Q_stab) * 1e5, marker='o', s=20, facecolors='none', edgecolors='k', label='stabilization points from simulations') # Post-process figure ax.set_ylim(np.array([pneuron.Qm0 - 10e-5, 0]) * 1e5) ax.legend(frameon=False, fontsize=fs) fig.tight_layout() fig.canvas.set_window_title('{}_QSS_Qstab_vs_{}A_{:.0f}%DC{}'.format( pneuron.name, xscale, DC * 1e2, '_with_comp' if compdir is not None else '' )) return fig @fileCache( root, - lambda nbls, Fdrive, DCs: + lambda nbls, f, DCs: '{}_QSS_threshold_curve_{:.0f}kHz_DC{:.2f}-{:.2f}%'.format( - nbls.pneuron.name, Fdrive * 1e-3, DCs.min() * 1e2, DCs.max() * 1e2), + nbls.pneuron.name, f * 1e-3, DCs.min() * 1e2, DCs.max() * 1e2), ext='csv' ) -def getQSSThresholdAmps(nbls, Fdrive, DCs, mpi=False, loglevel=logging.INFO): - queue = [[Fdrive, DC] for DC in DCs] +def getQSSThresholdAmps(nbls, f, DCs, mpi=False, loglevel=logging.INFO): + queue = [[f, DC] for DC in DCs] batch = Batch(nbls.titrateQSS, queue) return batch(mpi=mpi, loglevel=loglevel) @fileCache( root, - lambda nbls, Fdrive, tstim, toffset, PRF, DCs: + lambda nbls, f, tstim, toffset, PRF, DCs: '{}_sim_threshold_curve_{:.0f}kHz_{:.0f}ms_offset{:.0f}ms_PRF{:.0f}Hz_DC{:.2f}-{:.2f}%'.format( - nbls.pneuron.name, Fdrive * 1e-3, tstim * 1e3, toffset * 1e3, PRF, + nbls.pneuron.name, f * 1e-3, tstim * 1e3, toffset * 1e3, PRF, DCs.min() * 1e2, DCs.max() * 1e2), ext='csv' ) -def getSimThresholdAmps(nbls, Fdrive, tstim, toffset, PRF, DCs, mpi=False, loglevel=logging.INFO): +def getSimThresholdAmps(nbls, f, tstim, toffset, PRF, DCs, mpi=False, loglevel=logging.INFO): # Run batch to find threshold amplitude from titrations at each DC - queue = [[Fdrive, tstim, toffset, PRF, DC, 1. , 'sonic'] for DC in DCs] + queue = [[f, tstim, toffset, PRF, DC, 1. , 'sonic'] for DC in DCs] batch = Batch(nbls.titrate, queue) return batch(mpi=mpi, loglevel=loglevel) -def plotQSSThresholdCurve(pneuron, a, Fdrive, tstim=None, toffset=None, PRF=None, DCs=None, +def plotQSSThresholdCurve(pneuron, a, f, tstim=None, toffset=None, PRF=None, DCs=None, fs=12, Ascale='lin', comp=False, mpi=False, loglevel=logging.INFO): logger.info('plotting %s neuron threshold curve', pneuron.name) if pneuron.name == 'STN': raise ValueError('cannot compute threshold curve for STN neuron') # Create figure fig, ax = plt.subplots(figsize=(6, 4)) figname = f'{pneuron.name} neuron - threshold amplitude vs. duty cycle' ax.set_title(figname) ax.set_xlabel('Duty cycle (%)', fontsize=fs) ax.set_ylabel('Amplitude (kPa)', fontsize=fs) if Ascale == 'log': ax.set_yscale('log') for skey in ['top', 'right']: ax.spines[skey].set_visible(False) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) - nbls = NeuronalBilayerSonophore(a, pneuron, Fdrive) - Athrs_QSS = np.array(getQSSThresholdAmps(nbls, Fdrive, DCs, mpi=mpi, loglevel=loglevel)) + nbls = NeuronalBilayerSonophore(a, pneuron, f) + Athrs_QSS = np.array(getQSSThresholdAmps(nbls, f, DCs, mpi=mpi, loglevel=loglevel)) ax.plot(DCs * 1e2, Athrs_QSS * 1e-3, '-', c='k', label='QSS curve') if comp: Athrs_sim = np.array(getSimThresholdAmps( - nbls, Fdrive, tstim, toffset, PRF, DCs, mpi=mpi, loglevel=loglevel)) + nbls, f, tstim, toffset, PRF, DCs, mpi=mpi, loglevel=loglevel)) ax.plot(DCs * 1e2, Athrs_sim * 1e-3, '--', c='k', label='sim curve') # Post-process figure ax.set_xlim([0, 100]) ax.set_ylim([10, 600]) ax.legend(frameon=False, fontsize=fs) fig.tight_layout() fig.canvas.set_window_title('{}_QSS_threhold_curve_{:.0f}-{:.0f}%DC_{}A{}'.format( pneuron.name, DCs.min() * 1e2, DCs.max() * 1e2, Ascale, '_with_comp' if comp else '' )) return fig diff --git a/PySONIC/plt/actmap.py b/PySONIC/plt/actmap.py index e5b2d63..8817599 100644 --- a/PySONIC/plt/actmap.py +++ b/PySONIC/plt/actmap.py @@ -1,273 +1,276 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2019-06-04 18:24:29 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 12:30:18 +# @Last Modified time: 2020-02-03 21:36:15 import os import pickle import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.ticker import FormatStrFormatter -from ..core import NeuronalBilayerSonophore, PulsedProtocol, AcousticSource +from ..core import NeuronalBilayerSonophore, PulsedProtocol, AcousticDrive from ..utils import logger, si_format, loadData from ..constants import * from .pltutils import cm2inch, setNormalizer from ..postpro import detectSpikes class Map: @staticmethod def computeMeshEdges(x, scale): ''' Compute the appropriate edges of a mesh that quads a linear or logarihtmic distribution. :param x: the input vector :param scale: the type of distribution ('lin' for linear, 'log' for logarihtmic) :return: the edges vector ''' if scale == 'log': x = np.log10(x) dx = x[1] - x[0] n = x.size + 1 return {'lin': np.linspace, 'log': np.logspace}[scale](x[0] - dx / 2, x[-1] + dx / 2, n) class ActivationMap(Map): - def __init__(self, root, pneuron, a, Fdrive, tstim, PRF, amps, DCs): + def __init__(self, root, pneuron, a, f, tstim, PRF, amps, DCs): self.root = root self.pneuron = pneuron self.a = a self.nbls = NeuronalBilayerSonophore(self.a, self.pneuron) - self.Fdrive = Fdrive + self.f = f self.tstim = tstim self.PRF = PRF self.amps = amps self.DCs = DCs + self.ref_drive = AcousticDrive(self.f, None) + self.Ascale = self.getAmpScale() self.title = '{} neuron @ {}Hz, {}Hz PRF ({}m sonophore)'.format( - self.pneuron.name, *si_format([self.Fdrive, self.PRF, self.a])) + self.pneuron.name, *si_format([self.f, self.PRF, self.a])) out_fname = 'actmap {} {}Hz PRF{}Hz {}s.csv'.format( - self.pneuron.name, *si_format([self.Fdrive, self.PRF, self.tstim], space='')) + self.pneuron.name, *si_format([self.f, self.PRF, self.tstim], space='')) out_fpath = os.path.join(self.root, out_fname) if os.path.isfile(out_fpath): self.data = np.loadtxt(out_fpath, delimiter=',') else: self.data = self.compute() np.savetxt(out_fpath, self.data, delimiter=',') def getAmpScale(self): Amin, Amax, nA = self.amps.min(), self.amps.max(), self.amps.size if np.all(np.isclose(self.amps, np.logspace(np.log10(Amin), np.log10(Amax), nA))): return 'log' elif np.all(np.isclose(self.amps, np.linspace(Amin, Amax, nA))): return 'lin' else: raise ValueError('Unknown distribution type') def classify(self, data): ''' Classify based on charge temporal profile. ''' # Detect spikes in data ispikes, _ = detectSpikes(data) # Compute firing metrics if ispikes.size == 0: # if no spike, assign -1 return -1 elif ispikes.size == 1: # if only 1 spike, assign 0 return 0 else: # if more than 1 spike, assign firing rate t = data['t'].values sr = 1 / np.diff(t[ispikes]) return np.mean(sr) def compute(self): logger.info('Generating activation map for %s neuron', self.pneuron.name) actmap = np.empty((self.amps.size, self.DCs.size)) nfiles = self.DCs.size * self.amps.size for i, A in enumerate(self.amps): for j, DC in enumerate(self.DCs): fcode = self.nbls.filecode( - self.Fdrive, A, PulsedProtocol(self.tstim, 0., self.PRF, DC), 1., 'sonic') + self.f, A, PulsedProtocol(self.tstim, 0., self.PRF, DC), 1., 'sonic') fname = f'{fcode}.pkl' fpath = os.path.join(self.root, fname) if not os.path.isfile(fpath): print(fpath) logger.error(f'"{fname}" file not found') actmap[i, j] = np.nan else: # Load data ifile = i * self.amps.size + j + 1 logger.debug(f'Loading file {ifile}/{nfiles}: "{fname}"') df, _ = loadData(fpath) actmap[i, j] = self.classify(df) return actmap @staticmethod def adjustFRbounds(actmap): ''' Check firing rate bounding. ''' minFR, maxFR = (actmap[actmap > 0].min(), actmap.max()) logger.info('FR range: %.0f - %.0f Hz', minFR, maxFR) if FRbounds is None: FRbounds = (minFR, maxFR) else: if minFR < FRbounds[0]: logger.warning( 'Minimal firing rate (%.0f Hz) is below defined lower bound (%.0f Hz)', minFR, FRbounds[0]) if maxFR > FRbounds[1]: logger.warning( 'Maximal firing rate (%.0f Hz) is above defined upper bound (%.0f Hz)', maxFR, FRbounds[1]) @staticmethod def fit2Colormap(actmap, cmap): actmap[actmap == -1] = np.nan actmap[actmap == 0] = 1e-3 cmap.set_bad('silver') cmap.set_under('k') return actmap, cmap def addThresholdCurve(self, ax, fs): Athrs = np.array([ - self.nbls.titrate(self.Fdrive, PulsedProtocol(self.tstim, 0., self.PRF, DC), 1.0, 'sonic') for DC in self.DCs]) + self.nbls.titrate(self.ref_drive, PulsedProtocol(self.tstim, 0., self.PRF, DC), 1.0, 'sonic') + for DC in self.DCs]) ax.plot(self.DCs * 1e2, Athrs * 1e-3, '-', color='#F26522', linewidth=3, label='threshold amplitudes') ax.legend(loc='lower center', frameon=False, fontsize=fs) def render(self, Ascale='log', FRscale='log', FRbounds=None, fs=8, cmap='viridis', interactive=False, Vbounds=None, trange=None, thresholds=False, figsize=cm2inch(8, 5.8)): # Compute FR normalizer mymap = plt.get_cmap(cmap) norm, sm = setNormalizer(mymap, FRbounds, FRscale) # Compute mesh edges xedges = self.computeMeshEdges(self.DCs, 'lin') yedges = self.computeMeshEdges(self.amps, self.Ascale) # Create figure fig, ax = plt.subplots(figsize=figsize) fig.subplots_adjust(left=0.15, bottom=0.15, right=0.8, top=0.92) ax.set_title(self.title, fontsize=fs) ax.set_xlabel('Duty cycle (%)', fontsize=fs, labelpad=-0.5) ax.set_ylabel('Amplitude (kPa)', fontsize=fs) ax.set_xlim(np.array([self.DCs.min(), self.DCs.max()]) * 1e2) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) # Plot activation map with specific color code actmap, cmap = self.fit2Colormap(self.data, plt.get_cmap(cmap)) if Ascale == 'log': ax.set_yscale('log') ax.pcolormesh(xedges * 1e2, yedges * 1e-3, actmap, cmap=mymap, norm=norm) if thresholds: self.addThresholdCurve(ax, fs) # Plot firing rate colorbar pos1 = ax.get_position() # get the map axis position cbarax = fig.add_axes([pos1.x1 + 0.02, pos1.y0, 0.03, pos1.height]) fig.colorbar(sm, cax=cbarax) cbarax.set_ylabel('Firing rate (Hz)', fontsize=fs) for item in cbarax.get_yticklabels(): item.set_fontsize(fs) if interactive: fig.canvas.mpl_connect( 'button_press_event', lambda event: self.onClick(event, (xedges, yedges), trange, Vbounds)) return fig def onClick(self, event, meshedges, trange, Vbounds): ''' Retrieve the specific input parameters of the x and y dimensions when the user clicks on a cell in the 2D map, and define filename from it. ''' # Get DC and A from x and y coordinates x, y = event.xdata, event.ydata DC = self.DCs[np.searchsorted(meshedges[0], x * 1e-2) - 1] - Adrive = self.amps[np.searchsorted(meshedges[1], y * 1e3) - 1] + A = self.amps[np.searchsorted(meshedges[1], y * 1e3) - 1] # Define filepath fcode = self.nbls.filecode( - AcousticSource(self.Fdrive, Adrive), PulsedProtocol(self.tstim, 0., self.PRF, DC), 1. , 'sonic') + self.ref_drive.updatedX(A), PulsedProtocol(self.tstim, 0., self.PRF, DC), 1. , 'sonic') fname = f'{fcode}.pkl' fpath = os.path.join(self.root, fname) # Plot Q-trace try: self.plotQVeff(fpath, trange=trange, ybounds=Vbounds) plt.show() except FileNotFoundError as err: logger.error(err) def plotQVeff(self, filepath, tonset=10e-3, trange=None, ybounds=None, fs=8, lw=1, figsize=cm2inch(7, 3)): ''' Plot superimposed profiles of membrane charge density and effective membrane potential. :param filepath: full path to the data file :param tonset: pre-stimulus onset to add to profiles (s) :param trange: time lower and upper bounds on graph (s) :param ybounds: y-axis bounds (mV / nC/cm2) :return: handle to the generated figure ''' # Check file existence fname = os.path.basename(filepath) if not os.path.isfile(filepath): raise FileNotFoundError(f'Error: "{fname}" file does not exist') # Load data (with optional time restriction) logger.debug('Loading data from "%s"', fname) with open(filepath, 'rb') as fh: frame = pickle.load(fh) df = frame['data'] if trange is not None: tmin, tmax = trange df = df.loc[(df['t'] >= tmin) & (df['t'] <= tmax)] # Load variables, add onset and rescale t, Qm, Vm = [df[k].values for k in ['t', 'Qm', 'Vm']] t = np.hstack((np.array([-tonset, t[0]]), t)) # s Vm = np.hstack((np.array([self.pneuron.Vm0] * 2), Vm)) # mV Qm = np.hstack((np.array([self.pneuron.Qm0] * 2), Qm)) # C/m2 t *= 1e3 # ms Qm *= 1e5 # nC/cm2 # Determine axes bounds if ybounds is None: ybounds = (min(Vm.min(), Qm.min()), max(Vm.max(), Qm.max())) # Create figure fig, ax = plt.subplots(figsize=figsize) fig.canvas.set_window_title(fname) plt.subplots_adjust(left=0.2, bottom=0.2, right=0.95, top=0.95) for key in ['top', 'right']: ax.spines[key].set_visible(False) for key in ['bottom', 'left']: ax.spines[key].set_position(('axes', -0.03)) ax.spines[key].set_linewidth(2) ax.yaxis.set_tick_params(width=2) ax.yaxis.set_major_formatter(FormatStrFormatter('%.0f')) ax.set_xticks([]) ax.set_xlabel(f'{si_format(np.ptp(t))}s', fontsize=fs) ax.set_ylabel('mV - $\\rm nC/cm^2$', fontsize=fs, labelpad=-15) ax.set_ylim(ybounds) ax.set_yticks(ybounds) for item in ax.get_yticklabels(): item.set_fontsize(fs) # Plot Qm and Vmeff profiles ax.plot(t, Vm, color='darkgrey', linewidth=lw) ax.plot(t, Qm, color='k', linewidth=lw) # fig.tight_layout() return fig diff --git a/PySONIC/plt/effvars.py b/PySONIC/plt/effvars.py index 6c85612..1073bac 100644 --- a/PySONIC/plt/effvars.py +++ b/PySONIC/plt/effvars.py @@ -1,248 +1,248 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-10-02 01:44:59 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:45:17 +# @Last Modified time: 2020-02-03 21:22:29 from inspect import signature import numpy as np import matplotlib.pyplot as plt from ..utils import logger, isWithin from ..core import NeuronalBilayerSonophore from .pltutils import setGrid, setNormalizer def isVoltageDependent(func): return 'Vm' in list(signature(func).parameters.keys()) def plotGatingKinetics(pneuron, fs=15): ''' Plot the voltage-dependent steady-states and time constants of activation and inactivation gates of the different ionic currents involved in a specific neuron's membrane. :param pneuron: point-neuron model :param fs: labels and title font size ''' # Input membrane potential vector Vm = np.linspace(-100, 50, 300) xinf_dict = {} taux_dict = {} logger.info('Computing %s neuron gating kinetics', pneuron.name) names = pneuron.states for xname in names: Vm_state = True # Names of functions of interest xinf_func_str = xname.lower() + 'inf' taux_func_str = 'tau' + xname.lower() alphax_func_str = 'alpha' + xname.lower() betax_func_str = 'beta' + xname.lower() # derx_func_str = 'der' + xname.upper() # 1st choice: use xinf and taux function if hasattr(pneuron, xinf_func_str) and hasattr(pneuron, taux_func_str): xinf_func = getattr(pneuron, xinf_func_str) taux_func = getattr(pneuron, taux_func_str) xinf = np.array([xinf_func(v) for v in Vm]) if isinstance(taux_func, float): taux = taux_func * np.ones(len(Vm)) else: taux = np.array([taux_func(v) for v in Vm]) # 2nd choice: use alphax and betax functions elif hasattr(pneuron, alphax_func_str) and hasattr(pneuron, betax_func_str): alphax_func = getattr(pneuron, alphax_func_str) betax_func = getattr(pneuron, betax_func_str) if not isVoltageDependent(alphax_func): Vm_state = False else: alphax = np.array([alphax_func(v) for v in Vm]) if isinstance(betax_func, float): betax = betax_func * np.ones(len(Vm)) else: betax = np.array([betax_func(v) for v in Vm]) taux = 1.0 / (alphax + betax) xinf = taux * alphax # # 3rd choice: use derX choice # elif hasattr(pneuron, derx_func_str): # derx_func = getattr(pneuron, derx_func_str) # xinf = brentq(lambda x: derx_func(pneuron.Vm, x), 0, 1) else: Vm_state = False if not Vm_state: logger.error('%s-state gating kinetics is not Vm-dependent', xname) else: xinf_dict[xname] = xinf taux_dict[xname] = taux fig, axes = plt.subplots(2) fig.suptitle(f'{pneuron.name} neuron: gating dynamics') ax = axes[0] ax.get_xaxis().set_ticklabels([]) ax.set_ylabel('$X_{\infty}$', fontsize=fs) for xname in names: if xname in xinf_dict: ax.plot(Vm, xinf_dict[xname], lw=2, label='$' + xname + '_{\infty}$') ax.legend(fontsize=fs, loc=7) ax = axes[1] ax.set_xlabel('$V_m\ (mV)$', fontsize=fs) ax.set_ylabel('$\\tau_X\ (ms)$', fontsize=fs) for xname in names: if xname in taux_dict: ax.plot(Vm, taux_dict[xname] * 1e3, lw=2, label='$\\tau_{' + xname + '}$') ax.legend(fontsize=fs, loc=7) return fig -def plotEffectiveVariables(pneuron, a=None, Fdrive=None, Adrive=None, nlevels=10, +def plotEffectiveVariables(pneuron, a=None, f=None, A=None, nlevels=10, zscale='lin', cmap=None, fs=12, ncolmax=1): ''' Plot the profiles of effective variables of a specific neuron as a function of charge density and another reference variable (z-variable). For each effective variable, one charge-profile per z-value is plotted, with a color code based on the z-variable value. :param pneuron: point-neuron model :param a: sonophore radius (m) - :param Fdrive: acoustic drive frequency (Hz) - :param Adrive: acoustic pressure amplitude (Pa) + :param f: acoustic drive frequency (Hz) + :param A: acoustic pressure amplitude (Pa) :param nlevels: number of levels for the z-variable :param zscale: scale type for the z-variable ('lin' or 'log') :param cmap: colormap name :param fs: figure fontsize :param ncolmax: max number of columns on the figure :return: handle to the created figure ''' - if sum(isinstance(x, float) for x in [a, Fdrive, Adrive]) < 2: - raise ValueError('at least 2 parameters in (a, Fdrive, Adrive) must be fixed') + if sum(isinstance(x, float) for x in [a, f, A]) < 2: + raise ValueError('at least 2 parameters in (a, f, A) must be fixed') if cmap is None: cmap = 'viridis' nbls = NeuronalBilayerSonophore(32e-9, pneuron) pltvars = nbls.getPltVars() # Get lookups and re-organize them lkp = nbls.getLookup().squeeze() Qref = lkp.refs['Q'] lkp.rename('V', 'Vm') lkp['Cm'] = Qref / lkp['Vm'] * 1e3 # uF/cm2 # Sort keys for display keys = lkp.outputs del keys[keys.index('Cm')] del keys[keys.index('Vm')] keys = ['Cm', 'Vm'] + keys # Get reference US-OFF lookups (1D) lookupsoff = lkp.projectOff() # Get 2D lookups at specific combination inputs = {} - for k, v in {'a': a, 'f': Fdrive, 'A': Adrive}.items(): + for k, v in {'a': a, 'f': f, 'A': A}.items(): if v is not None: inputs[k] = v lookups2D = lkp.projectN(inputs) # Get z-variable from remaining inputs for key in lookups2D.inputs: if key != 'Q': zkey = key zref = lookups2D.refs[key] - zvar = nbls.inputs[{'a': 'a', 'f': 'Fdrive', 'A': 'Adrive'}[zkey]] + zvar = nbls.inputs()[zkey] zref *= zvar['factor'] # Optional: interpolate along z dimension if nlevels specified if zscale == 'log': zref_pos = zref[zref > 0] znew = np.logspace(np.log10(zref_pos.min()), np.log10(zref_pos.max()), nlevels) elif zscale == 'lin': znew = np.linspace(zref.min(), zref.max(), nlevels) else: raise ValueError('unknown scale type (should be "lin" or "log")') znew = np.array([isWithin(zvar['label'], z, (zref.min(), zref.max())) for z in znew]) lookups2D = lookups2D.project(zkey, znew) zref = znew # Define color code mymap = plt.get_cmap(cmap) norm, sm = setNormalizer(mymap, (zref.min(), zref.max()), zscale) # Plot logger.info('plotting') nrows, ncols = setGrid(len(keys), ncolmax=ncolmax) xvar = pltvars['Qm'] Qbounds = np.array([Qref.min(), Qref.max()]) * xvar['factor'] fig, _ = plt.subplots(figsize=(3.5 * ncols, 1 * nrows), squeeze=False) for j, key in enumerate(keys): ax = plt.subplot2grid((nrows, ncols), (j // ncols, j % ncols)) for s in ['right', 'top']: ax.spines[s].set_visible(False) yvar = pltvars[key] if j // ncols == nrows - 1: ax.set_xlabel('$\\rm {}\ ({})$'.format(xvar["label"], xvar["unit"]), fontsize=fs) ax.set_xticks(Qbounds) else: ax.set_xticks([]) ax.spines['bottom'].set_visible(False) ax.xaxis.set_label_coords(0.5, -0.1) ax.yaxis.set_label_coords(-0.02, 0.5) for item in ax.get_xticklabels() + ax.get_yticklabels(): item.set_fontsize(fs) ymin = np.inf ymax = -np.inf # Plot effective variable for each selected z-value y0 = lookupsoff[key] for i, z in enumerate(zref): y = lookups2D[key][i] if 'alpha' in key or 'beta' in key: y[y > y0.max() * 2] = np.nan ax.plot(Qref * xvar.get('factor', 1), y * yvar.get('factor', 1), c=sm.to_rgba(z)) ymin = min(ymin, y.min()) ymax = max(ymax, y.max()) # Plot reference variable ax.plot(Qref * xvar.get('factor', 1), y0 * yvar.get('factor', 1), '--', c='k') ymax = max(ymax, y0.max()) ymin = min(ymin, y0.min()) # Set axis y-limits if 'alpha' in key or 'beta' in key: ymax = y0.max() * 2 ylim = [ymin * yvar.get('factor', 1), ymax * yvar.get('factor', 1)] if key == 'Cm': factor = 1e1 ylim = [np.floor(ylim[0] * factor) / factor, np.ceil(ylim[1] * factor) / factor] else: factor = 1 / np.power(10, np.floor(np.log10(ylim[1]))) ylim = [np.floor(ylim[0] * factor) / factor, np.ceil(ylim[1] * factor) / factor] ax.set_yticks(ylim) ax.set_ylim(ylim) ax.set_ylabel('$\\rm {}\ ({})$'.format(yvar["label"], yvar["unit"]), fontsize=fs, rotation=0, ha='right', va='center') fig.suptitle(f'{pneuron.name} neuron: {zvar["label"]} \n modulated effective variables') # Plot colorbar fig.subplots_adjust(left=0.20, bottom=0.05, top=0.8, right=0.80, hspace=0.5) cbarax = fig.add_axes([0.10, 0.90, 0.80, 0.02]) fig.colorbar(sm, cax=cbarax, orientation='horizontal') cbarax.set_xlabel(f'{zvar["label"]} ({zvar["unit"]})', fontsize=fs) for item in cbarax.get_yticklabels(): item.set_fontsize(fs) return fig diff --git a/PySONIC/plt/phaseplot.py b/PySONIC/plt/phaseplot.py index d7af581..534988e 100644 --- a/PySONIC/plt/phaseplot.py +++ b/PySONIC/plt/phaseplot.py @@ -1,155 +1,155 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-10-01 20:40:28 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:46:00 +# @Last Modified time: 2020-02-03 20:09:00 import numpy as np import matplotlib.pyplot as plt from ..core import getModel from ..utils import * from ..constants import * from .pltutils import * class PhasePlot(GenericPlot): ''' Generic interface to build a phase plot displaying the evolution of 2 variables resulting from model simulations. ''' @classmethod def createBackBone(cls, pltvar, tbounds, fs, prettify): # Create figure fig, axes = plt.subplots(1, 2, figsize=(8, 4)) # 1st axis: variable as function of time ax = axes[0] ax.set_xlabel('$\\rm time\ (ms)$', fontsize=fs) ax.set_ylabel('$\\rm {}$'.format(pltvar["label"]), fontsize=fs) ax.set_xlim(tbounds) ax.set_ylim(pltvar['lim']) # 2nd axis: phase plot (derivative of variable vs variable) ax = axes[1] ax.set_xlabel('$\\rm {}$'.format(pltvar["label"]), fontsize=fs) ax.set_ylabel('$\\rm {}$'.format(pltvar["dlabel"]), fontsize=fs) ax.set_xlim(pltvar['lim']) ax.set_ylim(pltvar['dlim']) ax.plot([0, 0], [pltvar['dlim'][0], pltvar['dlim'][1]], '--', color='k', linewidth=1) ax.plot([pltvar['lim'][0], pltvar['lim'][1]], [0, 0], '--', color='k', linewidth=1) if prettify: cls.prettify(axes[0], xticks=tbounds, yticks=pltvar['lim']) cls.prettify(axes[1], xticks=pltvar['lim'], yticks=pltvar['dlim']) for ax in axes: cls.removeSpines(ax) cls.setTickLabelsFontSize(ax, fs) return fig, axes def checkInputs(self, labels): self.checkLabels(labels) def addLegend(self, fig, axes, handles, labels, fs): fig.subplots_adjust(top=0.8) if len(self.filepaths) > 1: axes[0].legend(handles, labels, fontsize=fs, frameon=False, loc='upper center', bbox_to_anchor=(1.0, 1.35)) else: fig.suptitle(labels[0], fontsize=fs) def render(self, no_offset=False, no_first=False, labels=None, colors=None, fs=10, lw=2, trange=None, rel_tbounds=None, prettify=False, cmap=None, cscale='lin'): self.checkInputs(labels) if rel_tbounds is None: rel_tbounds = np.array((-1.5e-3, 1.5e-3)) # Check pltvar if self.varname not in self.phaseplotvars: pltvars_str = ', '.join([f'"{p}"' for p in self.phaseplotvars.keys()]) raise KeyError( f'Unknown plot variable: "{self.varname}". Possible plot variables are: {pltvars_str}') pltvar = self.phaseplotvars[self.varname] fig, axes = self.createBackBone(pltvar, rel_tbounds * 1e3, fs, prettify) # Loop through data files comp_values, full_labels = [], [] handles0, handles1 = [], [] for i, filepath in enumerate(self.filepaths): # Load data data, meta = self.getData(filepath, trange=trange) meta.pop('tcomp') # Extract model model = getModel(meta) full_labels.append(self.figtitle(model, meta)) # Check consistency of sim types and check differing inputs comp_values = self.checkConsistency(meta, comp_values) # Extract time and y-variable t = data['t'].values y = data[self.varname].values # Detect spikes in signal ispikes, properties = detectSpikes( data, key=self.varname, mph=pltvar['thr_amp'], mpp=pltvar['thr_prom']) nspikes = ispikes.size tspikes = t[ispikes] yspikes = y[ispikes] properties = convertPeaksProperties(t, properties) tbounds = np.array(list(zip(properties['left_bases'], properties['right_bases']))) if nspikes == 0: logger.warning('No spikes detected') else: # Store spikes in dedicated lists spikes_tvec, spikes_yvec, spikes_dydtvec = self.extractSpikesData( t, y, tbounds, rel_tbounds, tspikes) # Plot spikes temporal profiles and phase-plane diagrams lh0, lh1 = [], [] for j in range(nspikes): if colors is None: icolor = i if len(self.filepaths) > 1 else j % 10 color = f'C{icolor}' else: color = colors[i] lh0.append(axes[0].plot( spikes_tvec[j] * 1e3, spikes_yvec[j] * pltvar['factor'], linewidth=lw, c=color)[0]) lh1.append(axes[1].plot( spikes_yvec[j] * pltvar['factor'], spikes_dydtvec[j] * pltvar['dfactor'], linewidth=lw, c=color)[0]) handles0.append(lh0) handles1.append(lh1) # Determine labels if self.comp_ref_key is not None: - self.comp_info = model.inputs.get(self.comp_ref_key, None) + self.comp_info = model.inputs().get(self.comp_ref_key, None) comp_values, comp_labels = self.getCompLabels(comp_values) labels = self.chooseLabels(labels, comp_labels, full_labels) # Post-process figure fig.tight_layout() # Add labels or colorbar legend if cmap is not None: if not self.is_unique_comp: raise ValueError('Colormap mode unavailable for multiple differing parameters') if self.comp_info is None: raise ValueError('Colormap mode unavailable for qualitative comparisons') cmap_handles = [h0 + h1 for h0, h1 in zip(handles0, handles1)] self.addCmap( fig, cmap, cmap_handles, comp_values, self.comp_info, fs, prettify, zscale=cscale) else: leg_handles = [x[0] for x in handles0] self.addLegend(fig, axes, leg_handles, labels, fs) return fig diff --git a/PySONIC/plt/pltutils.py b/PySONIC/plt/pltutils.py index 511aa31..f5642b9 100644 --- a/PySONIC/plt/pltutils.py +++ b/PySONIC/plt/pltutils.py @@ -1,408 +1,408 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-08-21 14:33:36 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:52:19 +# @Last Modified time: 2020-02-03 19:51:48 ''' Useful functions to generate plots. ''' import re import numpy as np import pandas as pd from scipy.signal import peak_widths import matplotlib from matplotlib.patches import Rectangle from matplotlib import cm, colors import matplotlib.pyplot as plt from ..core import getModel from ..utils import logger, isIterable, loadData, rescale, swapFirstLetterCase from ..constants import SPIKE_MIN_DT, SPIKE_MIN_QAMP, SPIKE_MIN_QPROM # Matplotlib parameters matplotlib.rcParams['pdf.fonttype'] = 42 matplotlib.rcParams['ps.fonttype'] = 42 matplotlib.rcParams['font.family'] = 'arial' def cm2inch(*tupl): inch = 2.54 if isinstance(tupl[0], tuple): return tuple(i / inch for i in tupl[0]) else: return tuple(i / inch for i in tupl) def extractPltVar(model, pltvar, df, meta=None, nsamples=0, name=''): if 'func' in pltvar: s = pltvar['func'] if not s.startswith('meta'): s = f'model.{s}' try: var = eval(s) except AttributeError: var = eval(s.replace('model', 'model.pneuron')) elif 'key' in pltvar: var = df[pltvar['key']] elif 'constant' in pltvar: var = eval(pltvar['constant']) * np.ones(nsamples) else: var = df[name] if isinstance(var, pd.Series): var = var.values var = var.copy() if var.size == nsamples - 1: var = np.insert(var, 0, var[0]) var *= pltvar.get('factor', 1) return var def setGrid(n, ncolmax=3): ''' Determine number of rows and columns in figure grid, based on number of variables to plot. ''' if n <= ncolmax: return (1, n) else: return ((n - 1) // ncolmax + 1, ncolmax) def setNormalizer(cmap, bounds, scale='lin'): norm = { 'lin': colors.Normalize, 'log': colors.LogNorm }[scale](*bounds) sm = cm.ScalarMappable(norm=norm, cmap=cmap) sm._A = [] return norm, sm class GenericPlot: def __init__(self, filepaths): ''' Constructor. :param filepaths: list of full paths to output data files to be compared ''' if not isIterable(filepaths): filepaths = [filepaths] self.filepaths = filepaths def __call__(self, *args, **kwargs): return self.render(*args, **kwargs) def figtitle(self, model, meta): return model.desc(meta) @staticmethod def wraptitle(ax, title, maxwidth=120, sep=':', fs=10, y=1.0): if len(title) > maxwidth: title = l = '\n'.join(title.split(sep)) y = 0.94 h = ax.set_title(title, fontsize=fs) h.set_y(y) @staticmethod def getData(entry, frequency=1, trange=None): if entry is None: raise ValueError('non-existing data') if isinstance(entry, str): data, meta = loadData(entry, frequency) else: data, meta = entry data = data.iloc[::frequency] if trange is not None: tmin, tmax = trange data = data.loc[(data['t'] >= tmin) & (data['t'] <= tmax)] return data, meta def render(self, *args, **kwargs): return NotImplementedError @staticmethod def getSimType(fname): ''' Get sim type from filename. ''' mo = re.search('(^[A-Z]*)_(.*).pkl', fname) if not mo: raise ValueError(f'Could not find sim-key in filename: "{fname}"') return mo.group(1) @staticmethod def getModel(*args, **kwargs): return getModel(*args, **kwargs) @staticmethod def getTimePltVar(tscale): ''' Return time plot variable for a given temporal scale. ''' return { 'desc': 'time', 'label': 'time', 'unit': tscale, 'factor': {'ms': 1e3, 'us': 1e6}[tscale], 'onset': {'ms': 1e-3, 'us': 1e-6}[tscale] } @staticmethod def createBackBone(*args, **kwargs): return NotImplementedError @staticmethod def prettify(ax, xticks=None, yticks=None, xfmt='{:.0f}', yfmt='{:+.0f}'): try: ticks = ax.get_ticks() ticks = (min(ticks), max(ticks)) ax.set_ticks(ticks) ax.set_ticklabels([xfmt.format(x) for x in ticks]) except AttributeError: if xticks is None: xticks = ax.get_xticks() xticks = (min(xticks), max(xticks)) if yticks is None: yticks = ax.get_yticks() yticks = (min(yticks), max(yticks)) ax.set_xticks(xticks) ax.set_yticks(yticks) if xfmt is not None: ax.set_xticklabels([xfmt.format(x) for x in xticks]) if yfmt is not None: ax.set_yticklabels([yfmt.format(y) for y in yticks]) @staticmethod def addInset(fig, ax, inset): ''' Create inset axis. ''' inset_ax = fig.add_axes(ax.get_position()) inset_ax.set_zorder(1) inset_ax.set_xlim(inset['xlims'][0], inset['xlims'][1]) inset_ax.set_ylim(inset['ylims'][0], inset['ylims'][1]) inset_ax.set_xticks([]) inset_ax.set_yticks([]) inset_ax.add_patch(Rectangle((inset['xlims'][0], inset['ylims'][0]), inset['xlims'][1] - inset['xlims'][0], inset['ylims'][1] - inset['ylims'][0], color='w')) return inset_ax @staticmethod def materializeInset(ax, inset_ax, inset): ''' Materialize inset with zoom boox. ''' # Re-position inset axis axpos = ax.get_position() left, right, = rescale(inset['xcoords'], ax.get_xlim()[0], ax.get_xlim()[1], axpos.x0, axpos.x0 + axpos.width) bottom, top, = rescale(inset['ycoords'], ax.get_ylim()[0], ax.get_ylim()[1], axpos.y0, axpos.y0 + axpos.height) inset_ax.set_position([left, bottom, right - left, top - bottom]) for i in inset_ax.spines.values(): i.set_linewidth(2) # Materialize inset target region with contour frame ax.plot(inset['xlims'], [inset['ylims'][0]] * 2, linestyle='-', color='k') ax.plot(inset['xlims'], [inset['ylims'][1]] * 2, linestyle='-', color='k') ax.plot([inset['xlims'][0]] * 2, inset['ylims'], linestyle='-', color='k') ax.plot([inset['xlims'][1]] * 2, inset['ylims'], linestyle='-', color='k') # Link target and inset with dashed lines if possible if inset['xcoords'][1] < inset['xlims'][0]: ax.plot([inset['xcoords'][1], inset['xlims'][0]], [inset['ycoords'][0], inset['ylims'][0]], linestyle='--', color='k') ax.plot([inset['xcoords'][1], inset['xlims'][0]], [inset['ycoords'][1], inset['ylims'][1]], linestyle='--', color='k') elif inset['xcoords'][0] > inset['xlims'][1]: ax.plot([inset['xcoords'][0], inset['xlims'][1]], [inset['ycoords'][0], inset['ylims'][0]], linestyle='--', color='k') ax.plot([inset['xcoords'][0], inset['xlims'][1]], [inset['ycoords'][1], inset['ylims'][1]], linestyle='--', color='k') else: logger.warning('Inset x-coordinates intersect with those of target region') def postProcess(self, *args, **kwargs): return NotImplementedError @staticmethod def removeSpines(ax): for item in ['top', 'right']: ax.spines[item].set_visible(False) @staticmethod def setXTicks(ax, xticks=None): if xticks is not None: ax.set_xticks(xticks) @staticmethod def setYTicks(ax, yticks=None): if yticks is not None: ax.set_yticks(yticks) @staticmethod def setTickLabelsFontSize(ax, fs): for tick in ax.xaxis.get_major_ticks() + ax.yaxis.get_major_ticks(): tick.label.set_fontsize(fs) @staticmethod def setXLabel(ax, xplt, fs): ax.set_xlabel('$\\rm {}\ ({})$'.format(xplt["label"], xplt["unit"]), fontsize=fs) @staticmethod def setYLabel(ax, yplt, fs): ax.set_ylabel('$\\rm {}\ ({})$'.format(yplt["label"], yplt.get("unit", "")), fontsize=fs) @classmethod def addCmap(cls, fig, cmap, handles, comp_values, comp_info, fs, prettify, zscale='lin'): # Create colormap and normalizer try: mymap = plt.get_cmap(cmap) except ValueError: mymap = plt.get_cmap(swapFirstLetterCase(cmap)) norm, sm = setNormalizer(mymap, (comp_values.min(), comp_values.max()), zscale) # Adjust line colors for lh, z in zip(handles, comp_values): if isIterable(lh): for item in lh: item.set_color(sm.to_rgba(z)) else: lh.set_color(sm.to_rgba(z)) # Add colorbar fig.subplots_adjust(left=0.1, right=0.8, bottom=0.15, top=0.95, hspace=0.5) cbarax = fig.add_axes([0.85, 0.15, 0.03, 0.8]) cbar = fig.colorbar(sm, cax=cbarax, orientation='vertical') desc_str = comp_info["desc"].replace(" ", "\ ") cbarax.set_ylabel('$\\rm {}\ ({})$'.format(desc_str, comp_info["unit"]), fontsize=fs) if prettify: cls.prettify(cbar) for item in cbarax.get_yticklabels(): item.set_fontsize(fs) class ComparativePlot(GenericPlot): def __init__(self, filepaths, varname): ''' Constructor. :param filepaths: list of full paths to output data files to be compared :param varname: name of variable to extract and compare ''' super().__init__(filepaths) self.varname = varname self.comp_ref_key = None self.meta_ref = None self.comp_info = None self.is_unique_comp = False def checkColors(self, colors): if colors is None: colors = [f'C{j}' for j in range(len(self.filepaths))] return colors def checkLines(self, lines): if lines is None: lines = ['-'] * len(self.filepaths) return lines def checkLabels(self, labels): if labels is not None: nlabels, nfiles = len(labels), len(self.filepaths) if nlabels != nfiles: raise ValueError( f'Invalid labels ({nlabels}): not matching number of compared files ({nfiles})') if not all(isinstance(x, str) for x in labels): raise TypeError('Invalid labels: must be string typed') def checkSimType(self, meta): ''' Check consistency of sim types across files. ''' if meta['simkey'] != self.meta_ref['simkey']: raise ValueError('Invalid comparison: different simulation types') def checkCompValues(self, meta, comp_values): ''' Check consistency of differing values across files. ''' differing = {k: meta[k] != self.meta_ref[k] for k in meta.keys()} if sum(differing.values()) > 1: logger.warning('More than one differing inputs') self.comp_ref_key = None return [] zkey = (list(differing.keys())[list(differing.values()).index(True)]) if self.comp_ref_key is None: self.comp_ref_key = zkey self.is_unique_comp = True comp_values.append(self.meta_ref[self.comp_ref_key]) comp_values.append(meta[self.comp_ref_key]) else: if zkey != self.comp_ref_key: logger.warning('inconsistent differing inputs') self.comp_ref_key = None return [] else: comp_values.append(meta[self.comp_ref_key]) return comp_values def checkConsistency(self, meta, comp_values): ''' Check consistency of sim types and check differing inputs. ''' if self.meta_ref is None: self.meta_ref = meta else: self.checkSimType(meta) comp_values = self.checkCompValues(meta, comp_values) if self.comp_ref_key is None: self.is_unique_comp = False return comp_values def getCompLabels(self, comp_values): if self.comp_info is not None: comp_values = np.array(comp_values) * self.comp_info.get('factor', 1) - comp_labels = ['$\\rm{} = {x}\ {}$'.format(self.comp_info["label"], self.comp_info["unit"]) + comp_labels = ['$\\rm{} = {}\ {}$'.format(self.comp_info["label"], x, self.comp_info["unit"]) for x in comp_values] else: comp_labels = comp_values return comp_values, comp_labels def chooseLabels(self, labels, comp_labels, full_labels): if labels is not None: return labels else: if self.is_unique_comp: return comp_labels else: return full_labels @staticmethod def getCommonLabel(lbls, seps='_'): ''' Get a common label from a list of labels, by removing parts that differ across them. ''' # Split every label according to list of separator characters, and save splitters as well splt_lbls = [re.split(f'([{seps}])', x) for x in lbls] pieces = [x[::2] for x in splt_lbls] splitters = [x[1::2] for x in splt_lbls] ncomps = len(pieces[0]) # Assert that splitters are equivalent across all labels, and reduce them to a single array assert (x == x[0] for x in splitters), 'Inconsistent splitters' splitters = np.array(splitters[0]) # Transform pieces into 2D matrix, and evaluate equality of every piece across labels pieces = np.array(pieces).T all_identical = [np.all(x == x[0]) for x in pieces] if np.sum(all_identical) < ncomps - 1: logger.warning('More than one differing inputs') return '' # Discard differing pieces and remove associated splitters pieces = pieces[all_identical, 0] splitters = splitters[all_identical[:-1]] # Remove last splitter if the last pieces were discarded if splitters.size == pieces.size: splitters = splitters[:-1] # Join common pieces and associated splitters into a single label common_lbl = '' for p, s in zip(pieces, splitters): common_lbl += f'{p}{s}' common_lbl += pieces[-1] return common_lbl diff --git a/PySONIC/plt/spikes.py b/PySONIC/plt/spikes.py index e5e28bb..c5c5e33 100644 --- a/PySONIC/plt/spikes.py +++ b/PySONIC/plt/spikes.py @@ -1,192 +1,192 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-10-01 20:40:28 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:49:35 +# @Last Modified time: 2020-02-03 20:09:06 import numpy as np import matplotlib.pyplot as plt from ..core import getModel from ..utils import * from ..constants import * from .pltutils import * from ..postpro import detectSpikes, convertPeaksProperties class SpikesDiagram(ComparativePlot): phaseplotvars = { 'Vm': { 'label': 'V_m\ (mV)', 'dlabel': 'dV/dt\ (V/s)', 'factor': 1e0, 'lim': (-80.0, 50.0), 'dfactor': 1e-3, 'dlim': (-300, 700), 'thr_amp': SPIKE_MIN_VAMP, 'thr_prom': SPIKE_MIN_VPROM }, 'Qm': { 'label': 'Q_m\ (nC/cm^2)', 'dlabel': 'I\ (A/m^2)', 'factor': 1e5, 'lim': (-80.0, 50.0), 'dfactor': 1e0, 'dlim': (-2, 5), 'thr_amp': SPIKE_MIN_QAMP, 'thr_prom': SPIKE_MIN_QPROM } } @classmethod def createBackBone(cls, pltvar, tbounds, fs, prettify): # Create figure fig, axes = plt.subplots(1, 2, figsize=(8, 4)) # 1st axis: variable as function of time ax = axes[0] ax.set_xlabel('$\\rm time\ (ms)$', fontsize=fs) ax.set_ylabel('$\\rm {}$'.format(pltvar["label"]), fontsize=fs) ax.set_xlim(tbounds) ax.set_ylim(pltvar['lim']) # 2nd axis: phase plot (derivative of variable vs variable) ax = axes[1] ax.set_xlabel('$\\rm {}$'.format(pltvar["label"]), fontsize=fs) ax.set_ylabel('$\\rm {}$'.format(pltvar["dlabel"]), fontsize=fs) ax.set_xlim(pltvar['lim']) ax.set_ylim(pltvar['dlim']) ax.plot([0, 0], [pltvar['dlim'][0], pltvar['dlim'][1]], '--', color='k', linewidth=1) ax.plot([pltvar['lim'][0], pltvar['lim'][1]], [0, 0], '--', color='k', linewidth=1) if prettify: cls.prettify(axes[0], xticks=tbounds, yticks=pltvar['lim']) cls.prettify(axes[1], xticks=pltvar['lim'], yticks=pltvar['dlim']) for ax in axes: cls.removeSpines(ax) cls.setTickLabelsFontSize(ax, fs) return fig, axes def checkInputs(self, labels): self.checkLabels(labels) @staticmethod def extractSpikesData(t, y, tbounds, rel_tbounds, tspikes): spikes_tvec, spikes_yvec, spikes_dydtvec = [], [], [] for j, (tspike, tbound) in enumerate(zip(tspikes, tbounds)): left_bound = max(tbound[0], rel_tbounds[0] + tspike) right_bound = min(tbound[1], rel_tbounds[1] + tspike) inds = np.where((t > left_bound) & (t < right_bound))[0] spikes_tvec.append(t[inds] - tspike) spikes_yvec.append(y[inds]) dinds = np.hstack(([inds[0] - 1], inds, [inds[-1] + 1])) dydt = np.diff(y[dinds]) / np.diff(t[dinds]) spikes_dydtvec.append((dydt[:-1] + dydt[1:]) / 2) # average of the two return spikes_tvec, spikes_yvec, spikes_dydtvec def addLegend(self, fig, axes, handles, labels, fs): fig.subplots_adjust(top=0.8) if len(self.filepaths) > 1: axes[0].legend(handles, labels, fontsize=fs, frameon=False, loc='upper center', bbox_to_anchor=(1.0, 1.35)) else: fig.suptitle(labels[0], fontsize=fs) def render(self, no_offset=False, no_first=False, labels=None, colors=None, fs=10, lw=2, trange=None, rel_tbounds=None, prettify=False, cmap=None, cscale='lin'): self.checkInputs(labels) if rel_tbounds is None: rel_tbounds = np.array((-1.5e-3, 1.5e-3)) # Check pltvar if self.varname not in self.phaseplotvars: pltvars_str = ', '.join([f'"{p}"' for p in self.phaseplotvars.keys()]) raise KeyError( f'Unknown plot variable: "{self.varname}". Possible plot variables are: {pltvars_str}') pltvar = self.phaseplotvars[self.varname] fig, axes = self.createBackBone(pltvar, rel_tbounds * 1e3, fs, prettify) # Loop through data files comp_values, full_labels = [], [] handles0, handles1 = [], [] for i, filepath in enumerate(self.filepaths): # Load data data, meta = self.getData(filepath, trange=trange) meta.pop('tcomp') # Extract model model = getModel(meta) full_labels.append(self.figtitle(model, meta)) # Check consistency of sim types and check differing inputs comp_values = self.checkConsistency(meta, comp_values) # Extract time and y-variable t = data['t'].values y = data[self.varname].values # Detect spikes in signal ispikes, properties = detectSpikes( data, key=self.varname, mph=pltvar['thr_amp'], mpp=pltvar['thr_prom']) nspikes = ispikes.size tspikes = t[ispikes] yspikes = y[ispikes] properties = convertPeaksProperties(t, properties) tbounds = np.array(list(zip(properties['left_bases'], properties['right_bases']))) if nspikes == 0: logger.warning('No spikes detected') else: # Store spikes in dedicated lists spikes_tvec, spikes_yvec, spikes_dydtvec = self.extractSpikesData( t, y, tbounds, rel_tbounds, tspikes) # Plot spikes temporal profiles and phase-plane diagrams lh0, lh1 = [], [] for j in range(nspikes): if colors is None: icolor = i if len(self.filepaths) > 1 else j % 10 color = f'C{icolor}' else: color = colors[i] lh0.append(axes[0].plot( spikes_tvec[j] * 1e3, spikes_yvec[j] * pltvar['factor'], linewidth=lw, c=color)[0]) lh1.append(axes[1].plot( spikes_yvec[j] * pltvar['factor'], spikes_dydtvec[j] * pltvar['dfactor'], linewidth=lw, c=color)[0]) handles0.append(lh0) handles1.append(lh1) # Determine labels if self.comp_ref_key is not None: - self.comp_info = model.inputs.get(self.comp_ref_key, None) + self.comp_info = model.inputs().get(self.comp_ref_key, None) comp_values, comp_labels = self.getCompLabels(comp_values) labels = self.chooseLabels(labels, comp_labels, full_labels) # Post-process figure fig.tight_layout() # Add labels or colorbar legend if cmap is not None: if not self.is_unique_comp: raise ValueError('Colormap mode unavailable for multiple differing parameters') if self.comp_info is None: raise ValueError('Colormap mode unavailable for qualitative comparisons') cmap_handles = [h0 + h1 for h0, h1 in zip(handles0, handles1)] self.addCmap( fig, cmap, cmap_handles, comp_values, self.comp_info, fs, prettify, zscale=cscale) else: leg_handles = [x[0] for x in handles0] self.addLegend(fig, axes, leg_handles, labels, fs) return fig diff --git a/PySONIC/plt/timeseries.py b/PySONIC/plt/timeseries.py index 1fcc703..293da71 100644 --- a/PySONIC/plt/timeseries.py +++ b/PySONIC/plt/timeseries.py @@ -1,492 +1,492 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-09-25 16:18:45 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 14:49:53 +# @Last Modified time: 2020-02-03 19:40:19 import numpy as np import matplotlib.pyplot as plt from ..postpro import detectSpikes, convertPeaksProperties from ..utils import * from .pltutils import * class TimeSeriesPlot(GenericPlot): ''' Generic interface to build a plot displaying temporal profiles of model simulations. ''' @classmethod def setTimeLabel(cls, ax, tplt, fs): return super().setXLabel(ax, tplt, fs) @classmethod def setYLabel(cls, ax, yplt, fs, grouplabel=None): if grouplabel is not None: yplt['label'] = grouplabel return super().setYLabel(ax, yplt, fs) def checkInputs(self, *args, **kwargs): return NotImplementedError @staticmethod def getStimStates(df): try: stimstate = df['stimstate'] except KeyError: stimstate = df['states'] return stimstate.values @classmethod def getStimPulses(cls, t, states): ''' Determine the onset and offset times of pulses from a stimulation vector. :param t: time vector (s). :param states: a vector of stimulation state (ON/OFF) at each instant in time. :return: 3-tuple with number of patches, timing of STIM-ON an STIM-OFF instants. ''' # Compute states derivatives and identify bounds indexes of pulses dstates = np.diff(states) ipulse_on = np.where(dstates > 0.0)[0] + 1 ipulse_off = np.where(dstates < 0.0)[0] + 1 if ipulse_off.size < ipulse_on.size: ioff = t.size - 1 if ipulse_off.size == 0: ipulse_off = np.array([ioff]) else: ipulse_off = np.insert(ipulse_off, ipulse_off.size - 1, ioff) # Get time instants for pulses ON and OFF tpulse_on = t[ipulse_on] tpulse_off = t[ipulse_off] return tpulse_on, tpulse_off def addLegend(self, fig, ax, handles, labels, fs, color=None, ls=None): lh = ax.legend(handles, labels, loc=1, fontsize=fs, frameon=False) if color is not None: for l in lh.get_lines(): l.set_color(color) if ls: for l in lh.get_lines(): l.set_linestyle(ls) @classmethod def materializeSpikes(cls, ax, data, tplt, yplt, color, mode, add_to_legend=False): ispikes, properties = detectSpikes(data) t = data['t'].values Qm = data['Qm'].values if ispikes is not None: yoffset = 5 ax.plot(t[ispikes] * tplt['factor'], Qm[ispikes] * yplt['factor'] + yoffset, 'v', color=color, label='spikes' if add_to_legend else None) if mode == 'details': ileft = properties['left_bases'] iright = properties['right_bases'] properties = convertPeaksProperties(t, properties) ax.plot(t[ileft] * tplt['factor'], Qm[ileft] * yplt['factor'] - 5, '<', color=color, label='left-bases' if add_to_legend else None) ax.plot(t[iright] * tplt['factor'], Qm[iright] * yplt['factor'] - 10, '>', color=color, label='right-bases' if add_to_legend else None) ax.vlines( x=t[ispikes] * tplt['factor'], ymin=(Qm[ispikes] - properties['prominences']) * yplt['factor'], ymax=Qm[ispikes] * yplt['factor'], color=color, linestyles='dashed', label='prominences' if add_to_legend else '') ax.hlines( y=properties['width_heights'] * yplt['factor'], xmin=properties['left_ips'] * tplt['factor'], xmax=properties['right_ips'] * tplt['factor'], color=color, linestyles='dotted', label='half-widths' if add_to_legend else '') return add_to_legend @staticmethod def prepareTime(t, tplt): if tplt['onset'] > 0.0: tonset = t.min() - 0.05 * np.ptp(t) t = np.insert(t, 0, tonset) return t * tplt['factor'] @staticmethod def addPatches(ax, tpatch_on, tpatch_off, tplt, color='#8A8A8A'): for i in range(tpatch_on.size): ax.axvspan(tpatch_on[i] * tplt['factor'], tpatch_off[i] * tplt['factor'], edgecolor='none', facecolor=color, alpha=0.2) @staticmethod def plotInset(inset_ax, inset, t, y, tplt, yplt, line, color, lw): inset_ax.plot(t, y, linewidth=lw, linestyle=line, color=color) return inset_ax @staticmethod def addInsetPatches(ax, inset_ax, inset, tpatch_on, tpatch_off, tplt, color): return tfactor = tplt['factor'] ybottom, ytop = ax.get_ylim() cond_on = np.logical_and(tpatch_on > (inset['xlims'][0] / tfactor), tpatch_on < (inset['xlims'][1] / tfactor)) cond_off = np.logical_and(tpatch_off > (inset['xlims'][0] / tfactor), tpatch_off < (inset['xlims'][1] / tfactor)) cond_glob = np.logical_and(tpatch_on < (inset['xlims'][0] / tfactor), tpatch_off > (inset['xlims'][1] / tfactor)) cond_onoff = np.logical_or(cond_on, cond_off) cond = np.logical_or(cond_onoff, cond_glob) npatches_inset = np.sum(cond) for i in range(npatches_inset): inset_ax.add_patch(Rectangle((tpatch_on[cond][i] * tfactor, ybottom), (tpatch_off[cond][i] - tpatch_on[cond][i]) * tfactor, ytop - ybottom, color=color, alpha=0.1)) class CompTimeSeries(ComparativePlot, TimeSeriesPlot): ''' Interface to build a comparative plot displaying profiles of a specific output variable across different model simulations. ''' def __init__(self, filepaths, varname): ''' Constructor. :param filepaths: list of full paths to output data files to be compared :param varname: name of variable to extract and compare ''' ComparativePlot.__init__(self, filepaths, varname) def checkPatches(self, patches): greypatch = False if patches == 'none': patches = [False] * len(self.filepaths) elif patches == 'all': patches = [True] * len(self.filepaths) elif patches == 'one': patches = [True] + [False] * (len(self.filepaths) - 1) greypatch = True elif isinstance(patches, list): npatches, nfiles = len(patches), len(self.filepaths) if npatches != nfiles: raise ValueError( f'Invalid patches ({npatches}): not matching number of compared files ({nfiles})') if not all(isinstance(p, bool) for p in patches): raise TypeError('Invalid patch sequence: all list items must be boolean typed') else: raise ValueError( 'Invalid patches: must be either "none", all", "one", or a boolean list') return patches, greypatch def checkInputs(self, lines, labels, colors, patches): self.checkLabels(labels) lines = self.checkLines(lines) colors = self.checkColors(colors) patches, greypatch = self.checkPatches(patches) return lines, labels, colors, patches, greypatch @staticmethod def createBackBone(figsize): fig, ax = plt.subplots(figsize=figsize) ax.set_zorder(0) return fig, ax @classmethod def postProcess(cls, ax, tplt, yplt, fs, meta, prettify): cls.removeSpines(ax) if 'bounds' in yplt: ax.set_ylim(*yplt['bounds']) cls.setTimeLabel(ax, tplt, fs) cls.setYLabel(ax, yplt, fs) if prettify: cls.prettify(ax, xticks=(0, meta['tstim'] * tplt['factor'])) cls.setTickLabelsFontSize(ax, fs) def render(self, figsize=(11, 4), fs=10, lw=2, labels=None, colors=None, lines=None, patches='one', inset=None, frequency=1, spikes='none', cmap=None, cscale='lin', trange=None, prettify=False): ''' Render plot. :param figsize: figure size (x, y) :param fs: labels fontsize :param lw: linewidth :param labels: list of labels to use in the legend :param colors: list of colors to use for each curve :param lines: list of linestyles :param patches: string indicating whether/how to mark stimulation periods with rectangular patches :param inset: string indicating whether/how to mark an inset zooming on a particular region of the graph :param frequency: frequency at which to plot samples :param spikes: string indicating how to show spikes ("none", "marks" or "details") :param cmap: color map to use for colobar-based comparison (if not None) :param cscale: color scale to use for colobar-based comparison :param trange: optional lower and upper bounds to time axis :return: figure handle ''' lines, labels, colors, patches, greypatch = self.checkInputs( lines, labels, colors, patches) fcodes = [] fig, ax = self.createBackBone(figsize) if inset is not None: inset_ax = self.addInset(fig, ax, inset) # Loop through data files handles, comp_values, full_labels = [], [], [] tmin, tmax = np.inf, -np.inf for j, filepath in enumerate(self.filepaths): # Load data try: data, meta = self.getData(filepath, frequency, trange) except ValueError as err: continue if 'tcomp' in meta: meta.pop('tcomp') # Extract model model = self.getModel(meta) fcodes.append(model.filecode(meta)) # Add label to list full_labels.append(self.figtitle(model, meta)) # Check consistency of sim types and check differing inputs comp_values = self.checkConsistency(meta, comp_values) # Extract time and stim pulses t = data['t'].values stimstate = self.getStimStates(data) tpatch_on, tpatch_off = self.getStimPulses(t, stimstate) tplt = self.getTimePltVar(model.tscale) t = self.prepareTime(t, tplt) # Extract y-variable pltvars = model.getPltVars() if self.varname not in pltvars: pltvars_str = ', '.join([f'"{p}"' for p in pltvars.keys()]) raise KeyError( f'Unknown plot variable: "{self.varname}". Possible plot variables are: {pltvars_str}') yplt = pltvars[self.varname] y = extractPltVar(model, yplt, data, meta, t.size, self.varname) # Plot time series handles.append(ax.plot(t, y, linewidth=lw, linestyle=lines[j], color=colors[j])[0]) # Optional: add spikes if self.varname == 'Qm' and spikes != 'none': self.materializeSpikes(ax, data, tplt, yplt, colors[j], spikes) # Plot optional inset if inset is not None: inset_ax = self.plotInset(inset_ax, inset, t, y, tplt, yplt, lines[j], colors[j], lw) # Add optional STIM-ON patches if patches[j]: ybottom, ytop = ax.get_ylim() color = '#8A8A8A' if greypatch else handles[j].get_color() self.addPatches(ax, tpatch_on, tpatch_off, tplt, color) if inset is not None: self.addInsetPatches(ax, inset_ax, inset, tpatch_on, tpatch_off, tplt, color) tmin, tmax = min(tmin, t.min()), max(tmax, t.max()) # Determine labels if self.comp_ref_key is not None: - self.comp_info = model.inputs.get(self.comp_ref_key, None) + self.comp_info = model.inputs().get(self.comp_ref_key, None) comp_values, comp_labels = self.getCompLabels(comp_values) labels = self.chooseLabels(labels, comp_labels, full_labels) # - split labels by space common_label = self.getCommonLabel(full_labels.copy(), seps=':@,') self.wraptitle(ax, common_label, fs=fs) # Post-process figure self.postProcess(ax, tplt, yplt, fs, meta, prettify) ax.set_xlim(tmin, tmax) fig.tight_layout() if inset is not None: self.materializeInset(ax, inset_ax, inset) # Add labels or colorbar legend if cmap is not None: if not self.is_unique_comp: raise ValueError('Colormap mode unavailable for multiple differing parameters') if self.comp_info is None: raise ValueError('Colormap mode unavailable for qualitative comparisons') self.addCmap( fig, cmap, handles, comp_values, self.comp_info, fs, prettify, zscale=cscale) else: self.addLegend(fig, ax, handles, labels, fs) # Add window title based on common pattern common_fcode = self.getCommonLabel(fcodes.copy()) fig.canvas.set_window_title(common_fcode) return fig class GroupedTimeSeries(TimeSeriesPlot): ''' Interface to build a plot displaying profiles of several output variables arranged into specific schemes. ''' def __init__(self, filepaths, pltscheme=None): ''' Constructor. :param filepaths: list of full paths to output data files to be compared :param varname: name of variable to extract and compare ''' super().__init__(filepaths) self.pltscheme = pltscheme @staticmethod def createBackBone(pltscheme): naxes = len(pltscheme) if naxes == 1: fig, ax = plt.subplots(figsize=(11, 4)) axes = [ax] else: fig, axes = plt.subplots(naxes, 1, figsize=(11, min(3 * naxes, 9))) return fig, axes @classmethod def postProcess(cls, axes, tplt, fs, meta, prettify): for ax in axes: cls.removeSpines(ax) # if prettify: # cls.prettify(ax, xticks=(0, meta['tstim'] * tplt['factor']), yfmt=None) cls.setTickLabelsFontSize(ax, fs) for ax in axes[:-1]: ax.set_xticklabels([]) cls.setTimeLabel(axes[-1], tplt, fs) def render(self, fs=10, lw=2, labels=None, colors=None, lines=None, patches='one', save=False, outputdir=None, fig_ext='png', frequency=1, spikes='none', trange=None, prettify=False): ''' Render plot. :param fs: labels fontsize :param lw: linewidth :param labels: list of labels to use in the legend :param colors: list of colors to use for each curve :param lines: list of linestyles :param patches: boolean indicating whether to mark stimulation periods with rectangular patches :param save: boolean indicating whether or not to save the figure(s) :param outputdir: path to output directory in which to save figure(s) :param fig_ext: string indcating figure extension ("png", "pdf", ...) :param frequency: frequency at which to plot samples :param spikes: string indicating how to show spikes ("none", "marks" or "details") :param trange: optional lower and upper bounds to time axis :return: figure handle(s) ''' figs = [] for filepath in self.filepaths: # Load data and extract model try: data, meta = self.getData(filepath, frequency, trange) except ValueError as err: continue model = self.getModel(meta) # Extract time and stim pulses t = data['t'].values stimstate = self.getStimStates(data) tpatch_on, tpatch_off = self.getStimPulses(t, stimstate) tplt = self.getTimePltVar(model.tscale) t = self.prepareTime(t, tplt) # Check plot scheme if provided, otherwise generate it pltvars = model.getPltVars() if self.pltscheme is not None: for key in list(sum(list(self.pltscheme.values()), [])): if key not in pltvars: raise KeyError(f'Unknown plot variable: "{key}"') pltscheme = self.pltscheme else: pltscheme = model.pltScheme # Create figure fig, axes = self.createBackBone(pltscheme) # Loop through each subgraph for ax, (grouplabel, keys) in zip(axes, pltscheme.items()): ax_legend_spikes = False # Extract variables to plot nvars = len(keys) ax_pltvars = [pltvars[k] for k in keys] if nvars == 1: ax_pltvars[0]['color'] = 'k' ax_pltvars[0]['ls'] = '-' # Set y-axis unit and bounds self.setYLabel(ax, ax_pltvars[0].copy(), fs, grouplabel=grouplabel) if 'bounds' in ax_pltvars[0]: ax_min = min([ap['bounds'][0] for ap in ax_pltvars]) ax_max = max([ap['bounds'][1] for ap in ax_pltvars]) ax.set_ylim(ax_min, ax_max) # Plot time series icolor = 0 for yplt, name in zip(ax_pltvars, pltscheme[grouplabel]): color = yplt.get('color', f'C{icolor}') y = extractPltVar(model, yplt, data, meta, t.size, name) ax.plot(t, y, yplt.get('ls', '-'), c=color, lw=lw, label='$\\rm {}$'.format(yplt["label"])) if 'color' not in yplt: icolor += 1 # Optional: add spikes if name == 'Qm' and spikes != 'none': ax_legend_spikes = self.materializeSpikes( ax, data, tplt, yplt, color, spikes, add_to_legend=True) # Add legend if nvars > 1 or 'gate' in ax_pltvars[0]['desc'] or ax_legend_spikes: ax.legend(fontsize=fs, loc=7, ncol=nvars // 4 + 1, frameon=False) # Set x-limits and add optional patches for ax in axes: ax.set_xlim(t.min(), t.max()) if patches != 'none': self.addPatches(ax, tpatch_on, tpatch_off, tplt) # Post-process figure self.postProcess(axes, tplt, fs, meta, prettify) self.wraptitle(axes[0], self.figtitle(model, meta), fs=fs) fig.tight_layout() fig.canvas.set_window_title(model.filecode(meta)) # Save figure if needed (automatic or checked) if save: filecode = model.filecode(meta) if outputdir is None: outputdir = os.path.split(filepath)[0] plt_filename = f'{outputdir}/{filecode}.{fig_ext}' plt.savefig(plt_filename) logger.info(f'Saving figure as "{plt_filename}"') plt.close() figs.append(fig) return figs if __name__ == '__main__': # example of use filepaths = OpenFilesDialog('pkl')[0] comp_plot = CompTimeSeries(filepaths, 'Qm') fig = comp_plot.render( lines=['-', '--'], labels=['60 kPa', '80 kPa'], patches='one', colors=['r', 'g'], xticks=[0, 100], yticks=[-80, +50], inset={'xcoords': [5, 40], 'ycoords': [-35, 45], 'xlims': [57.5, 60.5], 'ylims': [10, 35]} ) scheme_plot = GroupedTimeSeries(filepaths) figs = scheme_plot.render() plt.show() diff --git a/PySONIC/utils.py b/PySONIC/utils.py index 90d6698..aa5a586 100644 --- a/PySONIC/utils.py +++ b/PySONIC/utils.py @@ -1,863 +1,860 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2016-09-19 22:30:46 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-01 19:35:20 +# @Last Modified time: 2020-02-03 21:12:45 ''' Definition of generic utility functions used in other modules ''' import csv from functools import wraps import operator import time from inspect import signature import os from shutil import get_terminal_size import lockfile import math import pickle import json from tqdm import tqdm import logging import tkinter as tk from tkinter import filedialog import base64 import datetime import numpy as np from scipy.optimize import brentq from scipy import linalg import colorlog from pushbullet import Pushbullet # Package logger my_log_formatter = colorlog.ColoredFormatter( '%(log_color)s %(asctime)s %(message)s', datefmt='%d/%m/%Y %H:%M:%S:', reset=True, log_colors={ 'DEBUG': 'green', 'INFO': 'white', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'red,bg_white', }, style='%') def setHandler(logger, handler): for h in logger.handlers: logger.removeHandler(h) logger.addHandler(handler) return logger def setLogger(name, formatter): handler = colorlog.StreamHandler() handler.setFormatter(formatter) logger = colorlog.getLogger(name) logger.addHandler(handler) return logger class TqdmHandler(logging.StreamHandler): def __init__(self, formatter): logging.StreamHandler.__init__(self) self.setFormatter(formatter) def emit(self, record): msg = self.format(record) tqdm.write(msg) logger = setLogger('PySONIC', my_log_formatter) def fillLine(text, char='-', totlength=None): ''' Surround a text with repetitions of a specific character in order to fill a line to a given total length. :param text: text to be surrounded :param char: surrounding character :param totlength: target number of characters in filled text line :return: filled text line ''' if totlength is None: totlength = get_terminal_size().columns - 1 ndashes = totlength - len(text) - 2 if ndashes < 2: return text else: nside = ndashes // 2 nleft, nright = nside, nside if ndashes % 2 == 1: nright += 1 return f'{char * nleft} {text} {char * nright}' # SI units prefixes si_prefixes = { 'y': 1e-24, # yocto 'z': 1e-21, # zepto 'a': 1e-18, # atto 'f': 1e-15, # femto 'p': 1e-12, # pico 'n': 1e-9, # nano 'u': 1e-6, # micro 'm': 1e-3, # mili '': 1e0, # None 'k': 1e3, # kilo 'M': 1e6, # mega 'G': 1e9, # giga 'T': 1e12, # tera 'P': 1e15, # peta 'E': 1e18, # exa 'Z': 1e21, # zetta 'Y': 1e24, # yotta } def si_format(x, precision=0, space=' '): ''' Format a float according to the SI unit system, with the appropriate prefix letter. ''' if isinstance(x, float) or isinstance(x, int) or isinstance(x, np.float) or\ isinstance(x, np.int32) or isinstance(x, np.int64): if x == 0: factor = 1e0 prefix = '' else: sorted_si_prefixes = sorted(si_prefixes.items(), key=operator.itemgetter(1)) vals = [tmp[1] for tmp in sorted_si_prefixes] ix = np.searchsorted(vals, np.abs(x)) - 1 if np.abs(x) == vals[ix + 1]: ix += 1 factor = vals[ix] prefix = sorted_si_prefixes[ix][0] return f'{x / factor:.{precision}f}{space}{prefix}' elif isinstance(x, list) or isinstance(x, tuple): return [si_format(item, precision, space) for item in x] elif isinstance(x, np.ndarray) and x.ndim == 1: return [si_format(float(item), precision, space) for item in x] else: print(type(x)) def pow10_format(number, precision=2): ''' Format a number in power of 10 notation. ''' sci_string = f'{number:.{precision}e}' value, exponent = sci_string.split("e") value, exponent = float(value), int(exponent) val_str = f'{value} * ' if value != 1. else '' return f'{val_str}10^{{{exponent}}}' def plural(n): if n < 0: raise ValueError(f'Cannot format negative integer (n = {n})') if n == 0: return '' else: return 's' def rmse(x1, x2): ''' Compute the root mean square error between two 1D arrays ''' return np.sqrt(((x1 - x2) ** 2).mean()) def rsquared(x1, x2): ''' compute the R-squared coefficient between two 1D arrays ''' residuals = x1 - x2 ss_res = np.sum(residuals**2) ss_tot = np.sum((x1 - np.mean(x1))**2) return 1 - (ss_res / ss_tot) def Pressure2Intensity(p, rho=1075.0, c=1515.0): ''' Return the spatial peak, pulse average acoustic intensity (ISPPA) associated with the specified pressure amplitude. :param p: pressure amplitude (Pa) :param rho: medium density (kg/m3) :param c: speed of sound in medium (m/s) :return: spatial peak, pulse average acoustic intensity (W/m2) ''' return p**2 / (2 * rho * c) def Intensity2Pressure(I, rho=1075.0, c=1515.0): ''' Return the pressure amplitude associated with the specified spatial peak, pulse average acoustic intensity (ISPPA). :param I: spatial peak, pulse average acoustic intensity (W/m2) :param rho: medium density (kg/m3) :param c: speed of sound in medium (m/s) :return: pressure amplitude (Pa) ''' return np.sqrt(2 * rho * c * I) def convertPKL2JSON(): for pkl_filepath in OpenFilesDialog('pkl')[0]: logger.info(f'Processing {pkl_filepath} ...') json_filepath = f'{os.path.splitext(pkl_filepath)[0]}.json' with open(pkl_filepath, 'rb') as fpkl, open(json_filepath, 'w') as fjson: data = pickle.load(fpkl) json.dump(data, fjson, ensure_ascii=False, sort_keys=True, indent=4) logger.info('All done!') def OpenFilesDialog(filetype, dirname=''): ''' Open a FileOpenDialogBox to select one or multiple file. The default directory and file type are given. :param dirname: default directory :param filetype: default file type :return: tuple of full paths to the chosen filenames ''' root = tk.Tk() root.withdraw() filenames = filedialog.askopenfilenames( filetypes=[(filetype + " files", '.' + filetype)], initialdir=dirname ) if len(filenames) == 0: raise ValueError('no input file selected') par_dir = os.path.abspath(os.path.join(filenames[0], os.pardir)) return filenames, par_dir def selectDirDialog(title='Select directory'): ''' Open a dialog box to select a directory. :return: full path to selected directory ''' root = tk.Tk() root.withdraw() directory = filedialog.askdirectory(title=title) if directory == '': raise ValueError('no directory selected') return directory def SaveFileDialog(filename, dirname=None, ext=None): ''' Open a dialog box to save file. :param filename: filename :param dirname: initial directory :param ext: default extension :return: full path to the chosen filename ''' root = tk.Tk() root.withdraw() filename_out = filedialog.asksaveasfilename( defaultextension=ext, initialdir=dirname, initialfile=filename) if len(filename_out) == 0: raise ValueError('no output filepath selected') return filename_out def loadData(fpath, frequency=1): ''' Load dataframe and metadata dictionary from pickle file. ''' logger.info('Loading data from "%s"', os.path.basename(fpath)) with open(fpath, 'rb') as fh: frame = pickle.load(fh) df = frame['data'].iloc[::frequency] meta = frame['meta'] return df, meta def rescale(x, lb=None, ub=None, lb_new=0, ub_new=1): ''' Rescale a value to a specific interval by linear transformation. ''' if lb is None: lb = x.min() if ub is None: ub = x.max() xnorm = (x - lb) / (ub - lb) return xnorm * (ub_new - lb_new) + lb_new def expandRange(xmin, xmax, exp_factor=2): if xmin > xmax: raise ValueError('values must be provided in (min, max) order') xptp = xmax - xmin xmid = (xmin + xmax) / 2 xdev = xptp * exp_factor / 2 return (xmid - xdev, xmin + xdev) def isIterable(x): for t in [list, tuple, np.ndarray]: if isinstance(x, t): return True return False def isWithin(name, val, bounds, rel_tol=1e-9): ''' Check if a floating point number is within an interval. If the value falls outside the interval, an error is raised. If the value falls just outside the interval due to rounding errors, the associated interval bound is returned. :param val: float value :param bounds: interval bounds (float tuple) :return: original or corrected value ''' if isIterable(val): return np.array([isWithin(name, v, bounds, rel_tol) for v in val]) if val >= bounds[0] and val <= bounds[1]: return val elif val < bounds[0] and math.isclose(val, bounds[0], rel_tol=rel_tol): logger.warning('Rounding %s value (%s) to interval lower bound (%s)', name, val, bounds[0]) return bounds[0] elif val > bounds[1] and math.isclose(val, bounds[1], rel_tol=rel_tol): logger.warning('Rounding %s value (%s) to interval upper bound (%s)', name, val, bounds[1]) return bounds[1] else: raise ValueError(f'{name} value ({val}) out of [{bounds[0]}, {bounds[1]}] interval') def getDistribution(xmin, xmax, nx, scale='lin'): if scale == 'log': xmin, xmax = np.log10(xmin), np.log10(xmax) return {'lin': np.linspace, 'log': np.logspace}[scale](xmin, xmax, nx) def getDistFromList(xlist): if not isinstance(xlist, list): raise TypeError('Input must be a list') if len(xlist) != 4: raise ValueError('List must contain exactly 4 arguments ([type, min, max, n])') scale = xlist[0] if scale not in ('log', 'lin'): raise ValueError('Unknown distribution type (must be "lin" or "log")') xmin, xmax = [float(x) for x in xlist[1:-1]] if xmin >= xmax: raise ValueError('Specified minimum higher or equal than specified maximum') nx = int(xlist[-1]) if nx < 2: raise ValueError('Specified number must be at least 2') return getDistribution(xmin, xmax, nx, scale=scale) def getIndex(container, value): ''' Return the index of a float / string value in a list / array :param container: list / 1D-array of elements :param value: value to search for :return: index of value (if found) ''' if isinstance(value, float): container = np.array(container) imatches = np.where(np.isclose(container, value, rtol=1e-9, atol=1e-16))[0] if len(imatches) == 0: raise ValueError(f'{value} not found in {container}') return imatches[0] elif isinstance(value, str): return container.index(value) def funcSig(func, args, kwargs): args_repr = [repr(a) for a in args] kwargs_repr = [f"{k}={v!r}" for k, v in kwargs.items()] return f'{func.__name__}({", ".join(args_repr + kwargs_repr)})' def debug(func): ''' Print the function signature and return value. ''' @wraps(func) def wrapper_debug(*args, **kwargs): print(f'Calling {funcSig(func, args, kwargs)}') value = func(*args, **kwargs) print(f"{func.__name__!r} returned {value!r}") return value return wrapper_debug def timer(func): ''' Monitor and return the runtime of the decorated function. ''' @wraps(func) def wrapper(*args, **kwargs): start_time = time.perf_counter() value = func(*args, **kwargs) end_time = time.perf_counter() run_time = end_time - start_time return value, run_time return wrapper def alignWithFuncDef(func, args, kwargs): ''' Align a set of provided positional and keyword arguments with the arguments signature in a specific function definition. :param func: function object :param args: list of provided positional arguments :param kwargs: dictionary of provided keyword arguments :return: 2-tuple with the modified arguments and ''' # Get positional and keyword arguments from function signature sig_params = {k: v for k, v in signature(func).parameters.items()} sig_args = list(filter(lambda x: x.default == x.empty, sig_params.values())) sig_kwargs = {k: v.default for k, v in sig_params.items() if v.default != v.empty} sig_nargs = len(sig_args) kwarg_keys = list(sig_kwargs.keys()) # Restrain provided positional arguments to those that are also positional in signature new_args = args[:sig_nargs] # Construct hybrid keyword arguments dictionary from: # - remaining positional arguments # - provided keyword arguments # - default keyword arguments new_kwargs = sig_kwargs for i, x in enumerate(args[sig_nargs:]): new_kwargs[kwarg_keys[i]] = x for k, v in kwargs.items(): new_kwargs[k] = v return new_args, new_kwargs def alignWithMethodDef(method, args, kwargs): args, kwargs = alignWithFuncDef(method, [None] + list(args), kwargs) return tuple(args[1:]), kwargs def logCache(fpath, delimiter='\t', out_type=float): ''' Add an extra IO memoization functionality to a function using file caching, to avoid repetitions of tedious computations with identical inputs. ''' def wrapper_with_args(func): @wraps(func) def wrapper(*args, **kwargs): # If function has history -> do not log if 'history' in kwargs: return func(*args, **kwargs) # Modify positional and keyword arguments to match function signature, if needed args, kwargs = alignWithFuncDef(func, args, kwargs) # Translate args and kwargs into string signature fsignature = funcSig(func, args, kwargs) # If entry present in log, return corresponding output if os.path.isfile(fpath): with open(fpath, 'r', newline='') as f: reader = csv.reader(f, delimiter=delimiter) for row in reader: if row[0] == fsignature: logger.debug(f'entry found in "{os.path.basename(fpath)}"') return out_type(row[1]) # Otherwise, compute output and log it into file before returning out = func(*args, **kwargs) lock = lockfile.FileLock(fpath) lock.acquire() with open(fpath, 'a', newline='') as csvfile: writer = csv.writer(csvfile, delimiter=delimiter) writer.writerow([fsignature, str(out)]) lock.release() return out return wrapper return wrapper_with_args def fileCache(root, fcode_func, ext='json'): def wrapper_with_args(func): @wraps(func) def wrapper(*args, **kwargs): # Get load and dump functions from file extension try: load_func = { 'json': json.load, 'pkl': pickle.load, 'csv': lambda f: np.loadtxt(f, delimiter=',') }[ext] dump_func = { 'json': json.dump, 'pkl': pickle.dump, 'csv': lambda x, f: np.savetxt(f, x, delimiter=',') }[ext] except KeyError: raise ValueError('Unknown file extension') # Get read and write mode (text or binary) from file extension mode = 'b' if ext == 'pkl' else '' # Get file path from root and function arguments, using fcode function if callable(fcode_func): fcode = fcode_func(*args) else: fcode = fcode_func fpath = os.path.join(os.path.abspath(root), f'{fcode}.{ext}') # If file exists, load output from it if os.path.isfile(fpath): logger.info(f'loading data from "{fpath}"') with open(fpath, 'r' + mode) as f: out = load_func(f) # Otherwise, execute function and create the file to dump the output else: logger.warning(f'reference data file not found: "{fpath}"') out = func(*args, **kwargs) logger.info(f'dumping data in "{fpath}"') lock = lockfile.FileLock(fpath) lock.acquire() with open(fpath, 'w' + mode) as f: dump_func(out, f) lock.release() return out return wrapper return wrapper_with_args def derivative(f, x, eps, method='central'): ''' Compute the difference formula for f'(x) with perturbation size eps. :param dfunc: derivatives function, taking an array of states and returning an array of derivatives :param x: states vector :param method: difference formula: 'forward', 'backward' or 'central' :param eps: perturbation vector (same size as states vector) :return: numerical approximation of the derivative around the fixed point ''' if isIterable(x): if not isIterable(eps) or len(eps) != len(x): raise ValueError('eps must be the same size as x') elif np.sum(eps != 0.) != 1: raise ValueError('eps must be zero-valued across all but one dimensions') eps_val = np.sum(eps) else: eps_val = eps if method == 'central': df = (f(x + eps) - f(x - eps)) / 2 elif method == 'forward': df = f(x + eps) - f(x) elif method == 'backward': df = f(x) - f(x - eps) else: raise ValueError("Method must be 'central', 'forward' or 'backward'.") return df / eps_val def jacobian(dfunc, x, rel_eps=None, abs_eps=None, method='central'): ''' Evaluate the Jacobian maatrix of a (time-invariant) system, given a states vector and derivatives function. :param dfunc: derivatives function, taking an array of n states and returning an array of n derivatives :param x: n-states vector :return: n-by-n square Jacobian matrix ''' if sum(e is not None for e in [abs_eps, rel_eps]) != 1: raise ValueError('one (and only one) of "rel_eps" or "abs_eps" parameters must be provided') # Determine vector size x = np.asarray(x) n = x.size # Initialize Jacobian matrix J = np.empty((n, n)) # Create epsilon vector if rel_eps is not None: mode = 'relative' eps_vec = rel_eps else: mode = 'absolute' eps_vec = abs_eps if not isIterable(eps_vec): eps_vec = np.array([eps_vec] * n) if mode == 'relative': eps = x * eps_vec else: eps = eps_vec # Perturb each state by epsilon on both sides, re-evaluate derivatives # and assemble Jacobian matrix ei = np.zeros(n) for i in range(n): ei[i] = 1 J[:, i] = derivative(dfunc, x, eps * ei, method=method) ei[i] = 0 return J def classifyFixedPoint(x, dfunc): ''' Characterize the stability of a fixed point by numerically evaluating its Jacobian matrix and evaluating the sign of the real part of its associated eigenvalues. :param x: n-states vector :param dfunc: derivatives function, taking an array of n states and returning an array of n derivatives ''' # Compute Jacobian numerically # print(f'x = {x}, dfunx(x) = {dfunc(x)}') eps_machine = np.sqrt(np.finfo(float).eps) J = jacobian(dfunc, x, rel_eps=eps_machine, method='forward') # Compute eigenvalues and eigenvectors eigvals, eigvecs = linalg.eig(J) logger.debug(f"eigenvalues = {[f'({x.real:.2e} + {x.imag:.2e}j)' for x in eigvals]}") # Determine fixed point stability based on eigenvalues is_neg_eigvals = eigvals.real < 0 if is_neg_eigvals.all(): # all real parts negative -> stable key = 'stable' elif is_neg_eigvals.any(): # both posivie and negative real parts -> saddle key = 'saddle' else: # all real parts positive -> unstable key = 'unstable' return eigvals, key def findModifiedEq(x0, dfunc, *args): ''' Find an equilibrium variable in a modified system by searching for its derivative root within an interval around its original equilibrium. :param x0: equilibrium value in original system. :param func: derivative function, taking the variable as first parameter. :param *args: remaining arguments needed for the derivative function. :return: variable equilibrium value in modified system. ''' is_iterable = [isIterable(arg) for arg in args] if any(is_iterable): if not all(is_iterable): raise ValueError('mix of iterables and non-iterables') lengths = [len(arg) for arg in args] if not all(n == lengths[0] for n in lengths): raise ValueError(f'inputs are not of the same size: {lengths}') n = lengths[0] res = [] for i in range(n): x = [arg[i] for arg in args] res.append(findModifiedEq(x0, dfunc, *x)) return np.array(res) else: return brentq(lambda x: dfunc(x, *args), x0 * 1e-4, x0 * 1e3, xtol=1e-16) def swapFirstLetterCase(s): if s[0].islower(): return s.capitalize() else: return s[0].lower() + s[1:] def getPow10(x, direction='up'): ''' Get the power of 10 that is closest to a number, in either direction("down" or "up"). ''' round_method = {'up': np.ceil, 'down': np.floor}[direction] return np.power(10, round_method(np.log10(x))) def rotAroundPoint2D(x, theta, p): ''' Rotate a 2D vector around a center point by a given angle. :param x: 2D coordinates vector :param theta: rotation angle (in rad) :param p: 2D center point coordinates :return: 2D rotated coordinates vector ''' n1, n2 = x.shape if n1 != 2: if n2 == 2: x = x.T else: raise ValueError('x should be a 2-by-n vector') # Rotation matrix R = np.array([ [np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)], ]) # Broadcast center point to input vector ptile = np.tile(p, (x.shape[1], 1)).T # Subtract, rotate and add return R.dot(x - ptile) + ptile def getKey(keyfile='pushbullet.key'): dir_path = os.path.dirname(os.path.realpath(__file__)) package_root = os.path.abspath(os.path.join(dir_path, os.pardir)) fpath = os.path.join(package_root, keyfile) if not os.path.isfile(fpath): raise FileNotFoundError('pushbullet API key file not found') with open(fpath) as f: encoded_key = f.readlines()[0] return base64.b64decode(str.encode(encoded_key)).decode() def sendPushNotification(msg): try: key = getKey() pb = Pushbullet(key) dt = datetime.datetime.now() s = dt.strftime('%Y-%m-%d %H:%M:%S') push = pb.push_note('Code Messenger', f'{s}\n{msg}') except FileNotFoundError as e: logger.error(f'Could not send push notification: "{msg}"') def alert(func): ''' Run a function, and send a push notification upon completion, or if an error is raised during its execution. ''' @wraps(func) def wrapper(*args, **kwargs): try: out = func(*args, **kwargs) sendPushNotification(f'completed "{func.__name__}" execution successfully') return out except BaseException as e: sendPushNotification(f'error during "{func.__name__}" execution: {e}') raise e return wrapper def sunflower(n, radius=1, alpha=1): ''' Generate a population of uniformly distributed 2D data points in a unit circle. :param n: number of data points :param alpha: coefficient determining evenness of the boundary :return: 2D matrix of Cartesian (x, y) positions ''' nbounds = np.round(alpha * np.sqrt(n)) # number of boundary points phi = (np.sqrt(5) + 1) / 2 # golden ratio k = np.arange(1, n + 1) # index vector theta = 2 * np.pi * k / phi**2 # angle vector r = np.sqrt((k - 1) / (n - nbounds - 1)) # radius vector r[r > 1] = 1 x = r * np.cos(theta) y = r * np.sin(theta) return radius * np.vstack((x, y)) def filecode(model, *args): ''' Generate file code given a specific combination of model input parameters. ''' # If meta dictionary was passed, generate inputs list from it if len(args) == 1 and isinstance(args[0], dict): meta = args[0] meta_keys = list(signature(model.meta).parameters.keys()) args = [meta[k] for k in meta_keys] # Otherwise, transform args tuple into list else: args = list(args) # If any argument is an iterable -> transform it to a continous string for i in range(len(args)): if isIterable(args[i]): args[i] = ''.join([str(x) for x in args[i]]) # Create file code by joining string-encoded inputs with underscores codes = model.filecodes(*args).values() return '_'.join([x for x in codes if x is not None]) def simAndSave(model, *args, **kwargs): ''' Simulate the model and save the results in a specific output directory. :param *args: list of arguments provided to the simulation function :param **kwargs: optional arguments dictionary :return: output filepath ''' # Extract output directory and overwrite boolean from keyword arguments. outputdir = kwargs.pop('outputdir', '.') overwrite = kwargs.pop('overwrite', True) # Set data and meta to None data, meta = None, None - # If titration var exists - if model.titration_var is not None: - func_args = list(signature(model.simulate).parameters.keys()) - ivar = func_args.index(model.titration_var) + # Extract drive object from args + drive, *other_args = args - # If corresponding function argument is set to None -> titration case - if args[ivar] is None: - # Call simulate to perform titration - out = model.simulate(*args) + # If drive is titratable and not fully resolved + if not drive.is_resolved: + # Call simulate to perform titration + out = model.simulate(*args) - # If titration yields nothing -> no file produced -> return None - if out is None: - logger.warning('returning None') - return None + # If titration yields nothing -> no file produced -> return None + if out is None: + logger.warning('returning None') + return None - # Store data and meta - data, meta = out + # Store data and meta + data, meta = out - # Add threshold amp to args - args = list(args) - args[ivar] = meta[model.titration_var] + # Update args list with resovled drive + args = (meta['drive'], *other_args) # Check if a output file corresponding to sim inputs is found in the output directory # That check is performed prior to running the simulation, such that # it is not run if the file is present and overwrite is set ot false. fname = f'{model.filecode(*args)}.pkl' fpath = os.path.join(outputdir, fname) existing_file_msg = f'File "{fname}" already present in directory "{outputdir}"' existing_file = os.path.isfile(fpath) # If file exists and overwrite is set ot false -> return if existing_file and not overwrite: logger.warning(f'{existing_file_msg} -> preserving') return fpath # Run simulation if not already done (for titration cases) if data is None: data, meta = model.simulate(*args) # Raise warning if an existing file is overwritten if existing_file: logger.warning(f'{existing_file_msg} -> overwriting') # Save output file and return output filepath with open(fpath, 'wb') as fh: pickle.dump({'meta': meta, 'data': data}, fh) logger.debug('simulation data exported to "%s"', fpath) return fpath def moveItem(l, value, itarget): ''' Move a list item to a specific target index. :param l: list object :param value: value of the item to move :param itarget: target index :return: re-ordered list. ''' # Get absolute target index if itarget < 0: itarget += len(l) assert itarget < len(l), f'target index {itarget} exceeds list size ({len(l)})' # Get index corresponding to element and delete entry from list iref = l.index(value) new_l = l.copy() del new_l[iref] # Return re-organized list return new_l[:itarget] + [value] + new_l[itarget:] \ No newline at end of file diff --git a/README.md b/README.md index 382ecfe..bc5ebe0 100644 --- a/README.md +++ b/README.md @@ -1,211 +1,211 @@ # Description `PySONIC` is a Python implementation of the **multi-Scale Optimized Neuronal Intramembrane Cavitation (SONIC) model [1]**, a computationally efficient and interpretable model of neuronal intramembrane cavitation. It allows to simulate the responses of various neuron types to ultrasonic (and electrical) stimuli. ## Content of repository ### Models The package contains four model classes: - `Model` defines the generic interface of a model, including mandatory attributes and methods for simulating it. - `BilayerSonophore` defines the underlying **biomechanical model of intramembrane cavitation**. - `PointNeuron` defines an abstract generic interface to **conductance-based point-neuron electrical models**. It is inherited by classes defining the different neuron types with specific membrane dynamics. - `NeuronalBilayerSonophore` defines the **full electromechanical model for any given neuron type**. To do so, it inherits from `BilayerSonophore` and receives a specific `PointNeuron` object at initialization. All model classes contain a `simulate` method to simulate the underlying model's behavior for a given set of stimulation and physiological parameters. The `NeuronalBilayerSonophore.simulate` method contains an additional `method` argument defining whether to perform a detailed (`full`), coarse-grained (`sonic`) or hybrid (`hybrid`) integration of the differential system. ### Simulators Numerical integration routines are implemented outside the models, in separate `Simulator` classes: - `PeriodicSimulator` integrates a differential system periodically until a stable periodic behavior is detected. - `PWSimulator` integrates a differential system given a specific temporal stimulation pattern (pulse repetition frequency, stimulus duty cycle and post-stimulus offset), using different derivative functions for "ON" (with stimulus) and "OFF" (without stimulus) periods - `HybridSimulator` inherits from both `PeriodicSimulator`and `PWSimulator`. It integrates a differential system using a hybrid scheme inside each "ON" or "OFF" period: 1. The full ODE system is integrated for a few cycles with a dense time granularity until a periodic stabilization detection 2. The profiles of all variables over the last cycle are resampled to a far lower (i.e. sparse) sampling rate 3. A subset of the ODE system is integrated with a sparse time granularity, while the remaining variables are periodically expanded from their last cycle profile, until the end of the period or that of an predefined update interval. 4. The process is repeated from step 1 ### Neurons Several conductance-based point-neuron models are implemented that inherit from the `PointNeuron` generic interface: - `CorticalRS`: cortical regular spiking (`RS`) neuron - `CorticalFS`: cortical fast spiking (`FS`) neuron - `CorticalLTS`: cortical low-threshold spiking (`LTS`) neuron - `CorticalIB`: cortical intrinsically bursting (`IB`) neuron - `ThalamicRE`: thalamic reticular (`RE`) neuron - `ThalamoCortical`: thalamo-cortical (`TC`) neuron - `OstukaSTN`: subthalamic nucleus (`STN`) neuron - `FrankenhaeuserHuxley`: Xenopus myelinated fiber node (`FH`) ### Other modules - `batches`: a generic interface to run simulation batches with or without multiprocessing - `parsers`: command line parsing utilities - `plt`: graphing utilities - `postpro`: post-processing utilities (mostly signal features detection) - `constants`: algorithmic constants used across modules and classes - `utils`: generic utilities # Requirements - Python 3.6+ - Package dependencies (numpy, scipy, ...) are installed automatically upon installation of the package. # Installation - Open a terminal. - Activate a Python3 environment if needed, e.g. on the tnesrv5 machine: ```source /opt/apps/anaconda3/bin activate``` - Check that the appropriate version of pip is activated: ```pip --version``` - Clone the repository and install the python package: ```git clone https://c4science.ch/diffusion/4670/pysonic.git``` ```cd pysonic``` ```pip install -e .``` # Usage ## Python scripts You can easily run simulations of any implemented point-neuron model under both electrical and ultrasonic stimuli, and visualize the simulation results, in just a few lines of code: ```python import logging import matplotlib.pyplot as plt -from PySONIC.core import PulsedProtocol, NeuronalBilayerSonophore, AcousticSource +from PySONIC.core import PulsedProtocol, NeuronalBilayerSonophore, ElectricDrive, AcousticDrive from PySONIC.neurons import getPointNeuron from PySONIC.utils import logger from PySONIC.plt import GroupedTimeSeries logger.setLevel(logging.INFO) -# Stimulation parameters -a = 32e-9 # m -Fdrive = 500e3 # Hz -Adrive = 100e3 # Pa -Astim = 10. # mA/m2 -US_source = AcousticSource(Fdrive, Adrive) +# Point-neuron model and corresponding neuronal bilayer sonophore model +pneuron = getPointNeuron('RS') +a = 32e-9 # sonophore radius (m) +nbls = NeuronalBilayerSonophore(a, pneuron) + +# Electric and ultrasonic drives +ELdrive = ElectricDrive(10.) # mA/m2 +USdrive = AcousticDrive( + 500e3, # Hz + 100e3) # Pa -# Pulsing parameters +# Pulsing protocol tstim = 250e-3 # s toffset = 50e-3 # s PRF = 100. # Hz DC = 0.5 # - pp = PulsedProtocol(tstim, toffset, PRF, DC) -# Point-neuron model and corresponding neuronal intramembrane cavitation model -pneuron = getPointNeuron('RS') -nbls = NeuronalBilayerSonophore(a, pneuron) - # Run simulation upon electrical stimulation, and plot results -data, meta = pneuron.simulate(Astim, pp) +data, meta = pneuron.simulate(ELdrive, pp) fig1 = GroupedTimeSeries([(data, meta)]).render() # Run simulation upon ultrasonic stimulation, and plot results -data, meta = nbls.simulate(US_source, pp) +data, meta = nbls.simulate(USdrive, pp) fig2 = GroupedTimeSeries([(data, meta)]).render() plt.show() ``` ## From the command line ### Running simulations and batches You can easily run simulations of all 3 model types using the dedicated command line scripts. To do so, open a terminal in the `scripts` directory. - Use `run_mech.py` for simulations of the **mechanical model** upon **ultrasonic stimulation**. For instance, for a 32 nm radius bilayer sonophore sonicated at 500 kHz and 100 kPa: ```python run_mech.py -a 32 -f 500 -A 100 -p Z``` - Use `run_estim.py` for simulations of **point-neuron models** upon **intracellular electrical stimulation**. For instance, a regular-spiking (RS) neuron injected with 10 mA/m2 intracellular current for 30 ms: ```python run_estim.py -n RS -A 10 --tstim 30 -p Vm``` - Use `run_astim.py` for simulations of **point-neuron models** upon **ultrasonic stimulation**. For instance, for a coarse-grained simulation of a 32 nm radius bilayer sonophore within a regular-spiking (RS) neuron membrane, sonicated at 500 kHz and 100 kPa for 150 ms: ```python run_astim.py -n RS -a 32 -f 500 -A 100 --tstim 150 --method sonic -p Qm``` Additionally, you can run batches of simulations by specifying more than one value for any given stimulation parameter (e.g. `-A 100 200` for sonication with 100 and 200 kPa respectively). These batches can be parallelized using multiprocessing to optimize performance, with the extra argument `--mpi`. ### Saving and visualizing results By default, simulation results are neither shown, nor saved. To view results directly upon simulation completion, you can use the `-p [xxx]` option, where `[xxx]` can be `all` (to plot all resulting variables) or a given variable name (e.g. `Z` for membrane deflection, `Vm` for membrane potential, `Qm` for membrane charge density). To save simulation results in binary `.pkl` files, you can use the `-s` option. You will be prompted to choose an output directory, unless you also specify it with the `-o ` option. Output files are automatically named from model and simulation parameters to avoid ambiguity. When running simulation batches, it is highly advised to specify the `-s` option in order to save results of each simulation. You can then visualize results at a later stage. To visualize results, use the `plot_timeseries.py` script. You will be prompted to select the output files containing the simulation(s) results. By default, separate figures will be created for each simulation, showing the time profiles of all resulting variables. Here again, you can choose to show only a subset of variables using the `-p [xxx]` option. Moreover, if you select a subset of variables, you can visualize resulting profiles across simulations in comparative figures wih the `--compare` option. Several more options are available. To view them, type in: ```python -h``` # Extend the package ## Add other neuron types You can easily add other neuron types into the package, providing their ion channel populations and underlying voltage-gated dynamics equations are known. To add a new point-neuron model, follow this procedure: 1. Create a new file, and save it in the `neurons` sub-folder, with an explicit name (e.g. `my_neuron.py`). 2. Copy-paste the content of the `template.py` file (also located in the `neurons` sub-folder) into your file. 3. In your file, change the **class name** from `TemplateNeuron` to something more explicit (e.g. `MyNeuron`), and change the **neuron name** accordingly (e.g. `myneuron`). This name is a keyword used to refer to the model from outside the class. 4. Modify/add **biophysical parameters** of your model (resting parameters, reversal potentials, channel conductances, ionic concentrations, temperatures, diffusion constants, etc...) as class attributes. If some parameters are not fixed and must be computed, assign them to the class inside a `__new__` method, taking the class (`cls`) as sole attribute. 5. Specify a **dictionary of names:descriptions of your different differential states** (i.e. all the differential variables of your model, except for the membrane potential). 6. Modify/add **gating states kinetics** (`alphax` and `betax` methods) that define the voltage-dependent activation and inactivation rates of the different ion channnels gates of your model. Those methods take the membrane potential `Vm` as input and return a rate in `s-1`. Alternatively, your can use steady-state open-probabilties (`xinf`) and adaptation time constants (`taux`) methods. 7. Modify the `derStates` method that defines the **derivatives of your different state variables**. These derivatives are defined inside a dictionary, where each state key is paired to a lambda function that takes the membrane potential `Vm` and a states vector `x` as inputs, and returns the associated state derivative (in `/s`). 8. Modify the `steadyStates` method that defines the **steady-state values of your different state variables**. These steady-states are defined inside a dictionary, where each state key is paired to a lambda function that takes the membrane potential `Vm` as only input, and returns the associated steady-state value (in ``). If some steady-states depend on the values of other-steady states, you can proceed as follows: - define all independent steady-states functions in a dictionary called `lambda_dict` - add dependent steady-state functions to the dictionary, calling `lambda_dict[k](Vm)` for each state `k` whose value is required. 9. Modify/add **membrane currents** (`iXX` methods) of your model. Those methods take relevant gating states and the membrane potential `Vm` as inputs, and must return a current density in `mA/m2`. **You also need to modify the docstring accordingly, as this information is used by the package**. 10. Modify the `currents` method that defines the **membrane currents of your model**. These currents are defined inside a dictionary, where each current key is paired to a lambda function that takes the membrane potential `Vm` and a states vector `x` as inputs, and returns the associated current (in `mA/m2`). **The `derStates`, `steadyStates` and `currents` methods are automatically parsed by the package to adapt neuron models to US stimulation. Hence, make sure to**: - **keep them as class methods** - **check that all calls to functions that depend solely on `Vm` appear directly in the methods' lambda expressions and are not hidden inside nested function calls.** 11. Add the neuron class to the package, by importing it in the `__init__.py` file of the `neurons` sub-folder: ```python from .my_neuron import MyNeuron ``` 12. Verify your point-neuron model by running simulations under various electrical stimuli and comparing the output to the neurons's expected behavior. Implement required corrections if any. 13. Pre-compute lookup tables required to run coarse-grained simulations of the neuron model upon ultrasonic stimulation. To do so, go to the `scripts` directory and run the `run_lookups.py` script with the neuron's name as command line argument, e.g.: ```python run_lookups.py -n myneuron --mpi``` If possible, use the `--mpi` argument to enable multiprocessing, as lookups pre-computation greatly benefits from parallelization. That's it! You can now run simulations of your point-neuron model upon ultrasonic stimulation. # Authors Code written and maintained by Theo Lemaire (theo.lemaire@epfl.ch). # License & citation This project is licensed under the MIT License - see the LICENSE file for details. If PySONIC contributes to a project that leads to a scientific publication, please acknowledge this fact by citing [Lemaire, T., Neufeld, E., Kuster, N., and Micera, S. (2019). Understanding ultrasound neuromodulation using a computationally efficient and interpretable model of intramembrane cavitation. J. Neural Eng.](https://iopscience.iop.org/article/10.1088/1741-2552/ab1685) DOI: 10.1088/1741-2552/ab1685 # References [1] Lemaire, T., Neufeld, E., Kuster, N., and Micera, S. (2019). Understanding ultrasound neuromodulation using a computationally efficient and interpretable model of intramembrane cavitation. J. Neural Eng. diff --git a/scripts/plot_QSS.py b/scripts/plot_QSS.py index 3d3ff20..4134f2e 100644 --- a/scripts/plot_QSS.py +++ b/scripts/plot_QSS.py @@ -1,84 +1,83 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-09-28 16:13:34 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 12:44:15 +# @Last Modified time: 2020-02-03 21:38:46 ''' Phase-plane analysis of neuron behavior under quasi-steady state approximation. ''' import os import numpy as np import matplotlib.pyplot as plt from PySONIC.utils import logger from PySONIC.plt import plotQSSDerivativeVsState, plotQSSVarVsQm, plotEqChargeVsAmp, plotQSSThresholdCurve from PySONIC.parsers import AStimParser def main(): # Parse command line arguments parser = AStimParser() # parser.addCmap(default='viridis') parser.addAscale() parser.outputdir_dep_key = 'save' parser.addInputDir(dep_key='compare') parser.defaults['amp'] = np.logspace(np.log10(1), np.log10(600), 100) # kPa parser.defaults['tstim'] = 1000. # ms parser.defaults['toffset'] = 0. # ms args = parser.parse() logger.setLevel(args['loglevel']) if args['plot'] is None: args['plot'] = ['dQdt'] - a, Fdrive, tstim, toffset, PRF = [ + a, f, tstim, toffset, PRF = [ args[k][0] for k in ['radius', 'freq', 'tstim', 'toffset', 'PRF']] qss_vars = args['qss'] figs = [] # For each neuron type for i, pneuron in enumerate(args['neuron']): # If only 1 DC value if args['DC'].size == 1: DC = args['DC'][0] # If only 1 amplitude value if args['amp'].size == 1: - Adrive = args['amp'][0] # Plot QSS derivative vs state for specified variables if qss_vars is not None: for k in qss_vars: - figs.append(plotQSSDerivativeVsState(pneuron, a, Fdrive, Adrive, DC)) + figs.append(plotQSSDerivativeVsState(pneuron, a, f, args['amp'][0], DC)) else: # Plot evolution of QSS vars vs Q for different amplitudes # for pvar in args['plot']: # figs.append(plotQSSVarVsQm( - # pneuron, a, Fdrive, pvar, amps=args['amp'], DC=DC, + # pneuron, a, f, pvar, amps=args['amp'], DC=DC, # cmap=args['cmap'], zscale=args['Ascale'], mpi=args['mpi'], # loglevel=args['loglevel'])) # Plot equilibrium charge as a function of amplitude if 'dQdt' in args['plot']: figs.append(plotEqChargeVsAmp( - pneuron, a, Fdrive, amps=args['amp'], tstim=tstim, toffset=toffset, PRF=PRF, + pneuron, a, f, amps=args['amp'], tstim=tstim, toffset=toffset, PRF=PRF, DC=DC, xscale=args['Ascale'], compdir=args['inputdir'], mpi=args['mpi'], loglevel=args['loglevel'])) else: figs.append(plotQSSThresholdCurve( - pneuron, a, Fdrive, tstim=tstim, toffset=toffset, PRF=PRF, DCs=args['DC'], + pneuron, a, f, tstim=tstim, toffset=toffset, PRF=PRF, DCs=args['DC'], Ascale=args['Ascale'], comp=args['compare'], mpi=args['mpi'], loglevel=args['loglevel'])) if args['save']: for fig in figs: s = fig.canvas.get_window_title() s = s.replace('(', '- ').replace('/', '_').replace(')', '') fig.savefig(os.path.join(args['outputdir'], f'{s}.png'), transparent=True) else: plt.show() if __name__ == '__main__': main() diff --git a/scripts/plot_activation_map.py b/scripts/plot_activation_map.py index 8d41a60..a4345e0 100644 --- a/scripts/plot_activation_map.py +++ b/scripts/plot_activation_map.py @@ -1,60 +1,60 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2018-09-26 09:51:43 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2019-08-22 15:26:17 +# @Last Modified time: 2020-02-03 21:36:53 ''' Plot (duty-cycle x amplitude) US activation map of a neuron at a given frequency and PRF. ''' import numpy as np import matplotlib.pyplot as plt from PySONIC.utils import logger from PySONIC.plt import ActivationMap from PySONIC.parsers import AStimParser def main(): # Parse command line arguments parser = AStimParser() parser.defaults['amp'] = np.logspace(np.log10(10), np.log10(600), 30) # kPa parser.defaults['DC'] = np.arange(1, 101) # % parser.defaults['tstim'] = 1000. # ms parser.defaults['toffset'] = 0. # ms parser.addInputDir() parser.addThresholdCurve() parser.addInteractive() parser.addAscale() parser.addTimeRange(default=(0., 240.)) parser.addFiringRateBounds((1e0, 1e3)) parser.addFiringRateScale() parser.addPotentialBounds(default=(-150, 50)) parser.outputdir_dep_key = 'save' args = parser.parse() logger.setLevel(args['loglevel']) for pneuron in args['neuron']: for a in args['radius']: - for Fdrive in args['freq']: + for f in args['freq']: for tstim in args['tstim']: for PRF in args['PRF']: - actmap = ActivationMap(args['inputdir'], pneuron, a, Fdrive, tstim, PRF, + actmap = ActivationMap(args['inputdir'], pneuron, a, f, tstim, PRF, args['amp'], args['DC']) actmap.render( cmap=args['cmap'], Ascale=args['Ascale'], FRscale=args['FRscale'], FRbounds=args['FRbounds'], interactive=args['interactive'], Vbounds=args['Vbounds'], trange=args['trange'], thresholds=args['threshold'], ) plt.show() if __name__ == '__main__': main() diff --git a/scripts/plot_effective_variables.py b/scripts/plot_effective_variables.py index 734f9c7..2b8861c 100644 --- a/scripts/plot_effective_variables.py +++ b/scripts/plot_effective_variables.py @@ -1,56 +1,56 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-02-15 15:59:37 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 13:00:24 +# @Last Modified time: 2020-02-03 21:21:58 ''' Plot the effective variables as a function of charge density with color code. ''' import numpy as np import logging import matplotlib.pyplot as plt from PySONIC.plt import plotEffectiveVariables from PySONIC.utils import logger from PySONIC.parsers import MechSimParser # Set logging level logger.setLevel(logging.INFO) def main(): parser = MechSimParser() parser.addNeuron() parser.addNColumns() parser.addNLevels() parser.defaults['neuron'] = 'RS' parser.defaults['radius'] = np.nan parser.defaults['freq'] = np.nan parser.defaults['amp'] = np.nan args = parser.parse() for k in ['charge', 'embedding', 'Cm0', 'Qm0', 'fs', 'mpi', 'pltscheme', 'plot']: del args[k] logger.setLevel(args['loglevel']) # Restrict radius, frequency and amplitude to single values for k in ['radius', 'freq', 'amp']: if len(args[k]) > 1: logger.error(f'multiple {k} values not allowed') val = args[k][0] if np.isnan(val): args[k] = None else: args[k] = val for pneuron in args['neuron']: plotEffectiveVariables( - pneuron, a=args['radius'], Fdrive=args['freq'], Adrive=args['amp'], + pneuron, a=args['radius'], f=args['freq'], A=args['amp'], zscale=args['cscale'], cmap=args['cmap'], ncolmax=args['ncol'], nlevels=args['nlevels']) plt.show() if __name__ == '__main__': main() diff --git a/scripts/run_lookups.py b/scripts/run_lookups.py index db3112c..91aceff 100644 --- a/scripts/run_lookups.py +++ b/scripts/run_lookups.py @@ -1,178 +1,180 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-06-02 17:50:10 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-02-02 12:47:44 +# @Last Modified time: 2020-02-03 21:37:09 ''' Create lookup table for specific neuron. ''' import os import itertools import logging import numpy as np from PySONIC.utils import logger, isIterable, alert -from PySONIC.core import NeuronalBilayerSonophore, Batch, Lookup +from PySONIC.core import NeuronalBilayerSonophore, Batch, Lookup, AcousticDrive from PySONIC.parsers import MechSimParser from PySONIC.constants import DQ_LOOKUP @alert def computeAStimLookup(pneuron, aref, fref, Aref, Qref, fsref=None, mpi=False, loglevel=logging.INFO): ''' Run simulations of the mechanical system for a multiple combinations of imposed sonophore radius, US frequencies, acoustic amplitudes charge densities and (spatially-averaged) sonophore membrane coverage fractions, compute effective coefficients and store them in a dictionary of n-dimensional arrays. :param pneuron: point-neuron model :param aref: array of sonophore radii (m) :param fref: array of acoustic drive frequencies (Hz) :param Aref: array of acoustic drive amplitudes (Pa) :param Qref: array of membrane charge densities (C/m2) :param fsref: acoustic drive phase (rad) :param mpi: boolean statting wether or not to use multiprocessing :param loglevel: logging level :return: lookups dictionary ''' descs = { 'a': 'sonophore radii', 'f': 'US frequencies', 'A': 'US amplitudes', 'fs': 'sonophore membrane coverage fractions' } # Populate reference vectors dictionary refs = { 'a': aref, # nm 'f': fref, # Hz 'A': Aref, # Pa 'Q': Qref # C/m2 } # If multiple sonophore coverage values, ensure that only 1 value of # sonophore radius and US frequency are provided err_fs = 'cannot span {} for more than 1 {}' if fsref.size > 1 or fsref[0] != 1.: for x in ['a', 'f']: assert refs[x].size == 1, err_fs.format(descs['fs'], descs[x]) # Add sonophore coverage vector to references refs['fs'] = fsref # Check validity of all reference vectors for key, values in refs.items(): if not isIterable(values): raise TypeError(f'Invalid {descs[key]} (must be provided as list or numpy array)') if not all(isinstance(x, float) for x in values): raise TypeError(f'Invalid {descs[key]} (must all be float typed)') if len(values) == 0: raise ValueError(f'Empty {key} array') if key in ('a', 'f') and min(values) <= 0: raise ValueError(f'Invalid {descs[key]} (must all be strictly positive)') if key in ('A', 'fs') and min(values) < 0: raise ValueError(f'Invalid {descs[key]} (must all be positive or null)') # Get references dimensions dims = np.array([x.size for x in refs.values()]) # Create simulation queue per sonophore radius - queue = Batch.createQueue(fref, Aref, Qref) - for i in range(len(queue)): - queue[i].append(refs['fs']) + drives = AcousticDrive.createQueue(fref, Aref) + queue = [] + for drive in drives: + for Qm in Qref: + queue.append([drive, Qm, refs['fs']]) # Run simulations and populate outputs logger.info('Starting simulation batch for %s neuron', pneuron.name) outputs = [] for a in aref: nbls = NeuronalBilayerSonophore(a, pneuron) batch = Batch(nbls.computeEffVars, queue) outputs += batch(mpi=mpi, loglevel=loglevel) # Split comp times and effvars from outputs effvars, tcomps = [list(x) for x in zip(*outputs)] effvars = list(itertools.chain.from_iterable(effvars)) # Make sure outputs size matches inputs dimensions product nout = len(effvars) assert nout == dims.prod(), 'Number of outputs does not match number of combinations' # Reshape effvars into nD arrays and add them to lookups dictionary logger.info('Reshaping output into lookup tables') varkeys = list(effvars[0].keys()) tables = {} for key in varkeys: effvar = [effvars[i][key] for i in range(nout)] tables[key] = np.array(effvar).reshape(dims) # Reshape computation times, tile over extra fs dimension, and add it as a lookup table tcomps = np.array(tcomps).reshape(dims[:-1]) tcomps = np.moveaxis(np.array([tcomps for i in range(dims[-1])]), 0, -1) tables['tcomp'] = tcomps # Construct and return lookup object return Lookup(refs, tables) def main(): parser = MechSimParser(outputdir='.') parser.addNeuron() parser.addTest() parser.defaults['neuron'] = 'RS' parser.defaults['radius'] = np.array([16.0, 32.0, 64.0]) # nm parser.defaults['freq'] = np.array([20., 100., 500., 1e3, 2e3, 3e3, 4e3]) # kHz parser.defaults['amp'] = np.insert( np.logspace(np.log10(0.1), np.log10(600), num=50), 0, 0.0) # kPa parser.defaults['charge'] = np.nan args = parser.parse() logger.setLevel(args['loglevel']) for pneuron in args['neuron']: # Determine charge vector charges = args['charge'] if charges.size == 1 and np.isnan(charges[0]): Qmin, Qmax = pneuron.Qbounds charges = np.arange(Qmin, Qmax + DQ_LOOKUP, DQ_LOOKUP) # C/m2 # Determine output filename f = NeuronalBilayerSonophore(32e-9, pneuron).getLookupFilePath if args['fs'].size == 1 and args['fs'][0] == 1.: lookup_fpath = f() else: - lookup_fpath = f(a=args['radius'][0], Fdrive=args['freq'][0], fs=True) + lookup_fpath = f(a=args['radius'][0], f=args['freq'][0], fs=True) # Combine inputs into single list inputs = [args[x] for x in ['radius', 'freq', 'amp']] + [charges, args['fs']] # Adapt inputs and output filename if test case if args['test']: for i, x in enumerate(inputs): if x is not None and x.size > 1: inputs[i] = np.array([x.min(), x.max()]) fcode, fext = os.path.splitext(lookup_fpath) lookup_fpath = f'{fcode}_test{fext}' # Check if lookup file already exists if os.path.isfile(lookup_fpath): logger.warning('"%s" file already exists and will be overwritten. ' + 'Continue? (y/n)', lookup_fpath) user_str = input() if user_str not in ['y', 'Y']: logger.error('%s Lookup creation canceled', pneuron.name) return # Compute lookup lkp = computeAStimLookup(pneuron, *inputs, mpi=args['mpi'], loglevel=args['loglevel']) logger.info(f'Generated lookup: {lkp}') # Save lookup in PKL file logger.info('Saving %s neuron lookup in file: "%s"', pneuron.name, lookup_fpath) lkp.toPickle(lookup_fpath) if __name__ == '__main__': main() diff --git a/tests/test_sims.py b/tests/test_sims.py index 5ef6350..d045e0e 100644 --- a/tests/test_sims.py +++ b/tests/test_sims.py @@ -1,103 +1,90 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-06-14 18:37:45 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2020-01-30 16:58:53 +# @Last Modified time: 2020-02-03 21:26:23 ''' Test the basic functionalities of the package. ''' -from PySONIC.core import BilayerSonophore, NeuronalBilayerSonophore, AcousticSource, PulsedProtocol +from PySONIC.core import BilayerSonophore, NeuronalBilayerSonophore, AcousticDrive, ElectricDrive, PulsedProtocol from PySONIC.utils import logger from PySONIC.neurons import getPointNeuron, getNeuronsDict from PySONIC.test import TestBase class TestSims(TestBase): + a = 32e-9 # m + USdrive = AcousticDrive(500e3, 100e3) + def test_MECH(self, is_profiled=False): logger.info('Test: running MECH simulation') - a = 32e-9 # m Qm0 = -80e-5 # membrane resting charge density (C/m2) Cm0 = 1e-2 # membrane resting capacitance (F/m2) - Fdrive = 350e3 # Hz - Adrive = 100e3 # Pa - source = AcousticSource(Fdrive, Adrive) Qm = 50e-5 # C/m2 - bls = BilayerSonophore(a, Cm0, Qm0) - self.execute('bls.simulate(source, Qm)', globals(), locals(), is_profiled) + bls = BilayerSonophore(self.a, Cm0, Qm0) + self.execute('bls.simulate(self.USdrive, Qm)', globals(), locals(), is_profiled) def test_ESTIM(self, is_profiled=False): logger.info('Test: running ESTIM simulation') - Astim = 10.0 # mA/m2 + ELdrive = ElectricDrive(10.0) # mA/m2 pp = PulsedProtocol(100e-3, 50e-3) pneuron = getPointNeuron('RS') - self.execute('pneuron.simulate(Astim, pp)', globals(), locals(), is_profiled) + self.execute('pneuron.simulate(ELdrive, pp)', globals(), locals(), is_profiled) def test_ASTIM_sonic(self, is_profiled=False): logger.info('Test: ASTIM sonic simulation') - a = 32e-9 # m - Fdrive = 500e3 # Hz - Adrive = 100e3 # Pa - source = AcousticSource(Fdrive, Adrive) pp = PulsedProtocol(50e-3, 10e-3) pneuron = getPointNeuron('RS') - nbls = NeuronalBilayerSonophore(a, pneuron) + nbls = NeuronalBilayerSonophore(self.a, pneuron) # test error 1: sonophore radius outside of lookup range try: nbls = NeuronalBilayerSonophore(100e-9, pneuron) - nbls.simulate(source, pp, method='sonic') + nbls.simulate(self.USdrive, pp, method='sonic') except ValueError: logger.debug('Out of range radius: OK') # test error 2: frequency outside of lookups range try: - nbls = NeuronalBilayerSonophore(a, pneuron) - nbls.simulate(AcousticSource(10e3, Adrive), pp, method='sonic') + nbls = NeuronalBilayerSonophore(self.a, pneuron) + nbls.simulate(AcousticDrive(10e3, self.USdrive.A), pp, method='sonic') except ValueError: logger.debug('Out of range frequency: OK') # test error 3: amplitude outside of lookups range try: - nbls = NeuronalBilayerSonophore(a, pneuron) - nbls.simulate(AcousticSource(Fdrive, 1e6), pp, method='sonic') + nbls = NeuronalBilayerSonophore(self.a, pneuron) + nbls.simulate(AcousticDrive(self.USdrive.f, 1e6), pp, method='sonic') except ValueError: logger.debug('Out of range amplitude: OK') # Run simulation on all neurons for name, neuron_class in getNeuronsDict().items(): - if name not in ('template', 'LeechP', 'LeechT', 'LeechR', 'SW', 'sundt'): + if name not in ('template', 'LeechP', 'LeechT', 'LeechR', 'SW'): pneuron = neuron_class() - nbls = NeuronalBilayerSonophore(a, pneuron) - self.execute("nbls.simulate(source, pp, method='sonic')", + nbls = NeuronalBilayerSonophore(self.a, pneuron) + self.execute("nbls.simulate(self.USdrive, pp, method='sonic')", globals(), locals(), is_profiled) def test_ASTIM_full(self, is_profiled=False): logger.info('Test: running ASTIM detailed simulation') - a = 32e-9 # m - Fdrive = 500e3 # Hz - Adrive = 100e3 # Pa - source = AcousticSource(Fdrive, Adrive) pp = PulsedProtocol(1e-6, 1e-6) pneuron = getPointNeuron('RS') - nbls = NeuronalBilayerSonophore(a, pneuron) - self.execute("nbls.simulate(source, pp, method='full')", + nbls = NeuronalBilayerSonophore(self.a, pneuron) + self.execute("nbls.simulate(self.USdrive, pp, method='full')", globals(), locals(), is_profiled) def test_ASTIM_hybrid(self, is_profiled=False): logger.info('Test: running ASTIM hybrid simulation') - a = 32e-9 # m - Fdrive = 350e3 # Hz - Adrive = 100e3 # Pa - source = AcousticSource(Fdrive, Adrive) pp = PulsedProtocol(0.6e-3, 0.1e-3) pneuron = getPointNeuron('RS') - nbls = NeuronalBilayerSonophore(a, pneuron) - self.execute("nbls.simulate(source, pp, method='hybrid')", + nbls = NeuronalBilayerSonophore(self.a, pneuron) + self.execute("nbls.simulate(self.USdrive, pp, method='hybrid')", globals(), locals(), is_profiled) if __name__ == '__main__': tester = TestSims() tester.main()