def test_update_study_bad_taxa(self, api_factory): api_instance = api_factory.OriginalSampleApi() study_api = api_factory.StudyApi() try: samp = openapi_client.OriginalSample( None, study_name='2005-MD-UP', partner_species='P. falciparum') created = api_instance.create_original_sample(samp) study1 = study_api.download_study('2005-MD-UP') assert study1.partner_species[ 0].partner_species == 'P. falciparum', 'Species not set' # Taxa or study name are the only things you can update # partner_species belong to the sampling event taxa = openapi_client.Taxonomy(999999) study1.partner_species[0].taxa = [taxa] with pytest.raises(ApiException, status=422): study2 = study_api.update_study('2004-MD-UP', study1) #assert study2.partner_species[0].taxa[0].taxonomy_id == 999999, 'taxa not updated' api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception( api_factory, "SamplingEventApi->create_sampling_event", error)
def test_download_samples_by_study(self, api_factory): api_instance = api_factory.SamplingEventApi() os_api_instance = api_factory.OriginalSampleApi() study_api = api_factory.StudyApi() try: samp = openapi_client.SamplingEvent(None, doc_accuracy='month') created = api_instance.create_sampling_event(samp) osamp = openapi_client.OriginalSample(None, study_name='2006-MD-UP') osamp.sampling_event_id = created.sampling_event_id os_created = os_api_instance.create_original_sample(osamp) events = api_instance.download_sampling_events_by_study( '2006-MD-UP') assert events.count == 1, "Event expected" os_api_instance.delete_original_sample( os_created.original_sample_id) api_instance.delete_sampling_event(created.sampling_event_id) except ApiException as error: self.check_api_exception( api_factory, "SamplingEventApi->create_sampling_event", error)
def test_download_studies(self, api_factory): api_instance = api_factory.OriginalSampleApi() study_api = api_factory.StudyApi() samp = openapi_client.OriginalSample(None, study_name='2000-MD-UP') try: created = api_instance.create_original_sample(samp) studies = study_api.download_studies() if not api_factory.is_authorized(None): pytest.fail('Unauthorized call to download_studies succeeded') found = False for study in studies.studies: if study.name == '2000-MD-UP' and study.code == '2000': found = True assert found, 'Study does not exist' api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception( api_factory, "SamplingEventApi->create_sampling_event", error)
def test_ds_study_lookup_paged(self, api_factory): api_instance = api_factory.OriginalSampleApi() ds_api_instance = api_factory.DerivativeSampleApi() try: study_code = '7003-MD-UP' os_samp = openapi_client.OriginalSample(None, study_name=study_code) os_created = api_instance.create_original_sample(os_samp) for i in range(5): samp = openapi_client.DerivativeSample(None) samp.original_sample_id = os_created.original_sample_id created = ds_api_instance.create_derivative_sample(samp) fetched1 = ds_api_instance.download_derivative_samples_by_study( study_code, start=0, count=2) assert len(fetched1.derivative_samples ) == 2, "Wrong number of original_samples returned" assert fetched1.count == 5, "Wrong total of original_samples returned" ffetched = ds_api_instance.download_derivative_samples( search_filter='studyId:' + study_code, start=0, count=2) assert ffetched == fetched1 fetched2 = ds_api_instance.download_derivative_samples_by_study( study_code, start=2, count=5) #Gets second tranche and also attempts to retrieve more than exist assert len(fetched2.derivative_samples ) == 3, "Wrong number of original_samples returned" assert fetched2.count == 5, "Wrong total of original_samples returned" ids = [] for derivative_sample in fetched1.derivative_samples + fetched2.derivative_samples: assert not derivative_sample.derivative_sample_id in ids, "derivativeSample returned twice" ids.append(derivative_sample.derivative_sample_id) #Check that it's the correct number of *unique* events #Clean up fetch_all = ds_api_instance.download_derivative_samples_by_study( study_code) for derivative_sample in fetch_all.derivative_samples: ds_api_instance.delete_derivative_sample( derivative_sample.derivative_sample_id) api_instance.delete_original_sample(os_created.original_sample_id) except ApiException as error: self.check_api_exception( api_factory, "OriginalSampleApi->create_original_sample", error)
def test_ds_os_attr_lookup(self, api_factory): api_instance = api_factory.OriginalSampleApi() ds_api_instance = api_factory.DerivativeSampleApi() try: samp = openapi_client.OriginalSample(None, study_name='7000-MD-UP') samp.attrs = [ openapi_client.Attr(attr_type='ds_os_attr', attr_value='123456') ] created = api_instance.create_original_sample(samp) samp1 = openapi_client.DerivativeSample(None) samp2 = openapi_client.DerivativeSample(None) samp1.attrs = [ openapi_client.Attr(attr_type='test1', attr_value='test1', attr_source='ds_os_attr') ] samp2.attrs = [ openapi_client.Attr(attr_type='test2', attr_value='test2', attr_source='ds_os_attr') ] samp1.original_sample_id = created.original_sample_id samp2.original_sample_id = created.original_sample_id created1 = ds_api_instance.create_derivative_sample(samp1) created2 = ds_api_instance.create_derivative_sample(samp2) results = ds_api_instance.download_derivative_samples_by_os_attr( 'ds_os_attr', '123456') assert results.count == 2 assert results.derivative_samples[ 0].derivative_sample_id != results.derivative_samples[ 1].derivative_sample_id assert results.derivative_samples[ 0].original_sample_id == results.derivative_samples[ 1].original_sample_id assert results.derivative_samples[ 0].original_sample_id == created.original_sample_id ds_api_instance.delete_derivative_sample( created1.derivative_sample_id) ds_api_instance.delete_derivative_sample( created2.derivative_sample_id) api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception( api_factory, "OriginalSampleApi->create_original_sample", error)
def test_update_partner_species(self, api_factory): api_instance = api_factory.OriginalSampleApi() try: samp = openapi_client.OriginalSample(None, study_name='3001-MD-UP', partner_species='P. falciparum') created = api_instance.create_original_sample(samp) new_samp = openapi_client.OriginalSample(None, study_name='3001-MD-UP', partner_species='P. vivax') updated = api_instance.update_original_sample( created.original_sample_id, new_samp) fetched = api_instance.download_original_sample( created.original_sample_id) assert updated == fetched, "update response != download response" fetched.original_sample_id = None assert new_samp == fetched, "update != download response" api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception(api_factory, "OriginalSampleApi->create_original_sample", error)
def create_original_sample_from_values(self, values): study_id = None if 'study_id' in values: study_id = values['study_id'] o_sample = openapi_client.OriginalSample(None, study_name=study_id) idents = [] if 'sample_roma_id' in values: idents.append(openapi_client.Attr ('roma_id', values['sample_roma_id'], self._event_set)) if 'sample_partner_id' in values and values['sample_partner_id']: idents.append(openapi_client.Attr ('partner_id', values['sample_partner_id'], self._event_set)) if 'sample_partner_id_1' in values and values['sample_partner_id_1']: idents.append(openapi_client.Attr ('partner_id', values['sample_partner_id_1'], self._event_set)) if 'sample_oxford_id' in values and values['sample_oxford_id']: idents.append(openapi_client.Attr ('oxford_id', values['sample_oxford_id'], self._event_set)) if 'sample_alternate_oxford_id' in values and len(values['sample_alternate_oxford_id']) > 0: idents.append(openapi_client.Attr ('alt_oxford_id', values['sample_alternate_oxford_id'], self._event_set)) if 'sample_source_id' in values and values['sample_source_id'] and values['sample_source_type']: idents.append(openapi_client.Attr (values['sample_source_type'], values['sample_source_id'], self._event_set)) if 'sample_source_id1' in values and values['sample_source_id1'] and values['sample_source_type1']: idents.append(openapi_client.Attr (values['sample_source_type1'], values['sample_source_id1'], self._event_set)) if 'sample_source_id2' in values and values['sample_source_id2'] and values['sample_source_type2']: idents.append(openapi_client.Attr (values['sample_source_type2'], values['sample_source_id2'], self._event_set)) if 'days_in_culture' in values: o_sample.days_in_culture = int(float(values['days_in_culture'])) if 'species' in values and values['species'] and len(values['species']) > 0: o_sample.partner_species = values['species'] o_sample.attrs = idents return o_sample
def test_ds_nested_delete_os(self, api_factory): api_instance = api_factory.DerivativeSampleApi() os_api_instance = api_factory.OriginalSampleApi() try: parent_samp = openapi_client.OriginalSample(None) parent_created = os_api_instance.create_original_sample( parent_samp) samp = openapi_client.DerivativeSample(None) samp.original_sample_id = parent_created.original_sample_id created = api_instance.create_derivative_sample(samp) child_samp = openapi_client.DerivativeSample(None) child_samp.parent_derivative_sample_id = created.derivative_sample_id child_created = api_instance.create_derivative_sample(child_samp) api_instance.delete_derivative_sample(created.derivative_sample_id) fetched = api_instance.download_derivative_sample( child_created.derivative_sample_id) assert fetched.original_sample_id == parent_created.original_sample_id api_instance.delete_derivative_sample( child_created.derivative_sample_id) os_api_instance.delete_original_sample( parent_created.original_sample_id) except ApiException as error: self.check_api_exception( api_factory, "DerivativeSampleApi->create_derivative_sample", error)
def create_test_samples(self, api_factory, study_name): api_instance = api_factory.OriginalSampleApi() ds_api_instance = api_factory.DerivativeSampleApi() study_api = api_factory.StudyApi() samp = openapi_client.OriginalSample(None, study_name=study_name, partner_species='PF') samp.attrs = [ openapi_client.Attr(attr_type='ds_os_attr', attr_value='123456') ] created = api_instance.create_original_sample(samp) study_detail = study_api.download_study(study_name) study_detail.partner_species[0].taxa = [ openapi_client.Taxonomy(taxonomy_id=5833) ] study_api.update_study(study_name, study_detail) samp1 = openapi_client.DerivativeSample(None) samp2 = openapi_client.DerivativeSample(None) samp1.attrs = [ openapi_client.Attr(attr_type='test1', attr_value='test1', attr_source='ds_os_attr') ] samp2.attrs = [ openapi_client.Attr(attr_type='test2', attr_value='test2', attr_source='ds_os_attr') ] samp1.original_sample_id = created.original_sample_id samp2.original_sample_id = created.original_sample_id created1 = ds_api_instance.create_derivative_sample(samp1) created2 = ds_api_instance.create_derivative_sample(samp2) return created, created1, created2
def test_download_study(self, api_factory): api_instance = api_factory.OriginalSampleApi() study_api = api_factory.StudyApi() samp = openapi_client.OriginalSample(None, study_name='2002-MD-UP', partner_species='P. falciparum') try: created = api_instance.create_original_sample(samp) study1 = study_api.download_study('2002-MD-UP') study2 = study_api.download_study('2002') assert study1 == study2, 'Study does not match' assert study1.partner_species[ 0].partner_species == 'P. falciparum', 'Species not set' api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception(api_factory, "LocationApi->create_location", error)
def test_ad_os_attr_lookup(self, api_factory): api_instance = api_factory.AssayDataApi() os_api_instance = api_factory.OriginalSampleApi() ds_api_instance = api_factory.DerivativeSampleApi() try: samp = openapi_client.OriginalSample(None, study_name='5000-MD-UP') samp.attrs = [ openapi_client.Attr(attr_type='ds_os_attr', attr_value='ad123456') ] created = os_api_instance.create_original_sample(samp) samp1 = openapi_client.DerivativeSample(None) samp2 = openapi_client.DerivativeSample(None) samp1.attrs = [ openapi_client.Attr(attr_type='test1', attr_value='test1', attr_source='ds_os_attr') ] samp2.attrs = [ openapi_client.Attr(attr_type='test2', attr_value='test2', attr_source='ds_os_attr') ] samp1.original_sample_id = created.original_sample_id samp2.original_sample_id = created.original_sample_id created1 = ds_api_instance.create_derivative_sample(samp1) created2 = ds_api_instance.create_derivative_sample(samp2) ad_samp = openapi_client.AssayDatum(None) ad_samp.attrs = [ openapi_client.Attr(attr_type='oxford', attr_value='123456') ] ad_samp.derivative_sample_id = created1.derivative_sample_id ad_created = api_instance.create_assay_datum(ad_samp) results = ds_api_instance.download_derivative_samples_by_os_attr( 'ds_os_attr', 'ad123456') results = api_instance.download_assay_data_by_os_attr( 'ds_os_attr', 'ad123456') looked_up = results.assay_data[0] fetched = api_instance.download_assay_datum( looked_up.assay_datum_id) assert ad_created == fetched, "create response != download response" fetched.assay_datum_id = None assert ad_samp == fetched, "upload != download response" assert looked_up == ad_created api_instance.delete_assay_datum(ad_created.assay_datum_id) ds_api_instance.delete_derivative_sample( created1.derivative_sample_id) ds_api_instance.delete_derivative_sample( created2.derivative_sample_id) os_api_instance.delete_original_sample(created.original_sample_id) except ApiException as error: self.check_api_exception(api_factory, "AssayDataApi->create_assay_datum", error)
def create_test_samples(self, api_factory): created_es = None created_se = None created = None created1 = None created2 = None try: api_instance = api_factory.OriginalSampleApi() loc_api_instance = api_factory.LocationApi() se_api_instance = api_factory.SamplingEventApi() es_api_instance = api_factory.EventSetApi() ds_api_instance = api_factory.DerivativeSampleApi() study_api = api_factory.StudyApi() event_set_name = 'test_hist_event_set_lookup' study_name = '8004-MD-UP' created_es = es_api_instance.create_event_set(event_set_name) loc = openapi_client.Location(None, 28.463, 91.495, 'country', 'Trongsa, Trongsa, Bhutan', 'history_locations.txt', 'BTN') location = loc_api_instance.create_location(loc) sampling_event = openapi_client.SamplingEvent(None, date(2017, 10, 10), doc_accuracy='month') sampling_event.location_id = location.location_id created_se = se_api_instance.create_sampling_event(sampling_event) es_api_instance.create_event_set_item(event_set_name, created_se.sampling_event_id) samp = openapi_client.OriginalSample(None, study_name=study_name, partner_species='PF') samp.attrs = [ openapi_client.Attr(attr_type='ds_os_attr', attr_value='123456') ] created = api_instance.create_original_sample(samp) study_detail = study_api.download_study(study_name) study_detail.partner_species[0].taxa = [ openapi_client.Taxonomy(taxonomy_id=5833) ] study_api.update_study(study_name, study_detail) samp1 = openapi_client.DerivativeSample(None) samp2 = openapi_client.DerivativeSample(None) samp1.attrs = [ openapi_client.Attr(attr_type='test1', attr_value='test1', attr_source='ds_os_attr') ] samp2.attrs = [ openapi_client.Attr(attr_type='test2', attr_value='test2', attr_source='ds_os_attr') ] samp1.original_sample_id = created.original_sample_id samp2.original_sample_id = created.original_sample_id created1 = ds_api_instance.create_derivative_sample(samp1) created2 = ds_api_instance.create_derivative_sample(samp2) created.sampling_event_id = created_se.sampling_event_id api_instance.update_original_sample(created.original_sample_id, created) except ApiException as error: self.check_api_exception( api_factory, "OriginalSampleApi->create_original_sample", error) return created_es, created_se, created, created1, created2
def test_multiple_partner_species(self, api_factory): api_instance = api_factory.OriginalSampleApi() study_api_instance = api_factory.StudyApi() study_ident = '3000-MD-UP' try: samp1 = openapi_client.OriginalSample(None, study_name=study_ident, partner_species='P. falciparum') created1 = api_instance.create_original_sample(samp1) fetched1 = api_instance.download_original_sample(created1.original_sample_id) assert created1 == fetched1, "create response != download response" fetched1.original_sample_id = None assert samp1 == fetched1, "upload != download response" samp2 = openapi_client.OriginalSample(None, study_name=study_ident, partner_species='P. falciparum') created2 = api_instance.create_original_sample(samp2) fetched2 = api_instance.download_original_sample(created2.original_sample_id) assert created2 == fetched2, "create response != download response" fetched2.original_sample_id = None assert samp2 == fetched2, "upload != download response" samp3 = openapi_client.OriginalSample(None, study_name=study_ident, partner_species='P. falciparum + P. vivax') created3 = api_instance.create_original_sample(samp3) fetched3 = api_instance.download_original_sample(created3.original_sample_id) assert created3 == fetched3, "create response != download response" fetched3.original_sample_id = None assert samp3 == fetched3, "upload != download response" samp4 = openapi_client.OriginalSample(None, study_name=study_ident, partner_species='P. falciparum + P. vivax') created4 = api_instance.create_original_sample(samp4) fetched4 = api_instance.download_original_sample(created4.original_sample_id) assert created4 == fetched4, "create response != download response" fetched4.original_sample_id = None assert samp4 == fetched4, "upload != download response" study_detail = study_api_instance.download_study(study_ident) for species in study_detail.partner_species: if species.partner_species == 'P. falciparum': species.taxa = [openapi_client.Taxonomy(taxonomy_id=5833)] else: species.taxa = [openapi_client.Taxonomy(taxonomy_id=5833), openapi_client.Taxonomy(taxonomy_id=5855)] study_api_instance.update_study(study_ident, study_detail) fetched1 = api_instance.download_original_sample(created1.original_sample_id) assert len(fetched1.partner_taxonomies) == 1 assert (int)(fetched1.partner_taxonomies[0].taxonomy_id) == 5833 fetched3 = api_instance.download_original_sample(created3.original_sample_id) assert len(fetched3.partner_taxonomies) == 2 assert (int)(fetched3.partner_taxonomies[0].taxonomy_id) == 5833 and (int)(fetched3.partner_taxonomies[1].taxonomy_id) == 5855 fetched = api_instance.download_original_samples_by_taxa(5833) assert len(fetched.original_samples) == 4 for original_sample in fetched.original_samples: if original_sample.original_sample_id == fetched1.original_sample_id: assert original_sample == fetched1 if original_sample.original_sample_id == fetched2.original_sample_id: assert original_sample == fetched2 if original_sample.original_sample_id == fetched3.original_sample_id: assert original_sample == fetched3 if original_sample.original_sample_id == fetched4.original_sample_id: assert original_sample == fetched4 api_instance.delete_original_sample(created1.original_sample_id) api_instance.delete_original_sample(created2.original_sample_id) api_instance.delete_original_sample(created3.original_sample_id) api_instance.delete_original_sample(created4.original_sample_id) except ApiException as error: self.check_api_exception(api_factory, "OriginalSampleApi->test_multiple_partner_species", error)