Example #1
0
    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)
Example #2
0
 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)
Example #3
0
    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)
Example #4
0
 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)
Example #5
0
    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)
Example #6
0
 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]
Example #9
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
Example #10
0
 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)
Example #11
0
    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)
Example #12
0
    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)
Example #13
0
 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())
Example #14
0
 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)
Example #15
0
 def setUp(self):
     self.request = protocol.SearchReadsRequest()
     self.backend = backend.SimulatedBackend()
     self.datasetId = self.backend.getDatasetIds()[0]
     self.readGroupId = "{}:readGroupId".format(self.datasetId)
Example #16
0
 def sendReadsSearch(self, readGroupIds=None):
     if readGroupIds is None:
         readGroupIds = ['aReadGroupSet:one']
     request = protocol.SearchReadsRequest()
     request.readGroupIds = readGroupIds
     return self.sendRequest('/reads/search', request)