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 |
amicihttps://docs.biosimulators.org/Biosimulators_AMICI/
| pass | pass |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with amici
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with amici
| | | | plot | plot | -| 1 |
bionetgenhttps://docs.biosimulators.org/Biosimulators_BioNetGen/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
boolnethttps://docs.biosimulators.org/Biosimulators_BoolNet/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
brian2https://docs.biosimulators.org/Biosimulators_pyNeuroML/
| FAIL | FAIL |
passThe 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
|
passThe 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
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
cbmpyhttps://docs.biosimulators.org/Biosimulators_CBMPy/
| FAIL | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
cobrapyhttps://docs.biosimulators.org/Biosimulators_COBRApy/
Only allows steady state simulations
| FAIL | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
copasihttps://docs.biosimulators.org/Biosimulators_COPASI/
| pass | pass |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with copasi
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with copasi
| | | | plot | plot | -| 7 |
gillespy2https://docs.biosimulators.org/Biosimulators_GillesPy2/
| pass | pass |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with gillespy2
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with gillespy2
| | | | plot | plot | -| 8 |
ginsimhttps://docs.biosimulators.org/Biosimulators_GINsim/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
libsbmlsimhttps://docs.biosimulators.org/Biosimulators_LibSBMLSim/
| pass | pass |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with libsbmlsim
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with libsbmlsim
| | | | plot | plot | -| 10 |
masspyhttps://docs.biosimulators.org/Biosimulators_MASSpy/
| FAIL | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
netpynehttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
| FAIL | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with netpyne
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with netpyne
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
neuronhttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with neuron. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with neuron
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with neuron. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with neuron
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
opencorhttps://docs.biosimulators.org/Biosimulators_OpenCOR/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
pyneuromlhttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with pyneuroml. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with pyneuroml
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with pyneuroml. ['NeuroML', 'SED-ML', 'LEMS', 'SED-ML'] are compatible with pyneuroml
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
pysceshttps://docs.biosimulators.org/Biosimulators_PySCeS/
| FAIL | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
rbapyhttps://docs.biosimulators.org/Biosimulators_RBApy/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy
|
CAEECombineArchiveExecutionError
|
DetailsThe 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 |
smoldynhttps://smoldyn.readthedocs.io/en/latest/python/api.html#sed-ml-combine-biosimulators-api
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. [] are compatible with smoldyn
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. [] are compatible with smoldyn
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
telluriumhttps://docs.biosimulators.org/Biosimulators_tellurium/
| pass | pass |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with tellurium
|
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with tellurium
| | | | plot | plot | -| 19 |
vcellhttps://github.com/virtualcell/vcell
| None | FAIL |
passThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML', 'BNGL', 'SED-ML'] are compatible with vcell
|
passThe 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 |
xpphttps://docs.biosimulators.org/Biosimulators_XPP/
| FAIL | FAIL |
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp
|
FAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp
|
MNFEModuleNotFoundError
|
DetailsNo 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 |
amicihttps://docs.biosimulators.org/Biosimulators_AMICI/
|
✅ PASSThe 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 |
bionetgenhttps://docs.biosimulators.org/Biosimulators_BioNetGen/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with bionetgen. ['BNGL', 'SED-ML'] are compatible with bionetgen
| ⚠ XFAIL | ⚠ XFAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 2 |
boolnethttps://docs.biosimulators.org/Biosimulators_BoolNet/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with boolnet. ['SBML-qual', 'SED-ML'] are compatible with boolnet
| ⚠ XFAIL | ⚠ XFAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 3 |
brian2https://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
⚠ XFAILThe 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 |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 4 |
cbmpyhttps://docs.biosimulators.org/Biosimulators_CBMPy/
|
✅ PASSThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cbmpy
| ❌ FAIL | ❌ FAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 5 |
cobrapyhttps://docs.biosimulators.org/Biosimulators_COBRApy/
Only allows steady state simulations
|
✅ PASSThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with cobrapy
| ❌ FAIL | ❌ FAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 6 |
copasihttps://docs.biosimulators.org/Biosimulators_COPASI/
|
✅ PASSThe 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 |
gillespy2https://docs.biosimulators.org/Biosimulators_GillesPy2/
|
✅ PASSThe 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 |
ginsimhttps://docs.biosimulators.org/Biosimulators_GINsim/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with ginsim. ['SBML-qual', 'SED-ML'] are compatible with ginsim
| ⚠ XFAIL | ⚠ XFAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 9 |
libsbmlsimhttps://docs.biosimulators.org/Biosimulators_LibSBMLSim/
|
✅ PASSThe 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 |
masspyhttps://docs.biosimulators.org/Biosimulators_MASSpy/
|
✅ PASSThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with masspy
| ❌ FAIL | ❌ FAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 11 |
netpynehttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
⚠ XFAILThe 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 |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 12 |
neuronhttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
⚠ XFAILThe 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 |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 13 |
opencorhttps://docs.biosimulators.org/Biosimulators_OpenCOR/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with opencor. ['CellML', 'SED-ML'] are compatible with opencor
| ⚠ XFAIL | ⚠ XFAIL |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 14 |
pyneuromlhttps://docs.biosimulators.org/Biosimulators_pyNeuroML/
|
⚠ XFAILThe 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 |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 15 |
pysceshttps://docs.biosimulators.org/Biosimulators_PySCeS/
|
✅ PASSThe file extensions ('sbml', 'sedml') suggest the input file types are '['SBML', 'SED-ML']'. ['SBML', 'SED-ML'] are compatible with pysces
| ❌ FAIL | ❌ FAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 16 |
rbapyhttps://docs.biosimulators.org/Biosimulators_RBApy/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with rbapy. ['RBApy', 'SED-ML'] are compatible with rbapy
| ⚠ XFAIL | ⚠ XFAIL |
DetailsThe 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```
|
CAEECombineArchiveExecutionError
| plot | plot | +| 17 |
smoldynhttps://smoldyn.readthedocs.io/en/latest/python/api.html#sed-ml-combine-biosimulators-api
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with smoldyn. ['Smoldyn', 'SED-ML'] are compatible with smoldyn
| ⚠ XFAIL | ⚠ XFAIL |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | +| 18 |
telluriumhttps://docs.biosimulators.org/Biosimulators_tellurium/
|
✅ PASSThe 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 |
vcellhttps://github.com/virtualcell/vcell
|
✅ PASSThe 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 |
xpphttps://docs.biosimulators.org/Biosimulators_XPP/
|
⚠ XFAILThe file extensions ('sbml', 'sedml') suggest the input file types are not compatibe with xpp. ['XPP', 'SED-ML'] are compatible with xpp
| ⚠ XFAIL | ⚠ XFAIL |
DetailsNo 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```
|
MNFEModuleNotFoundError
| | | \ 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