2323)
2424from mavedb .lib .contributors import find_or_create_contributor
2525from mavedb .lib .exceptions import MixedTargetError , NonexistentOrcidUserError , ValidationError
26+ from mavedb .lib .experiments import enrich_experiment_with_num_score_sets
2627from mavedb .lib .identifiers import (
2728 create_external_gene_identifier_offset ,
2829 find_or_create_doi_identifier ,
7273
7374async def fetch_score_set_by_urn (
7475 db , urn : str , user : Optional [UserData ], owner_or_contributor : Optional [UserData ], only_published : bool
75- ) -> Optional [ ScoreSet ] :
76+ ) -> ScoreSet :
7677 """
7778 Fetch one score set by URN, ensuring that the user has read permission.
7879
@@ -135,7 +136,15 @@ def search_score_sets(
135136 Search score sets.
136137 """
137138 score_sets = _search_score_sets (db , None , search )
138- return fetch_superseding_score_set_in_search_result (score_sets , user_data , search )
139+ updated_score_sets = fetch_superseding_score_set_in_search_result (score_sets , user_data , search )
140+ enriched_score_sets = []
141+ if updated_score_sets :
142+ for u in updated_score_sets :
143+ enriched_experiment = enrich_experiment_with_num_score_sets (u .experiment , user_data )
144+ response_item = score_set .ScoreSet .from_orm (u ).copy (update = {"experiment" : enriched_experiment })
145+ enriched_score_sets .append (response_item )
146+
147+ return enriched_score_sets
139148
140149
141150@router .get ("/score-sets/mapped-genes" , status_code = 200 , response_model = dict [str , list [str ]])
@@ -183,7 +192,15 @@ def search_my_score_sets(
183192 Search score sets created by the current user..
184193 """
185194 score_sets = _search_score_sets (db , user_data .user , search )
186- return fetch_superseding_score_set_in_search_result (score_sets , user_data , search )
195+ updated_score_sets = fetch_superseding_score_set_in_search_result (score_sets , user_data , search )
196+ enriched_score_sets = []
197+ if updated_score_sets :
198+ for u in updated_score_sets :
199+ enriched_experiment = enrich_experiment_with_num_score_sets (u .experiment , user_data )
200+ response_item = score_set .ScoreSet .from_orm (u ).copy (update = {"experiment" : enriched_experiment })
201+ enriched_score_sets .append (response_item )
202+
203+ return enriched_score_sets
187204
188205
189206@router .get (
@@ -203,7 +220,9 @@ async def show_score_set(
203220 Fetch a single score set by URN.
204221 """
205222 save_to_logging_context ({"requested_resource" : urn })
206- return await fetch_score_set_by_urn (db , urn , user_data , None , False )
223+ item = await fetch_score_set_by_urn (db , urn , user_data , None , False )
224+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
225+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
207226
208227
209228@router .get (
@@ -647,7 +666,9 @@ async def create_score_set(
647666 db .refresh (item )
648667
649668 save_to_logging_context ({"created_resource" : item .urn })
650- return item
669+
670+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
671+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
651672
652673
653674@router .post (
@@ -711,7 +732,8 @@ async def upload_score_set_variant_data(
711732 db .add (item )
712733 db .commit ()
713734 db .refresh (item )
714- return item
735+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
736+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
715737
716738
717739@router .post (
@@ -748,7 +770,8 @@ async def update_score_set_calibration_data(
748770 db .refresh (item )
749771
750772 save_to_logging_context ({"updated_resource" : item .urn })
751- return item
773+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
774+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
752775
753776
754777@router .put (
@@ -1004,7 +1027,9 @@ async def update_score_set(
10041027 db .refresh (item )
10051028
10061029 save_to_logging_context ({"updated_resource" : item .urn })
1007- return item
1030+
1031+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
1032+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
10081033
10091034
10101035@router .delete ("/score-sets/{urn}" , responses = {422 : {}})
@@ -1142,7 +1167,8 @@ async def publish_score_set(
11421167 msg = "Failed to enqueue published variant materialized view refresh job." , extra = logging_context ()
11431168 )
11441169
1145- return item
1170+ enriched_experiment = enrich_experiment_with_num_score_sets (item .experiment , user_data )
1171+ return score_set .ScoreSet .from_orm (item ).copy (update = {"experiment" : enriched_experiment })
11461172
11471173
11481174@router .get (
@@ -1276,3 +1302,4 @@ async def get_clinical_controls_options_for_score_set(
12761302 dict (zip (("db_name" , "available_versions" ), (db_name , db_versions )))
12771303 for db_name , db_versions in clinical_control_options .items ()
12781304 ]
1305+
0 commit comments