Source code for emodelrunner.morphology.builder

"""Builds morphology objects."""

# Copyright 2020-2022 Blue Brain Project / EPFL

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

#     http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from emodelrunner.morphology.morphology import (
    SSCXNrnFileMorphology,
    ThalamusNrnFileMorphology,
)
from emodelrunner.configuration import PackageType


[docs] def get_axon_hoc(axon_hoc_path): """Returns string containing axon hoc to use as replacement. Args: axon_hoc_path (str): path to axon hoc file Returns: str: new axon hoc """ with open(axon_hoc_path, "r", encoding="utf-8") as f: return f.read()
[docs] def create_morphology(morph_args, package_type): """Creates the morphology object. Args: morph_args (MorphArgs): morphology-related configuration package_type (Enum): enum denoting the package type Raises: ValueError: raised when package_type is not supported Returns: ephys.morphologies.NrnFileMorphology: morphology object """ replace_axon_hoc = None if morph_args.axon_hoc_path is not None: replace_axon_hoc = get_axon_hoc(morph_args.axon_hoc_path) if package_type in [PackageType.sscx, PackageType.synplas]: morph = SSCXNrnFileMorphology( morph_args.morph_path, do_replace_axon=morph_args.do_replace_axon, replace_axon_hoc=replace_axon_hoc, ) elif package_type == PackageType.thalamus: morph = ThalamusNrnFileMorphology( morph_args.morph_path, do_replace_axon=morph_args.do_replace_axon, replace_axon_hoc=replace_axon_hoc, ) else: raise ValueError(f"unsupported package type: {package_type}") return morph