From a335c3cbc9ab39ffe2c6e1cdc78b39e81a32501e Mon Sep 17 00:00:00 2001 From: pgleeson Date: Tue, 4 Jun 2024 15:40:02 +0100 Subject: [PATCH] Added check EXT_MORPH_BIOPHYS_CELL_MODEL, just passing on Neuron & Netne --- src/main/java/org/neuroml/export/eden/EDENWriter.java | 1 + .../org/neuroml/export/netpyne/NetPyNEWriter.java | 1 + .../java/org/neuroml/export/neuron/NeuronWriter.java | 1 + src/main/java/org/neuroml/export/utils/Utils.java | 10 +++++++++- .../neuroml/export/utils/support/ModelFeature.java | 11 +++++++++++ .../export/utils/support/SupportLevelInfo.java | 4 +++- 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/neuroml/export/eden/EDENWriter.java b/src/main/java/org/neuroml/export/eden/EDENWriter.java index e94b9260c..a812a2c2d 100644 --- a/src/main/java/org/neuroml/export/eden/EDENWriter.java +++ b/src/main/java/org/neuroml/export/eden/EDENWriter.java @@ -71,6 +71,7 @@ public void setSupportedFeatures() { sli.addSupportInfo(format, ModelFeature.ABSTRACT_CELL_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.COND_BASED_CELL_MODEL, SupportLevelInfo.Level.HIGH); + sli.addSupportInfo(format, ModelFeature.EXT_MORPH_BIOPHYS_CELL_MODEL, SupportLevelInfo.Level.NONE); sli.addSupportInfo(format, ModelFeature.SINGLE_COMP_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.NETWORK_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.MULTI_CELL_MODEL, SupportLevelInfo.Level.HIGH); diff --git a/src/main/java/org/neuroml/export/netpyne/NetPyNEWriter.java b/src/main/java/org/neuroml/export/netpyne/NetPyNEWriter.java index 2df4ee025..931a63310 100644 --- a/src/main/java/org/neuroml/export/netpyne/NetPyNEWriter.java +++ b/src/main/java/org/neuroml/export/netpyne/NetPyNEWriter.java @@ -97,6 +97,7 @@ public void setSupportedFeatures() { sli.addSupportInfo(format, ModelFeature.ABSTRACT_CELL_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.COND_BASED_CELL_MODEL, SupportLevelInfo.Level.HIGH); + sli.addSupportInfo(format, ModelFeature.EXT_MORPH_BIOPHYS_CELL_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.SINGLE_COMP_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.NETWORK_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.MULTI_CELL_MODEL, SupportLevelInfo.Level.HIGH); diff --git a/src/main/java/org/neuroml/export/neuron/NeuronWriter.java b/src/main/java/org/neuroml/export/neuron/NeuronWriter.java index d1bad3df2..8d1d509a9 100644 --- a/src/main/java/org/neuroml/export/neuron/NeuronWriter.java +++ b/src/main/java/org/neuroml/export/neuron/NeuronWriter.java @@ -132,6 +132,7 @@ public void setSupportedFeatures() { sli.addSupportInfo(format, ModelFeature.ABSTRACT_CELL_MODEL, SupportLevelInfo.Level.MEDIUM); sli.addSupportInfo(format, ModelFeature.COND_BASED_CELL_MODEL, SupportLevelInfo.Level.MEDIUM); + sli.addSupportInfo(format, ModelFeature.EXT_MORPH_BIOPHYS_CELL_MODEL, SupportLevelInfo.Level.HIGH); sli.addSupportInfo(format, ModelFeature.SINGLE_COMP_MODEL, SupportLevelInfo.Level.MEDIUM); sli.addSupportInfo(format, ModelFeature.NETWORK_MODEL, SupportLevelInfo.Level.LOW); sli.addSupportInfo(format, ModelFeature.MULTI_CELL_MODEL, SupportLevelInfo.Level.MEDIUM); diff --git a/src/main/java/org/neuroml/export/utils/Utils.java b/src/main/java/org/neuroml/export/utils/Utils.java index 726510814..93dd9ea76 100644 --- a/src/main/java/org/neuroml/export/utils/Utils.java +++ b/src/main/java/org/neuroml/export/utils/Utils.java @@ -556,7 +556,15 @@ public Sim importFile(File simFile) throws LEMSException { if(run) { SupportLevelInfo sli = SupportLevelInfo.getSupportLevelInfo(); - sli.checkConversionSupported(Format.LEMS, sim.getLems()); + try + { + sli.checkConversionSupported(Format.LEMS, sim.getLems()); + } + catch (ModelFeatureSupportException mfse) + { + E.info(mfse.getMessage()); + System.exit(-1); + } sim.run(); IOUtil.saveReportAndTimesFile(sim, lemsFile); E.info("Finished reading, building, running and displaying LEMS model"); diff --git a/src/main/java/org/neuroml/export/utils/support/ModelFeature.java b/src/main/java/org/neuroml/export/utils/support/ModelFeature.java index a15cab5b8..cb34f7ff7 100644 --- a/src/main/java/org/neuroml/export/utils/support/ModelFeature.java +++ b/src/main/java/org/neuroml/export/utils/support/ModelFeature.java @@ -37,6 +37,7 @@ public enum ModelFeature NETWORK_WITH_ANALOG_CONNS_MODEL("Network model with analog/continuously communicating connections between cells"), ABSTRACT_CELL_MODEL("Model with abstract (non conductance based) cell(s)"), COND_BASED_CELL_MODEL("Model with conductance based cell(s)"), + EXT_MORPH_BIOPHYS_CELL_MODEL("Model with conductance based cell(s) with morphology and/or biophysicalProperties outside cell element"), MULTICOMPARTMENTAL_CELL_MODEL("Model with multicompartmental cell(s)"), CHANNEL_POPULATIONS_CELL_MODEL("Model with channel populations"), CHANNEL_DENSITY_ON_SEGMENT("Model with channel density specified per segment (aot segmentGroup)"), @@ -106,7 +107,17 @@ private static void analyseSingleComponent(Component component, ArrayList 1) diff --git a/src/main/java/org/neuroml/export/utils/support/SupportLevelInfo.java b/src/main/java/org/neuroml/export/utils/support/SupportLevelInfo.java index 78ad709ed..6849028b9 100644 --- a/src/main/java/org/neuroml/export/utils/support/SupportLevelInfo.java +++ b/src/main/java/org/neuroml/export/utils/support/SupportLevelInfo.java @@ -41,6 +41,7 @@ private SupportLevelInfo() /* Add info on formats supported in jLEMS */ addSupportInfo(Format.LEMS, ModelFeature.ABSTRACT_CELL_MODEL, SupportLevelInfo.Level.HIGH); addSupportInfo(Format.LEMS, ModelFeature.COND_BASED_CELL_MODEL, SupportLevelInfo.Level.HIGH); + addSupportInfo(Format.LEMS, ModelFeature.EXT_MORPH_BIOPHYS_CELL_MODEL, SupportLevelInfo.Level.NONE); addSupportInfo(Format.LEMS, ModelFeature.SINGLE_COMP_MODEL, SupportLevelInfo.Level.HIGH); addSupportInfo(Format.LEMS, ModelFeature.NETWORK_MODEL, SupportLevelInfo.Level.HIGH); addSupportInfo(Format.LEMS, ModelFeature.MULTI_CELL_MODEL, SupportLevelInfo.Level.HIGH); @@ -135,11 +136,12 @@ public void checkConversionSupported(Format format, Lems lems) throws ModelFeatu if(!supp.equals(SUPPORTED)) { passed = false; - report.append("Feature not supported in " + format + ": " + mf + "\n " + myInstance.isSupported(format, mf) + "\n"); + report.append("Feature is not supported in " + format + ": " + mf + "\n " + myInstance.isSupported(format, mf) + "\n"); } } if(!passed) { + report.insert(0, "Error! Some features of the model are not supported by that simulator.\n\n"); report.append("\nInfo on supported features:\n" + myInstance); throw new ModelFeatureSupportException(report.toString()); }