diff --git a/SBML/tests/d1_plots_local/amici_d1.pdf b/SBML/tests/d1_plots_local/amici_d1.pdf
index bfe4c417..8e7eb660 100644
Binary files a/SBML/tests/d1_plots_local/amici_d1.pdf and b/SBML/tests/d1_plots_local/amici_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/bionetgen_d1.pdf b/SBML/tests/d1_plots_local/bionetgen_d1.pdf
index 5d80b0a3..7db9f801 100644
Binary files a/SBML/tests/d1_plots_local/bionetgen_d1.pdf and b/SBML/tests/d1_plots_local/bionetgen_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/boolnet_d1.pdf b/SBML/tests/d1_plots_local/boolnet_d1.pdf
index e44f417e..3cc6515c 100644
Binary files a/SBML/tests/d1_plots_local/boolnet_d1.pdf and b/SBML/tests/d1_plots_local/boolnet_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/cbmpy_d1.pdf b/SBML/tests/d1_plots_local/cbmpy_d1.pdf
index bde2c45e..302de1bf 100644
Binary files a/SBML/tests/d1_plots_local/cbmpy_d1.pdf and b/SBML/tests/d1_plots_local/cbmpy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/cobrapy_d1.pdf b/SBML/tests/d1_plots_local/cobrapy_d1.pdf
index 3eceab4e..7164d01b 100644
Binary files a/SBML/tests/d1_plots_local/cobrapy_d1.pdf and b/SBML/tests/d1_plots_local/cobrapy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/copasi_d1.pdf b/SBML/tests/d1_plots_local/copasi_d1.pdf
index 0a2c047b..bdbdfeac 100644
Binary files a/SBML/tests/d1_plots_local/copasi_d1.pdf and b/SBML/tests/d1_plots_local/copasi_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/gillespy2_d1.pdf b/SBML/tests/d1_plots_local/gillespy2_d1.pdf
index ab45e940..4134f190 100644
Binary files a/SBML/tests/d1_plots_local/gillespy2_d1.pdf and b/SBML/tests/d1_plots_local/gillespy2_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/ginsim_d1.pdf b/SBML/tests/d1_plots_local/ginsim_d1.pdf
index a935f8ef..44ac5442 100644
Binary files a/SBML/tests/d1_plots_local/ginsim_d1.pdf and b/SBML/tests/d1_plots_local/ginsim_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/libsbmlsim_d1.pdf b/SBML/tests/d1_plots_local/libsbmlsim_d1.pdf
index 427e0d59..e52607e9 100644
Binary files a/SBML/tests/d1_plots_local/libsbmlsim_d1.pdf and b/SBML/tests/d1_plots_local/libsbmlsim_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/masspy_d1.pdf b/SBML/tests/d1_plots_local/masspy_d1.pdf
index b292927c..39f5db9c 100644
Binary files a/SBML/tests/d1_plots_local/masspy_d1.pdf and b/SBML/tests/d1_plots_local/masspy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/pysces_d1.pdf b/SBML/tests/d1_plots_local/pysces_d1.pdf
index db6aa474..1d95c710 100644
Binary files a/SBML/tests/d1_plots_local/pysces_d1.pdf and b/SBML/tests/d1_plots_local/pysces_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/rbapy_d1.pdf b/SBML/tests/d1_plots_local/rbapy_d1.pdf
index 3281608b..347fcc4a 100644
Binary files a/SBML/tests/d1_plots_local/rbapy_d1.pdf and b/SBML/tests/d1_plots_local/rbapy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_local/tellurium_d1.pdf b/SBML/tests/d1_plots_local/tellurium_d1.pdf
index fbd2ec7d..3f27911c 100644
Binary files a/SBML/tests/d1_plots_local/tellurium_d1.pdf and b/SBML/tests/d1_plots_local/tellurium_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/amici_d1.pdf b/SBML/tests/d1_plots_remote/amici_d1.pdf
index 350be122..5774ffa1 100644
Binary files a/SBML/tests/d1_plots_remote/amici_d1.pdf and b/SBML/tests/d1_plots_remote/amici_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/bionetgen_d1.pdf b/SBML/tests/d1_plots_remote/bionetgen_d1.pdf
index 0e013d23..44d8cfeb 100644
Binary files a/SBML/tests/d1_plots_remote/bionetgen_d1.pdf and b/SBML/tests/d1_plots_remote/bionetgen_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/boolnet_d1.pdf b/SBML/tests/d1_plots_remote/boolnet_d1.pdf
index 0e013d23..44d8cfeb 100644
Binary files a/SBML/tests/d1_plots_remote/boolnet_d1.pdf and b/SBML/tests/d1_plots_remote/boolnet_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/cbmpy_d1.pdf b/SBML/tests/d1_plots_remote/cbmpy_d1.pdf
index d9e36129..215d6eef 100644
Binary files a/SBML/tests/d1_plots_remote/cbmpy_d1.pdf and b/SBML/tests/d1_plots_remote/cbmpy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/cobrapy_d1.pdf b/SBML/tests/d1_plots_remote/cobrapy_d1.pdf
index d9e36129..ca6868c7 100644
Binary files a/SBML/tests/d1_plots_remote/cobrapy_d1.pdf and b/SBML/tests/d1_plots_remote/cobrapy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/copasi_d1.pdf b/SBML/tests/d1_plots_remote/copasi_d1.pdf
index 6ac0abfc..92ca2f6c 100644
Binary files a/SBML/tests/d1_plots_remote/copasi_d1.pdf and b/SBML/tests/d1_plots_remote/copasi_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/gillespy2_d1.pdf b/SBML/tests/d1_plots_remote/gillespy2_d1.pdf
index 7b208ee7..edb409e3 100644
Binary files a/SBML/tests/d1_plots_remote/gillespy2_d1.pdf and b/SBML/tests/d1_plots_remote/gillespy2_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/ginsim_d1.pdf b/SBML/tests/d1_plots_remote/ginsim_d1.pdf
index 8f0b0dfe..e23c6b46 100644
Binary files a/SBML/tests/d1_plots_remote/ginsim_d1.pdf and b/SBML/tests/d1_plots_remote/ginsim_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/libsbmlsim_d1.pdf b/SBML/tests/d1_plots_remote/libsbmlsim_d1.pdf
index e0b91f44..e3a569dc 100644
Binary files a/SBML/tests/d1_plots_remote/libsbmlsim_d1.pdf and b/SBML/tests/d1_plots_remote/libsbmlsim_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/masspy_d1.pdf b/SBML/tests/d1_plots_remote/masspy_d1.pdf
index 7ba6ca59..ae08f860 100644
Binary files a/SBML/tests/d1_plots_remote/masspy_d1.pdf and b/SBML/tests/d1_plots_remote/masspy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/pysces_d1.pdf b/SBML/tests/d1_plots_remote/pysces_d1.pdf
index 3095be07..51156f44 100644
Binary files a/SBML/tests/d1_plots_remote/pysces_d1.pdf and b/SBML/tests/d1_plots_remote/pysces_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/rbapy_d1.pdf b/SBML/tests/d1_plots_remote/rbapy_d1.pdf
index b1afd78b..0e0efcf5 100644
Binary files a/SBML/tests/d1_plots_remote/rbapy_d1.pdf and b/SBML/tests/d1_plots_remote/rbapy_d1.pdf differ
diff --git a/SBML/tests/d1_plots_remote/tellurium_d1.pdf b/SBML/tests/d1_plots_remote/tellurium_d1.pdf
index 8f024a47..ebed6694 100644
Binary files a/SBML/tests/d1_plots_remote/tellurium_d1.pdf and b/SBML/tests/d1_plots_remote/tellurium_d1.pdf differ
diff --git a/SBML/tests/results_compatibility_biosimulators.md b/SBML/tests/results_compatibility_biosimulators.md
index c558cede..1cf019a0 100644
--- a/SBML/tests/results_compatibility_biosimulators.md
+++ b/SBML/tests/results_compatibility_biosimulators.md
@@ -1,23 +1,23 @@
-| | Engine | pass / FAIL (R) | pass / FAIL (L) | Compat (R) | Compat (L) | Type (R) | Error (R) | Error (L) | d1 (R) | d1 (L) |
-|---:|:-------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------|:----------------------------------------------------|
-| 0 | amici
https://docs.biosimulators.org/Biosimulators_AMICI/
|
pass |
pass |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with amici |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with amici | | | | plot | plot |
-| 1 | bionetgen
https://docs.biosimulators.org/Biosimulators_BioNetGen/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Language for model `net1` is not supported.
- Model language `urn:sedml:language:sbml` is not supported. Models must be in BNGL format (e.g., `sed:model/@language` must match `^urn:sedml:language:bngl(\.$)` such as `urn:sedml:language:bngl`). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/bionetgen' returned non-zero exit status 1``` | plot | plot |
-| 2 | boolnet
https://docs.biosimulators.org/Biosimulators_BoolNet/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Simulation `sim1` is invalid.
- Number of points (20000) must be equal to the difference between the output end (200.0) and start times (0.0). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/boolnet' returned non-zero exit status 1``` | plot | plot |
-| 3 | brian2
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML', 'SBML', 'SED-ML'] are compatible with brian2 |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML', 'SBML', 'SED-ML'] are compatible with brian2 | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/brian2' returned non-zero exit status 1``` | | |
-| 4 | cbmpy
https://docs.biosimulators.org/Biosimulators_CBMPy/
|
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
UniformTimeCourseSimulation `sim1` is not supported.
- Simulation sim1 of type `UniformTimeCourseSimulation` is not supported. Simulation must be an instance of one of the following:
- SteadyStateSimulation | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/cbmpy' returned non-zero exit status 1``` | plot | plot |
-| 5 | cobrapy
https://docs.biosimulators.org/Biosimulators_COBRApy/
Only allows steady state simulations |
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
UniformTimeCourseSimulation `sim1` is not supported.
- Simulation sim1 of type `UniformTimeCourseSimulation` is not supported. Simulation must be an instance of one of the following:
- SteadyStateSimulation | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/cobrapy' returned non-zero exit status 1``` | plot | plot |
-| 6 | copasi
https://docs.biosimulators.org/Biosimulators_COPASI/
|
pass |
pass |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with copasi |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with copasi | | | | plot | plot |
-| 7 | gillespy2
https://docs.biosimulators.org/Biosimulators_GillesPy2/
|
pass |
pass |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with gillespy2 |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with gillespy2 | | | | plot | plot |
-| 8 | ginsim
https://docs.biosimulators.org/Biosimulators_GINsim/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Simulation `sim1` is invalid.
- The interval between the output start and time time must be an integer multiple of the number of steps, not `0.01`:
Output start time: 0.0
Output end time: 200.0
Number of steps: 20000 | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/ginsim' returned non-zero exit status 1``` | plot | plot |
-| 9 | libsbmlsim
https://docs.biosimulators.org/Biosimulators_LibSBMLSim/
|
pass |
pass |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with libsbmlsim |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with libsbmlsim | | | | plot | plot |
-| 10 | masspy
https://docs.biosimulators.org/Biosimulators_MASSpy/
|
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Something went wrong reading the SBML model. Most likely the SBML model is not valid. Please check that your model is valid using the `mass.io.sbml.validate_sbml_model` function or via the online validator at http://sbml.org/validator .
`(model, errors) = validate_sbml_model(filename)`
If the model is valid and cannot be read please open an issue at https://github.com/SBRG/masspy/issues . | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/masspy' returned non-zero exit status 1``` | plot | plot |
-| 11 | netpyne
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with netpyne |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with netpyne | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/netpyne' returned non-zero exit status 1``` | | |
-| 12 | neuron
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with neuron. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with neuron |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with neuron. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with neuron | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/neuron' returned non-zero exit status 1``` | | |
-| 13 | opencor
https://docs.biosimulators.org/Biosimulators_OpenCOR/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/opencor' returned non-zero exit status 1``` | | |
-| 14 | pyneuroml
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with pyneuroml. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with pyneuroml |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with pyneuroml. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with pyneuroml | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/pyneuroml' returned non-zero exit status 1``` | | |
-| 15 | pysces
https://docs.biosimulators.org/Biosimulators_PySCeS/
|
FAIL |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Model at /tmp/tmpod71_ka_/./LEMS_NML2_Ex9_FN.sbml could not be imported:
File /tmp/tmpod71_ka_/./LEMS_NML2_Ex9_FN.sbml.xml does not exist | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/pysces' returned non-zero exit status 1``` | plot | plot |
-| 16 | rbapy
https://docs.biosimulators.org/Biosimulators_RBApy/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy | CAEE
CombineArchiveExecutionError | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Language for model `net1` is not supported.
- Model language `urn:sedml:language:sbml` is not supported. Models must be in RBA format (e.g., `sed:model/@language` must match `^urn:sedml:language:rba(\.$)` such as `urn:sedml:language:rba`). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/rbapy' returned non-zero exit status 1``` | plot | plot |
-| 17 | smoldyn
https://smoldyn.readthedocs.io/en/latest/python/api.html#sed-ml-combine-biosimulators-api
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. [] are compatible with smoldyn |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. [] are compatible with smoldyn | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/smoldyn' returned non-zero exit status 1``` | | |
-| 18 | tellurium
https://docs.biosimulators.org/Biosimulators_tellurium/
|
pass |
pass |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with tellurium |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with tellurium | | | | plot | plot |
-| 19 | vcell
https://github.com/virtualcell/vcell
|
None |
FAIL |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML', 'BNGL', 'SED-ML'] are compatible with vcell |
pass
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML', 'BNGL', 'SED-ML'] are compatible with vcell | | | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/vcell' returned non-zero exit status 1``` | | |
-| 20 | xpp
https://docs.biosimulators.org/Biosimulators_XPP/
|
FAIL |
FAIL |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp |
FAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp | MNFE
ModuleNotFoundError | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/xpp' returned non-zero exit status 1``` | | |
\ No newline at end of file
+| | Engine | Compatibility | pass / FAIL (R) | pass / FAIL (L) | Error (R) | Error (L) | Type (R) | d1 (R) | d1 (L) |
+|---:|:-------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------|:------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------|:-----------------------------------------------------|:----------------------------------------------------|
+| 0 | amici
https://docs.biosimulators.org/Biosimulators_AMICI/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with amici | ✅ PASS | ✅ PASS | | | | plot | plot |
+| 1 | bionetgen
https://docs.biosimulators.org/Biosimulators_BioNetGen/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen | ⚠ XFAIL | ⚠ XFAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Language for model `net1` is not supported.
- Model language `urn:sedml:language:sbml` is not supported. Models must be in BNGL format (e.g., `sed:model/@language` must match `^urn:sedml:language:bngl(\.$)` such as `urn:sedml:language:bngl`). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/bionetgen' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 2 | boolnet
https://docs.biosimulators.org/Biosimulators_BoolNet/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet | ⚠ XFAIL | ⚠ XFAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Simulation `sim1` is invalid.
- Number of points (20000) must be equal to the difference between the output end (200.0) and start times (0.0). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/boolnet' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 3 | brian2
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with brian2. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with brian2 | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/brian2' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 4 | cbmpy
https://docs.biosimulators.org/Biosimulators_CBMPy/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy | ❌ FAIL | ❌ FAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
UniformTimeCourseSimulation `sim1` is not supported.
- Simulation sim1 of type `UniformTimeCourseSimulation` is not supported. Simulation must be an instance of one of the following:
- SteadyStateSimulation | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/cbmpy' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 5 | cobrapy
https://docs.biosimulators.org/Biosimulators_COBRApy/
Only allows steady state simulations | ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy | ❌ FAIL | ❌ FAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
UniformTimeCourseSimulation `sim1` is not supported.
- Simulation sim1 of type `UniformTimeCourseSimulation` is not supported. Simulation must be an instance of one of the following:
- SteadyStateSimulation | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/cobrapy' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 6 | copasi
https://docs.biosimulators.org/Biosimulators_COPASI/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with copasi | ✅ PASS | ✅ PASS | | | | plot | plot |
+| 7 | gillespy2
https://docs.biosimulators.org/Biosimulators_GillesPy2/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with gillespy2 | ✅ PASS | ✅ PASS | | | | plot | plot |
+| 8 | ginsim
https://docs.biosimulators.org/Biosimulators_GINsim/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim | ⚠ XFAIL | ⚠ XFAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Simulation `sim1` is invalid.
- The interval between the output start and time time must be an integer multiple of the number of steps, not `0.01`:
Output start time: 0.0
Output end time: 200.0
Number of steps: 20000 | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/ginsim' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 9 | libsbmlsim
https://docs.biosimulators.org/Biosimulators_LibSBMLSim/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with libsbmlsim | ✅ PASS | ✅ PASS | | | | plot | plot |
+| 10 | masspy
https://docs.biosimulators.org/Biosimulators_MASSpy/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy | ❌ FAIL | ❌ FAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Something went wrong reading the SBML model. Most likely the SBML model is not valid. Please check that your model is valid using the `mass.io.sbml.validate_sbml_model` function or via the online validator at http://sbml.org/validator .
`(model, errors) = validate_sbml_model(filename)`
If the model is valid and cannot be read please open an issue at https://github.com/SBRG/masspy/issues . | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/masspy' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 11 | netpyne
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with netpyne. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with netpyne | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/netpyne' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 12 | neuron
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with neuron. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with neuron | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/neuron' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 13 | opencor
https://docs.biosimulators.org/Biosimulators_OpenCOR/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/opencor' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 14 | pyneuroml
https://docs.biosimulators.org/Biosimulators_pyNeuroML/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with pyneuroml. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with pyneuroml | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/pyneuroml' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 15 | pysces
https://docs.biosimulators.org/Biosimulators_PySCeS/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces | ❌ FAIL | ❌ FAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Model at /tmp/tmp1bq_quiv/./LEMS_NML2_Ex9_FN.sbml could not be imported:
File /tmp/tmp1bq_quiv/./LEMS_NML2_Ex9_FN.sbml.xml does not exist | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/pysces' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 16 | rbapy
https://docs.biosimulators.org/Biosimulators_RBApy/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy | ⚠ XFAIL | ⚠ XFAIL | Details
The COMBINE/OMEX did not execute successfully:
The SED document did not execute successfully:
Language for model `net1` is not supported.
- Model language `urn:sedml:language:sbml` is not supported. Models must be in RBA format (e.g., `sed:model/@language` must match `^urn:sedml:language:rba(\.$)` such as `urn:sedml:language:rba`). | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/rbapy' returned non-zero exit status 1``` | CAEE
CombineArchiveExecutionError | plot | plot |
+| 17 | smoldyn
https://smoldyn.readthedocs.io/en/latest/python/api.html#sed-ml-combine-biosimulators-api
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. ['Smoldyn', 'SED-ML'] are compatible with smoldyn | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/smoldyn' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
+| 18 | tellurium
https://docs.biosimulators.org/Biosimulators_tellurium/
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with tellurium | ✅ PASS | ✅ PASS | | | | plot | plot |
+| 19 | vcell
https://github.com/virtualcell/vcell
| ✅ PASS
The file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML', 'BNGL', 'SED-ML'] are compatible with vcell | | ❌ FAIL | | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/vcell' returned non-zero exit status 1``` | | | |
+| 20 | xpp
https://docs.biosimulators.org/Biosimulators_XPP/
| ⚠ XFAIL
The file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp | ⚠ XFAIL | ⚠ XFAIL | Details
No module named 'libsbml' | Details
```Command '-i /root/in/LEMS_NML2_Ex9_FN_missing_xmlns.omex -o /root/out' in image 'ghcr.io/biosimulators/xpp' returned non-zero exit status 1``` | MNFE
ModuleNotFoundError | | |
\ No newline at end of file
diff --git a/SBML/tests/test_biosimulators_local.py b/SBML/tests/test_biosimulators_local.py
index d3ddf1e5..0f59f7a5 100644
--- a/SBML/tests/test_biosimulators_local.py
+++ b/SBML/tests/test_biosimulators_local.py
@@ -12,9 +12,6 @@
import utils
import argparse
-engines = utils.engines
-types_dict = utils.types_dict
-
# Save the current working directory
cwd = os.getcwd()
print('Current working directory:', cwd)
@@ -44,5 +41,5 @@
results_local = utils.run_biosimulators_locally(sedml_file_name=sedml_file_name,
sbml_file_name=sbml_file_name,
d1_plots_local_dir=d1_plots_local_dir,
- engines=engines, test_folder=test_folder)
+ test_folder=test_folder)
\ No newline at end of file
diff --git a/SBML/tests/test_biosimulators_remote.py b/SBML/tests/test_biosimulators_remote.py
index 75b2b3ba..20896eb7 100644
--- a/SBML/tests/test_biosimulators_remote.py
+++ b/SBML/tests/test_biosimulators_remote.py
@@ -12,9 +12,6 @@
import utils
import argparse
-engines = utils.engines
-types_dict = utils.types_dict
-
# Save the current working directory
cwd = os.getcwd()
print('Current working directory:', cwd)
@@ -44,5 +41,5 @@
results_remote = utils.run_biosimulators_remotely(sedml_file_name=sedml_file_name,
sbml_file_name=sbml_file_name,
d1_plots_remote_dir=d1_plots_remote_dir,
- engines=engines, test_folder=test_folder)
+ test_folder=test_folder)
\ No newline at end of file
diff --git a/SBML/tests/test_compatibility_biosimulators.py b/SBML/tests/test_compatibility_biosimulators.py
index 83ce9305..07bafd33 100644
--- a/SBML/tests/test_compatibility_biosimulators.py
+++ b/SBML/tests/test_compatibility_biosimulators.py
@@ -12,8 +12,8 @@
import utils
import argparse
-engines = utils.engines
-types_dict = utils.types_dict
+engines = utils.ENGINES
+types_dict = utils.TYPES
# Save the current working directory
cwd = os.getcwd()
@@ -46,4 +46,4 @@
sbml_file_name,
d1_plots_remote_dir,
d1_plots_local_dir,
- engines=engines, test_folder=test_folder)
\ No newline at end of file
+ test_folder=test_folder)
\ No newline at end of file
diff --git a/SBML/tests/test_creation_combined_results_table.py b/SBML/tests/test_creation_combined_results_table.py
index d3f83266..0db286c7 100644
--- a/SBML/tests/test_creation_combined_results_table.py
+++ b/SBML/tests/test_creation_combined_results_table.py
@@ -4,7 +4,7 @@
import utils
import argparse
-engines = utils.engines
+engines = utils.ENGINES
# Save the current working directory
cwd = os.getcwd()
@@ -40,7 +40,6 @@
sbml_file_name,
d1_plots_local_dir,
d1_plots_remote_dir,
- engines=engines,
test_folder='tests')
print(results_table)
diff --git a/utils/__init__.py b/utils/__init__.py
index ec35c6de..e6dbf573 100644
--- a/utils/__init__.py
+++ b/utils/__init__.py
@@ -22,14 +22,14 @@
import pandas as pd
from requests.exceptions import HTTPError
-engines = {
+ENGINES = {
'amici': {
'formats': [('sbml', 'sedml')],
'url': 'https://docs.biosimulators.org/Biosimulators_AMICI/',
'status': ""
},
'brian2': {
- 'formats': [('nml', 'sedml'), ('lems', 'sedml'), ('sbml', 'sedml')],
+ 'formats': [('nml', 'sedml'), ('lems', 'sedml')],
'url': 'https://docs.biosimulators.org/Biosimulators_pyNeuroML/',
'status': ""
},
@@ -79,7 +79,7 @@
'status': ""
},
'netpyne': {
- 'formats': [('sbml', 'sedml')],
+ 'formats': [('nml', 'sedml'), ('lems', 'sedml')],
'url': 'https://docs.biosimulators.org/Biosimulators_pyNeuroML/',
'status': ""
},
@@ -109,7 +109,7 @@
'status': ""
},
'smoldyn': {
- 'formats': ['unclear'],
+ 'formats': [('smoldyn', 'sedml')],
'url': 'https://smoldyn.readthedocs.io/en/latest/python/api.html#sed-ml-combine-biosimulators-api',
'status': ""
},
@@ -131,7 +131,7 @@
}
-types_dict = {
+TYPES = {
'sbml':'SBML',\
'sedml':'SED-ML',\
'nml':'NeuroML',\
@@ -145,6 +145,13 @@
'xml':'XML'\
}
+# define the column headers for the markdown table
+ERROR = 'Error'
+PASS_FAIL = 'pass / FAIL'
+TYPE = 'Type'
+COMPAT = 'Compatibility'
+D1 = 'd1'
+ENGINE = 'Engine'
#define error categories for detailed error counting per engine
# (currently only tellurium)
@@ -332,7 +339,7 @@ def find_files(directory, extension):
def move_d1_files(file_paths, plot_dir='d1_plots'):
for fpath in file_paths:
# find engine.keys() in the file path and asign to engine
- engine = next((e for e in engines.keys() if e in fpath), 'unknown')
+ engine = next((e for e in ENGINES.keys() if e in fpath), 'unknown')
new_file_path = os.path.join(plot_dir, f'{engine}_{os.path.basename(fpath)}')
if not os.path.exists(plot_dir): os.makedirs(plot_dir, exist_ok=True)
if os.path.exists(new_file_path): os.remove(new_file_path)
@@ -361,14 +368,14 @@ def find_file_in_dir(file_name, directory):
# write definition to create d1 plots dict
-def d1_plots_dict(engines=engines, d1_plots_path='d1_plots'):
+def d1_plots_dict(d1_plots_path='d1_plots'):
"""
Create a dictionary with engine names as keys and d1 plot paths as values.
"""
d1_plots = find_files(d1_plots_path, '.pdf')
# to fix broken links in output table after changing the file structure, remove the first two parts of the path
d1_plots = [os.path.join(*Path(d1_plot).parts[1:]) for d1_plot in d1_plots]
- d1_plots_dict = {e: d1_plot for e in engines.keys() for d1_plot in d1_plots if e in d1_plot}
+ d1_plots_dict = {e: d1_plot for e in ENGINES.keys() for d1_plot in d1_plots if e in d1_plot}
return d1_plots_dict
@@ -433,19 +440,19 @@ def display_error_message(error_message):
display_markdown(f'{error_message}', raw=True)
return error_message
-def check_file_compatibility_test(engine, types_dict, model_filepath, experiment_filepath):
+def check_file_compatibility_test(engine, model_filepath, experiment_filepath):
'''
Check if the file extensions suggest the file types are compatible with the engine.
This is done by comparing the file extensions of the model and experiment files with the file types supported by the engine.
For SED-ML files, the expected file extension is '.sedml'. For SBML files, the expected file extension is '.sbml'.
'''
input_filetypes_tuple = get_filetypes(model_filepath, experiment_filepath)
- engine_filetypes_tuple_list = engines[engine]['formats']
+ engine_filetypes_tuple_list = ENGINES[engine]['formats']
flat_engine_filetypes_tuple_list = [item for sublist in engine_filetypes_tuple_list for item in sublist if sublist != 'unclear']
- compatible_filetypes = [types_dict[i] for i in flat_engine_filetypes_tuple_list if i in list(types_dict.keys())]
+ compatible_filetypes = [TYPES[i] for i in flat_engine_filetypes_tuple_list if i in list(TYPES.keys())]
if input_filetypes_tuple in engine_filetypes_tuple_list:
- file_types = [types_dict[i] for i in input_filetypes_tuple]
+ file_types = [TYPES[i] for i in input_filetypes_tuple]
return 'pass', (f"The file extensions {input_filetypes_tuple} suggest the input file types are '{file_types}'. {compatible_filetypes} are compatible with {engine}")
if 'xml' in input_filetypes_tuple:
return 'unsure', (f"The file extensions of the input files are '{input_filetypes_tuple}'. These may be compatible with {engine}. {compatible_filetypes} are compatible with {engine}")
@@ -1070,68 +1077,77 @@ def unzip_file(file_path, output_dir=None):
return file_path
-def create_results_table(results, types_dict, sbml_filepath, sedml_filepath, engines, output_dir):
+def create_results_table(results, sbml_filepath, sedml_filepath, output_dir):
"""
Create a markdown table of the results.
- Input: results, types_dict, sbml_filepath, sedml_filepath, engines, output_dir
+ Input: results, TYPES, sbml_filepath, sedml_filepath, ENGINES, output_dir
Output: results_md_table
"""
- link_green_square = "https://via.placeholder.com/15/00dd00/00dd00.png"
- link_orange_square = "https://via.placeholder.com/15/ec9706/ec9706.png"
- link_red_square = "https://via.placeholder.com/15/dd0000/dd0000.png"
+ pass_html = "✅ PASS"
+ fail_html = "❌ FAIL"
+ warning_html = "⚠ WARNING"
+ xfail_html = "❎"
+ xfail_html = "⚠ XFAIL"
# Create a table of the results
results_table = pd.DataFrame.from_dict(results).T
# if list is three elements
if results_table.shape[1] == 3:
- results_table.columns = ['pass / FAIL', 'Error', 'Type']
+ results_table.columns = [PASS_FAIL, ERROR, TYPE]
elif results_table.shape[1] == 2:
- results_table.columns = ['pass / FAIL', 'Error']
+ results_table.columns = [PASS_FAIL, ERROR]
- results_table.index.name = 'Engine'
+ results_table.index.name = ENGINE
results_table.reset_index(inplace=True)
# Error
- results_table['Error'] = results_table.apply(lambda x: None if x['pass / FAIL'] == x['Error'] else x['Error'], axis=1)
- results_table['pass / FAIL'] = results_table['pass / FAIL'].replace('other', 'FAIL')
-
- results_table['Error'] = results_table['Error'].apply(lambda x: ansi_to_html(x))
- results_table['Error'] = results_table['Error'].apply(lambda x: collapsible_content(x))
-
- # compatibility_message
- results_table['Compat'] = results_table['Engine'].apply(lambda x: check_file_compatibility_test(x, types_dict, sbml_filepath, sedml_filepath))
- results_table['Compat'] = results_table['Compat'].apply(lambda x: collapsible_content(x[1], title=x[0]))
- results_table['Compat'] = results_table['Compat'].apply(lambda x:
- f'
{x}' if 'FAIL' in x else
- f'{x}' if 'xml' in x or 'unsure' in x else
- f'
{x}' if 'pass' in x else x)
- # pass / FAIL
- results_table['pass / FAIL'] = results_table['pass / FAIL'].apply(lambda x: f'\
-
{x}' if x == 'FAIL' \
- else f'
{x}')
+ results_table[ERROR] = results_table.apply(lambda x: None if x[PASS_FAIL] == x[ERROR] else x[ERROR], axis=1)
+ results_table[PASS_FAIL] = results_table[PASS_FAIL].replace('other', 'FAIL')
+
+ results_table[ERROR] = results_table[ERROR].apply(lambda x: ansi_to_html(x))
+ results_table[ERROR] = results_table[ERROR].apply(lambda x: collapsible_content(x))
+ results_table[PASS_FAIL] = results_table[PASS_FAIL].apply(lambda x: f'{fail_html}' if x == 'FAIL' \
+ else f'{pass_html}' if x == 'pass' else x)
+
# d1 plot clickable link
- results_table['d1'] = results_table['Engine'].apply(lambda x: d1_plots_dict(engines, output_dir).get(x, None))
- results_table['d1'] = results_table['d1'].apply(lambda x: create_hyperlink(x,title='plot'))
-
- # if Type is in the table add message with collapsible content
- if 'Type' in results_table.columns:
- results_table['Type'] = results_table['Type'].apply(lambda x: collapsible_content(x,"".join(re.findall(r'[A-Z]', x))))
+ results_table[D1] = results_table[ENGINE].apply(lambda x: d1_plots_dict(output_dir).get(x, None))
+ results_table[D1] = results_table[D1].apply(lambda x: create_hyperlink(x,title='plot'))
+ if TYPE in results_table.columns:
+ results_table[TYPE] = results_table[TYPE].apply(lambda x: collapsible_content(x,"".join(re.findall(r'[A-Z]', x))))
- results_table['Engine'] = results_table['Engine'].apply(lambda x: collapsible_content(f'{engines[x]["url"]}
{engines[x]["status"]}', x))
+ for e in ENGINES.keys():
+ compatibility_content = check_file_compatibility_test(e, sbml_filepath, sedml_filepath)
- return results_table
+ print(e, compatibility_content[0] )
+ if compatibility_content[0] == 'pass':
+ results_table.loc[results_table[ENGINE] == e, COMPAT] = collapsible_content(compatibility_content[1], title=f'{pass_html}')
+ elif compatibility_content[0] == 'unsure':
+ results_table.loc[results_table[ENGINE] == e, COMPAT] = collapsible_content(compatibility_content[1], title=f'{warning_html}')
+ else:
+ results_table.loc[results_table[ENGINE] == e, COMPAT] = collapsible_content(compatibility_content[1], title=f'{fail_html}')
+
+ # add xfail to engines that do not support sbml
+ sbml_incompatible_ENGINES = [e for e in ENGINES.keys() if 'sbml' not in ENGINES[e]['formats'][0]]
+ for e in sbml_incompatible_ENGINES:
+ compatibility_content = check_file_compatibility_test(e, sbml_filepath, sedml_filepath)
+ results_table.loc[results_table[ENGINE] == e, COMPAT] = collapsible_content(compatibility_content[1], title=f'{xfail_html}')
+ results_table.loc[results_table[ENGINE] == e, PASS_FAIL] = f'{xfail_html}'
+
+
+ # add status message defined in ENGINES
+ results_table[ENGINE] = results_table[ENGINE].apply(lambda x: collapsible_content(f'{ENGINES[x]["url"]}
{ENGINES[x]["status"]}', x))
+ return results_table
def run_biosimulators_remotely(sedml_file_name,
sbml_file_name,
- d1_plots_remote_dir,
- engines=engines,
+ d1_plots_remote_dir,
test_folder='tests'):
""" run with directory pointing towards the location of the sedml and sbml files"""
@@ -1140,7 +1156,7 @@ def run_biosimulators_remotely(sedml_file_name,
remote_output_dir = os.path.join(test_folder, remote_output_dir)
download_links_dict = dict()
- for e in engines.keys():
+ for e in ENGINES.keys():
download_link = run_biosimulators_remote(e, sedml_file_name, sbml_file_name)
download_links_dict[e] = download_link
@@ -1190,14 +1206,13 @@ def run_biosimulators_remotely(sedml_file_name,
def run_biosimulators_locally(sedml_file_name,
sbml_file_name,
d1_plots_local_dir,
- engines=engines,
test_folder='tests'):
results_local = {}
output_folder = 'local_results'
local_output_dir = os.path.join(test_folder, output_folder)
- for e in engines.keys():
+ for e in ENGINES.keys():
print('Running ' + e)
local_output_dir_e = os.path.abspath(os.path.join(local_output_dir, e))
print(local_output_dir_e)
@@ -1216,37 +1231,48 @@ def run_biosimulators_locally(sedml_file_name,
return results_local
+
def create_combined_results_table(results_remote,
results_local,
sedml_file_name,
sbml_file_name,
d1_plots_local_dir,
d1_plots_remote_dir,
- engines=engines,
test_folder='tests'):
-
- results_table_remote = create_results_table(results_remote, types_dict, sbml_file_name, sedml_file_name, engines, d1_plots_remote_dir)
- results_table_local = create_results_table(results_local, types_dict, sbml_file_name, sedml_file_name, engines, d1_plots_local_dir)
-
- # rename cols to distinguish between local and remote results except for Engine column
- results_table_remote.columns = [str(col) + ' (R)' if col != 'Engine' else str(col) for col in results_table_remote.columns]
- results_table_local.columns = [str(col) + ' (L)' if col != 'Engine' else str(col) for col in results_table_local.columns]
- # combine remote and local results
- combined_results = pd.merge(results_table_remote, results_table_local, on='Engine', how='outer')
- combined_results = combined_results.reindex(columns=['Engine'] + sorted(combined_results.columns[1:]))
-
- cols_order = ['Engine', 'pass / FAIL (R)', 'pass / FAIL (L)',\
- 'Compat (R)', 'Compat (L)', \
- 'Type (R)', \
- 'Error (R)', 'Error (L)', \
- 'd1 (R)', 'd1 (L)']
+ suffix_remote = ' (R)'
+ suffix_local = ' (L)'
+
+ # Create results tables for remote and local results
+ results_table_remote = create_results_table(results_remote, sbml_file_name, sedml_file_name, d1_plots_remote_dir)
+ results_table_local = create_results_table(results_local, sbml_file_name, sedml_file_name, d1_plots_local_dir)
+
+ # Rename columns to distinguish between local and remote results except for Engine column
+ results_table_remote.columns = [f"{col}{suffix_remote}" if col != ENGINE else col for col in results_table_remote.columns]
+ results_table_local.columns = [f"{col}{suffix_local}" if col != ENGINE else col for col in results_table_local.columns]
+
+ # Combine remote and local results
+ combined_results = pd.merge(results_table_remote, results_table_local, on=ENGINE, how='outer')
+ combined_results = combined_results.reindex(columns=[ENGINE] + sorted(combined_results.columns[1:]))
+ combined_results[COMPAT] = combined_results[f"{COMPAT}{suffix_remote}"]
+ combined_results.drop(columns=[f"{COMPAT}{suffix_remote}", f"{COMPAT}{suffix_local}"], inplace=True)
+
+ # Define the order of columns
+ cols_order = [
+ ENGINE,
+ COMPAT,
+ f"{PASS_FAIL}{suffix_remote}", f"{PASS_FAIL}{suffix_local}",
+ f"{ERROR}{suffix_remote}", f"{ERROR}{suffix_local}",
+ f"{TYPE}{suffix_remote}",
+ f"{D1}{suffix_remote}", f"{D1}{suffix_local}"
+ ]
combined_results = combined_results[cols_order]
+ # Save the results to a Markdown file with utf-8 encoding
path_to_results = os.path.join(test_folder, 'results_compatibility_biosimulators.md')
print('Saving results to:', path_to_results)
- with open(path_to_results, 'w') as f:
+ with open(path_to_results, 'w', encoding='utf-8') as f:
f.write(combined_results.to_markdown())
print('Number of columns in md table:', len(combined_results.columns))
@@ -1260,17 +1286,17 @@ def run_biosimulators_remotely_and_locally(sedml_file_name,
sbml_file_name,
d1_plots_remote_dir,
d1_plots_local_dir,
- engines=engines, test_folder='tests'):
+ test_folder='tests'):
results_remote = run_biosimulators_remotely(sedml_file_name=sedml_file_name,
sbml_file_name=sbml_file_name,
d1_plots_remote_dir=d1_plots_remote_dir,
- engines=engines, test_folder=test_folder)
+ test_folder=test_folder)
results_local = run_biosimulators_locally(sedml_file_name=sedml_file_name,
sbml_file_name=sbml_file_name,
d1_plots_local_dir=d1_plots_local_dir,
- engines=engines, test_folder=test_folder)
+ test_folder=test_folder)
results_table = create_combined_results_table(results_remote,
results_local,
@@ -1278,7 +1304,6 @@ def run_biosimulators_remotely_and_locally(sedml_file_name,
sbml_file_name=sbml_file_name,
d1_plots_local_dir=d1_plots_local_dir,
d1_plots_remote_dir=d1_plots_remote_dir,
- engines=engines,
test_folder=test_folder)
return results_table
\ No newline at end of file