Commit 9907fbb
committed
Read the individuals archive without extracting it
frequency.py and mutation_overlap.py each extracted chr{N}n.tar.gz into
./chr{N}n before reading it. Every task for a chromosome shares that path -- one
per population in each of the two stages, ten of them at five populations -- and
tarfile.extractall truncates each target before rewriting it, so a task can read
a file another task is midway through replacing.
A reader that catches a file mid-rewrite sees a part-written line. frequency.py
takes the second field of each line and raises IndexError; mutation_overlap.py
splits the whole file and takes the result, so a short read passes silently into
its output. Three Q3 runs died this way, at two different tasks, and the fourth
passed -- and a directory with five concurrent extractors reproduces it at 4
IndexErrors in 29 reader passes, against none with a single extractor.
Both stages now read members straight out of the archive, which removes the
shared path and with it the race. It also drops ten redundant 16MB extractions
per chromosome, since every one of those tasks was already extracting the whole
archive only to overwrite what the others wrote.
Verified against the previous implementation on chr7: the text each stage builds
per individual, in both its own semantics, is identical for all 1,153
individuals across AFR and EUR, as is the sifted-mutation set that flows
downstream.
Worker image 1.6.1 parent 70e92b7 commit 9907fbb
8 files changed
Lines changed: 28 additions & 22 deletions
File tree
- .github/workflows
- engines
- hyperflow/harness
- nextflow
- worker-base-image
- scripts
- worker-image
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
| 79 | + | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
59 | 65 | | |
60 | 66 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
64 | 70 | | |
65 | 71 | | |
66 | 72 | | |
| |||
108 | 114 | | |
109 | 115 | | |
110 | 116 | | |
111 | | - | |
112 | | - | |
113 | 117 | | |
114 | | - | |
| 118 | + | |
115 | 119 | | |
116 | 120 | | |
117 | 121 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
60 | 65 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
64 | 70 | | |
65 | 71 | | |
66 | 72 | | |
| |||
115 | 121 | | |
116 | 122 | | |
117 | 123 | | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
| 124 | + | |
123 | 125 | | |
124 | 126 | | |
125 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
0 commit comments