SOAPaligner/soap2(1)

πŸ’– SOAPaligner/soap2 β€” the manual, but make it make sense πŸ’–

okay bestie, gather round, because we're about to talk about SOAPaligner/soap2, aka the Short Oligonucleotide Analysis Package aligner, and honestly? she's iconic. 🧬✨


✨ NAME ✨

SOAPaligner/soap2 β€” the Short Oligonucleotide Analysis Package aligner. that's the whole name, no notes. πŸ’…


🌸 SYNOPSIS 🌸

soap reference.index short_reads.fast[a|q] alignment.out [options]

like, that's the shape of your whole life right there. reference index, reads, output, options. slay. πŸŽ€


πŸ¦‹ DESCRIPTION πŸ¦‹

so SOAPaligner/soap2 is a member of the SOAP family β€” Short Oligonucleotide Analysis Package, if you're fancy. it's an updated version of the SOAP software for short oligonucleotide alignment, and the glow-up is real. πŸ˜­πŸ’–

the new program features in super fast and accurate alignment for huge amounts of short reads generated by the Illumina/Solexa Genome Analyzer. and when I say fast β€” compared to soap v1, it's one order of magnitude faster. it requires only 2 minutes to align one million single-end reads onto the human reference genome. not me being obsessed with that number. πŸ”₯

another remarkable improvement of SOAPaligner is that it now supports a wide range of the read length. periodt.

SOAPaligner benefitted in time and space efficiency by a revolution in the basic data structures and algorithms used. the core algorithms and the indexing data structures (2way-BWT) are developed by the algorithms research group of the Department of Computer Science, the University of Hong Kong (T.W. Lam, Alan Tam, Simon Wong, Edward Wu and S.M. Yiu). we love a credited research group. πŸ‘‘


πŸ’… COMMAND AND OPTIONS πŸ’…

here's the vibe of the invocation, verbatim:

soap -D <in.fasta.index> -a <query.file.a> [-b <query.file.b>] -o
<alignment.output> [-2 <unpaired.output>] [options]

OPTIONS:

  • -D STR β€” prefix name for the reference index, [*.index]. see APPENDIX "How to build the reference index" β€” you need this, bestie, no index no alignment. 🫢
  • -a STR β€” query file. use it for SE (single-end) read alignment, or for one end of PE (paired-end) reads. πŸ‘‘
  • -b STR β€” query b file, i.e. the other end of your PE reads.
  • -o STR β€” output file for alignment results. this is where the magic lands. ✨
  • -2 STR β€” output file containing mapped but unpaired reads when you do PE alignment. the lonely ones get their own file, we respect them. πŸ₯Ί
  • -u STR β€” output file for unmapped reads, [none].
  • -m INT β€” minimal insert size INT allowed for PE, [400].
  • -x INT β€” maximal insert size INT allowed for PE, [600].
  • -n INT β€” filter low quality reads containing more than INT bp of Ns, [5].
  • -t β€” output reads id instead of reads name, [none].
  • -r INT β€” how to report repeat hits: 0=none; 1=random one; 2=all, [1].
  • -R β€” RF alignment for long insert size (>= 2k bps) PE data, [none] FR alignment. so if you don't pass it, you're getting FR, iykyk.
  • -l INT β€” for long reads with a high error rate at the 3'-end that can't align at whole length, first align the 5' INT bp subsequence as a seed, [256] uses the whole length of the read. 🧚
  • -s INT β€” minimal alignment length (for soft clip).
  • -v INT β€” totally allowed mismatches in one read; when you use a subsequence as a seed, [5].
  • -g INT β€” allow gap size in one read, [0].
  • -M INT β€” match mode for each read or the seed part of read, which shouldn't contain more than 2 mismatches, [4].
    • 0: exact match only
    • 1: 1 mismatch match only
    • 2: 2 mismatch match only
    • 4: find the best hits
  • -p INT β€” multithreads, n threads, [1]. go off, give her some cores. πŸ”₯

🌈 OUTPUT FORMAT 🌈

SOAP2 output format contains the following column information:

  1. reads name / reads ID (if -t is available)
  2. reads sequence (if the read aligns to the reverse strand, here is the reverse sequence of the original read)
  3. quality sequence (if the input is fasta reads, this column will be all 'h', and the sequence is backward if the read is mapping reverse) 4.
ok so column 4 is just... nothing in the original. a mystery. an empty fourth column. the original page gives it no description at all, and I'm not about to make something up for it. πŸ™ˆ

πŸŽ€ APPENDIX πŸŽ€

before you use soap2 to do alignment, the reference index must be generated by 2bwt-builder. no shortcuts, bestie.

2bwt-builder <reference.fasta>

NOTE:

  1. the reference input should only be FASTA format;
  2. the program will auto generate the index files in the directory where the fasta file is located, so confirm the permission at first. fr fr, check your perms. πŸ’€

πŸ’œ ENVIRONMENT πŸ’œ

the datastructure is incompatible with 32bit, so it can't be migrated on any 32bit platforms. like, at all. it's not a vibe, it's a hard no. 🚫

due to using the MMX instruction to optimize parts of the code, the current version can only run on x86_64 platform. we will provide a universal version for most of the 64bit platform later. πŸ¦‹

πŸ”₯ HARDWARE REQUIREMENT πŸ”₯

  1. 1.8Gb RAM (for a genome as large as human's)
  2. at least 8Gb hard disk to store index (for a genome as large as human's)

⭐ SYSTEM REQUIREMENT ⭐

  • Linux x86_64

🌸 SEE ALSO 🌸


πŸ‘‘ ATHOUR πŸ‘‘ (yes, that's how the original spells it, I'm keeping it, it's iconic)

BGI Shenzhen SOAP team. The core algorithm Bidirect-BWT is wrotten by Prof. T.W. Lam and his team at HongKong University.

the typos are canon. I'm not touching them. it's giving authenticity. πŸ’…

🫢 REPORT BUGS 🫢

Report bugs to <soap@genomics.org.cn>


πŸ’– ACKNOWLEDGEMENTS πŸ’–

We appreciate Prof. T.W. Lam, Alan Tam, Simon Wong, Edward Wu and S.M. Yiu prominent work on Bidirect-BWT.


ok that's the whole thing bestie, go align something and think of me. ✨

SOAPaligner-2.1X Β· 25 May 2009 Β· mwah, ily, go read the manpage again if you forgot a flag πŸ’–