Source code for genomic_scores_api.views


from datasets_api.permissions import get_instance_timestamp_etag
from django.utils.decorators import method_decorator
from django.views.decorators.http import etag
from query_base.query_base import QueryBaseView
from rest_framework import status
from rest_framework.request import Request
from rest_framework.response import Response


[docs] class GenomicScoresView(QueryBaseView): """View for genomic scores database for the instance."""
[docs] @method_decorator(etag(get_instance_timestamp_etag)) def get(self, _request: Request) -> Response: """List all genomic scores used by the GPF instance.""" res = [] registry = self.gpf_instance.genomic_scores for score_id, score in registry.get_scores(): res.append({ "score": score_id, "desc": score.description, "histogram": score.hist.to_dict(), "help": score.help, "small_values_desc": score.small_values_desc, "large_values_desc": score.large_values_desc, }) return Response(res)
[docs] class GenomicScoreDescsView(QueryBaseView): """View for accessing inner genomic scores data from federations."""
[docs] @method_decorator(etag(get_instance_timestamp_etag)) def get( self, _request: Request, score_id: str | None = None, ) -> Response: """Convert all genomic score descs into a JSON list.""" registry = self.gpf_instance.genomic_scores res = [] if score_id is not None: if score_id not in registry: return Response(status=status.HTTP_404_NOT_FOUND) scores = [ (score_id, registry[score_id]), ] else: scores = registry.get_scores() for _, score in scores: res.append(score.to_json()) return Response(res)