From 880f037958b5887b54eb40388d04b9053258e69f Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Tue, 25 Oct 2016 09:28:38 +0200 Subject: [PATCH 1/2] Renamed prefix to suffix in NrnMODMechanism (backward compatible) --- bluepyopt/ephys/create_hoc.py | 2 +- bluepyopt/ephys/examples/simplecell/simplecell.py | 2 +- bluepyopt/ephys/mechanisms.py | 55 +++++++++++++++------- bluepyopt/ephys/parameters.py | 5 +- bluepyopt/tests/disable_simplecell_scoop.py | 2 +- bluepyopt/tests/test_ephys/test_mechanisms.py | 2 +- bluepyopt/tests/test_ephys/utils.py | 44 +++++++++++++---- examples/l5pc/l5_config.zip | Bin 203597 -> 203604 bytes examples/l5pc/l5pc_model.py | 2 +- examples/simplecell/simplecell.ipynb | 6 +-- examples/stochkv/stochkvcell.py | 4 +- 11 files changed, 84 insertions(+), 40 deletions(-) diff --git a/bluepyopt/ephys/create_hoc.py b/bluepyopt/ephys/create_hoc.py index 316fe36..a5ebfa0 100644 --- a/bluepyopt/ephys/create_hoc.py +++ b/bluepyopt/ephys/create_hoc.py @@ -30,7 +30,7 @@ def _generate_channels_by_location(mechs): """Create a OrderedDictionary of all channel mechs for hoc template.""" channels = OrderedDict((location, []) for location in LOCATION_ORDER) for mech in mechs: - name = mech.prefix + name = mech.suffix for location in mech.locations: # TODO this is dangerous, implicitely assumes type of location channels[location.seclist_name].append(name) diff --git a/bluepyopt/ephys/examples/simplecell/simplecell.py b/bluepyopt/ephys/examples/simplecell/simplecell.py index bb21c5f..d30596a 100644 --- a/bluepyopt/ephys/examples/simplecell/simplecell.py +++ b/bluepyopt/ephys/examples/simplecell/simplecell.py @@ -15,7 +15,7 @@ seclist_name='somatic') hh_mech = ephys.mechanisms.NrnMODMechanism( name='hh', - prefix='hh', + suffix='hh', locations=[somatic_loc]) diff --git a/bluepyopt/ephys/mechanisms.py b/bluepyopt/ephys/mechanisms.py index 8736aee..2d2952d 100644 --- a/bluepyopt/ephys/mechanisms.py +++ b/bluepyopt/ephys/mechanisms.py @@ -49,7 +49,7 @@ class NrnMODMechanism(Mechanism, serializer.DictMixin): 'name', 'comment', 'mod_path', - 'prefix', + 'suffix', 'locations', 'preloaded', ) @@ -58,32 +58,41 @@ def __init__( self, name, mod_path=None, - prefix=None, + suffix=None, locations=None, preloaded=True, deterministic=True, + prefix=None, comment=''): """Constructor Args: name (str): name of this object mod_path (str): path to the MOD file (not used for the moment) - prefix (str): prefix of this mechanism in the MOD file + suffix (str): suffix of this mechanism in the MOD file locations (list of Locations): a list of Location objects pointing to where this mechanism should be added to. preloaded (bool): should this mechanism be side-loaded by BluePyOpt, or was it already loaded and compiled by the user ? (not used for the moment) + prefix (str): Deprecated. Use suffix instead. """ super(NrnMODMechanism, self).__init__(name, comment) self.mod_path = mod_path - self.prefix = prefix + self.suffix = suffix self.locations = locations self.preloaded = preloaded self.cell_model = None self.deterministic = deterministic + if prefix is not None and suffix is not None: + raise TypeError('NrnMODMechanism: it is not allowed to set both ' + 'prefix and suffix in constructor: %s %s' % + (self.prefix, self.suffix)) + elif prefix is not None: + self.suffix = self.prefix + def instantiate(self, sim=None, icell=None): """Instantiate""" @@ -91,9 +100,9 @@ def instantiate(self, sim=None, icell=None): isec_list = location.instantiate(sim=sim, icell=icell) for isec in isec_list: try: - isec.insert(self.prefix) + isec.insert(self.suffix) except ValueError as e: - raise ValueError(str(e) + ': ' + self.prefix) + raise ValueError(str(e) + ': ' + self.suffix) self.instantiate_determinism( self.deterministic, icell, @@ -101,17 +110,17 @@ def instantiate(self, sim=None, icell=None): sim) logger.debug( - 'Inserted %s in %s', self.prefix, [ + 'Inserted %s in %s', self.suffix, [ str(location) for location in self.locations]) def instantiate_determinism(self, deterministic, icell, isec, sim): """Instantiate enable/disable determinism""" - if 'Stoch' in self.prefix: + if 'Stoch' in self.suffix: setattr( isec, 'deterministic_%s' % - (self.prefix), + (self.suffix), 1 if deterministic else 0) if not deterministic: @@ -120,19 +129,19 @@ def instantiate_determinism(self, deterministic, icell, isec, sim): for iseg in isec: seg_name = '%s.%.19g' % (short_secname, iseg.x) getattr(sim.neuron.h, - "setdata_%s" % self.prefix)(iseg.x, sec=isec) + "setdata_%s" % self.suffix)(iseg.x, sec=isec) seed_id1 = icell.gid seed_id2 = self.hash_py(seg_name) getattr( sim.neuron.h, - "setRNG_%s" % self.prefix)(seed_id1, seed_id2) + "setRNG_%s" % self.suffix)(seed_id1, seed_id2) else: if not deterministic: # can't do this for non-Stoch channels raise TypeError( 'Deterministic can only be set to False for ' 'Stoch channel, not %s' % - self.prefix) + self.suffix) def destroy(self, sim=None): """Destroy mechanism instantiation""" @@ -143,7 +152,7 @@ def __str__(self): """String representation""" return "%s: %s at %s" % ( - self.name, self.prefix, + self.name, self.suffix, [str(location) for location in self.locations]) @staticmethod @@ -172,25 +181,37 @@ def generate_reinitrng_hoc_block(self): reinitrng_hoc_block = '' - if 'Stoch' in self.prefix: + if 'Stoch' in self.suffix: # TODO this is dangerous, implicitely assumes type of location for location in self.locations: if self.deterministic: reinitrng_hoc_block += \ 'forsec %(seclist_name)s { ' \ - 'deterministic_%(prefix)s = 1 }\n' % { + 'deterministic_%(suffix)s = 1 }\n' % { 'seclist_name': location.seclist_name, - 'prefix': self.prefix} + 'suffix': self.suffix} else: reinitrng_hoc_block += \ 'forsec %(seclist_name)s { %(mech_reinitrng)s }\n' % { 'seclist_name': location.seclist_name, 'mech_reinitrng': self.mech_reinitrng_block_template % { - 'prefix': self.prefix}} + 'suffix': self.suffix}} return reinitrng_hoc_block + @property + def prefix(self): + """Deprecated, prefix is now replaced by suffix""" + + return self.suffix + + @prefix.setter + def prefix(self, value): + """Deprecated, prefix is now replaced by suffix""" + + self.suffix = value + hash_hoc_string = \ """ func hash_str() {localobj sf strdef right diff --git a/bluepyopt/ephys/parameters.py b/bluepyopt/ephys/parameters.py index 98f54fb..9d2f2c3 100644 --- a/bluepyopt/ephys/parameters.py +++ b/bluepyopt/ephys/parameters.py @@ -65,8 +65,7 @@ def destroy(self, sim=None): class NrnGlobalParameter(NrnParameter, DictMixin): """Parameter set in the global namespace of neuron""" - SERIALIZED_FIELDS = ('name', 'value', 'frozen', 'bounds', 'param_name', - ) + SERIALIZED_FIELDS = ('name', 'value', 'frozen', 'bounds', 'param_name',) def __init__( self, @@ -180,7 +179,7 @@ def __str__(self): self.param_name, self.value if self.frozen else self.bounds) -# TODO change mech_prefix and mech_param to param_name, and maybe add +# TODO change mech_suffix and mech_param to param_name, and maybe add # NrnRangeMechParameter diff --git a/bluepyopt/tests/disable_simplecell_scoop.py b/bluepyopt/tests/disable_simplecell_scoop.py index fc60a75..abd6636 100644 --- a/bluepyopt/tests/disable_simplecell_scoop.py +++ b/bluepyopt/tests/disable_simplecell_scoop.py @@ -41,7 +41,7 @@ def disabled_scoop(): seclist_name='somatic') hh_mech = nrpel.mechanisms.NrnMODMechanism(name='hh', - prefix='hh', + suffix='hh', locations=[somatic_loc]) cm_param = nrpel.parameters.NrnSectionParameter(name='cm', diff --git a/bluepyopt/tests/test_ephys/test_mechanisms.py b/bluepyopt/tests/test_ephys/test_mechanisms.py index 8019eca..bdacda5 100644 --- a/bluepyopt/tests/test_ephys/test_mechanisms.py +++ b/bluepyopt/tests/test_ephys/test_mechanisms.py @@ -34,7 +34,7 @@ def test_nrnmod_instantiate(): test_mech = ephys.mechanisms.NrnMODMechanism( 'test.pas', - prefix='pas', + suffix='pas', locations=[simplecell.somatic_loc]) simple_cell.instantiate(sim=sim) diff --git a/bluepyopt/tests/test_ephys/utils.py b/bluepyopt/tests/test_ephys/utils.py index 1cde88f..1bdf51e 100644 --- a/bluepyopt/tests/test_ephys/utils.py +++ b/bluepyopt/tests/test_ephys/utils.py @@ -1,3 +1,5 @@ +"""EPhys test utils""" + from bluepyopt import ephys from bluepyopt.ephys.parameters import (NrnGlobalParameter, NrnSectionParameter, NrnRangeParameter, ) @@ -5,25 +7,47 @@ def make_mech(): + """Create mechanism""" basal = ephys.locations.NrnSeclistLocation('basal', seclist_name='basal') apical = ephys.locations.NrnSeclistLocation('apical', seclist_name='apical') - return ephys.mechanisms.NrnMODMechanism('Ih', prefix='Ih', locations=[basal, apical, ]) + return ephys.mechanisms.NrnMODMechanism( + 'Ih', + suffix='Ih', + locations=[ + basal, + apical, + ]) def make_parameters(): - value, frozen, bounds, param_name = 65, False, [0, 100.0], 'gSKv3_1bar_SKv3_1' + """Create parameters""" + value, frozen, bounds, param_name = 65, False, [ + 0, 100.0], 'gSKv3_1bar_SKv3_1' value_scaler = ephys.parameterscalers.NrnSegmentLinearScaler() locations = (NrnSeclistLocation('Location0', 'somatic'), - NrnSeclistLocation('Location1', 'apical'), - ) + NrnSeclistLocation('Location1', 'apical'),) parameters = ( - NrnGlobalParameter('NrnGlobalParameter', value, frozen, bounds, param_name), + NrnGlobalParameter( + 'NrnGlobalParameter', + value, + frozen, + bounds, + param_name), NrnSectionParameter( - 'NrnSectionParameter', value, frozen, bounds, param_name, value_scaler, locations), + 'NrnSectionParameter', + value, + frozen, + bounds, + param_name, + value_scaler, + locations), NrnRangeParameter( - 'NrnRangeParameter', value, frozen, bounds, param_name, value_scaler, locations), + 'NrnRangeParameter', + value, + frozen, + bounds, + param_name, + value_scaler, + locations), ) return parameters - - - diff --git a/examples/l5pc/l5_config.zip b/examples/l5pc/l5_config.zip index 4739ec63c8fd1682df9d8b617bd919842c122cea..60cb572c92953f3aaddea4f8cc8a288f242c3be1 100644 GIT binary patch delta 7899 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 delta 7888 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 diff --git a/examples/l5pc/l5pc_model.py b/examples/l5pc/l5pc_model.py index 06a2025..5177422 100644 --- a/examples/l5pc/l5pc_model.py +++ b/examples/l5pc/l5pc_model.py @@ -51,7 +51,7 @@ def define_mechanisms(): mechanisms.append(ephys.mechanisms.NrnMODMechanism( name='%s.%s' % (channel, sectionlist), mod_path=None, - prefix=channel, + suffix=channel, locations=[seclist_loc], preloaded=True)) diff --git a/examples/simplecell/simplecell.ipynb b/examples/simplecell/simplecell.ipynb index aba43b5..4b993d3 100644 --- a/examples/simplecell/simplecell.ipynb +++ b/examples/simplecell/simplecell.ipynb @@ -129,7 +129,7 @@ "source": [ "hh_mech = ephys.mechanisms.NrnMODMechanism(\n", " name='hh',\n", - " prefix='hh',\n", + " suffix='hh',\n", " locations=[somatic_loc])" ] }, @@ -139,7 +139,7 @@ "collapsed": true }, "source": [ - "The 'name' field can be chosen by the user, this name should be unique. The 'prefix' points to the same field in the NMODL file of the channel. 'locations' specifies which sections the mechanism will be added to.\n", + "The 'name' field can be chosen by the user, this name should be unique. The 'suffix' points to the same field in the NMODL file of the channel. 'locations' specifies which sections the mechanism will be added to.\n", "\n", "### Creating parameters\n", "\n", @@ -814,7 +814,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/examples/stochkv/stochkvcell.py b/examples/stochkv/stochkvcell.py index d407e6f..1859d85 100644 --- a/examples/stochkv/stochkvcell.py +++ b/examples/stochkv/stochkvcell.py @@ -31,12 +31,12 @@ def run_stochkv_model(deterministic=False): seclist_name='somatic') stochkv_mech = ephys.mechanisms.NrnMODMechanism( name='StochKv', - prefix='StochKv', + suffix='StochKv', locations=[somatic_loc], deterministic=deterministic) pas_mech = ephys.mechanisms.NrnMODMechanism( name='pas', - prefix='pas', + suffix='pas', locations=[somatic_loc]) gkbar_param = ephys.parameters.NrnSectionParameter( name='gkbar_StochKv', From d830ccfd29e04eacc3632f5dabfaff993e559f55 Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Tue, 25 Oct 2016 09:37:57 +0200 Subject: [PATCH 2/2] Small fix to last commit --- bluepyopt/ephys/mechanisms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bluepyopt/ephys/mechanisms.py b/bluepyopt/ephys/mechanisms.py index 2d2952d..88e29dc 100644 --- a/bluepyopt/ephys/mechanisms.py +++ b/bluepyopt/ephys/mechanisms.py @@ -245,9 +245,9 @@ def prefix(self, value): mech_reinitrng_block_template = """ for (x, 0) { - setdata_%(prefix)s(x) + setdata_%(suffix)s(x) sf.tail(secname(), "\\\\.", name) sprint(full_str, "%%s.%%.19g", name, x) - setRNG_%(prefix)s(0, hash_str(full_str)) + setRNG_%(suffix)s(0, hash_str(full_str)) } """