Skip to content

Commit 467b615

Browse files
Merge pull request #209 from NeuralEnsemble/feat-cell-params
feat: add special `get_parameters` for `cell` to include information on biophysics
2 parents af77e5f + 3e6dec7 commit 467b615

File tree

4 files changed

+367
-4
lines changed

4 files changed

+367
-4
lines changed

neuroml/nml/generatedssupersuper.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ def get_parameters(self):
488488
memberinfo["type"].startswith("Nml2Quantity_")
489489
or memberinfo["type"] == "NmlId"
490490
):
491-
parameters[member] = memberinfo["members"]
491+
if memberinfo["members"]:
492+
parameters[member] = memberinfo["members"]
492493

493494
return parameters
494495

neuroml/nml/helper_methods.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2551,6 +2551,72 @@ def get_morphology_root(self):
25512551
assert len(segs) == 1
25522552
return segs[0]
25532553
2554+
2555+
def get_parameters(self):
2556+
"""Get parameters for this cell component
2557+
2558+
.. versionadded:: 0.6.6
2559+
2560+
:returns: dictionary of dicts with parameter names as keys, and
2561+
parameter values as values
2562+
2563+
"""
2564+
parameters = {}
2565+
bp = None
2566+
mp = None
2567+
ip = None
2568+
2569+
# can't use self.get_parameters() since it creates a recursion loop
2570+
# or can I: needs thought
2571+
info = self.info(show_contents="all", return_format="dict")
2572+
for member, memberinfo in info.items():
2573+
if (
2574+
memberinfo["type"].startswith("Nml2Quantity_")
2575+
or memberinfo["type"] == "NmlId"
2576+
):
2577+
if memberinfo["members"]:
2578+
parameters[member] = memberinfo["members"]
2579+
2580+
if self.__class__.__name__ == "Cell":
2581+
bp = self.biophysical_properties
2582+
mp = bp.membrane_properties
2583+
ip = bp.intracellular_properties
2584+
elif self.__class__.__name__ == "Cell2CaPools":
2585+
bp = self.biophysical_properties2_ca_pools
2586+
mp = bp.membrane_properties2_ca_pools
2587+
ip = bp.intracellular_properties2_ca_pools
2588+
2589+
meminfo = mp.info(show_contents="all", return_format="dict")
2590+
intinfo = ip.info(show_contents="all", return_format="dict")
2591+
2592+
for member, memberinfo in meminfo.items():
2593+
if (
2594+
memberinfo["type"].startswith("Nml2Quantity_")
2595+
or memberinfo["type"] == "NmlId"
2596+
):
2597+
if memberinfo["members"]:
2598+
parameters[member] = memberinfo["members"]
2599+
else:
2600+
for m in memberinfo["members"]:
2601+
dictkey = memberinfo['type']
2602+
dictkey += f":{m.id}" if getattr(m, "id", None) else ""
2603+
parameters[dictkey] = m.get_parameters()
2604+
2605+
for member, memberinfo in intinfo.items():
2606+
if (
2607+
memberinfo["type"].startswith("Nml2Quantity_")
2608+
or memberinfo["type"] == "NmlId"
2609+
):
2610+
if memberinfo["members"]:
2611+
parameters[member] = memberinfo["members"]
2612+
else:
2613+
for m in memberinfo["members"]:
2614+
dictkey = memberinfo['type']
2615+
dictkey += f":{m.id}" if getattr(m, "id", None) else ""
2616+
parameters[dictkey] = m.get_parameters()
2617+
2618+
return parameters
2619+
25542620
''',
25552621
class_names=("Cell"),
25562622
)

0 commit comments

Comments
 (0)