Skip to content

Commit 7396413

Browse files
authored
Dev (#1039)
* bump hail version (#1027) * Benb/bugfix allow deleting project to succeed if no project (#1038) * First pass * add comment * ruff
1 parent 4a94b03 commit 7396413

File tree

2 files changed

+45
-17
lines changed

2 files changed

+45
-17
lines changed
Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
import os
2+
13
import hail as hl
4+
import hailtop.fs as hfs
25
import luigi
36
import luigi.util
47

5-
from v03_pipeline.lib.misc.project_tables import get_valid_project_tables
8+
from v03_pipeline.lib.model import SampleType
9+
from v03_pipeline.lib.paths import project_table_path
610
from v03_pipeline.lib.tasks.base.base_loading_pipeline_params import (
711
BaseLoadingPipelineParams,
812
)
@@ -11,33 +15,55 @@
1115

1216
@luigi.util.inherits(BaseLoadingPipelineParams)
1317
class DeleteProjectFamilyTablesTask(luigi.Task):
18+
sample_type = luigi.EnumParameter(enum=SampleType)
1419
project_guid = luigi.Parameter()
1520

1621
def __init__(self, *args, **kwargs):
1722
super().__init__(*args, **kwargs)
1823
self.dynamic_delete_family_table_tasks = set()
1924

2025
def complete(self) -> bool:
26+
project_ht_path = project_table_path(
27+
self.reference_genome,
28+
self.dataset_type,
29+
self.sample_type,
30+
self.project_guid,
31+
)
32+
if not (
33+
hfs.exists(project_ht_path)
34+
and hfs.exists(
35+
os.path.join(project_ht_path, '_SUCCESS'),
36+
)
37+
):
38+
# Task should succeed even if there are no
39+
# project tables. We rely on the premise
40+
# that a family table is generated from a
41+
# project table to assert that if a project
42+
# table does not exist, the family tables must
43+
# also not exist.
44+
return True
2145
return len(self.dynamic_delete_family_table_tasks) >= 1 and all(
2246
delete_family_table_task.complete()
2347
for delete_family_table_task in self.dynamic_delete_family_table_tasks
2448
)
2549

2650
def run(self):
27-
project_tables = get_valid_project_tables(
28-
self.reference_genome,
29-
self.dataset_type,
30-
self.project_guid,
51+
project_ht = hl.read_table(
52+
project_table_path(
53+
self.reference_genome,
54+
self.dataset_type,
55+
self.sample_type,
56+
self.project_guid,
57+
),
3158
)
32-
for project_ht, sample_type in project_tables:
33-
family_guids = hl.eval(project_ht.globals.family_guids)
34-
for family_guid in family_guids:
35-
self.dynamic_delete_family_table_tasks.add(
36-
DeleteFamilyTableTask(
37-
reference_genome=self.reference_genome,
38-
dataset_type=self.dataset_type,
39-
sample_type=sample_type,
40-
family_guid=family_guid,
41-
),
42-
)
59+
family_guids = hl.eval(project_ht.globals.family_guids)
60+
for family_guid in family_guids:
61+
self.dynamic_delete_family_table_tasks.add(
62+
DeleteFamilyTableTask(
63+
reference_genome=self.reference_genome,
64+
dataset_type=self.dataset_type,
65+
sample_type=self.sample_type,
66+
family_guid=family_guid,
67+
),
68+
)
4369
yield self.dynamic_delete_family_table_tasks

v03_pipeline/lib/tasks/delete_project_family_tables_test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,12 @@ def test_no_project_tables_for_project(self) -> None:
147147
task = DeleteProjectFamilyTablesTask(
148148
reference_genome=ReferenceGenome.GRCh38,
149149
dataset_type=DatasetType.SNV_INDEL,
150+
sample_type=SampleType.WGS,
150151
project_guid='project_b',
151152
)
152153
worker.add(task)
153154
worker.run()
154-
self.assertFalse(task.complete())
155+
self.assertTrue(task.complete())
155156

156157
def test_delete_project_family_tables_task(self) -> None:
157158
self.assertTrue(
@@ -198,6 +199,7 @@ def test_delete_project_family_tables_task(self) -> None:
198199
task = DeleteProjectFamilyTablesTask(
199200
reference_genome=ReferenceGenome.GRCh38,
200201
dataset_type=DatasetType.SNV_INDEL,
202+
sample_type=SampleType.WGS,
201203
project_guid='project_a',
202204
)
203205
worker.add(task)

0 commit comments

Comments
 (0)