Command:
Fails in DeltaPsiDataset.from_zarr at df.load(), before workers spawn:
Worker count doesn't matter here — the load happens once in the parent, before workers spawn. 1.4 TB is the largest node I have access to.
I think the 27.7 GB allocation is just the one that finally exceeded my memory limit of 1.4 TB — peak usage was 1336 GB.
2. Lazy load runs but is impractically slowWith --lazy-load-zarr the load completes (~3–4 h, ~122 GB) and modulization starts. Two runs on the full 78,733 genes:
Going higher on workers isn't an option: -j 8 with lazy loading peaked at 426 GB and was killed, so memory rises with worker count even in lazy mode. The PerformanceWarning message I get points the same way — 138 at -j 1 versus 1173 at -j 4.
For comparison, a single contrast with identical flags completes all 78,733 genes in 36 min at -j 16, 41 GB peak, 2.0 GB of output. So the per-gene cost scales steeply with comparison count.
classify_gene calls ClassifyConfig() → _getInputFilesSet → from_zarr per worker, so the merge appears to be redone in each worker rather than built once and shared. That would explain both the warning counts and why memory scales with -j under lazy loading.
3. Two problems blocking the rechunk workaround on the dPSI pathI tried adapting your rechunking script to .dpsicov. DeltaPsiDataset.from_zarr accepts a list of paths, so all 69 can be read at once.
prefix_nchunks has no matching dimension. DeltaPsiDataset.to_zarr accepts it, but:
With only ec_idx_nchunks=500, the write fails on serialization:
The merge itself looks fine — inspecting the combined dataset shows grp as 89 unique group name strings and comparison as the 69 file paths, so deduplication across shared controls works. Some other object-dtype variable isn't round-tripping.
QuestionsHappy to share a subset of the .dpsicov files, or the full set — they're ~260 MB each, 18 GB total. Also happy to test patches.