diff --git a/NIPTool/build/batch.py b/NIPTool/build/batch.py deleted file mode 100644 index fa7c70f8..00000000 --- a/NIPTool/build/batch.py +++ /dev/null @@ -1,12 +0,0 @@ -from NIPTool.constants.constants import BATCH_KEYS - - -def build_batch(batch_data: dict): - """Builds a document for the batch collection""" - - batch_document = {'_id': str(batch_data.get('SampleProject'))} - for key in BATCH_KEYS: - if batch_data.get(key) is not None: - batch_document[key] = batch_data.get(key) - - return batch_document \ No newline at end of file diff --git a/NIPTool/build/document.py b/NIPTool/build/document.py new file mode 100644 index 00000000..465ab6b1 --- /dev/null +++ b/NIPTool/build/document.py @@ -0,0 +1,45 @@ +from NIPTool.models.constants import SAMPLE_KEYS, BATCH_KEYS +from typing import Optional + +def empty_str_to_none(x: str) -> Optional[str]: + """Convert empty string to None""" + + x = x.strip() + if not x: + return None + return x + + +def build_document(csv_data: dict, document_keys: list) -> dict: + """Build a general document""" + + document = {} + for key in document_keys: + value = csv_data.get(key) + if isinstance(value, str): + value = empty_str_to_none(value) + if value is None: + continue + document[key] = value + + return document + + +def build_sample(sample_data: dict) -> dict: + """Builds a document for the sample collection""" + + sample = build_document(sample_data, SAMPLE_KEYS) + if sample.get("SampleProject"): + sample["SampleProject"] = str(sample["SampleProject"]) + sample["_id"] = sample_data.get("SampleID") + + return sample + + +def build_batch(batch_data: dict) -> dict: + """Builds a document for the batch collection""" + + batch = build_document(batch_data, BATCH_KEYS) + batch["_id"] = str(batch_data.get("SampleProject")) + + return batch \ No newline at end of file diff --git a/NIPTool/build/sample.py b/NIPTool/build/sample.py deleted file mode 100644 index e92bcdff..00000000 --- a/NIPTool/build/sample.py +++ /dev/null @@ -1,20 +0,0 @@ -from NIPTool.constants.constants import SAMPLE_KEYS - -def build_sample(sample_data: dict): - """Builds a document for the sample collection""" - - - sample = {'_id': sample_data.get('SampleID')} - - for key in SAMPLE_KEYS: - value = sample_data.get(key) - if isinstance(value, str) and not value.strip(): - continue - if value is None: - continue - sample[key] = value - - if sample.get('SampleProject'): - sample['SampleProject'] = str(sample['SampleProject']) - - return sample diff --git a/NIPTool/constants/__init__.py b/NIPTool/constants/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/NIPTool/load/batch.py b/NIPTool/load/batch.py index 9b3428d1..36cf812e 100644 --- a/NIPTool/load/batch.py +++ b/NIPTool/load/batch.py @@ -1,6 +1,5 @@ import logging -from NIPTool.build.sample import build_sample -from NIPTool.build.batch import build_batch +from NIPTool.build.document import build_sample, build_batch from NIPTool.parse.batch import parse_batch_file LOG = logging.getLogger(__name__) diff --git a/NIPTool/constants/constants.py b/NIPTool/models/constants.py similarity index 98% rename from NIPTool/constants/constants.py rename to NIPTool/models/constants.py index 6f592ad2..971cf779 100644 --- a/NIPTool/constants/constants.py +++ b/NIPTool/models/constants.py @@ -1,5 +1,4 @@ SAMPLE_KEYS = [ - "SampleID", "SampleType", "Description", "SampleProject", diff --git a/NIPTool/models/nipt_results.py b/NIPTool/models/validation_schema.py similarity index 100% rename from NIPTool/models/nipt_results.py rename to NIPTool/models/validation_schema.py diff --git a/NIPTool/parse/batch.py b/NIPTool/parse/batch.py index 1851439b..e8267a09 100644 --- a/NIPTool/parse/batch.py +++ b/NIPTool/parse/batch.py @@ -2,12 +2,12 @@ import pandas as pd import glob from NIPTool.exeptions import MissingResultsError, FileValidationError -from NIPTool.models.nipt_results import nipt_results_schema +from NIPTool.models.validation_schema import nipt_results_schema LOG = logging.getLogger(__name__) -def parse_batch_file(nipt_results_path: dict) -> list: +def parse_batch_file(nipt_results_path: str) -> list: if not glob.glob(nipt_results_path): raise MissingResultsError("Results file missing.") diff --git a/NIPTool/server/templates/sample/sample_tris.html b/NIPTool/server/templates/sample/sample_tris.html index 1ac0e987..68e579a6 100644 --- a/NIPTool/server/templates/sample/sample_tris.html +++ b/NIPTool/server/templates/sample/sample_tris.html @@ -23,7 +23,7 @@ {% block scripts %}