"""
Testing of SED-ML data support, i.e., DataDescription.
"""
import importlib
import os
from pathlib import Path
import libsedml
from sbmlsim.combine.sedml.data import DataDescriptionParser
from sbmlsim.combine.sedml.io import check_sedml, read_sedml
from sbmlsim.test import DATA_DIR
# ---------------------------------------------------------------------------------
[docs]BASE_DIR = DATA_DIR / "sedml" / "data"
[docs]SOURCE_CSV = BASE_DIR / "oscli.csv"
[docs]SOURCE_TSV = BASE_DIR / "oscli.tsv"
[docs]SEDML_READ_CSV = BASE_DIR / "reading-oscli-csv.xml"
[docs]SEDML_READ_TSV = BASE_DIR / "reading-oscli-tsv.xml"
[docs]SEDML_READ_NUML = BASE_DIR / "reading-oscli-numl.xml"
[docs]SEDML_READ_NUML_1D = BASE_DIR / "reading-numlData1D.xml"
[docs]SEDML_READ_NUML_2D = BASE_DIR / "reading-numlData2D.xml"
[docs]SEDML_READ_NUML_2DRC = BASE_DIR / "reading-numlData2DRC.xml"
[docs]OMEX_PLOT_CSV = BASE_DIR / "omex" / "plot_csv.omex"
[docs]OMEX_PLOT_CSV_WITH_MODEL = BASE_DIR / "omex", "plot_csv_with_model.omex"
[docs]OMEX_PLOT_NUML = BASE_DIR / "omex" / "plot_numl.omex"
[docs]OMEX_PLOT_NUML_WITH_MODEL = BASE_DIR / "omex", "plot_numl_with_model.omex"
[docs]SOURCE_CSV_PARAMETERS = BASE_DIR / "parameters.csv"
[docs]SEDML_CSV_PARAMETERS = BASE_DIR / "parameter-from-data-csv.xml"
[docs]OMEX_CSV_PARAMETERS = BASE_DIR / "omex", "parameter_from_data_csv.omex"
[docs]OMEX_CSV_JWS_ADLUNG2017_FIG2G = BASE_DIR / "omex" / "jws_adlung2017_fig2g.omex"
# ---------------------------------------------------------------------------------
[docs]def test_load_csv():
data = DataDescriptionParser._load_csv(SOURCE_CSV)
assert data is not None
assert data.shape[0] == 200
assert data.shape[1] == 3
[docs]def test_load_tsv():
data = DataDescriptionParser._load_tsv(SOURCE_TSV)
assert data is not None
assert data.shape[0] == 200
assert data.shape[1] == 3
[docs]def test_load_csv_parameters():
data = DataDescriptionParser._load_csv(SOURCE_CSV_PARAMETERS)
assert data is not None
assert data.shape[0] == 10
assert data.shape[1] == 1
[docs]def _parseDataDescriptions(sedml_path):
"""Test helper functions.
Tries to parse all DataDescriptions in the SED-ML file.
"""
importlib.reload(libsedml)
print("parseDataDescriptions:", sedml_path)
# load sedml document
sedml_path_str = sedml_path
if isinstance(sedml_path, Path):
sedml_path_str = str(sedml_path)
assert os.path.exists(sedml_path_str)
doc_sedml = libsedml.readSedMLFromFile(sedml_path_str)
check_sedml(doc_sedml)
# parse DataDescriptions
list_dd = doc_sedml.getListOfDataDescriptions()
# print(list_dd)
# print(len(list_dd))
assert len(list_dd) > 0
for dd in list_dd:
print(type(dd))
data_sources = DataDescriptionParser.parse(dd, workingDir=BASE_DIR)
assert data_sources is not None
assert type(data_sources) == dict
assert len(data_sources) > 0
return data_sources
[docs]def test_parse_csv():
data_sources = _parseDataDescriptions(SEDML_READ_CSV)
assert "dataTime" in data_sources
assert "dataS1" in data_sources
assert len(data_sources["dataTime"]) == 200
assert len(data_sources["dataS1"]) == 200
[docs]def test_parse_csv_parameters():
data_sources = _parseDataDescriptions(SEDML_CSV_PARAMETERS)
assert "dataIndex" in data_sources
assert "dataMu" in data_sources
assert len(data_sources["dataIndex"]) == 10
assert len(data_sources["dataMu"]) == 10
[docs]def test_parse_tsv():
data_sources = _parseDataDescriptions(SEDML_READ_TSV)
assert "dataTime" in data_sources
assert "dataS1" in data_sources
assert len(data_sources["dataTime"]) == 200
assert len(data_sources["dataS1"]) == 200
[docs]def test_parse_numl():
data_sources = _parseDataDescriptions(SEDML_READ_NUML)
assert "dataTime" in data_sources
assert "dataS1" in data_sources
assert len(data_sources["dataTime"]) == 200
assert len(data_sources["dataS1"]) == 200
[docs]def test_parse_numl_1D():
data_sources = _parseDataDescriptions(SEDML_READ_NUML_1D)
assert data_sources is not None
assert len(data_sources) == 6
assert "data_s_glu" in data_sources
assert "data_s_pyr" in data_sources
assert "data_s_acetate" in data_sources
assert "data_s_acetald" in data_sources
assert "data_s_EtOH" in data_sources
assert "data_x" in data_sources
assert len(data_sources["data_s_glu"]) == 1
[docs]def test_parse_numl_2D():
data_sources = _parseDataDescriptions(SEDML_READ_NUML_2D)
assert data_sources is not None
assert len(data_sources) == 4
assert "dataBL" in data_sources
assert "dataB" in data_sources
assert "dataS1" in data_sources
assert "dataTime" in data_sources
assert len(data_sources["dataB"]) == 6
[docs]def test_parse_numl_2DRC():
data_sources = _parseDataDescriptions(SEDML_READ_NUML_2DRC)
assert data_sources is not None
assert len(data_sources) == 4
assert "dataBL" in data_sources
assert "dataB" in data_sources
assert "dataS1" in data_sources
assert "dataTime" in data_sources
assert len(data_sources["dataB"]) == 6