Skip to main content

Package manager for NEURON

Project description

Build Status codecov Code style: black Documentation Status

Glia: NEURON package manager

Package manager for NEURON.

Usage

Glia can be installed from pip:

pip install nrn-glia

When Glia is imported it will check for glia packages and compile them into a library for NEURON, afterwards immediatly loading it into NEURON aswell:

from neuron import h
import glia as g

Only assets following the Glia naming convention will be included in the library and are available either directly using their namespaced name, or using glia.insert:

section = h.Section(name="soma")
# Add the default Kv1 mechanism provided in the `example` package.
section.insert("glia__example__Kv1__0")
# Preferably use glia's mechanism resolver to load your favourite Kv1 mechanism.
g.insert(section, "Kv1")

Asset management

Glia allows for multiple assets to refer to the same mechanism by giving them a unique name per package. The standard naming convention is as follows:

glia__<package-name>__<asset-name>__<variant-name>

Double underscores in packages, assets or variant names are not allowed.

This naming convention allows for multiple people to provide an implementation of the same asset, and by using variants even one package can provide multiple variations on the same mechanism. The default variant is 0

If you install multiple packages that provide the same asset, or if you would like to specify another variant you will need to tell Glia which one you require. You can do so by setting your asset preferences.

Asset preferences

There are 4 different scopes for providing asset preferences:

  • Global scope: Selects a default mechanism asset everywhere.
  • Script scope: Selects a default mechanism asset for the remainder of the Python script.
  • Context scope: Select a preferred package or variant for all glia.insert calls within the context block.
  • Single use: Selects a mechanism asset for a single glia.insert call

Single use

Whenever you call glia.insert you can append your preferences for that insert:

g.insert('Kv1', pkg='not_my_models', variant='high_activity')

Context scope

Any glia.insert or glia.resolve call within the with statement will preferably use the given package or variant:

from patch import p
s = p.Section()
with g.context(pkg=not_my_models):
  g.insert(s, 'Kv1')
  g.insert(s, 'Kv1', variant='high_activity')

You can also specify a dictionary of asset-specific preferences during the with statement:

from patch import p
s = p.Section()
with g.context(assets={
   'Kv1': {'package': 'not_my_models', 'variant': 'high_activity'},
   'HCN1': {'variant': 'revised'}
}, package='some_pkg_name'):
  g.insert(s, 'Kv1')
  g.insert(s, 'HCN1')

Script scope

Use glia.select to select a preferred mechanism asset, similar to the single use syntax:

section_global_Kv1 = h.Section()
section_local_Kv1 = h.Section()
g.insert(section_global_Kv1, 'Kv1') # Will use your global Kv1 mechanism
g.select('Kv1', pkg='not_my_models', variant='high_activity')
g.insert(section_local_Kv1, 'Kv1') # Will use the above selected Kv1 mechanism

Global scope

Applying global scope uses the Glia command-line tool and will configure glia to always select a mechanism asset as default.

Go to your favorite command-line tool and execute:

glia select Kv1 --pkg=some_pkg_name --variant=non_default

This will set your preference in any script you use, provided they load glia from the same path (e.g. not the case in different virtual environments).

Environment variables

GLIA_NO_INSTALL

Set this to be able to import the glia module without it installing itself.

GLIA_NO_AUTOLOAD_DLL

Set this to stop Glia from automatically loading its compiled content into NEURON.

GLIA_PATH

Glia sets this to the path where Glia is executed from.

GLIA_NRN_AVAILABLE

Glia sets this to 1 if it can import the neuron Python bindings, or 0 otherwise.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

nrn_glia-0.2.0-py3-none-any.whl (28.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page