diff --git a/PySONIC/neurons/__init__.py b/PySONIC/neurons/__init__.py index a34a317..20aa74a 100644 --- a/PySONIC/neurons/__init__.py +++ b/PySONIC/neurons/__init__.py @@ -1,57 +1,58 @@ # -*- 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: 2019-08-26 14:25:39 +# @Last Modified time: 2019-10-15 12:17:23 from types import MethodType import inspect import sys from ..core.translators import SonicTranslator from .template import * from .cortical import * from .thalamic import * from .leech import * from .stn import * from .fh import * from .sweeney import * +from .sundt import * def getNeuronsDict(): ''' Construct a dictionary of all the implemented point neuron classes, indexed by name. ''' current_module = sys.modules[__name__] neurons_dict = {} for _, obj in inspect.getmembers(current_module): if inspect.isclass(obj) and hasattr(obj, 'name') and isinstance(obj.name, str): neurons_dict[obj.name] = obj return neurons_dict def getPointNeuron(name): ''' Return a point-neuron instance corresponding to a given name. ''' neuron_classes = getNeuronsDict() try: return neuron_classes[name]() except KeyError: raise ValueError('"{}" neuron not found. Implemented neurons are: {}'.format( name, ', '.join(list(neuron_classes.keys())))) def createClassMethod(func): return lambda self: func for pname, pclass in getNeuronsDict().items(): translator = SonicTranslator(pclass, verbose=False) eff_dstates = translator.parseDerStates() pclass.derEffStates = MethodType(createClassMethod(eff_dstates), pclass) pclass.effRates = MethodType(createClassMethod(translator.eff_rates), pclass) pclass.rates = list(translator.eff_rates.keys()) pclass.alphax_list = set(translator.alphax_list) pclass.betax_list = set(translator.betax_list) pclass.taux_list = set(translator.taux_list) pclass.xinf_list = set(translator.xinf_list) qsstates = translator.parseSteadyStates() pclass.quasiSteadyStates = MethodType(createClassMethod(qsstates), pclass) diff --git a/setup.py b/setup.py index 5f9d9a8..7d4a00e 100644 --- a/setup.py +++ b/setup.py @@ -1,50 +1,50 @@ # -*- coding: utf-8 -*- # @Author: Theo Lemaire # @Email: theo.lemaire@epfl.ch # @Date: 2017-06-13 09:40:02 # @Last Modified by: Theo Lemaire -# @Last Modified time: 2019-10-10 11:58:14 +# @Last Modified time: 2019-10-15 17:32:32 import os from setuptools import setup def readme(): with open('README.md', encoding="utf8") as f: return f.read() setup( name='PySONIC', version='1.0', description='Python implementation of the **multi-Scale Optimized Neuronal Intramembrane \ Cavitation** (SONIC) model to compute individual neural responses to acoustic \ stimuli, as predicted by the *intramembrane cavitation* hypothesis.', long_description=readme(), url='https://iopscience.iop.org/article/10.1088/1741-2552/ab1685', classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Science/Research', 'Programming Language :: Python :: 3', 'Topic :: Scientific/Engineering :: Physics' ], keywords=('SONIC NICE acoustic ultrasound ultrasonic neuromodulation neurostimulation excitation\ computational model intramembrane cavitation'), author='Théo Lemaire', author_email='theo.lemaire@epfl.ch', license='MIT', packages=['PySONIC'], scripts=['scripts/{}'.format(x) for x in os.listdir('scripts')], install_requires=[ 'numpy>=1.10', 'scipy>=0.17', 'matplotlib>=2' 'pandas>=0.22.0', 'colorlog>=3.0.1', 'tqdm>=4.3', 'lockfile>=0.1.2', 'multiprocess>=0.70', - 'pushbullet>=0.11.0' + 'pushbullet.py>=0.11.0' ], zip_safe=False )