def searchReads( self, readGroupIds, referenceId=None, start=None, end=None): """ Returns an iterator over the Reads fulfilling the specified conditions from the specified ReadGroupIds. :param str readGroupIds: The IDs of the :class:`ga4gh.protocol.ReadGroup` of interest. :param str referenceId: The name of the :class:`ga4gh.protocol.Reference` we wish to return reads mapped to. :param int start: The start position (0-based) of this query. If a reference is specified, this defaults to 0. 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: The end position (0-based, exclusive) of this query. If a reference is specified, this defaults to the reference's length. :return: An iterator over the :class:`ga4gh.protocol.ReadAlignment` objects defined by the query parameters. :rtype: iter """ request = protocol.SearchReadsRequest() request.readGroupIds = readGroupIds request.referenceId = referenceId request.start = start request.end = end request.pageSize = self._pageSize return self._runSearchRequest( request, "reads", protocol.SearchReadsResponse)
def sendReadsSearch(self, readGroupIds=None): if readGroupIds is None: readGroupIds = [self.readGroupId] request = protocol.SearchReadsRequest() request.readGroupIds = readGroupIds request.referenceId = self.referenceId return self.sendPostRequest('/reads/search', request)
def testReads(self): # search read group sets path = utils.applyVersion('/readgroupsets/search') request = protocol.SearchReadGroupSetsRequest() request.datasetId = 'simulatedDataset1' response = self.sendJsonPostRequest(path, request.toJsonString()) self.assertEqual(response.status_code, 200) responseData = protocol.SearchReadGroupSetsResponse.fromJsonString( response.data) readGroupSets = responseData.readGroupSets self.assertEqual(len(readGroupSets), 1) # search reads path = utils.applyVersion('/reads/search') request = protocol.SearchReadsRequest() readGroupId = readGroupSets[0].readGroups[0].id request.readGroupIds = [readGroupId] request.referenceId = "chr1" response = self.sendJsonPostRequest(path, request.toJsonString()) self.assertEqual(response.status_code, 200) responseData = protocol.SearchReadsResponse.fromJsonString( response.data) alignments = responseData.alignments self.assertEqual(len(alignments), self.numAlignmentsPerReadGroup) for alignment in alignments: self.assertEqual(alignment.readGroupId, readGroupId)
def sendReadsSearch(self, readGroupIds=None): if readGroupIds is None: readGroupIds = ['simulatedDataset1:aReadGroupSet:one'] request = protocol.SearchReadsRequest() request.readGroupIds = readGroupIds request.referenceId = "chr1" return self.sendPostRequest('/reads/search', request)
def searchReads(self, readGroupIds, referenceId=None, start=None, end=None): """ Returns an iterator over the Reads fulfilling the specified conditions from the specified ReadGroupIds. :param str readGroupIds: The IDs of the :class:`ga4gh.protocol.ReadGroup` of interest. :param str referenceId: The name of the :class:`ga4gh.protocol.Reference` we wish to return reads mapped to. :param int start: TODO :param int end: TODO :return: An iterator over the :class:`ga4gh.protocol.ReadAlignment` objects defined by the query parameters. :rtype: iter """ request = protocol.SearchReadsRequest() request.readGroupIds = readGroupIds request.referenceId = referenceId request.start = start request.end = end request.pageSize = self._pageSize return self._runSearchRequest(request, "reads", protocol.SearchReadsResponse)
def setUp(self): self.request = protocol.SearchReadsRequest() self.backend = backend.SimulatedBackend(numAlignments=0) referenceSet = self.backend.getReferenceSetByIndex(0) reference = referenceSet.getReferenceByIndex(0) self.request.referenceId = reference.getId() self.dataset = self.backend.getDatasets()[0] self.readGroupSet = self.dataset.getReadGroupSets()[0]
def setUp(self): self.request = protocol.SearchReadsRequest() self.request.referenceId = "chr1" self.backend = backend.SimulatedBackend() self.datasetId = self.backend.getDatasetIds()[0] self.dataset = self.backend.getDataset(self.datasetId) self.readGroupSetLocalId = "aReadGroupSet" self.readGroupLocalId = "aReadGroup" self.readGroupSet = reads.AbstractReadGroupSet( self.dataset, self.readGroupSetLocalId)
def setUp(self): self.request = protocol.SearchReadsRequest() self.backend = backend.Backend( datarepo.SimulatedDataRepository(numAlignments=0)) dataRepo = self.backend.getDataRepository() referenceSet = dataRepo.getReferenceSetByIndex(0) reference = referenceSet.getReferenceByIndex(0) self.request.reference_id = reference.getId() self.dataset = dataRepo.getDatasets()[0] self.readGroupSet = self.dataset.getReadGroupSets()[0]
def createSearchReadsRequest(self): request = protocol.SearchReadsRequest() if self.usingWorkaroundsFor(client.HttpClient.workaroundGoogle): # google says referenceId not a valid field request = self.SearchReadsRequestGoogle() setCommaSeparatedAttribute(request, self.args, 'readGroupIds') request.start = self.args.start request.end = self.args.end request.referenceId = self.args.referenceId return request
def testSearchReads(self): request = protocol.SearchReadsRequest() request.readGroupIds = self.readGroupIds request.referenceId = self.referenceId request.start = self.start request.end = self.end request.pageSize = self.pageSize self.httpClient.searchReads( self.readGroupIds, referenceId=self.referenceId, start=self.start, end=self.end) self.httpClient._runSearchRequest.assert_called_once_with( request, "reads", protocol.SearchReadsResponse)
def testUnsupportedReadOperations(self): path = '/reads/search' dataset = self.dataRepo.getDatasets()[0] readGroupSet = dataset.getReadGroupSets()[0] readGroup = readGroupSet.getReadGroups()[0] reference = readGroupSet.getReferenceSet().getReferences()[0] # unmapped Reads request = protocol.SearchReadsRequest() request.readGroupIds = [readGroup.getId()] request.referenceId = None self.verifySearchMethodNotSupported(request, path) # multiple ReadGroupSets request.readGroupIds = [readGroup.getId(), "42"] request.referenceId = reference.getId() self.verifySearchMethodNotSupported(request, path)
def testOneDatasetRestriction(self): # no datasetIds attr request = protocol.SearchReadsRequest() with self.assertRaises(AssertionError): self._backend._getDatasetFromRequest(request) # datasetIds attr request = protocol.SearchVariantSetsRequest() with self.assertRaises(exceptions.NotExactlyOneDatasetException): self._backend._getDatasetFromRequest(request) datasetId = 'dataset1' request.datasetIds = [datasetId] dataset = self._backend._getDatasetFromRequest(request) self.assertEquals(dataset.getId(), datasetId) request.datasetIds = ['dataset1', 'dataset2'] with self.assertRaises(exceptions.NotExactlyOneDatasetException): self._backend._getDatasetFromRequest(request)
def testReads(self): path = '/reads/search' for dataset in self.backend.getDatasets(): for readGroupSet in dataset.getReadGroupSets(): referenceSet = readGroupSet.getReferenceSet() for reference in referenceSet.getReferences(): for readGroup in readGroupSet.getReadGroups(): # search reads request = protocol.SearchReadsRequest() request.readGroupIds = [readGroup.getId()] request.referenceId = reference.getId() responseData = self.sendSearchRequest( path, request, protocol.SearchReadsResponse) alignments = responseData.alignments self.assertGreater(len(alignments), 0) for alignment in alignments: # TODO more tests here: this is very weak. self.assertEqual(alignment.readGroupId, readGroup.getId())
def sendReadsSearch(self, readGroupIds=None, referenceId=""): request = protocol.SearchReadsRequest() request.read_group_ids.extend(readGroupIds) request.reference_id = referenceId return self.sendPostRequest('/reads/search', request)
def setUp(self): self.request = protocol.SearchReadsRequest() self.backend = backend.SimulatedBackend() self.datasetId = self.backend.getDatasetIds()[0] self.readGroupId = "{}:readGroupId".format(self.datasetId)
def sendReadsSearch(self, readGroupIds=None): if readGroupIds is None: readGroupIds = ['aReadGroupSet:one'] request = protocol.SearchReadsRequest() request.readGroupIds = readGroupIds return self.sendRequest('/reads/search', request)