def _matches(cookie: Cookie, context: HgiContext) -> bool:
    """
    Matches if the creation of the data object in iRODS has been observed but the reference has been set to one that we
    are not interested in. The order of these events is not considered.
    """
    if not was_creation_observed(cookie.enrichments):
        return False

    reference = extract_latest_metadata_key_value_known_in_irods(cookie.enrichments, IRODS_REFERENCE_KEY)
    if reference is None:
        # No update to reference yet
        return False
    if len(reference) != 1:
        # Multiple values for reference is unexpected
        return False

    reference_species_groups = re.match(_REFERENCE_EXTRACTION_PATTERN, list(reference)[0])
    if reference_species_groups is None:
        # Reference is in unexpected format
        return False
    reference_species = reference_species_groups.group(1)

    # Read uninteresting references from file every time to (easily) support live updates to this list
    with open(KNOWN_UNINTERESTING_REFERENCES_PATH, "r") as file:
        uninteresting_references = file.read().splitlines()

    return reference_species in uninteresting_references
예제 #2
0
 def test_not_in_irods_enrichment_or_irods_update(self):
     enrichments = [
         Enrichment(IRODS_ENRICHMENT, datetime(1, 1, 1), UNINTERESTING_DATA_OBJECT_AS_METADATA),
         Enrichment(
             IRODS_UPDATE_ENRICHMENT, datetime(2, 2, 2),
             Metadata(UNINTERESTING_DATA_OBJECT_MODIFICATION_AS_METADATA))
     ]
     self.enrichment_collection.add(enrichments)
     self.assertIsNone(extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY))
예제 #3
0
 def test_in_irods_enrichments(self):
     enrichments = [
         Enrichment(IRODS_ENRICHMENT, datetime(1, 1, 1), self.interesting_data_objects_as_metadata[0]),
         Enrichment(IRODS_ENRICHMENT, datetime(2, 2, 2), self.interesting_data_objects_as_metadata[1]),
         Enrichment(IRODS_ENRICHMENT, datetime(3, 3, 3), UNINTERESTING_DATA_OBJECT_AS_METADATA),
     ]
     self.enrichment_collection.add(enrichments)
     value = extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY)
     self.assertEqual(len(list(value)), 1)
     self.assertIn(3, value)
예제 #4
0
 def test_in_irods_enrichments_and_irods_update_enrichments_when_most_recent_from_irods_update_enrichment(self):
     enrichments = [
         Enrichment(IRODS_UPDATE_ENRICHMENT, datetime(1, 1, 1), self.interesting_modifications_as_metadata[0]),
         Enrichment(IRODS_ENRICHMENT, datetime(2, 2, 2), self.interesting_data_objects_as_metadata[0]),
         Enrichment(IRODS_ENRICHMENT, datetime(3, 3, 3), UNINTERESTING_DATA_OBJECT_AS_METADATA),
         Enrichment(IRODS_ENRICHMENT, datetime(4, 4, 4), self.interesting_data_objects_as_metadata[1]),
         Enrichment(IRODS_UPDATE_ENRICHMENT, datetime(5, 5, 5), self.interesting_modifications_as_metadata[1])
     ]
     self.enrichment_collection.add(enrichments)
     value = extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY)
     self.assertEqual(len(list(value)), 1)
     self.assertIn(1, value)
def _matches(cookie: Cookie, context: HgiContext) -> bool:
    """
    Matches if the creation has been observed and the manual QC has been set to an incorrect value. The order of these
    events is not considered.
    """
    if not was_creation_observed(cookie.enrichments):
        return False

    manual_qc = extract_latest_metadata_key_value_known_in_irods(cookie.enrichments, IRODS_MANUAL_QC_KEY)
    if manual_qc is None:
        # No update to manual QC yet
        return False
    if len(manual_qc) != 1:
        # Multiple values for manual QC is unexpected
        return False
    return INCORRECT_MANUAL_QC_VALUE in manual_qc
예제 #6
0
 def test_not_in_irods_enrichment(self):
     enrichment = Enrichment(IRODS_ENRICHMENT, datetime(1, 1, 1), UNINTERESTING_DATA_OBJECT_AS_METADATA)
     self.enrichment_collection.add(enrichment)
     self.assertIsNone(extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY))
예제 #7
0
 def test_no_irods_related_enrichments(self):
     self.enrichment_collection.add(Enrichment("other", datetime(1, 1, 1), Metadata()))
     self.assertIsNone(extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY))
예제 #8
0
 def test_no_enrichments(self):
     self.assertIsNone(extract_latest_metadata_key_value_known_in_irods(self.enrichment_collection, _METADATA_KEY))