diff --git a/backend/src/core/annotation.py b/backend/src/core/annotation.py index 9b910e39..c823f556 100644 --- a/backend/src/core/annotation.py +++ b/backend/src/core/annotation.py @@ -86,7 +86,10 @@ def queue_annotation_tasks(self, analysis: Analysis, annotation_task_queue: Anno annotation_task_queue.put(annotation_unit_queued) @staticmethod - def process_tasks(annotation_queue: AnnotationQueue, analysis_name: str, genomic_unit_collection: GenomicUnitCollection, analysis_collection: AnalysisCollection): # pylint: disable=too-many-branches + def process_tasks( + annotation_queue: AnnotationQueue, analysis_name: str, genomic_unit_collection: GenomicUnitCollection, + analysis_collection: AnalysisCollection + ): # pylint: disable=too-many-branches """Processes items that have been added to the queue""" logger.info("%s Processing annotation tasks queue ...", annotation_log_label()) @@ -108,8 +111,12 @@ def process_tasks(annotation_queue: AnnotationQueue, analysis_name: str, genomic missing_dependencies = annotation_unit.get_missing_dependencies() for missing_dataset_name in missing_dependencies: # missing_dataset_name - dependency_dataset = analysis_collection.get_manifest_dataset_config(analysis_name, missing_dataset_name) - dependency_annotation_unit = AnnotationUnit(annotation_unit.genomic_unit, dependency_dataset) + dependency_dataset = analysis_collection.get_manifest_dataset_config( + analysis_name, missing_dataset_name + ) + dependency_annotation_unit = AnnotationUnit( + annotation_unit.genomic_unit, dependency_dataset + ) annotation_value = genomic_unit_collection.find_genomic_unit_annotation_value( dependency_annotation_unit ) diff --git a/backend/src/core/annotation_task.py b/backend/src/core/annotation_task.py index 65d3ab50..a130ba5c 100644 --- a/backend/src/core/annotation_task.py +++ b/backend/src/core/annotation_task.py @@ -122,9 +122,7 @@ def extract_version(self, incomming_version_json): try: jq_results = self.__json_extract__(jq_query, incomming_version_json) except ValueError as value_error: - logger.info(( - 'Failed to extract ', value_error - )) + logger.info(('Failed to extract ', value_error)) jq_result = next(jq_results, None) return jq_result @@ -255,9 +253,7 @@ def get_annotation_version_from_rosalution(self): """Gets version for rosalution type and returns the version data""" version_from_rosalution = "rosalution-temp-manifest-00" - version = { - "rosalution": "rosalution-temp-manifest-00" - } + version = {"rosalution": "rosalution-temp-manifest-00"} return version def get_annotation_version_from_date(self): @@ -265,9 +261,7 @@ def get_annotation_version_from_date(self): version_from_date = "rosalution-temp-manifest-00" # getting version from date - version = { - "date": "rosalution-temp-manifest-00" - } + version = {"date": "rosalution-temp-manifest-00"} return version_from_date diff --git a/backend/src/core/dataset_manifest.py b/backend/src/core/dataset_manifest.py index 2ed8f500..df4a7cf3 100644 --- a/backend/src/core/dataset_manifest.py +++ b/backend/src/core/dataset_manifest.py @@ -1,9 +1,5 @@ - - class DatasetManifest: - """a helper to streamline getting the config for a dataset""" - - def __init__(self, manifest): - self.manifest = manifest + """a helper to streamline getting the config for a dataset""" - \ No newline at end of file + def __init__(self, manifest): + self.manifest = manifest diff --git a/backend/src/models/analysis.py b/backend/src/models/analysis.py index f2d540b3..95d67bb7 100644 --- a/backend/src/models/analysis.py +++ b/backend/src/models/analysis.py @@ -90,8 +90,7 @@ class Analysis(BaseAnalysis): sections: List[Section] = [] discussions: List = [] supporting_evidence_files: List = [] - manifest: List = [ - ] + manifest: List = [] def units_to_annotate(self): """Returns the types of genomic units within the analysis""" diff --git a/backend/src/repository/analysis_collection.py b/backend/src/repository/analysis_collection.py index 945bae99..207ad918 100644 --- a/backend/src/repository/analysis_collection.py +++ b/backend/src/repository/analysis_collection.py @@ -136,34 +136,28 @@ def add_dataset_to_manifest(self, analysis_name: str, annotation_unit: Annotatio """Adds this dataset and its version to this Analysis.""" dataset = { - annotation_unit.get_dataset_name(): { - annotation_unit.get_dataset_source(), - annotation_unit.get_version() - } + annotation_unit.get_dataset_name(): {annotation_unit.get_dataset_source(), + annotation_unit.get_version()} } - + updated_document = self.collection.find_one_and_update({"name": analysis_name}, {"$push": {"manifest": dataset}}, return_document=ReturnDocument.AFTER) return updated_document['manifest'] - + def get_manifest_dataset_config(self, analysis_name: str, dataset_name: str): dataset_attribute = f"manifest.{dataset_name}" - result = self.collection.find_one({ - "name": analysis_name, - dataset_attribute : {'$exists': True } - }) + result = self.collection.find_one({"name": analysis_name, dataset_attribute: {'$exists': True}}) if not result: return None - + return { - "data_set": dataset_name, - "data_source": result[dataset_name]['data_source'], + "data_set": dataset_name, "data_source": result[dataset_name]['data_source'], "version": result[dataset_name]['version'] } - + def get_dataset_manifest(self, analysis_name): analysis = self.find_by_name(analysis_name) if analysis is None: diff --git a/backend/src/repository/genomic_unit_collection.py b/backend/src/repository/genomic_unit_collection.py index e8b7b00a..69ec608f 100644 --- a/backend/src/repository/genomic_unit_collection.py +++ b/backend/src/repository/genomic_unit_collection.py @@ -75,7 +75,7 @@ def annotation_exist(self, annotation_unit: AnnotationUnit): data_set_name = annotation_unit.get_dataset_name() dataset_version = annotation_unit.get_version() dataset_source = annotation_unit.get_dataset_source() - + find_query = self.__find_genomic_unit_query__(annotation_unit) if annotation_unit.is_transcript_dataset(): @@ -111,7 +111,7 @@ def find_genomic_unit_annotation_value(self, annotation_unit: AnnotationUnit): if result is None: return None - + if dataset_name == "HPO_NCBI_GENE_ID" and annotation_unit.get_genomic_unit() == "DLG4": logger.info("\n\n\n") logger.info(f"{result}") diff --git a/backend/src/routers/analysis_router.py b/backend/src/routers/analysis_router.py index 91badc95..e4953bd6 100644 --- a/backend/src/routers/analysis_router.py +++ b/backend/src/routers/analysis_router.py @@ -67,7 +67,10 @@ async def create_file( analysis = Analysis(**new_analysis) annotation_service = AnnotationService(repositories["annotation_config"]) annotation_service.queue_annotation_tasks(analysis, annotation_task_queue) - background_tasks.add_task(AnnotationService.process_tasks, annotation_task_queue, analysis.name, repositories['genomic_unit'], repositories["analysis"]) + background_tasks.add_task( + AnnotationService.process_tasks, annotation_task_queue, analysis.name, repositories['genomic_unit'], + repositories["analysis"] + ) return new_analysis diff --git a/backend/src/routers/annotation_router.py b/backend/src/routers/annotation_router.py index 8efceba1..6185c82b 100644 --- a/backend/src/routers/annotation_router.py +++ b/backend/src/routers/annotation_router.py @@ -95,8 +95,9 @@ def get_annotations_by_hgvs_variant(variant: str, analysis_name: str, repositori if dataset_config is None: continue "annotation[dataset][0]['value']" - found_dataset = next((by_version for by_version in annotation[dataset] if by_version in dataset_manifest), None) - annotations[dataset] = + found_dataset = next((by_version for by_version in annotation[dataset] if by_version in dataset_manifest), + None) + # annotations[dataset] = transcript_annotation_list = [] for transcript_annotation in queried_genomic_unit['transcripts']: diff --git a/backend/tests/unit/conftest.py b/backend/tests/unit/conftest.py index 9bb1bf05..55ebad27 100644 --- a/backend/tests/unit/conftest.py +++ b/backend/tests/unit/conftest.py @@ -115,6 +115,7 @@ def fixture_annotation_config_collection(annotation_config_collection_json): mock_collection.find_one = Mock(return_value=read_test_fixture("annotations-config.json")) return AnnotationConfigCollection(mock_collection) + @pytest.fixture(name='get_dataset_manifest_config') def get_dataset_manifest_config(analysis_collection_json): """Fixture factory method to create an dataset from the genomic unit information and name of the datset.""" @@ -122,22 +123,20 @@ def get_dataset_manifest_config(analysis_collection_json): def _create_dataset_manifest(analysis_name, dataset_name): """Method to create the dataset manifest config""" - analysis_json = next((item for item in analysis_collection_json if item['name'] == analysis_name), - None) + analysis_json = next((item for item in analysis_collection_json if item['name'] == analysis_name), None) analysis = Analysis(**analysis_json) - dataset_manifest = next((item for item in analysis.manifest if dataset_name in item), - None) - + dataset_manifest = next((item for item in analysis.manifest if dataset_name in item), None) + dataset_config = { - "data_set": dataset_name, - "data_source": dataset_manifest[dataset_name]['data_source'], + "data_set": dataset_name, "data_source": dataset_manifest[dataset_name]['data_source'], "version": dataset_manifest[dataset_name]['version'] } - + return dataset_config return _create_dataset_manifest + @pytest.fixture(name='get_annotation_unit') def get_standard_annotation_unit(annotation_config_collection_json): """Fixture factory method to create an AnnotationUnit from the genomic unit information and name of the datset.""" diff --git a/backend/tests/unit/core/test_annotate.py b/backend/tests/unit/core/test_annotate.py index 8a966031..9f34b418 100644 --- a/backend/tests/unit/core/test_annotate.py +++ b/backend/tests/unit/core/test_annotate.py @@ -107,10 +107,14 @@ def fixture_extract_and_annotate_cpam0002(cpam0002_annotation_queue, get_dataset mock_genomic_unit_collection.find_genomic_unit_annotation_value.side_effect = ( skip_depends.skip_hgncid_get_value_first_time_mock ) - mock_analysis_collection.get_manifest_dataset_config.return_value = get_dataset_manifest_config("CPAM0002",'HGNC_ID') + mock_analysis_collection.get_manifest_dataset_config.return_value = get_dataset_manifest_config( + "CPAM0002", 'HGNC_ID' + ) mock_genomic_unit_collection.annotation_exist.return_value = False - AnnotationService.process_tasks(cpam0002_annotation_queue, "CPAM0002", mock_genomic_unit_collection,mock_analysis_collection) + AnnotationService.process_tasks( + cpam0002_annotation_queue, "CPAM0002", mock_genomic_unit_collection, mock_analysis_collection + ) yield { 'extract': extract_task_annotate, 'version': version_task_annotate, 'http': http_task_annotate, 'none': none_task_annotate, 'forge': forge_task_annotate, @@ -162,11 +166,13 @@ def fixture_extract_and_annotate_cpam0046(cpam0046_annotation_queue, get_dataset mock_genomic_unit_collection.find_genomic_unit_annotation_value.side_effect = ( skip_depends.skip_hgncid_get_value_first_time_mock ) - dependency_dataset = get_dataset_manifest_config("CPAM0046", 'HGNC_ID') + dependency_dataset = get_dataset_manifest_config("CPAM0046", 'HGNC_ID') mock_analysis_collection.get_manifest_dataset_config.return_value = dependency_dataset mock_genomic_unit_collection.annotation_exist.return_value = False - AnnotationService.process_tasks(cpam0046_annotation_queue, "CPAM0046", mock_genomic_unit_collection, mock_analysis_collection) + AnnotationService.process_tasks( + cpam0046_annotation_queue, "CPAM0046", mock_genomic_unit_collection, mock_analysis_collection + ) yield { 'extract': extract_task_annotate, 'version': version_task_annotate, 'http': http_task_annotate, 'none': none_task_annotate, 'forge': forge_task_annotate,