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)
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)
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)
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)
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)
def sendReferencesSearch(self): path = "/references/search" request = protocol.SearchReferencesRequest() response = self.sendPostRequest(path, request) return response
def requestFactory(): request = protocol.SearchReferencesRequest() request.referenceSetId = referenceSet.getId() return request
def createSearchReferencesRequest(self): request = protocol.SearchReferencesRequest() setCommaSeparatedAttribute(request, self.args, 'accessions') setCommaSeparatedAttribute(request, self.args, 'md5checksums') return request