def testVariantsSearch(self): dataset = self.backend.getDatasets()[0] variantSet = dataset.getVariantSets()[0] referenceName = '1' request = protocol.SearchVariantsRequest() request.referenceName = referenceName request.start = 0 request.end = 0 request.variantSetId = variantSet.getId() # Request windows is too small, no results path = '/variants/search' responseData = self.sendSearchRequest(path, request, protocol.SearchVariantsResponse) self.assertIsNone(responseData.nextPageToken) self.assertEqual([], responseData.variants) # Larger request window, expect results request.end = 2**16 responseData = self.sendSearchRequest(path, request, protocol.SearchVariantsResponse) self.assertTrue( protocol.SearchVariantsResponse.validate( responseData.toJsonDict())) self.assertGreater(len(responseData.variants), 0) # Verify all results are in the correct range, set and reference for variant in responseData.variants: self.assertGreaterEqual(variant.start, 0) self.assertLessEqual(variant.end, 2**16) self.assertEqual(variant.variantSetId, variantSet.getId()) self.assertEqual(variant.referenceName, referenceName)
def searchVariants(self, variantSetId, start=None, end=None, referenceName=None, callSetIds=None): """ Returns an iterator over the Variants fulfilling the specified conditions from the specified VariantSet. :param str variantSetId: The ID of the :class:`ga4gh.protocol.VariantSet` of interest. :param int start: TODO :param int end: TODO :param str referenceName: The name of the :class:`ga4gh.protocol.Reference` we wish to return variants from. :param list callSetIds: TODO :return: An iterator over the :class:`ga4gh.protocol.Variant` objects defined by the query parameters. :rtype: iter """ request = protocol.SearchVariantsRequest() request.referenceName = referenceName request.start = start request.end = end request.variantSetId = variantSetId request.callSetIds = callSetIds request.pageSize = self._pageSize return self._runSearchRequest(request, "variants", protocol.SearchVariantsResponse)
def testSearchVariants(self): variantSetIds = [ variantSet.id for variantSet in self.getVariantSets(pageSize=1) ] request = protocol.SearchVariantsRequest() request.variantSetId = variantSetIds[0] responseStr = self._backend.runSearchVariants(request.toJsonString()) response = protocol.SearchVariantsResponse.fromJsonString(responseStr) self.assertTrue(isinstance(response, protocol.SearchVariantsResponse))
def sendVariantsSearch(self): response = self.sendVariantSetsSearch() variantSets = protocol.SearchVariantSetsResponse().fromJsonString( response.data).variantSets request = protocol.SearchVariantsRequest() request.variantSetId = variantSets[0].id request.referenceName = "1" request.start = 0 request.end = 1 return self.sendPostRequest('/variants/search', request)
def testSearchVariants(self): request = protocol.SearchVariantsRequest() request.referenceName = self.referenceName request.start = self.start request.end = self.end request.variantSetId = self.variantSetId request.callSetIds = self.callSetIds request.pageSize = self.pageSize self.httpClient.searchVariants( self.variantSetId, start=self.start, end=self.end, referenceName=self.referenceName, callSetIds=self.callSetIds) self.httpClient._runSearchRequest.assert_called_once_with( request, "variants", protocol.SearchVariantsResponse)
def _heavyQuery(variantSetId, callSetIds): """ Very heavy query: calls for the specified list of callSetIds on chromosome 2 (11 pages, 90 seconds to fetch the entire thing on a high-end desktop machine) """ request = protocol.SearchVariantsRequest() request.reference_name = '2' request.variant_set_id = variantSetId for callSetId in callSetIds: request.call_set_ids.add(callSetId) request.page_size = 100 request.end = 100000 return request
def runDemo(): httpClient = client.HttpClient("http://server:80/current") request = protocol.SearchVariantsRequest() request.variantSetIds = ["1kg-phase1"] request.referenceName = "2" request.start = 33100 request.end = 34000 for variant in httpClient.searchVariants(request): print(variant.referenceName, variant.start, variant.end, variant.referenceBases, variant.alternateBases, sep="\t")
def getVariants( self, variantSetIds, referenceName, start=0, end=2 ** 32, pageSize=100, callSetIds=None): """ Returns an iterator over the specified list of variants, abstracting out paging details. """ request = protocol.SearchVariantsRequest() request.variantSetIds = variantSetIds request.referenceName = referenceName request.start = start request.end = end request.callSetIds = callSetIds return self.resultIterator( request, pageSize, self._backend.searchVariants, protocol.SearchVariantsResponse, "variants")
def createSearchVariantsRequest(self): request = protocol.SearchVariantsRequest() request.referenceName = self.args.referenceName request.variantName = self.args.variantName request.start = self.args.start request.end = self.args.end if self.usingWorkaroundsFor(client.HttpClient.workaroundGoogle): request.maxCalls = self.args.maxCalls if self.args.callSetIds == []: request.callSetIds = [] elif self.args.callSetIds == '*': # For v0.5.1 the semantics are for the empty list to correspond # to all calls. This should be set to None for v0.6 request.callSetIds = [] else: request.callSetIds = self.args.callSetIds.split(",") setCommaSeparatedAttribute(request, self.args, 'variantSetIds') return request
def testGetVariant(self): # get a variant from the search method referenceName = '1' start = 0 dataset = self.backend.getDatasets()[0] variantSet = dataset.getVariantSets()[0] request = protocol.SearchVariantsRequest() request.variantSetId = variantSet.getId() request.referenceName = referenceName request.start = start request.end = 2**16 path = '/variants/search' responseData = self.sendSearchRequest(path, request, protocol.SearchVariantsResponse) variants = responseData.variants[:10] # get 'the same' variant using the get method for variant in variants: path = '/variants' responseObject = self.sendGetObject(path, variant.id, protocol.Variant) self.assertEqual(responseObject, variant)
def searchVariants(self, variantSetId, start=None, end=None, referenceName=None, callSetIds=None): """ Returns an iterator over the Variants fulfilling the specified conditions from the specified VariantSet. :param str variantSetId: The ID of the :class:`ga4gh.protocol.VariantSet` of interest. :param int start: Required. The beginning of the window (0-based, inclusive) for which overlapping variants should be returned. Genomic positions are non-negative integers less than reference length. Requests spanning the join of circular genomes are represented as two requests one on each side of the join (position 0). :param int end: Required. The end of the window (0-based, exclusive) for which overlapping variants should be returned. :param str referenceName: The name of the :class:`ga4gh.protocol.Reference` we wish to return variants from. :param list callSetIds: Only return variant calls which belong to call sets with these IDs. If an empty array, returns variants without any call objects. If null, returns all variant calls. :return: An iterator over the :class:`ga4gh.protocol.Variant` objects defined by the query parameters. :rtype: iter """ request = protocol.SearchVariantsRequest() request.referenceName = referenceName request.start = start request.end = end request.variantSetId = variantSetId request.callSetIds = callSetIds request.pageSize = self._pageSize return self._runSearchRequest(request, "variants", protocol.SearchVariantsResponse)
def testVariantsSearch(self): expectedId = self.variantSetIds[0] referenceName = '1' request = protocol.SearchVariantsRequest() request.referenceName = referenceName request.start = 0 request.end = 0 request.variantSetId = expectedId # Request windows is too small, no results path = utils.applyVersion('/variants/search') response = self.sendJsonPostRequest(path, request.toJsonString()) self.assertEqual(200, response.status_code) responseData = protocol.SearchVariantsResponse.fromJsonString( response.data) self.assertIsNone(responseData.nextPageToken) self.assertEqual([], responseData.variants) # Larger request window, expect results request.end = 2**16 path = utils.applyVersion('/variants/search') response = self.sendJsonPostRequest(path, request.toJsonString()) self.assertEqual(200, response.status_code) responseData = protocol.SearchVariantsResponse.fromJsonString( response.data) self.assertTrue( protocol.SearchVariantsResponse.validate( responseData.toJsonDict())) self.assertGreater(len(responseData.variants), 0) # Verify all results are in the correct range, set and reference for variant in responseData.variants: self.assertGreaterEqual(variant.start, 0) self.assertLessEqual(variant.end, 2**16) self.assertEqual(variant.variantSetId, expectedId) self.assertEqual(variant.referenceName, referenceName)
def setUp(self): self.request = protocol.SearchVariantsRequest() self.backend = backend.SimulatedBackend() self.dataset = self.backend.getDatasets()[0]
def setUp(self): self.request = protocol.SearchVariantsRequest() self.backend = backend.SimulatedBackend() self.datasetId = self.backend.getDatasetIds()[0] self.dataset = self.backend.getDataset(self.datasetId) self.variantSetLocalId = 'variantSet'
def setUp(self): self.request = protocol.SearchVariantsRequest() self.backend = backend.SimulatedBackend() self.datasetId = self.backend.getDatasetIds()[0] self.variantSetId = "{}:variantSetId".format(self.datasetId)
def setUp(self): self.request = protocol.SearchVariantsRequest() self.backend = backend.Backend(datarepo.SimulatedDataRepository()) self.dataset = self.backend.getDataRepository().getDatasets()[0]