diff --git a/src/pheval/cli_pheval_utils.py b/src/pheval/cli_pheval_utils.py index 629ab000c..ba8db3eb0 100644 --- a/src/pheval/cli_pheval_utils.py +++ b/src/pheval/cli_pheval_utils.py @@ -521,8 +521,15 @@ def benchmark_comparison( This is the path where the phenotypic database folder will be written out.""", type=Path, ) +@click.option( + "--h2-jar", + required=True, + metavar="h2-jar", + help="""H2 JAR file. JAR required to run H2 Database. e.g h2.jar""", + type=Path, +) def semsim_to_exomiserdb_command( - input_file: Path, object_prefix: str, subject_prefix: str, db_path: Path + input_file: Path, object_prefix: str, subject_prefix: str, db_path: Path, h2_jar: Path ): """ingests semsim file into exomiser phenotypic database @@ -531,8 +538,9 @@ def semsim_to_exomiserdb_command( object_prefix (str): object prefix. e.g. MP subject_prefix (str): subject prefix e.g HP db_path (Path): Exomiser Phenotypic Database Folder Path. (e.g. /exomiser_folder/2209_phenotype/2209_phenotype/) + h2_jar (Path): H2 JAR file. JAR required to run H2 Database. e.g h2.jar """ - semsim_to_exomiserdb(input_file, object_prefix, subject_prefix, db_path) + semsim_to_exomiserdb(input_file, object_prefix, subject_prefix, db_path, h2_jar) @click.command() diff --git a/src/pheval/infra/exomiserdb.py b/src/pheval/infra/exomiserdb.py index 15eda0177..9deb85614 100644 --- a/src/pheval/infra/exomiserdb.py +++ b/src/pheval/infra/exomiserdb.py @@ -1,6 +1,5 @@ # -*- coding: cp936 -*- import logging as log -import os from pathlib import Path import jaydebeapi @@ -15,7 +14,7 @@ class DBConnector: def __init__( self, jar: Path, driver: str, server: str, database: str, user: str, password: str ): - self.jar = jar + self.jar = str(jar) self.driver = driver self.server = server self.database = database @@ -61,10 +60,10 @@ def get_cursor(cls) -> jaydebeapi.Cursor: class ExomiserDB: - def __init__(self, db_path: Path): + def __init__(self, db_path: Path, h2_jar: Path): try: self.connector = DBConnector( # noqa - jar=os.path.join(os.path.dirname(__file__), "../../../lib/h2-1.4.199.jar"), + jar=h2_jar, driver="org.h2.Driver", server=f"jdbc:h2:{db_path}", user="sa", diff --git a/src/pheval/utils/exomiser.py b/src/pheval/utils/exomiser.py index a249c80db..c83e937aa 100644 --- a/src/pheval/utils/exomiser.py +++ b/src/pheval/utils/exomiser.py @@ -3,7 +3,9 @@ from pheval.infra.exomiserdb import ExomiserDB -def semsim_to_exomiserdb(input_path: Path, object_prefix: str, subject_prefix: str, db_path: Path): +def semsim_to_exomiserdb( + input_path: Path, object_prefix: str, subject_prefix: str, db_path: Path, h2_jar: Path +): """ingests semsim file into exomiser phenotypic database Args: @@ -11,6 +13,7 @@ def semsim_to_exomiserdb(input_path: Path, object_prefix: str, subject_prefix: s object_prefix (str): object prefix. e.g. MP subject_prefix (str): subject prefix e.g HP db_path (Path): Exomiser Phenotypic Database Folder Path. (e.g. /exomiser_folder/2209_phenotype/2209_phenotype/) + h2_jar (Path): H2 JAR file. JAR required to run H2 Database. e.g h2.jar """ - exomiserdb = ExomiserDB(db_path) + exomiserdb = ExomiserDB(db_path, h2_jar) exomiserdb.import_from_semsim_file(input_path, object_prefix, subject_prefix) diff --git a/lib/h2-1.4.199.jar b/tests/lib/h2-1.4.199.jar similarity index 100% rename from lib/h2-1.4.199.jar rename to tests/lib/h2-1.4.199.jar diff --git a/tests/test_exomiser_db_ingestion.py b/tests/test_exomiser_db_ingestion.py index d402369e5..bcbdcfeb7 100644 --- a/tests/test_exomiser_db_ingestion.py +++ b/tests/test_exomiser_db_ingestion.py @@ -7,6 +7,7 @@ from pheval.utils.exomiser import semsim_to_exomiserdb PHENO_FOLDER = os.path.abspath("./testdata/phenotype/2302_phenotype") +H2_JAR = os.path.abspath("./tests/lib/h2-1.4.199.jar") class TestExomiserDBIngestion(unittest.TestCase): @@ -17,7 +18,7 @@ def tearDown(self): _clean_db() def select_data(self, query: str): - edb = ExomiserDB(f"{PHENO_FOLDER}/2302_phenotype_test") + edb = ExomiserDB(f"{PHENO_FOLDER}/2302_phenotype_test", H2_JAR) with edb.connector as cnn: conn = DBConnection(cnn) cursor = conn.get_cursor() @@ -36,6 +37,7 @@ def test_semsim_to_exomiserdb(self): object_prefix="MP", subject_prefix="HP", db_path=f"{PHENO_FOLDER}/2302_phenotype_test", + h2_jar=H2_JAR, ) new_res = self.select_data(query) self.assertEqual(len(new_res), 9)