Skip to content

Commit f4e900b

Browse files
committed
Add quickgo_hits
1 parent 276518b commit f4e900b

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

backend/sequence/api/xref/serializers.py

+22
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import json
2+
import requests
3+
14
from drf_spectacular.types import OpenApiTypes
25
from drf_spectacular.utils import extend_schema_field
36
from rest_framework import serializers
@@ -43,6 +46,9 @@ class XrefSerializer(serializers.Serializer):
4346
mirbase_precursor = serializers.SerializerMethodField(
4447
method_name="get_mirbase_precursor"
4548
)
49+
quickgo_hits = serializers.SerializerMethodField(
50+
method_name="get_quickgo_hits"
51+
)
4652
refseq_mirna_mature_products = serializers.SerializerMethodField(
4753
method_name="get_refseq_mirna_mature_products"
4854
)
@@ -116,6 +122,22 @@ def get_mirbase_precursor(self, obj):
116122

117123
return get_related_sequence(obj.accession_id, "precursor")
118124

125+
def get_quickgo_hits(self, obj):
126+
"""Return the number of annotations in QuickGO"""
127+
if obj.accession.database == "PSICQUIC":
128+
urs_taxid = obj.upi.upi + "_" + str(obj.taxid)
129+
try:
130+
response = requests.get(
131+
f"https://www.ebi.ac.uk/QuickGO/services/annotation/stats?geneProductId={urs_taxid}"
132+
)
133+
data = json.loads(response.text)
134+
hits = data["results"][0]["totalHits"]
135+
except Exception:
136+
hits = None
137+
else:
138+
hits = None
139+
return hits
140+
119141
def get_refseq_mirna_mature_products(self, obj):
120142
if obj.db_id != 9: # 9 = REFSEQ
121143
return None

0 commit comments

Comments
 (0)