82 lines
3.0 KiB
Python
Executable File
82 lines
3.0 KiB
Python
Executable File
from __future__ import annotations
|
|
|
|
from gfa_core.mas.tools.stage_identity import merge_manifest_identity_params, resolve_stage_identity
|
|
|
|
|
|
def test_postflight_manifest_identity_overrides_stale_task_identity(tmp_path):
|
|
workspace_root = tmp_path / "workspace"
|
|
(workspace_root / "job_manifest" / "final").mkdir(parents=True)
|
|
stale_params = {
|
|
"prefix": "Si.HDZIP",
|
|
"scopeId": "HDZIP.target-Si.target_only",
|
|
"scopeMode": "target_only",
|
|
"analysisRoute": "single_species",
|
|
"memberSetId": "HDZIP.target-Si.target_only:single_species:all_members",
|
|
"targetSpecies": ["Si"],
|
|
"referenceSpecies": [],
|
|
}
|
|
manifest = {
|
|
"stage": "combo",
|
|
"prefix": "Si.HDZIP",
|
|
"scope_id": "HDZIP.target-Si.ref-At.target_plus_reference",
|
|
"analysis_route": "subfamily_evidence",
|
|
"member_set_id": "HDZIP.target-Si.ref-At.target_plus_reference:subfamily_evidence:domain_refined",
|
|
"stage_context": {
|
|
"scope_mode": "target_plus_reference",
|
|
"family": "HDZIP",
|
|
"target_species": ["Si"],
|
|
"reference_species": ["At"],
|
|
"selected_species": ["Si", "At"],
|
|
},
|
|
}
|
|
|
|
merged = merge_manifest_identity_params(stale_params, manifest)
|
|
identity = resolve_stage_identity(
|
|
stage="combo",
|
|
prefix="Si.HDZIP",
|
|
params=merged,
|
|
job_id="job_manifest",
|
|
workspace_root=workspace_root,
|
|
)
|
|
|
|
assert identity.scope_id == "HDZIP.target-Si.ref-At.target_plus_reference"
|
|
assert identity.scope_mode == "target_plus_reference"
|
|
assert identity.analysis_route == "subfamily_evidence"
|
|
assert identity.member_set_id == "HDZIP.target-Si.ref-At.target_plus_reference:subfamily_evidence:domain_refined"
|
|
assert identity.reference_species == ["At"]
|
|
|
|
|
|
def test_postflight_manifest_identity_preserves_unscoped_regular_combo():
|
|
merged = merge_manifest_identity_params(
|
|
{
|
|
"prefix": "Ft.SPL",
|
|
"scopeId": "SPL.target-Ft.target_only",
|
|
"analysisRoute": "single_species",
|
|
"memberSetId": "SPL.target-Ft.target_only:single_species:all_members",
|
|
},
|
|
{"stage": "combo", "prefix": "Ft.SPL", "status": "success"},
|
|
)
|
|
|
|
assert merged["prefix"] == "Ft.SPL"
|
|
assert "scopeId" not in merged
|
|
assert "scope_id" not in merged
|
|
assert "analysisRoute" not in merged
|
|
assert "analysis_route" not in merged
|
|
assert "memberSetId" not in merged
|
|
assert "member_set_id" not in merged
|
|
|
|
|
|
def test_postflight_manifest_identity_merges_wgs_index_identity():
|
|
manifest = {
|
|
"stage": "wgs_index",
|
|
"prefix": "Os",
|
|
"status": "success",
|
|
"wgs_reference_id": "wgs-reference:" + "b" * 64,
|
|
"wgs_analysis_id": "wgs-analysis:" + "c" * 64,
|
|
}
|
|
|
|
merged = merge_manifest_identity_params({"prefix": "Os"}, manifest)
|
|
|
|
assert merged["wgsReferenceId"] == manifest["wgs_reference_id"]
|
|
assert merged["wgsAnalysisId"] == manifest["wgs_analysis_id"]
|