예제 #1
0
 def testReferencesSearch(self):
     path = '/references/search'
     for referenceSet in self.backend.getReferenceSets():
         references = referenceSet.getReferences()
         request = protocol.SearchReferencesRequest()
         request.referenceSetId = referenceSet.getId()
         self.verifySearchMethod(request, path,
                                 protocol.SearchReferencesResponse,
                                 references, self.verifyReferencesEqual)
     for badId in self.getBadIds():
         request = protocol.SearchReferencesRequest()
         request.referenceSetId = badId
         self.verifySearchMethodFails(request, path)
예제 #2
0
    def testReferences(self):
        # search for reference sets
        path = utils.applyVersion('/referencesets/search')
        request = protocol.SearchReferenceSetsRequest()
        response = self.sendJsonPostRequest(path, request.toJsonString())
        self.assertEqual(response.status_code, 200)
        responseData = protocol.SearchReferenceSetsResponse.fromJsonString(
            response.data)
        referenceSets = responseData.referenceSets
        self.assertEqual(self.numReferenceSets, len(referenceSets))

        # search for references
        path = utils.applyVersion('/references/search')
        request = protocol.SearchReferencesRequest()
        response = self.sendJsonPostRequest(path, request.toJsonString())
        self.assertEqual(response.status_code, 200)
        responseData = protocol.SearchReferencesResponse.fromJsonString(
            response.data)
        references = responseData.references
        self.assertEqual(
            self.numReferenceSets * self.numReferencesPerReferenceSet,
            len(references))

        for referenceSet in referenceSets:
            # fetch the reference set
            path = utils.applyVersion('/referencesets/{}'.format(
                referenceSet.id))
            response = self.app.get(path)
            self.assertEqual(response.status_code, 200)
            fetchedReferenceSet = protocol.ReferenceSet.fromJsonString(
                response.data)
            self.assertEqual(fetchedReferenceSet, referenceSet)
            self.assertEqual(len(fetchedReferenceSet.referenceIds),
                             self.numReferencesPerReferenceSet)

            for referenceId in referenceSet.referenceIds:
                # fetch the reference
                path = utils.applyVersion('/references/{}'.format(referenceId))
                response = self.app.get(path)
                self.assertEqual(response.status_code, 200)
                fetchedReference = protocol.Reference.fromJsonString(
                    response.data)
                self.assertEqual(fetchedReference.id, referenceId)

                # fetch the bases
                path = utils.applyVersion(
                    '/references/{}/bases'.format(referenceId))
                args = protocol.ListReferenceBasesRequest().toJsonDict()
                response = self.app.get(path, data=args)
                self.assertEqual(response.status_code, 200)
                bases = protocol.ListReferenceBasesResponse.fromJsonString(
                    response.data)
                self.assertEqual(len(bases.sequence), 200)
                self.assertEqual(set(bases.sequence), set(['A', 'C', 'T',
                                                           'G']))
                calculatedDigest = hashlib.md5(bases.sequence).hexdigest()
                self.assertEqual(calculatedDigest,
                                 fetchedReference.md5checksum)
예제 #3
0
 def testSearchReferences(self):
     request = protocol.SearchReferencesRequest()
     request.referenceSetId = self.referenceSetId
     request.pageSize = self.pageSize
     request.accession = self.accession
     request.md5checksum = self.md5checksum
     self.httpClient.searchReferences(
         self.referenceSetId, accession=self.accession,
         md5checksum=self.md5checksum)
     self.httpClient._runSearchRequest.assert_called_once_with(
         request, "references", protocol.SearchReferencesResponse)
예제 #4
0
파일: client.py 프로젝트: sguthrie/server
    def searchReferences(self,
                         referenceSetId,
                         accession=None,
                         md5checksum=None):
        """
        Returns an iterator over the References fulfilling the specified
        conditions from the specified Dataset.

        :param str accession: TODO
        :param str md5checksum: TODO
        :return: An iterator over the :class:`ga4gh.protocol.Reference`
            objects defined by the query parameters.
        """
        request = protocol.SearchReferencesRequest()
        request.referenceSetId = referenceSetId
        request.accession = accession
        request.md5checksum = md5checksum
        request.pageSize = self._pageSize
        return self._runSearchRequest(request, "references",
                                      protocol.SearchReferencesResponse)
예제 #5
0
    def searchReferences(
            self, referenceSetId, accession=None, md5checksum=None):
        """
        Returns an iterator over the References fulfilling the specified
        conditions from the specified Dataset.

        :param str referenceSetId: The ReferenceSet to search.
        :param str accession: If not None, return the references for which the
            `accession` matches this string (case-sensitive, exact match).
        :param str md5checksum: If not None, return the references for which
            the `md5checksum` matches this string (case-sensitive, exact
            match).
        :return: An iterator over the :class:`ga4gh.protocol.Reference`
            objects defined by the query parameters.
        """
        request = protocol.SearchReferencesRequest()
        request.referenceSetId = referenceSetId
        request.accession = accession
        request.md5checksum = md5checksum
        request.pageSize = self._pageSize
        return self._runSearchRequest(
            request, "references", protocol.SearchReferencesResponse)
예제 #6
0
 def sendReferencesSearch(self):
     path = "/references/search"
     request = protocol.SearchReferencesRequest()
     response = self.sendPostRequest(path, request)
     return response
예제 #7
0
 def requestFactory():
     request = protocol.SearchReferencesRequest()
     request.referenceSetId = referenceSet.getId()
     return request
예제 #8
0
파일: cli.py 프로젝트: afirth/server
 def createSearchReferencesRequest(self):
     request = protocol.SearchReferencesRequest()
     setCommaSeparatedAttribute(request, self.args, 'accessions')
     setCommaSeparatedAttribute(request, self.args, 'md5checksums')
     return request