Skip to content

Commit 9b9d544

Browse files
authored
Remove hydra use query api (#491)
1 parent a8886c5 commit 9b9d544

File tree

18 files changed

+1527
-1407
lines changed

18 files changed

+1527
-1407
lines changed

cyclops/query/base.py

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
"""Base querier class."""
22

33
import logging
4-
import os
54
from functools import partial
65
from typing import Any, Callable, Dict, List, Optional
76

8-
import yaml
9-
from hydra import compose, initialize
10-
from omegaconf import OmegaConf
117
from sqlalchemy import MetaData
128
from sqlalchemy.sql.selectable import Subquery
139

1410
from cyclops.query import ops as qo
1511
from cyclops.query.interface import QueryInterface
16-
from cyclops.query.orm import Database
12+
from cyclops.query.orm import Database, DatasetQuerierConfig
1713
from cyclops.query.util import (
1814
DBSchema,
1915
_to_subquery,
2016
get_attr_name,
2117
)
22-
from cyclops.utils.file import join as join_path
2318
from cyclops.utils.log import setup_logging
2419

2520

@@ -81,9 +76,18 @@ class DatasetQuerier:
8176
8277
Parameters
8378
----------
84-
config_overrides
85-
Override configuration parameters, specified as kwargs.
86-
79+
database
80+
Name of database.
81+
user
82+
Username for database.
83+
password
84+
Password for database.
85+
dbms
86+
Database management system.
87+
host
88+
Hostname of database.
89+
port
90+
Port of database.
8791
8892
Notes
8993
-----
@@ -98,26 +102,21 @@ class DatasetQuerier:
98102

99103
def __init__(
100104
self,
101-
**config_overrides: Dict[str, Any],
105+
database: str,
106+
user: str,
107+
password: str,
108+
dbms: str = "postgresql",
109+
host: str = "localhost",
110+
port: int = 5432,
102111
) -> None:
103-
overrides = []
104-
if config_overrides:
105-
config_file = join_path(os.path.dirname(__file__), "configs", "config.yaml")
106-
with open(config_file, "r", encoding="utf-8") as file:
107-
config_keys = list(yaml.safe_load(file).keys())
108-
for key, value in config_overrides.items():
109-
if key in config_keys:
110-
overrides.append(f"{key}={value}")
111-
else:
112-
overrides.append(f"+{key}={value}")
113-
with initialize(
114-
version_base=None,
115-
config_path="configs",
116-
job_name="DatasetQuerier",
117-
):
118-
config = compose(config_name="config", overrides=overrides)
119-
LOGGER.debug(OmegaConf.to_yaml(config))
120-
112+
config = DatasetQuerierConfig(
113+
database=database,
114+
user=user,
115+
password=password,
116+
dbms=dbms,
117+
host=host,
118+
port=port,
119+
)
121120
self.db = Database(config)
122121
if not self.db.is_connected:
123122
LOGGER.error("Database is not connected, cannot run queries.")

cyclops/query/configs/config.yaml

Lines changed: 0 additions & 6 deletions
This file was deleted.

cyclops/query/eicu.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"""
66

77
import logging
8-
from typing import Any, Dict
98

109
from cyclops.query.base import DatasetQuerier
1110
from cyclops.utils.log import setup_logging
@@ -18,17 +17,3 @@
1817

1918
class EICUQuerier(DatasetQuerier):
2019
"""EICU dataset querier."""
21-
22-
def __init__(self, **config_overrides: Dict[str, Any]) -> None:
23-
"""Initialize.
24-
25-
Parameters
26-
----------
27-
**config_overrides
28-
Override configuration parameters, specified as kwargs.
29-
30-
"""
31-
overrides = {}
32-
if config_overrides:
33-
overrides = config_overrides
34-
super().__init__(**overrides)

cyclops/query/gemini.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""GEMINI query API."""
22

33
import logging
4-
from typing import Any, Dict
54

65
from sqlalchemy import select
76
from sqlalchemy.sql.expression import union_all
@@ -24,20 +23,6 @@
2423
class GEMINIQuerier(DatasetQuerier):
2524
"""GEMINI dataset querier."""
2625

27-
def __init__(self, **config_overrides: Dict[str, Any]) -> None:
28-
"""Initialize.
29-
30-
Parameters
31-
----------
32-
**config_overrides
33-
Override configuration parameters, specified as kwargs.
34-
35-
"""
36-
overrides = {}
37-
if config_overrides:
38-
overrides = config_overrides
39-
super().__init__(**overrides)
40-
4126
def ip_admin(
4227
self,
4328
) -> QueryInterface:

cyclops/query/mimiciii.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"""
66

77
import logging
8-
from typing import Any, Dict
98

109
import cyclops.query.ops as qo
1110
from cyclops.query.base import DatasetQuerier
@@ -21,20 +20,6 @@
2120
class MIMICIIIQuerier(DatasetQuerier):
2221
"""MIMIC-III dataset querier."""
2322

24-
def __init__(self, **config_overrides: Dict[str, Any]) -> None:
25-
"""Initialize.
26-
27-
Parameters
28-
----------
29-
**config_overrides
30-
Override configuration parameters, specified as kwargs.
31-
32-
"""
33-
overrides = {}
34-
if config_overrides:
35-
overrides = config_overrides
36-
super().__init__(**overrides)
37-
3823
def diagnoses(
3924
self,
4025
) -> QueryInterface:

cyclops/query/mimiciv.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"""
66

77
import logging
8-
from typing import Any, Dict
98

109
from sqlalchemy import Integer, func, select
1110

@@ -24,20 +23,6 @@
2423
class MIMICIVQuerier(DatasetQuerier):
2524
"""MIMICIV dataset querier."""
2625

27-
def __init__(self, **config_overrides: Dict[str, Any]) -> None:
28-
"""Initialize.
29-
30-
Parameters
31-
----------
32-
**config_overrides
33-
Override configuration parameters, specified as kwargs.
34-
35-
"""
36-
overrides = {}
37-
if config_overrides:
38-
overrides = config_overrides
39-
super().__init__(**overrides)
40-
4126
def patients(
4227
self,
4328
) -> QueryInterface:

cyclops/query/omop.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""OMOP query API."""
22

33
import logging
4-
from typing import Any, Dict, List, Optional, Union
4+
from typing import List, Optional, Union
55

66
from sqlalchemy.sql.selectable import Subquery
77

@@ -58,24 +58,23 @@ class OMOPQuerier(DatasetQuerier):
5858

5959
def __init__(
6060
self,
61-
schema_name: str,
62-
**config_overrides: Dict[str, Any],
61+
database: str,
62+
user: str,
63+
password: str,
64+
dbms: str = "postgresql",
65+
host: str = "localhost",
66+
port: int = 5432,
67+
schema_name: str = "omop",
6368
) -> None:
64-
"""Initialize.
65-
66-
Parameters
67-
----------
68-
schema_name
69-
Name of database schema.
70-
**config_overrides
71-
Override configuration parameters, specified as kwargs.
72-
73-
"""
69+
super().__init__(
70+
database=database,
71+
user=user,
72+
password=password,
73+
dbms=dbms,
74+
host=host,
75+
port=port,
76+
)
7477
self.schema_name = schema_name
75-
overrides = {}
76-
if config_overrides:
77-
overrides = config_overrides
78-
super().__init__(**overrides)
7978

8079
def map_concept_ids_to_name(
8180
self,

cyclops/query/orm.py

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import logging
55
import os
66
import socket
7+
from dataclasses import dataclass
78
from typing import Dict, List, Literal, Optional, Union
9+
from urllib.parse import quote_plus
810

911
import dask.dataframe as dd
1012
import pandas as pd
1113
import pyarrow.csv as pv
1214
import pyarrow.parquet as pq
1315
from datasets import Dataset
14-
from omegaconf import DictConfig
1516
from sqlalchemy import MetaData, create_engine, inspect
1617
from sqlalchemy.engine.base import Engine
1718
from sqlalchemy.orm import sessionmaker
@@ -43,32 +44,61 @@ def _get_db_url(
4344
user: str,
4445
pwd: str,
4546
host: str,
46-
port: str,
47+
port: int,
4748
database: str,
4849
) -> str:
4950
"""Combine to make Database URL string."""
50-
return f"{dbms}://{user}:{pwd}@{host}:{port}/{database}"
51+
return f"{dbms}://{user}:{quote_plus(pwd)}@{host}:{str(port)}/{database}"
52+
53+
54+
@dataclass
55+
class DatasetQuerierConfig:
56+
"""Configuration for the dataset querier.
57+
58+
Attributes
59+
----------
60+
dbms
61+
Database management system.
62+
host
63+
Hostname of database.
64+
port
65+
Port of database.
66+
database
67+
Name of database.
68+
user
69+
Username for database.
70+
password
71+
Password for database.
72+
73+
"""
74+
75+
database: str
76+
user: str
77+
password: str
78+
dbms: str = "postgresql"
79+
host: str = "localhost"
80+
port: int = 5432
5181

5282

5383
class Database:
5484
"""Database class.
5585
5686
Attributes
5787
----------
58-
config: argparse.Namespace
59-
Configuration stored in object.
60-
engine: sqlalchemy.engine.base.Engine
88+
config
89+
Configuration stored in a dataclass.
90+
engine
6191
SQL extraction engine.
62-
inspector: sqlalchemy.engine.reflection.Inspector
92+
inspector
6393
Module for schema inspection.
64-
session: sqlalchemy.orm.session.Session
94+
session
6595
Session for ORM.
66-
is_connected: bool
96+
is_connected
6797
Whether the database is setup, connected and ready to run queries.
6898
6999
"""
70100

71-
def __init__(self, config: DictConfig) -> None:
101+
def __init__(self, config: DatasetQuerierConfig) -> None:
72102
"""Instantiate.
73103
74104
Parameters

0 commit comments

Comments
 (0)