Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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'])
Exemplo n.º 3
0
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']
        )
Exemplo n.º 4
0
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']
        )
Exemplo n.º 5
0
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)