メタゲノムのビニングは、同じゲノムに属するコンティグをクラスタリングすることであり、メタゲノムアセンブリゲノム(MAG)を復元するための重要なステップである。コンティグは、ゲノム全体で一貫したリードカバレッジパターンを利用することで連結される。しかし、標準的なパイプラインでは、カバレッジを計算するために複数サンプルの全リードアラインメントが必要であり、計算上の重要なボトルネックとなっている。
本著者らは、メタゲノムビニングのための近似カバレッジ計算手法であるfairy (https://github.com/bluenote-1577/fairy)を発表する。fairyはk-merベースのアライメント不要の高速手法である。マルチサンプルビニングにおいて、fairyはリードアライメントよりも250倍以上速く、ビニングに十分な精度を持つ。Fairyは、宿主および非宿主関連データセット上のいくつかの既存のBinnerと互換性がある。MetaBAT2を用いると、FairyはBWAによるアライメントと比較して50%以上の完全性と5%未満の不完全性で、MAGの98.5%を回復する。特にfairyを用いたマルチサンプルビニングは、BWAを用いたシングルサンプルビニングよりも常に優れており(平均で1.5倍以上、50%以上の完全なMAG)、しかも高速である。公開された堆積物メタゲノムプロジェクトにおいて、マルチサンプルビニングがシングルサンプルビニングよりも高品質なアスガルド古細菌MAGを回収すること、およびfairyの結果がリードアライメントと区別できないことを実証した。Fairyは、ビニングのためのマルチサンプルカバレッジを近似的かつ迅速に計算するための新しいツールであり、長年の課題を解決する。
introduction
https://github.com/bluenote-1577/fairy/wiki/Introduction-to-fairy
レポジトリより
Fairyはメタゲノム解析のビニングの前に使用する。以下が可能。
- カバレッジ計算において、リードアライメント(BWAなど)よりも100倍~1000倍高速にカバレッジを計算
- ショートリード、ナノポアリードで同等のビンが得られる
- MetaBAT2、MaxBin2などと互換性のある出力フォーマット
インストール
ubuntu22でビルドした。
ビルド依存
- rust (version > 1.63) programming language and associated tools such as cargo are required and assumed to be in PATH.
- A c compiler (e.g. GCC)
- make
- cmake
https://github.com/LuoGroup2023/DeChat
mamba install -c bioconda fairy
#
git clone https://github.com/bluenote-1577/fairy
cd fairy
cargo install --path .
fairy -h
> fairy -h
fairy 0.5.4
Approximate metagenomic coverage calculation for contigs.
## index paired-end reads
fairy sketch -1 a_1.fq b_1.fq -2 a_2.fq b_2.fq -d sketches
## coverage matrix output
fairy coverage -t 30 sketches/*.bcsp contigs1.fa -o coverage_matrix.tsv
USAGE:
fairy <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
coverage Extremely fast species-level coverage calculation by k-mer sketching
sketch Sketch (index) reads. Each sample.fq -> sample.bcsp
> fairy coverage -h
fairy-coverage
Extremely fast species-level coverage calculation by k-mer sketching
USAGE:
fairy coverage [OPTIONS] [FILES]...
OPTIONS:
--debug
Debug output
-h, --help
Print help information
-s, --sample-threads <SAMPLE_THREADS>
Number of samples to be processed concurrently. Default: (# of total threads / 2) + 1
-t <THREADS>
Number of threads [default: 3]
--trace
Trace output (caution: very verbose)
INPUT:
-l, --list <FILE_LIST> Newline delimited file of file inputs
<FILES>... Pre-sketched *.bcsp files and raw fasta/gzip contig files
ALGORITHM:
-m, --minimum-ani <MINIMUM_ANI>
Minimum adjusted ANI to consider (0-100) for coverage calculation. Default is 95. Don't
lower this unless you know what you're doing
-M, --min-number-kmers <MIN_NUMBER_KMERS>
Exclude genomes with less than this number of sampled k-mers [default: 8]
SKETCHING:
-c <C>
Subsampling rate. Does nothing for pre-sketched files [default: 50]
-k <K>
Value of k. Only k = 21, 31 are currently supported. Does nothing for pre-sketched files
[default: 31]
--min-spacing <MIN_SPACING_KMER>
Minimum spacing between selected k-mers on the contigs. [default: 30]
OUTPUT:
--maxbin-format
Remove contig length, average depth, and variance columns. (default: MetaBAT2 format
with variances)
-o, --output-file <OUT_FILE_NAME>
Output to this file instead of stdout
> fairy sketch -h
fairy-sketch
Sketch (index) reads. Each sample.fq -> sample.bcsp
USAGE:
fairy sketch [OPTIONS]
OPTIONS:
--debug Debug output
-h, --help Print help information
-t <THREADS> Number of threads [default: 3]
--trace Trace output (caution: very verbose)
OUTPUT:
-d, --sample-output-directory <SAMPLE_OUTPUT_DIR>
Output directory for sample sketches [default: ./]
--lS <LIST_SAMPLE_NAMES>
Newline delimited file; read sketches are renamed to given sample names
-S, --sample-names <SAMPLE_NAMES>...
Read sketches are renamed to given sample names as opposed to using the read file name
SINGLE-END INPUT:
-r, --reads <READS>... Single-end fasta/fastq reads
PAIRED-END INPUT:
-1, --first-pairs <FIRST_PAIR>...
First pairs for paired end reads
-2, --second-pairs <SECOND_PAIR>...
Second pairs for paired end reads
--l1 <LIST_FIRST_PAIR>
Newline delimited file; inputs are first pair of PE reads
--l2 <LIST_SECOND_PAIR>
Newline delimited file; inputs are second pair of PE reads
ALGORITHM:
-c <C> Subsampling rate [default: 50]
-k <K> Value of k. Only k = 21, 31 are currently supported [default: 31]
実行方法
1,Index reads
#short reads
fairy sketch -1 *_1.fastq.gz -2 *_2.fastq.gz -d sketch_dir
#long reads
fairy sketch -r long_reads.fq -d sketch_dir
2,coverage計算
fairy coverage sketch_dir/*.bcsp contigs1.fa -t 10 -o coverage1.tsv
fairy coverage sketch_dir/*.bcsp contigs2.fa -t 10 -o coverage2.tsv
得られたカバレッジ情報”coverage.tsv”はそのままmetabatやmaxbin2に使用できる。
レポジトリと論文より
- シングルサンプルのビニングにfairyを使用しない。また、fairyをPacBio HiFiとの組み合わせで使用しない。
- マルチサンプルカバレッジは、ビニングにおいてシングルサンプルカバレッジよりもはるかに優れており、CheckMのような品質管理ソフトウェアでさえ検出できない可能性のある、より優れたMAGを生成することが示されている[10]。
- カバレッジの計算は通常、リードをコンティグにアライメントすることで行われる。n個のサンプルとn個のアセンブリからなるプロジェクトの場合、マルチサンプルカバレッジを素直に計算するには、各サンプルを各アセンブリにアライメントする必要があり、n2回のリードアライメントを実行することになる。サンプル数が多くなると、この2次スケーリングは法外に長くなる。
- すべてのリードをアセンブルして1セットのコンティグを得る共アセンブルは、潜在的な解決策であるが、共アセンブルはメモリを消費し、同様のひずみが発生する可能性がある[13]。別の方法として、split-binning [4]があり、これは一組のアセンブリからのすべてのコンティグを連結し、アライメントする方法である。これはより高速であるが、それでも比較的時間とメモリーを消費する。そのため、多くの大規模な研究では、いまだにシングルサンプルビニングが行われている。
引用
Fairy: fast approximate coverage for multi-sample metagenomic binning
Jim Shaw, Yun William Yu
bioRxiv, Posted April 28, 2024.