예제 #1
0
 def create_phenotype_terms():
     print('Creating phenotype terms')
     handle = os.path.join(FIXTURE_DIR, 'hpo.json')
     with open(handle, 'r', encoding='utf-8') as f:
         hpo_json = f.read()
         g = obograph_util.convert_json_object(json.loads(hpo_json))
         ont = Ontology(handle=handle, payload=g)
         phenotype_terms = []
         for class_node in get_classes(ont):
             phenotype_terms.append(
                 PhenotypeTerm(term_id=class_node[0], label=class_node[1]))
         PhenotypeTerm.objects.bulk_create(phenotype_terms)
예제 #2
0
 def create_study_terms():
     print('Creating study terms')
     handle = os.path.join(FIXTURE_DIR, 'edda.json')
     with open(handle, 'r', encoding='utf-8') as f:
         edda_json = f.read()
         g = obograph_util.convert_json_object(json.loads(edda_json))
         ont = Ontology(handle=handle, payload=g)
         study_terms = []
         for class_node in get_classes(ont):
             study_terms.append(
                 StudyTerm(term_id=class_node[0], label=class_node[1]))
         StudyTerm.objects.bulk_create(study_terms)
예제 #3
0
 def create_disease_terms():
     print('Removing existing disease terms')
     with connection.cursor() as cursor:
         cursor.execute("truncate core_diseaseterm cascade")
     print('Creating hdo disease terms')
     handle = os.path.join(FIXTURE_DIR, 'hdo.json')
     with open(handle, 'r', encoding='utf-8') as f:
         hdo_json = f.read()
         g = obograph_util.convert_json_object(json.loads(hdo_json))
         ont = Ontology(handle=handle, payload=g)
         disease_terms = []
         for class_node in get_classes(ont):
             disease_terms.append(DiseaseTerm(term_id=class_node[0], label=class_node[1]))
         DiseaseTerm.objects.bulk_create(disease_terms)
예제 #4
0
    def get(self, id):
        """
        Returns evidence graph as a png

        TODO - requires matplotlib which is hard to install
        """
        args = parser.parse_args()

        assoc = get_association(id, user_agent=USER_AGENT)
        eg = {'graphs': [assoc.get('evidence_graph')]}
        digraph = convert_json_object(eg)
        #fp = tempfile.TemporaryFile()
        nx.draw(digraph)
        fn = '/tmp/' + id + '.png'  # TODO
        plt.savefig(fn)
        return send_file(fn)
예제 #5
0
    def test_obograph_to_assoc_results(self):
        # Hits the mock solr manager in setup_class
        results = self.golr_query.exec()
        assoc = results['associations'][0] if len(
            results['associations']) > 0 else {}
        eg = {'graphs': [assoc.get('evidence_graph')]}
        digraph = convert_json_object(eg, reverse_edges=False)['graph']
        association_results = obograph_to_assoc_results(digraph)

        results = json.dumps(
            association_results,
            default=lambda obj: getattr(obj, '__dict__', str(obj)))
        expected_fh = os.path.join(os.path.dirname(__file__),
                                   'resources/expected/test-evidence.json')
        expected_results = json.dumps(json.load(open(expected_fh)))

        assert results == expected_results
예제 #6
0
 def create_gene_terms():
     print('Creating gene terms')
     handle = os.path.join(FIXTURE_DIR, 'hgnc.json')
     with open(handle, 'r', encoding='utf-8') as f:
         hgnc_json = f.read()
         g = obograph_util.convert_json_object(json.loads(hgnc_json))
         ont = Ontology(handle=handle, payload=g)
         gene_terms = []
         for n_id in ont.nodes():
             n_dict = ont.node(n_id)
             if 'type' in n_dict:
                 if ont.node_type(n_id) == 'CLASS':
                     for t in n_dict['meta']['basicPropertyValues']:
                         if t['pred'] == 'http://ncicb.nci.nih.gov/xml/owl/EVS/Hugo.owl#Approved_Symbol':
                             symbol = t['val']
                             if not symbol.endswith('~withdrawn'):
                                 # print('{}   {}'.format(n_id, symbol))
                                 gene_terms.append(
                                     GeneTerm(term_id=n_id, label=symbol))
                                 break
         GeneTerm.objects.bulk_create(gene_terms)
예제 #7
0
def create_ontology_from_obograph(og):
    ont = None
    g = obograph_util.convert_json_object(og)
    ont = Ontology(handle=None, payload=g)
    return ont