@@ -1085,6 +1085,92 @@ def test_cannot_add_score_set_to_meta_analysis_experiment(session, data_provider
10851085 assert "Score sets may not be added to a meta-analysis experiment." in response_data ["detail" ]
10861086
10871087
1088+ def test_create_single_score_set_meta_analysis_to_others_score_set (session , data_provider , client , setup_router_db , data_files ):
1089+ experiment = create_experiment (client )
1090+ score_set = create_seq_score_set_with_variants (
1091+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv"
1092+ )
1093+
1094+ score_set = (client .post (f"/api/v1/score-sets/{ score_set ['urn' ]} /publish" )).json ()
1095+ change_ownership (session , score_set ["urn" ], ScoreSetDbModel )
1096+ meta_score_set = create_seq_score_set_with_variants (
1097+ client ,
1098+ session ,
1099+ data_provider ,
1100+ None ,
1101+ data_files / "scores.csv" ,
1102+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set ["urn" ]]},
1103+ )
1104+
1105+ score_set_refresh = (client .get (f"/api/v1/score-sets/{ score_set ['urn' ]} " )).json ()
1106+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == [score_set ["urn" ]]
1107+ assert score_set_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1108+ assert isinstance (MAVEDB_TMP_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
1109+
1110+
1111+ def test_multiple_score_set_meta_analysis_single_experiment_with_different_creator (
1112+ session , data_provider , client , setup_router_db , data_files
1113+ ):
1114+ experiment = create_experiment (client )
1115+ score_set_1 = create_seq_score_set_with_variants (
1116+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 1" }
1117+ )
1118+ score_set_2 = create_seq_score_set_with_variants (
1119+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 2" }
1120+ )
1121+
1122+ score_set_1 = (client .post (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} /publish" )).json ()
1123+ score_set_2 = (client .post (f"/api/v1/score-sets/{ score_set_2 ['urn' ]} /publish" )).json ()
1124+
1125+ change_ownership (session , score_set_2 ["urn" ], ScoreSetDbModel )
1126+ meta_score_set = create_seq_score_set_with_variants (
1127+ client ,
1128+ session ,
1129+ data_provider ,
1130+ None ,
1131+ data_files / "scores.csv" ,
1132+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set_1 ["urn" ], score_set_2 ["urn" ]]},
1133+ )
1134+ score_set_1_refresh = (client .get (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} " )).json ()
1135+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == sorted ([score_set_1 ["urn" ], score_set_2 ["urn" ]])
1136+ assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1137+
1138+ meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1139+ assert meta_score_set ["urn" ] == "urn:mavedb:00000001-0-1"
1140+
1141+
1142+ def test_multiple_score_set_meta_analysis_multiple_experiment_sets_with_different_creator (
1143+ session , data_provider , client , setup_router_db , data_files
1144+ ):
1145+ experiment_1 = create_experiment (client , {"title" : "Experiment 1" })
1146+ experiment_2 = create_experiment (client , {"title" : "Experiment 2" })
1147+ score_set_1 = create_seq_score_set_with_variants (
1148+ client , session , data_provider , experiment_1 ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 1" }
1149+ )
1150+ score_set_2 = create_seq_score_set_with_variants (
1151+ client , session , data_provider , experiment_2 ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 2" }
1152+ )
1153+
1154+ score_set_1 = (client .post (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} /publish" )).json ()
1155+ score_set_2 = (client .post (f"/api/v1/score-sets/{ score_set_2 ['urn' ]} /publish" )).json ()
1156+
1157+ change_ownership (session , score_set_2 ["urn" ], ScoreSetDbModel )
1158+ meta_score_set = create_seq_score_set_with_variants (
1159+ client ,
1160+ session ,
1161+ data_provider ,
1162+ None ,
1163+ data_files / "scores.csv" ,
1164+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set_1 ["urn" ], score_set_2 ["urn" ]]},
1165+ )
1166+ score_set_1_refresh = (client .get (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} " )).json ()
1167+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == sorted ([score_set_1 ["urn" ], score_set_2 ["urn" ]])
1168+ assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1169+
1170+ meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1171+ assert meta_score_set ["urn" ] == "urn:mavedb:00000003-0-1"
1172+
1173+
10881174def test_search_score_sets_no_match (session , data_provider , client , setup_router_db , data_files ):
10891175 experiment_1 = create_experiment (client , {"title" : "Experiment 1" })
10901176 create_seq_score_set_with_variants (
0 commit comments