Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #6
0
    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)
Example #7
0
    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
Example #10
0
    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)
Example #12
0
    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
Example #13
0
    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)