Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor to use versions of SpreadsheetDataReader etc. in cect (ConnectomeToolbox) #100

Open
wants to merge 22 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/non_omv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ jobs:
omv list -V
omv install NEURON # Need to install NEURON
which nrnivmodl
export NEURON_HOME=$RUNNER_TOOL_CACHE/Python/3.9.7/x64/

- name: Run test script
run: |
export NEURON_HOME=$pythonLocation
pip install ruff
./test.sh

Expand Down
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,13 @@ arm64
/examples/parametersweep/LEMS_SimCanonical_X.png
/examples/parametersweep/Canonical_X__lems.xml
/examples/parametersweep/average_last_1percent_GenericNeuronCellX.png
/examples/parametersweep/IClamp_GenericNeuronCellW2D.json
/examples/parametersweep/IClamp_GenericNeuronCellW2D.net.nml
/examples/parametersweep/IClamp_GenericNeuronCellW2D__lems.xml
/examples/parametersweep/LEMS_SimCanonical_W2D.xml
/examples/parametersweep/Sim_IClamp_GenericNeuronCellW2D.json
/examples/parametersweep/Canonical_W2D__lems.xml
/examples/parametersweep/LEMS_Sim_IClamp_GenericNeuronCellW2D.xml
/examples/parametersweep/c302_C0_IClampMuscle.net.nml
/examples/parametersweep/average_last_1percent_GenericNeuronCellW2D.png
/examples/parametersweep/heatmap_GenericNeuronCellW2D.png
1 change: 0 additions & 1 deletion c302/NeuroMLUtilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ def fract(a, b, f):


if __name__ == "__main__":
# from SpreadsheetDataReader import read_data, read_muscle_data
from WormNeuroAtlasReader import read_data, read_muscle_data

cells, neuron_conns = read_data(include_nonconnected_cells=True)
Expand Down
64 changes: 45 additions & 19 deletions c302/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
import neuroml.writers as writers
import neuroml.loaders as loaders

import cect

# import c302.bioparameters

import airspeed
Expand All @@ -36,10 +38,7 @@
import math
from lxml import etree
import re

import json


import collections

try:
Expand All @@ -62,6 +61,16 @@
except Exception:
from urllib.error import URLError # Python 3


from cect.Cells import BODY_WALL_MUSCLE_NAMES

DEFAULT_DATA_READER = "SpreadsheetDataReader"
#
# DEFAULT_DATA_READER = "cect.White_whole"
# DEFAULT_DATA_READER = "cect.Cook2019HermReader"
DEFAULT_DATA_READER = "cect.SpreadsheetDataReader"
FW_DATA_READER = "cect.UpdatedSpreadsheetDataReader2"

logging.basicConfig()

here = os.path.abspath(os.path.dirname(__file__))
Expand All @@ -85,15 +94,20 @@ def print_(msg, print_it=True): # print_it=False when not verbose
print("%s %s" % (pre, msg.replace("\n", "\n" + pre)))


def load_data_reader(data_reader="SpreadsheetDataReader"):
def load_data_reader(data_reader):
"""
Imports and returns data reader module
Args:
data_reader (str): The name of the data reader
Returns:
reader (obj): The data reader object
"""
return importlib.import_module("c302.%s" % data_reader)
# return importlib.import_module("c302.%s" % data_reader)
if "cect" in data_reader:
dr = importlib.import_module("%s" % data_reader)
return dr.get_instance()
else:
return importlib.import_module("c302.%s" % data_reader)


def get_str_from_expnotation(num):
Expand All @@ -107,7 +121,7 @@ def get_str_from_expnotation(num):
return "{0:.15f}".format(num)


def get_muscle_position(muscle, data_reader="SpreadsheetDataReader"):
def get_muscle_position(muscle, data_reader):
if muscle == "MANAL" or muscle == "MVULVA":
return 0, 0, 0
# TODO: Pull these positions from openworm/owmeta-data
Expand Down Expand Up @@ -160,8 +174,8 @@ def process_args():
"-datareader",
type=str,
metavar="<data-reader>",
default="SpreadsheetDataReader",
help='Use a specific data reader. Possible values are: "SpreadsheetDataReader". (default: SpreadsheetDataReader)',
default=DEFAULT_DATA_READER,
help="Use a specific data reader. (default: %s)" % DEFAULT_DATA_READER,
)

parser.add_argument(
Expand Down Expand Up @@ -449,8 +463,8 @@ def get_file_name_relative_to_c302(file_name):
return os.path.relpath(os.environ["C302_HOME"], file_name)


def get_cell_names_and_connection(data_reader="SpreadsheetDataReader", test=False):
# Use the spreadsheet reader to give a list of all cells and a list of all connections
def get_cell_names_and_connection(data_reader, test=False):
# Use the data reader to give a list of all cells and a list of all connections
# This could be replaced with a call to "DatabaseReader" or "OpenWormNeuroLexReader" in future...
# If called from unittest folder ammend path to "../../../../"

Expand All @@ -463,17 +477,28 @@ def get_cell_names_and_connection(data_reader="SpreadsheetDataReader", test=Fals
return cell_names, conns


def get_cell_muscle_names_and_connection(
data_reader="SpreadsheetDataReader", test=False
):
def get_cell_muscle_names_and_connection(data_reader, test=False):
mneurons, all_muscles, muscle_conns = load_data_reader(
data_reader
).read_muscle_data()
if "MANAL" in all_muscles:
all_muscles.remove("MANAL")
if "MVULVA" in all_muscles:
all_muscles.remove("MVULVA")
return mneurons, sorted(all_muscles), muscle_conns

all_known_muscles = []
if len(all_muscles) == 0:
all_known_muscles = BODY_WALL_MUSCLE_NAMES
else:
for m in all_muscles:
if m in BODY_WALL_MUSCLE_NAMES:
all_known_muscles.append(m)

all_known_muscles = sorted(all_known_muscles)

print(" --- Using for muscles: %s" % all_known_muscles)

return mneurons, all_known_muscles, muscle_conns


def is_cond_based_cell(params):
Expand Down Expand Up @@ -629,7 +654,7 @@ def mirror_param(params, k, v):
def generate(
net_id,
params,
data_reader="SpreadsheetDataReader",
data_reader=DEFAULT_DATA_READER,
cells=None,
cells_to_plot=None,
cells_to_stimulate=None,
Expand Down Expand Up @@ -707,6 +732,11 @@ def generate(
"\n\nParameters and setting used to generate this network:\n\n"
+ " Data reader: %s\n" % data_reader
+ " c302 version: %s\n" % __version__
+ (
" cect version: %s\n" % (cect.__version__)
if "cect" in data_reader
else ""
)
+ " owmeta version: %s\n"
% ("- not installed -" if not owmeta_installed else owmeta_version)
+ " owmeta_core version: %s\n"
Expand Down Expand Up @@ -1006,10 +1036,6 @@ def generate(
data_reader
)

# print(all_muscles)
# if data_reader == "SpreadsheetDataReader":
# all_muscles = get_muscle_names()

if muscles_to_include is None or muscles_to_include is True:
muscles_to_include = all_muscles
elif muscles_to_include is False:
Expand Down
2 changes: 1 addition & 1 deletion c302/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.9.1"
__version__ = "0.10.0"
4 changes: 2 additions & 2 deletions c302/c302_FW.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def setup(
duration=2000,
dt=0.05,
target_directory="examples",
data_reader="UpdatedSpreadsheetDataReader2",
data_reader=c302.FW_DATA_READER,
param_overrides={},
verbose=True,
config_param_overrides={},
Expand Down Expand Up @@ -256,6 +256,6 @@ def setup(

if __name__ == "__main__":
parameter_set = sys.argv[1] if len(sys.argv) == 2 else "C2"
data_reader = sys.argv[2] if len(sys.argv) == 3 else "UpdatedSpreadsheetDataReader2"
data_reader = sys.argv[2] if len(sys.argv) == 3 else c302.FW_DATA_READER

setup(parameter_set, generate=True, data_reader=data_reader)
4 changes: 2 additions & 2 deletions c302/c302_Full.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def setup(
dt=0.05,
target_directory="examples",
muscles_to_include=None, # None => All!
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down Expand Up @@ -79,7 +79,7 @@ def setup(

reference = "c302_%s_Full" % parameter_set

cell_names, conns = c302.get_cell_names_and_connection()
cell_names, conns = c302.get_cell_names_and_connection(data_reader)

nml_doc = None

Expand Down
2 changes: 1 addition & 1 deletion c302/c302_IClamp.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def setup(
duration=None,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_IClampMuscle.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def setup(
duration=2000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
verbose=True,
):
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_MuscleTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def setup(
duration=2000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
verbose=True,
config_param_overrides={},
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_Muscles.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def setup(
duration=1000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_MusclesSine.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def setup(
duration=1000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_Oscillator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def setup(
duration=1000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader="cect.SpreadsheetDataReader",
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_OscillatorM.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def setup(
duration=1000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_Pharyngeal.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def setup(
duration=500,
dt=0.01,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_RIA.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def setup(
duration=1000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
verbose=True,
):
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_Social.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def setup(
duration=2500,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_Syns.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def setup(
duration=500,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
4 changes: 2 additions & 2 deletions c302/c302_TapWithdrawal.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def setup(
duration=400,
dt=0.05,
target_directory="examples",
data_reader="UpdatedSpreadsheetDataReader",
data_reader=c302.FW_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down Expand Up @@ -469,4 +469,4 @@ def setup(
if __name__ == "__main__":
parameter_set = sys.argv[1] if len(sys.argv) == 2 else "C2"

setup(parameter_set, generate=True, data_reader="UpdatedSpreadsheetDataReader")
setup(parameter_set, generate=True, data_reader=c302.FW_DATA_READER)
2 changes: 1 addition & 1 deletion c302/c302_TargetMuscle.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def setup(
duration=3000,
dt=0.05,
target_directory="examples",
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
param_overrides={},
config_param_overrides={},
verbose=True,
Expand Down
2 changes: 1 addition & 1 deletion c302/c302_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def plot_c302_results(
directory="./",
save=True,
show_plot_already=True,
data_reader="SpreadsheetDataReader",
data_reader=c302.DEFAULT_DATA_READER,
plot_ca=True,
):
params = {"legend.fontsize": 8, "font.size": 10}
Expand Down
8 changes: 6 additions & 2 deletions c302/custom_synapses.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
<!-- Definition of new synapse model types-->


<ComponentType name="baseGradedSynapseDL"
extends="baseSynapseDL"
description="Base type for dimensionless graded synapses">
</ComponentType>

<ComponentType name="outputSynapse"
extends="baseGradedSynapse"
Expand All @@ -14,12 +18,12 @@

<Exposure name="i" dimension="current"/>

<Requirement name="state" dimension="none"/>
<Requirement name="output" dimension="none"/>

<InstanceRequirement name="peer" type="outputSynapse"/>

<Dynamics>
<DerivedVariable name="outputpeer" dimension="none" select="peer/state"/>
<DerivedVariable name="outputpeer" dimension="none" select="peer/output"/>
<DerivedVariable name="i" exposure="i" value="weight * outputpeer * PAMP_SCALE"/>
</Dynamics>
</ComponentType>
Expand Down
Loading