@@ -277,6 +277,38 @@ def record_counts(model: RecordNames, group: Optional[GroupBy] = None, db: Sessi
277277 return OrderedDict (sorted (grouped .items ()))
278278
279279
280+ @router .get ("/record/score-set/variant/count" , status_code = 200 , response_model = dict [str , int ])
281+ def record_variant_counts (db : Session = Depends (get_db )) -> dict [str , int ]:
282+ """
283+ Returns a dictionary of counts for the number of published and distinct variants in the database contained
284+ within a given record.
285+ """
286+ variants = db .execute (
287+ select (PublishedVariantsMV .score_set_urn , func .count (PublishedVariantsMV .variant_id ))
288+ .group_by (PublishedVariantsMV .score_set_urn )
289+ .order_by (PublishedVariantsMV .score_set_urn )
290+ ).all ()
291+
292+ grouped = {urn : sum (c for _ , c in g ) for urn , g in itertools .groupby (variants , lambda t : t [0 ])}
293+ return OrderedDict (sorted (filter (lambda item : item [1 ] > 0 , grouped .items ())))
294+
295+
296+ @router .get ("/record/score-set/mapped-variant/count" , status_code = 200 , response_model = dict [str , int ])
297+ def record_mapped_variant_counts (db : Session = Depends (get_db )) -> dict [str , int ]:
298+ """
299+ Returns a dictionary of counts for the number of published and distinct mapped variants in the database contained
300+ within a given record.
301+ """
302+ variants = db .execute (
303+ select (PublishedVariantsMV .score_set_urn , func .count (PublishedVariantsMV .mapped_variant_id ))
304+ .group_by (PublishedVariantsMV .score_set_urn )
305+ .order_by (PublishedVariantsMV .score_set_urn )
306+ ).all ()
307+
308+ grouped = {urn : sum (c for _ , c in g ) for urn , g in itertools .groupby (variants , lambda t : t [0 ])}
309+ return OrderedDict (sorted (filter (lambda item : item [1 ] > 0 , grouped .items ())))
310+
311+
280312########################################################################################
281313# Target statistics
282314########################################################################################
0 commit comments