diff --git a/ersilia/publish/test.py b/ersilia/publish/test.py index ae1ca9e30..843892fc2 100644 --- a/ersilia/publish/test.py +++ b/ersilia/publish/test.py @@ -1,40 +1,34 @@ # TODO adapt to input-type agnostic. For now, it works only with Compound input types. -from collections import defaultdict -from sklearn.metrics import mean_squared_error -import numpy as np -import time -from datetime import datetime -import os import json -import tempfile -import types +import os import subprocess -import shutil +import tempfile import time -import re -import numpy as np -from scipy.stats import spearmanr +import types +from collections import defaultdict +from datetime import datetime +import numpy as np from ersilia.utils.conda import SimpleConda +from .. import ErsiliaBase, ErsiliaModel, throw_ersilia_exception from ..cli import echo +from ..core.session import Session +from ..default import EOS, INFORMATION_FILE from ..io.input import ExampleGenerator -from .. import ErsiliaBase -from .. import throw_ersilia_exception -from .. import ErsiliaModel from ..utils.exceptions_utils import test_exceptions as texc from ..utils.logging import make_temp_dir from ..utils.terminal import run_command_check_output -from ..core.session import Session -from ..default import INFORMATION_FILE -from ..default import EOS - +# Check if we have the required imports in the environment +MISSING_PACKAGES = False try: + from scipy.stats import spearmanr + from sklearn.metrics import mean_squared_error from fuzzywuzzy import fuzz -except: - fuzz = None +except ImportError: + MISSING_PACKAGES = True RUN_FILE = "run.sh" DATA_FILE = "data.csv" @@ -891,6 +885,10 @@ def make_output(self, output, time): def run(self, output_file): + if MISSING_PACKAGES: + raise ImportError( + "Missing packages required for testing, please install test extras as 'pip install ersilia[test]'" + ) output_file = os.path.join(self._model_path(self.model_id), "TEST_MODULE_OUTPUT.csv") start = time.time() self.check_information(output_file) diff --git a/pyproject.toml b/pyproject.toml index be488f94d..74caec515 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ scikit-learn = "<=1.5.1" # Instead of using poetry dependency groups, we use extras to make it pip installable lake = ["isaura"] docs = ["sphinx", "jinja2"] -test = ["pytest", "fuzzywuzzy"] +test = ["pytest", "fuzzywuzzy", "scipy", "scikit-learn"] #all = [lake, docs, test] [tool.poetry.scripts]