neurosaarthi-ad / etl /csv_adapter.py
NoWon1's picture
Upload folder using huggingface_hub (part 16)
54bb6a3 verified
Raw
History Blame Contribute Delete
782 Bytes
"""Generic CSV adapter for already-tabulated cohort exports."""
from __future__ import annotations
from pathlib import Path
import pandas as pd
from data_contracts.schema import validate_columns
from etl.base import CohortAdapter, CohortTables
class CsvCohortAdapter(CohortAdapter):
"""Load common-data-model CSV files from a folder."""
cohort_name = "csv"
def extract(self) -> CohortTables:
tables: dict[str, pd.DataFrame] = {}
for table_name in ["participants", "visits", "modality_features", "outcomes"]:
path = Path(self.raw_dir) / f"{table_name}.csv"
frame = pd.read_csv(path)
validate_columns(table_name, list(frame.columns))
tables[table_name] = frame
return CohortTables(**tables)