Hi. I've been away at a conference and vacation fo...
# sativa
d
Hi. I've been away at a conference and vacation for the last 3 weeks. Exciting to see all the ongoing efforts to enhance SATIVA. I was (am?) writing an alternative to SATIVA, but this was primarily to bridge the high computational requirements of SATIVA. My primary use case is doing a QC of all 16S rRNA sequences identified in Genome Taxonomy Database (GTDB) genomes. For reference, this is ~1 million 16S sequences and ~100,000 sequences after clustering at 99% identity. @auguste.gardette, will the improvements you made support QC'ing a set of 1 million 16S sequences? Or the ~100,000 sequences after dereplication?
a
Hi @Donovan Parks I just tested on the GTDB r220 archaeal 16S set. Memory is roughly proportional to the reference, measured from 500 to 4,000 sequences: about 1.3 MB per reference sequence at that width. So the 100k dereplicated set is ~130 GB for one EPA-ng instance, and the full million ~1.3 TB if the rule holds (not easy to come by, I guess :D).
For compute, extrapolating from what I measured, it's around 9 days on a 16-thread machine. That's ~150 core-days in total
d
Hi @auguste.gardette, thanks for the quick reply and the stats. Is that 9 days for the 100K dataset? Can I reduce this time by using more threads? I generally have access to machines with 64 or even 96 threads with 500 GB to 1 TB of RAM. Not sure exactly how things are parallelized but seems like I could run 3 EPA-ng instances in parallel with 24 threads each on a 64 threads machine with 512 GB? Would this reduce the time to < 3 days for the 100K dataset? This seems very doable. Thanks.
d
For the -- now renamed -- nf-core pipeline (nf-core/taxmarker) I have been thinking of running batches of sequences through SATIVA-EPANG (Auguste's fork) if it proves necessary. Also, clustering is something I have as an issue for the renamed nf-core pipeline (nf-core/taxmarker). Prior to alignment as well as, for aligned data, prior to EPA-NG. At the moment, I'm just waiting for Auguste's Bioconda recipe to be merged before updating the pipeline. Note: This is not my old pipeline. You might of course prefer writing your own.
a
For the 100k set on a 512 GB / 64-thread server, parallelising is very doable. With your idea of three instances, at 21 threads each rather than 24 since 3×24 won't fit on the machine, I'd expect it to land around 2 days of compute. One thing to plan for: you'll also need about 350 GB of scratch space for the placement files.
with : github.com/Aaramis/sativa-epang. you should be able to use it like this
# 1. Reference. Build the tree yourself, SATIVA's own step won't scale to 100k.
sativa-epang -s aln.fasta -t taxonomy.tsv -x BAC -n gtdb -o out \
-stage reference -reftree tree.nwk -refmodel raxml-ng.bestModel
# 2. Increase number of folds to be closer to leave-on-out output but will cost some compute time (default = 25).
SATIVA_EPANG_FOLDS=100 \
sativa-epang -r out/gtdb.refjson -n gtdb -o out -stage loo-tasks
# 3. Placement. Three instances at 21 threads each fits 512 GB.
SATIVA_EPANG_FOLD_JOBS=3 \
sativa-epang -stage loo-place -taskdir out/gtdb.l1o_tasks -T 64
# 4. Scoring.
sativa-epang -r out/gtdb.refjson -n gtdb -o out -stage loo-score -taskdir out/gtdb.l1o_tasks
d
Thanks - I will give this a try.