def test_owlsim_singleton(self): """ test that two calls to get_owlsim_api() get the same object """ foo = get_owlsim_api() bar = get_owlsim_api() assert foo is bar
class AnnotationScore(Resource): annotation_scorer = AnnotationScorer(get_owlsim_api()) @api.expect(sufficiency_input) @api.marshal_with(sufficiency_output) def post(self): """ Get annotation score """ data = request.json phenotypes = [ feature['id'] for feature in data['features'] if feature['isPresent'] is True ] absent_phenotypes = [ feature['id'] for feature in data['features'] if feature['isPresent'] is False ] return AnnotationScore.annotation_scorer.get_annotation_sufficiency( profile=phenotypes, negated_classes=absent_phenotypes) @api.expect(score_get) @api.marshal_with(sufficiency_output) def get(self): """ Get annotation score """ input_args = score_get.parse_args() return AnnotationScore.annotation_scorer.get_annotation_sufficiency( profile=input_args['id'], negated_classes=input_args['absent_id'])
class SimSearch(Resource): sim_engine = PhenoSimEngine(get_owlsim_api()) @api.expect(sim_search_parser) @api.marshal_with(sim_result) def get(self): """ Search for phenotypically similar diseases or model genes """ input_args = sim_search_parser.parse_args() return SimCompare.sim_engine.search( id_list=input_args['id'], limit=input_args['limit'], taxon_filter=input_args['taxon'], method=SimAlgorithm(input_args['metric']), is_feature_set=input_args['is_feature_set'] )
class SimCompare(Resource): sim_engine = PhenoSimEngine(get_owlsim_api()) @api.expect(compare_input) @api.marshal_with(sim_result) def post(self): """ Compare a reference profile vs one or more profiles """ data = request.json if 'metric' not in data: data['metric'] = 'phenodigm' if 'is_feature_set' not in data: data['is_feature_set'] = True return SimCompare.sim_engine.compare( reference_ids=data['reference_ids'], query_profiles=data['query_ids'], method=SimAlgorithm(data['metric']), is_feature_set=data['is_feature_set'] ) @api.expect(sim_compare_parser) @api.marshal_with(sim_result) def get(self): """ Compare a reference profile vs one profiles """ input_args = sim_compare_parser.parse_args() return SimCompare.sim_engine.compare( reference_ids=input_args['ref_id'], query_profiles=[input_args['query_id']], method=SimAlgorithm(input_args['metric']), is_feature_set = input_args['is_feature_set'] )
from dataclasses import asdict from flask_restplus import Resource from flask import request, make_response from marshmallow import ValidationError from biolink.api.restplus import api from biolink.api.sim.endpoints.owlsim import get_owlsim_api from biolink.datamodel.mme_serializers import mme_request_marshmallow from biolink.datamodel.serializers import mme from ontobio.sim.mme import query_owlsim from ontobio.sim.phenosim_engine import PhenoSimEngine sim_engine = PhenoSimEngine(get_owlsim_api()) def get_mme_response(data, taxon: str = None): try: mme_request = mme_request_marshmallow.load(data) except ValidationError as err: return { 'error': { 'message': f'missing/invalid data {err}', 'code': 400 } }, 400 match_data = query_owlsim(mme_request, sim_engine, taxon=taxon)