@@ -1071,6 +1071,7 @@ def test_publish_single_score_set_meta_analysis(session, data_provider, client,
10711071 )
10721072
10731073 meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1074+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
10741075 assert meta_score_set ["urn" ] == "urn:mavedb:00000001-0-1"
10751076
10761077
@@ -1101,6 +1102,7 @@ def test_multiple_score_set_meta_analysis_single_experiment(
11011102 assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
11021103
11031104 meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1105+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
11041106 assert meta_score_set ["urn" ] == "urn:mavedb:00000001-0-1"
11051107
11061108
@@ -1132,6 +1134,7 @@ def test_multiple_score_set_meta_analysis_multiple_experiment_sets(
11321134 assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
11331135
11341136 meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1137+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
11351138 assert meta_score_set ["urn" ] == "urn:mavedb:00000003-0-1"
11361139
11371140
@@ -1165,6 +1168,7 @@ def test_multiple_score_set_meta_analysis_multiple_experiments(
11651168 assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
11661169
11671170 meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1171+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
11681172 assert meta_score_set ["urn" ] == "urn:mavedb:00000001-0-1"
11691173
11701174
@@ -1254,8 +1258,126 @@ def test_multiple_score_set_meta_analysis_multiple_experiment_sets_different_sco
12541258 assert meta_score_set_2 ["urn" ] == "urn:mavedb:00000003-0-2"
12551259 meta_score_set_3 = (client .post (f"/api/v1/score-sets/{ meta_score_set_3 ['urn' ]} /publish" )).json ()
12561260 assert meta_score_set_3 ["urn" ] == "urn:mavedb:00000003-0-3"
1261+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set_1 ["urn" ]), re .Match )
1262+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set_2 ["urn" ]), re .Match )
1263+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set_3 ["urn" ]), re .Match )
12571264
12581265
1266+ def test_cannot_add_score_set_to_meta_analysis_experiment (session , data_provider , client , setup_router_db , data_files ):
1267+ experiment = create_experiment (client )
1268+ score_set_1 = create_seq_score_set_with_variants (
1269+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv"
1270+ )
1271+
1272+ score_set_1 = (client .post (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} /publish" )).json ()
1273+ meta_score_set_1 = create_seq_score_set_with_variants (
1274+ client ,
1275+ session ,
1276+ data_provider ,
1277+ None ,
1278+ data_files / "scores.csv" ,
1279+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set_1 ["urn" ]]},
1280+ )
1281+
1282+ meta_score_set_1 = (client .post (f"/api/v1/score-sets/{ meta_score_set_1 ['urn' ]} /publish" )).json ()
1283+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set_1 ["urn" ]), re .Match )
1284+ score_set_2 = deepcopy (TEST_MINIMAL_SEQ_SCORESET )
1285+ score_set_2 ["experimentUrn" ] = meta_score_set_1 ['experiment' ]['urn' ]
1286+ jsonschema .validate (instance = score_set_2 , schema = ScoreSetCreate .schema ())
1287+
1288+ response = client .post ("/api/v1/score-sets/" , json = score_set_2 )
1289+ response_data = response .json ()
1290+ assert response .status_code == 403
1291+ assert "Score sets may not be added to a meta-analysis experiment." in response_data ["detail" ]
1292+
1293+
1294+ def test_create_single_score_set_meta_analysis_to_others_score_set (session , data_provider , client , setup_router_db , data_files ):
1295+ experiment = create_experiment (client )
1296+ score_set = create_seq_score_set_with_variants (
1297+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv"
1298+ )
1299+
1300+ score_set = (client .post (f"/api/v1/score-sets/{ score_set ['urn' ]} /publish" )).json ()
1301+ change_ownership (session , score_set ["urn" ], ScoreSetDbModel )
1302+ meta_score_set = create_seq_score_set_with_variants (
1303+ client ,
1304+ session ,
1305+ data_provider ,
1306+ None ,
1307+ data_files / "scores.csv" ,
1308+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set ["urn" ]]},
1309+ )
1310+
1311+ score_set_refresh = (client .get (f"/api/v1/score-sets/{ score_set ['urn' ]} " )).json ()
1312+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == [score_set ["urn" ]]
1313+ assert score_set_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1314+ assert isinstance (MAVEDB_TMP_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
1315+
1316+
1317+ def test_multiple_score_set_meta_analysis_single_experiment_with_different_creator (
1318+ session , data_provider , client , setup_router_db , data_files
1319+ ):
1320+ experiment = create_experiment (client )
1321+ score_set_1 = create_seq_score_set_with_variants (
1322+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 1" }
1323+ )
1324+ score_set_2 = create_seq_score_set_with_variants (
1325+ client , session , data_provider , experiment ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 2" }
1326+ )
1327+
1328+ score_set_1 = (client .post (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} /publish" )).json ()
1329+ score_set_2 = (client .post (f"/api/v1/score-sets/{ score_set_2 ['urn' ]} /publish" )).json ()
1330+
1331+ change_ownership (session , score_set_2 ["urn" ], ScoreSetDbModel )
1332+ meta_score_set = create_seq_score_set_with_variants (
1333+ client ,
1334+ session ,
1335+ data_provider ,
1336+ None ,
1337+ data_files / "scores.csv" ,
1338+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set_1 ["urn" ], score_set_2 ["urn" ]]},
1339+ )
1340+ score_set_1_refresh = (client .get (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} " )).json ()
1341+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == sorted ([score_set_1 ["urn" ], score_set_2 ["urn" ]])
1342+ assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1343+
1344+ meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1345+ assert meta_score_set ["urn" ] == "urn:mavedb:00000001-0-1"
1346+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
1347+
1348+
1349+ def test_multiple_score_set_meta_analysis_multiple_experiment_sets_with_different_creator (
1350+ session , data_provider , client , setup_router_db , data_files
1351+ ):
1352+ experiment_1 = create_experiment (client , {"title" : "Experiment 1" })
1353+ experiment_2 = create_experiment (client , {"title" : "Experiment 2" })
1354+ score_set_1 = create_seq_score_set_with_variants (
1355+ client , session , data_provider , experiment_1 ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 1" }
1356+ )
1357+ score_set_2 = create_seq_score_set_with_variants (
1358+ client , session , data_provider , experiment_2 ["urn" ], data_files / "scores.csv" , update = {"title" : "Score Set 2" }
1359+ )
1360+
1361+ score_set_1 = (client .post (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} /publish" )).json ()
1362+ score_set_2 = (client .post (f"/api/v1/score-sets/{ score_set_2 ['urn' ]} /publish" )).json ()
1363+
1364+ change_ownership (session , score_set_2 ["urn" ], ScoreSetDbModel )
1365+ meta_score_set = create_seq_score_set_with_variants (
1366+ client ,
1367+ session ,
1368+ data_provider ,
1369+ None ,
1370+ data_files / "scores.csv" ,
1371+ update = {"title" : "Test Meta Analysis" , "metaAnalyzesScoreSetUrns" : [score_set_1 ["urn" ], score_set_2 ["urn" ]]},
1372+ )
1373+ score_set_1_refresh = (client .get (f"/api/v1/score-sets/{ score_set_1 ['urn' ]} " )).json ()
1374+ assert meta_score_set ["metaAnalyzesScoreSetUrns" ] == sorted ([score_set_1 ["urn" ], score_set_2 ["urn" ]])
1375+ assert score_set_1_refresh ["metaAnalyzedByScoreSetUrns" ] == [meta_score_set ["urn" ]]
1376+
1377+ meta_score_set = (client .post (f"/api/v1/score-sets/{ meta_score_set ['urn' ]} /publish" )).json ()
1378+ assert meta_score_set ["urn" ] == "urn:mavedb:00000003-0-1"
1379+ assert isinstance (MAVEDB_SCORE_SET_URN_RE .fullmatch (meta_score_set ["urn" ]), re .Match )
1380+
12591381########################################################################################################################
12601382# Score set search
12611383########################################################################################################################
0 commit comments