Skip to content

Commit 331fb8d

Browse files
authored
Merge pull request #365 from VariantEffect/estelle/testMetaAnalysis
Estelle/test meta analysis
2 parents 60bcf61 + 039da08 commit 331fb8d

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

tests/routers/test_score_set.py

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)