def testToProtocolElement(self):
     dataset = datasets.Dataset('dataset1')
     term = protocol.OntologyTerm()
     term.term = "male genotypic sex"
     term.term_id = "PATO:0020001"
     # Write out a valid input
     print(protocol.toJsonDict(term))
     validIndividual = protocol.Individual(name="test",
                                           created="2016-05-19T21:00:19Z",
                                           updated="2016-05-19T21:00:19Z",
                                           sex=term)
     validIndividual.attributes.attr['test']. \
         values.add().string_value = 'test-info'
     # pass through protocol creation
     individual = bioMetadata.Individual(dataset, "test")
     individual.populateFromJson(protocol.toJson(validIndividual))
     gaIndividual = individual.toProtocolElement()
     # Verify elements exist
     self.assertEqual(gaIndividual.created, validIndividual.created)
     self.assertEqual(gaIndividual.updated, validIndividual.updated)
     # Invalid input
     invalidIndividual = '{"bad:", "json"}'
     individual = bioMetadata.Individual(dataset, "test")
     # Should fail
     self.assertRaises(exceptions.InvalidJsonException,
                       individual.populateFromJson, invalidIndividual)
Exemplo n.º 2
0
 def testToProtocolElement(self):
     dataset = datasets.Dataset('dataset1')
     term = protocol.OntologyTerm()
     term.term = "male genotypic sex"
     term.term_id = "PATO:0020001"
     # Write out a valid input
     print(protocol.toJsonDict(term))
     validIndividual = protocol.Individual(
         name="test",
         created="2016-05-19T21:00:19Z",
         updated="2016-05-19T21:00:19Z",
         sex=term)
     validIndividual.attributes.attr['test']. \
         values.add().string_value = 'test-info'
     # pass through protocol creation
     individual = bioMetadata.Individual(
         dataset, "test")
     individual.populateFromJson(protocol.toJson(validIndividual))
     gaIndividual = individual.toProtocolElement()
     # Verify elements exist
     self.assertEqual(gaIndividual.created, validIndividual.created)
     self.assertEqual(gaIndividual.updated, validIndividual.updated)
     # Invalid input
     invalidIndividual = '{"bad:", "json"}'
     individual = bioMetadata.Individual(dataset, "test")
     # Should fail
     self.assertRaises(
         exceptions.InvalidJsonException,
         individual.populateFromJson,
         invalidIndividual)
Exemplo n.º 3
0
 def sendListRequest(self, path, request):
     headers = {
         'Origin': self.exampleUrl,
     }
     data = protocol.toJsonDict(request)
     response = self.app.post(path, data=data, headers=headers)
     return response
Exemplo n.º 4
0
 def verifyParsedOutputsEqualReadGroup(
         self, clientIterator, cliCommand, cliArguments=""):
     cliOutput = self.captureJsonOutput(cliCommand, cliArguments)
     clientOutput = [
         protocol.toJsonDict(gObj) for gObj in clientIterator]
     self.assertEqual(clientOutput, cliOutput)
     return len(clientOutput)
Exemplo n.º 5
0
 def populateFromJson(self, jsonString):
     # TODO validate
     try:
         parsed = protocol.fromJson(jsonString, protocol.Individual)
     except:
         raise exceptions.InvalidJsonException(jsonString)
     self._created = parsed.created
     self._updated = parsed.updated
     self._description = parsed.description
     self._species = protocol.toJsonDict(parsed.species)
     self._sex = protocol.toJsonDict(parsed.sex)
     attributes = {}
     for key in parsed.attributes.attr:
         attributes[key] = {
             "values": protocol.toJsonDict(parsed.attributes.attr[key])}
     self.setAttributes(attributes)
     return self
Exemplo n.º 6
0
 def populateFromJson(self, jsonString):
     try:
         parsed = protocol.fromJson(jsonString, protocol.Biosample)
     except:
         raise exceptions.InvalidJsonException(jsonString)
     self._created = parsed.created
     self._updated = parsed.updated
     self._description = parsed.description
     self._disease = protocol.toJsonDict(parsed.disease)
     self._individualId = parsed.individual_id
     attributes = {}
     for key in parsed.attributes.attr:
         attributes[key] = {
             "values": protocol.toJsonDict(parsed.attributes.attr[key])
         }
     self.setAttributes(attributes)
     return self
Exemplo n.º 7
0
 def populateFromJson(self, jsonString):
     try:
         parsed = protocol.fromJson(jsonString, protocol.Biosample)
     except:
         raise exceptions.InvalidJsonException(jsonString)
     self._created = parsed.created
     self._updated = parsed.updated
     self._description = parsed.description
     self._disease = protocol.toJsonDict(parsed.disease)
     self._individualId = parsed.individual_id
     self._individualAgeAtCollection = protocol.toJsonDict(
                                        parsed.individual_age_at_collection)
     attributes = {}
     for key in parsed.attributes.attr:
         attributes[key] = {
             "values": protocol.toJsonDict(parsed.attributes.attr[key])}
     self.setAttributes(attributes)
     return self
Exemplo n.º 8
0
    def setSpeciesFromJson(self, speciesJson):
        """
        Sets the species, an OntologyTerm, to the specified value, given as
        a JSON string.

        See the documentation for details of this field.
        """
        try:
            parsed = protocol.fromJson(speciesJson, protocol.OntologyTerm)
        except:
            raise exceptions.InvalidJsonException(speciesJson)
        self._species = protocol.toJsonDict(parsed)
Exemplo n.º 9
0
 def _formatExternalIdentifiers(self, element, element_type):
     """
     Formats several external identifiers for query
     """
     elementClause = None
     elements = []
     if not issubclass(element.__class__, dict):
         element = protocol.toJsonDict(element)
     if element['externalIdentifiers']:
         for _id in element['externalIdentifiers']:
             elements.append(self._formatExternalIdentifier(
                 _id, element_type))
         elementClause = "({})".format(" || ".join(elements))
     return elementClause
Exemplo n.º 10
0
 def testRoundTripDataset(self):
     id_ = "id"
     name = "name"
     description = "description"
     dataset = protocol.Dataset()
     dataset.id = id_
     dataset.name = name
     dataset.description = description
     jsonStr = protocol.toJson(dataset)
     newDataset = protocol.fromJson(jsonStr, Dataset)
     self.assertEquals(dataset.id, id_)
     self.assertEquals(dataset.name, name)
     self.assertEquals(dataset.description, description)
     datasetDict = protocol.toJsonDict(newDataset)
     self.assertEquals(datasetDict['id'], id_)
     self.assertEquals(datasetDict['name'], name)
     self.assertEquals(datasetDict['description'], description)
Exemplo n.º 11
0
 def testRoundTripDataset(self):
     id_ = "id"
     name = "name"
     description = "description"
     dataset = protocol.Dataset()
     dataset.id = id_
     dataset.name = name
     dataset.description = description
     jsonStr = protocol.toJson(dataset)
     newDataset = protocol.fromJson(jsonStr, Dataset)
     self.assertEquals(dataset.id, id_)
     self.assertEquals(dataset.name, name)
     self.assertEquals(dataset.description, description)
     datasetDict = protocol.toJsonDict(newDataset)
     self.assertEquals(datasetDict['id'], id_)
     self.assertEquals(datasetDict['name'], name)
     self.assertEquals(datasetDict['description'], description)
Exemplo n.º 12
0
 def verifyParsedOutputsEqual(
         self, clientIterator, cliCommand, cliArguments="",
         scrubFunc=None):
     """
     Verify that the parsed JSON of all the objects in the specified
     client iterator are equal to the parsed JSON from the specified
     CLI command.
     """
     cliOutput = self.captureJsonOutput(cliCommand, cliArguments)
     clientOutput = [
         protocol.toJsonDict(gObj) for gObj in clientIterator]
     if scrubFunc is not None:
         # this is a hack to deal with the issue of the timestamps on
         # objects being different
         scrubFunc(cliOutput, clientOutput)
     self.assertEqual(clientOutput, cliOutput)
     return len(clientOutput)
Exemplo n.º 13
0
 def testInstantiation(self):
     for class_ in self._getExceptionClasses():
         # some exceptions are becoming too complicated to instantiate
         # like the rest of the exceptions; just do them manually
         if class_ == exceptions.RequestValidationFailureException:
             objClass = protocol.SearchReadsRequest
             obj = objClass()
             obj.start = -1
             jsonDict = protocol.toJsonDict(obj)
             args = (jsonDict, objClass)
         else:
             numInitArgs = len(inspect.getargspec(
                 class_.__init__).args) - 1
             args = ['arg' for _ in range(numInitArgs)]
         instance = class_(*args)
         self.assertIsInstance(instance, exceptions.BaseServerException)
         message = instance.getMessage()
         self.assertIsInstance(message, basestring)
         self.assertGreater(len(message), 0)
         self.assertEqual(instance.getErrorCode(), class_.getErrorCode())
Exemplo n.º 14
0
    def testToGA4GH(self):
        sample_associations = {
            u'environment_label': u'sunitinib',
            u'feature_label': u'RET M918T missense mutation',
            u'evidence_type': u'http://purl.obolibrary.org/obo/ECO_0000033',
            u'feature': {
                u'http://purl.obolibrary.org/obo/GENO_0000408':
                u'http://www.ncbi.nlm.nih.gov/gene/5979',
                u'http://purl.obolibrary.org/obo/GENO_reference_amino_acid':
                u'M',
                u'http://www.w3.org/1999/02/22-rdf-syntax-ns#type':
                u'http://purl.obolibrary.org/obo/SO_0001059',
                u'http://biohackathon.org/resource/faldo#location':
                u'http://www.monarchinitiative.org/_918918UniProtKB:'
                'P07949#P07949-1Region',
                u'http://purl.obolibrary.org/obo/GENO_reference_nucleotide':
                u'T',
                u'http://purl.obolibrary.org/obo/'
                'GENO_results_in_amino_acid_change':
                u'T',
                u'http://purl.obolibrary.org/obo/RO_0002200':
                u'http://ohsu.edu/cgd/3774b1d2',
                u'http://purl.obolibrary.org/obo/RO_0002205':
                u'http://www.ncbi.nlm.nih.gov/CCDS/CcdsBrowse.cgi?'
                'REQUEST=CCDS&DATA=7200.1',
                u'http://purl.obolibrary.org/obo/GENO_altered_nucleotide':
                u'C',
                u'http://www.w3.org/2000/01/rdf-schema#label':
                u'RET M918T missense mutation',
                u'id': u'http://cancer.sanger.ac.uk/cosmic/mutation/'
                'overview?id=965',
                u'http://www.w3.org/2002/07/owl#sameAs':
                u'http://www.ncbi.nlm.nih.gov/SNP/74799832',
            },
            u'evidence': u'http://ohsu.edu/cgd/sensitivity',
            u'environment': {
                u'http://purl.obolibrary.org/obo/RO_0002606':
                u'http://ohsu.edu/cgd/71fe9f0f',
                u'http://www.w3.org/2000/01/rdf-schema#subClassOf':
                u'http://purl.obolibrary.org/obo/CHEBI_23888',
                u'http://www.w3.org/1999/02/22-rdf-syntax-ns#type':
                u'http://www.w3.org/2002/07/owl#Class',
                u'http://www.w3.org/2000/01/rdf-schema#label': u'sunitinib',
                u'id': u'http://www.drugbank.ca/drugs/DB01268',
            },
            u'sources':
            u'http://www.ncbi.nlm.nih.gov/pubmed/21470995|'
            'http://www.ncbi.nlm.nih.gov/pubmed/21470995',
            u'phenotype': {
                u'http://purl.obolibrary.org/obo/BFO_0000159':
                u'http://ohsu.edu/cgd/sensitivity',
                u'http://www.w3.org/1999/02/22-rdf-syntax-ns#type':
                u'http://purl.obolibrary.org/obo/DOID_3969',
                u'http://www.w3.org/2000/01/rdf-schema#label':
                u'Papillary thyroid carcinoma with sensitivity to therapy',
                u'id': u'http://ohsu.edu/cgd/30ebfd1a',
            },
            u'phenotype_label':
            u'Papillary thyroid carcinoma with sensitivity to therapy',
            u'id': u'http://ohsu.edu/cgd/fe484b5c',
            u'association': u'http://ohsu.edu/cgd/fe484b5c',
        }
        result = self.phenotypeAssocationSet._toGA4GH(sample_associations)
        self.assertEqual(
            result.__class__.__name__, 'FeaturePhenotypeAssociation')
        fpa_dict = protocol.toJsonDict(result)
        description = 'Association: genotype:[RET M918T missense mutation]' \
                      ' phenotype:[Papillary thyroid carcinoma with ' \
                      'sensitivity to therapy] environment:[sunitinib]' \
                      ' evidence:[sensitivity] publications:' \
                      '[http://www.ncbi.nlm.nih.gov/pubmed/21470995|' \
                      'http://www.ncbi.nlm.nih.gov/pubmed/21470995]'

        self.assertEqual(fpa_dict['description'], description)
        self.assertIn('featureIds', fpa_dict.keys())
        self.assertIn('evidence', fpa_dict.keys())
        self.assertIn('environmentalContexts', fpa_dict.keys())
        self.assertEqual(len(fpa_dict['featureIds']), 1)
        self.assertEqual(len(fpa_dict['evidence']), 1)
        self.assertEqual(len(fpa_dict['environmentalContexts']), 1)
Exemplo n.º 15
0
 def testToJsonDict(self):
     classes = protocol.getProtocolClasses()
     for clazz in classes:
         obj = clazz()
         jsonDict = protocol.toJsonDict(obj)
         self.assertIsInstance(jsonDict, dict)
Exemplo n.º 16
0
 def testToJsonDict(self):
     classes = protocol.getProtocolClasses()
     for clazz in classes:
         obj = clazz()
         jsonDict = protocol.toJsonDict(obj)
         self.assertIsInstance(jsonDict, dict)