示例#1
0
 def test_get_values_for_attribute_3(self):
     raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam')
     raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample'),
                                        MetaAVU(attribute='library', value='lib')])
     expected_result = set()
     actual_result = raw_meta.get_values_for_attribute('study')
     self.assertSetEqual(actual_result, expected_result)
示例#2
0
 def test_check_more_than_one_replicas_when_1_replica(self):
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc")]
     raw_metadata = IrodsRawFileMetadata(fpath='/seq/123/123.cram', file_replicas=replicas)
     result = raw_metadata.ReplicasChecks.check_more_than_one_replicas(raw_metadata.file_replicas)
     #self.assertEqual(len(result), 1)
     self.assertEqual(result.result, RESULT.FAILURE)
示例#3
0
 def test_from_baton_wrapper_file_replicas(self):
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc"),
         baton_models.DataObjectReplica(number=2, checksum="abc"),]
     data_obj = baton_models.DataObject(path='/humgen/projects/helic/123.bam', replicas=replicas)
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(len(raw_meta.file_replicas), 2)
    def retrieve_raw_files_metadata_by_metadata(cls,
                                                search_criteria_list: List[
                                                    Tuple],
                                                zone=None):
        search_criteria_objs = []
        for k, v in search_criteria_list:
            search_criterion = SearchCriterion(k, v)
            search_criteria_objs.append(search_criterion)

        # Getting metadata from iRODS:
        try:
            connection = connect_to_irods_with_baton(
                config.BATON_BIN
            )  # skip_baton_binaries_validation=True) # type: Connection
            list_of_data_objs_and_metadata = connection.data_object.get_by_metadata(
                search_criteria_objs, zone=zone)
        except RuntimeError as e:
            if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1:
                raise OSError(
                    "ERROR: you need to log into iRODS and aquire the KERBEROS credentials."
                ) from None
            else:
                raise e from None
        raw_meta_objects = [
            IrodsRawFileMetadata.from_baton_wrapper(data_obj)
            for data_obj in list_of_data_objs_and_metadata
        ]
        return raw_meta_objects
示例#5
0
 def test_from_baton_wrapper_missing_bits(self):
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True)]
     metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT'])})
     data_obj = baton_models.DataObject(path='/somepath/file.txt', metadata=metadata, replicas=replicas)
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(len(raw_meta.file_replicas), 1)
     self.assertEqual(len(raw_meta.acls), 0)
示例#6
0
 def test_from_baton_wrapper_acls(self):
     user = "******"
     acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.WRITE)]
     data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl)
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(len(raw_meta.acls), 1)
     self.assertEqual(raw_meta.acls[0].access_group, 'hgi')
     self.assertEqual(raw_meta.acls[0].permission, IrodsPermission.WRITE)
     self.assertEqual(raw_meta.acls[0].zone, 'Sanger1')
示例#7
0
 def test_from_raw_metadata_only_replicas(self):
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc"),
         baton_models.DataObjectReplica(number=2, checksum="abc"),]
     raw_metadata = IrodsRawFileMetadata(fpath='/seq/123.bam', file_replicas=replicas)
     seq_metadata = IrodsSeqFileMetadata.from_raw_metadata(raw_metadata)
     expected = {'name': set(), 'accession_number': set(), 'internal_id': set()}
     self.assertEqual(seq_metadata.samples, expected)
     self.assertEqual(seq_metadata.libraries, expected)
     self.assertEqual(seq_metadata.checksum_in_meta, set())
示例#8
0
 def test_check_has_read_permission_ss_group_no_ss_grp(self):
     acl1 = IrodsACL(access_group='public#seq', zone='seq', permission='read')
     acl2 = IrodsACL(access_group='npg#seq', zone='seq', permission='own')
     raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile', acls=[acl1, acl2])
     result = raw_metadata.ACLsChecks.check_read_permission_exists_for_ss_group(raw_metadata.acls)
     self.assertEqual(len(result), 2)
     for check_res in result:
         if check_res.check_name in [CHECK_NAMES.check_ss_irods_group_read_permission, CHECK_NAMES.check_there_is_ss_irods_group]:
             self.assertEqual(check_res.result, RESULT.FAILURE)
         else:
             self.assertEqual(check_res.result, RESULT.SUCCESS)
示例#9
0
 def test_from_baton_wrapper_all_ok(self):
     user = "******"
     acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.OWN)]
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True)]
     data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl, replicas=replicas)
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(raw_meta.fpath, '/somepath/file.txt')
     self.assertEqual(len(raw_meta.file_replicas), 1)
     self.assertEqual(len(raw_meta.acls), 1)
     self.assertEqual(raw_meta.acls[0].zone, 'humgen')
     self.assertEqual(raw_meta.acls[0].access_group, 'serapis')
 def fetch_raw_file_metadata_by_path(cls, fpath):
     try:
         connection = connect_to_irods_with_baton(config.BATON_BIN)#, skip_baton_binaries_validation=True)
         data_object = connection.data_object.get_by_path(fpath)
     except Exception as e:
         if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1:
             raise OSError("ERROR: you need to log into iRODS and aquire the KERBEROS credentials.") from None
         else:
             raise e from None
     else:
         if data_object:
             raw_metadata = IrodsRawFileMetadata.from_baton_wrapper(data_object)
             return raw_metadata
         return None
示例#11
0
 def test_from_baton_wrapper_full_obj(self):
     user = "******"
     acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.OWN)]
     replicas = [
         baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True),
         baton_models.DataObjectReplica(number=2, checksum="abc", host='hgi-dev-wow', resource_name='irods-s2', up_to_date=True),]
     metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT'])})
     data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl, metadata=metadata, replicas=replicas)
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(raw_meta.fpath, '/somepath/file.txt')
     self.assertEqual(len(raw_meta.file_replicas), 2)
     self.assertEqual(len(raw_meta.acls), 1)
     self.assertEqual(raw_meta.acls[0].zone, 'humgen')
     self.assertEqual(raw_meta.acls[0].access_group, 'hgi')
    def retrieve_raw_files_metadata_by_metadata(cls, search_criteria_list: List[Tuple], zone=None):
        search_criteria_objs = []
        for k, v in search_criteria_list:
            search_criterion = SearchCriterion(k, v)
            search_criteria_objs.append(search_criterion)

        # Getting metadata from iRODS:
        try:
            connection = connect_to_irods_with_baton(config.BATON_BIN)  # skip_baton_binaries_validation=True) # type: Connection
            list_of_data_objs_and_metadata = connection.data_object.get_by_metadata(search_criteria_objs, zone=zone)
        except RuntimeError as e:
            if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1:
                raise OSError("ERROR: you need to log into iRODS and aquire the KERBEROS credentials.") from None
            else:
                raise e from None
        raw_meta_objects = [IrodsRawFileMetadata.from_baton_wrapper(data_obj) for data_obj in list_of_data_objs_and_metadata]
        return raw_meta_objects
 def fetch_raw_file_metadata_by_path(cls, fpath):
     try:
         connection = connect_to_irods_with_baton(
             config.BATON_BIN)  #, skip_baton_binaries_validation=True)
         data_object = connection.data_object.get_by_path(fpath)
     except Exception as e:
         if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1:
             raise OSError(
                 "ERROR: you need to log into iRODS and aquire the KERBEROS credentials."
             ) from None
         else:
             raise e from None
     else:
         if data_object:
             raw_metadata = IrodsRawFileMetadata.from_baton_wrapper(
                 data_object)
             return raw_metadata
         return None
示例#14
0
 def test_from_baton_wrapper_fpath_1(self):
     data_obj = baton_models.DataObject(path='/seq/123/123.bam.bai')
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(raw_meta.fpath, '/seq/123/123.bam.bai')
示例#15
0
    def test_from_baton_wrapper_metadata(self):
        metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT']), 'sample': set(['123sam'])})
        data_obj = baton_models.DataObject(path='/somepath/file.txt', metadata=metadata)
        raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)

        self.assertEqual(raw_meta.get_values_for_attribute('study'), set(['BLUEPRINT']))
示例#16
0
 def test_set_attributes_from_avus_1(self):
     raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam')
     raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample'),
                                        MetaAVU(attribute='library', value='lib')])
     expected_result = {'sample': set(['ABCSample']), 'library': set(['lib'])}
     self.assertDictEqual(raw_meta.avus, expected_result)
示例#17
0
 def test_get_values_count_for_attribute_1(self):
     raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam')
     raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample')])
     expected_result = 1
     actual_result = raw_meta.get_values_count_for_attribute('sample')
     self.assertEqual(expected_result, actual_result)
示例#18
0
 def test_get_values_count_for_attribute_2(self):
     raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam')
     expected_result = 0
     actual_result = raw_meta.get_values_count_for_attribute('sample')
     self.assertEqual(expected_result, actual_result)
示例#19
0
 def test_check_more_than_one_replicas_when_no_replica(self):
     replicas = []
     raw_metadata = IrodsRawFileMetadata(fpath='/seq/123/123.cram', file_replicas=replicas)
     result = raw_metadata.ReplicasChecks.check_more_than_one_replicas(raw_metadata.file_replicas)
     #self.assertEqual(len(result), 1)
     self.assertEqual(result.result, RESULT.FAILURE)
示例#20
0
 def test_is_true_comparison_when_less(self):
     result = IrodsRawFileMetadata._is_true_comparison(1, 2, '<')
     self.assertTrue(result)
示例#21
0
 def test_is_true_comparison_when_not_equal(self):
     result = IrodsRawFileMetadata._is_true_comparison(1, 3, '=')
     self.assertFalse(result)
示例#22
0
 def test_from_baton_wrapper_fpath_2(self):
     data_obj = baton_models.DataObject(path='/humgen/projects/helic/123.bam')
     raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj)
     self.assertEqual(raw_meta.fpath, '/humgen/projects/helic/123.bam')
示例#23
0
 def test_check_attribute_count_equal_ok(self):
     raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile')
     raw_metadata.avus = {'sample': set(['1', '2', '3'])}
     result = raw_metadata.check_attribute_count([AttributeCount(attribute='sample', count=3, operator='=')])
     #self.assertEqual(len(result), 1)
     self.assertEqual(result.result, RESULT.SUCCESS)
示例#24
0
 def test_check_attribute_count_when_not_found(self):
     raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile')
     raw_metadata.avus = {'sample': set(['1', '2', '3'])}
     result = raw_metadata.check_attribute_count([AttributeCount(attribute='study', count=2, operator='>')])
     #self.assertEqual(len(result), 1)
     self.assertEqual(result.result, RESULT.FAILURE)