macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

ロングリードメタゲノムアセンブリから株レベルのphasingアセンブリを行う Strainy

 

 微生物群集に含まれる細菌種は、ゲノムの小さな変異によって区別される菌株の混合物であることが多い。ショートリード法は、菌株間の小規模な変異を検出するために使用できるが、これらの変異を連続したハプロタイプにphasing(位相を揃える)することはできない。ロングリードメタゲノムアセンブラは、連続した細菌chromosomeを作成できるが、しばしば、種レベルのコンセンサスを優先して菌株レベルの変異を抑制する。ここでは、NanoporeおよびPacBioリードから株レベルのメタゲノム・アセンブリとphasingを行うアルゴリズム、Strainyを紹介する。Strainyでは、de novoメタゲノム・アセンブリを入力として、株のバリアントを同定し、それをフェーズ処理し、連続したハプロタイプアセンブルする。NanoporeおよびPacBioメタゲノム・データのシミュレーションおよび模擬データを用いて、Strainyが正確で完全な菌株ハプロタイプアセンブルすることを示し、その完全性と正確性において、現行のNanoporeベースの手法を上回り、PacBioベースのアルゴリズムと同等であることを示す。次に、Strainyを使用して、複雑な環境メタゲノムの菌株ハプロタイプアセンブルし、細菌種における明確な菌株分布と変異パターンを明らかにした。

 

Tutorial

https://github.com/katerinakazantseva/strainy?tab=readme-ov-file#strainy-tutorial

 

インストール

Github

git clone https://github.com/katerinakazantseva/strainy
cd strainy
git submodule update --init
make -C submodules/Flye
mamba env create -f environment.yml -n strainy
conda activate strainy
./strainy.py -h

#docker imageも公開されている
docker pull mkolmogo/strainy:1.0

>./strainy.py -h

usage: strainy.py [-h] -o OUTPUT -g GFA -m {hifi,nano} -q FASTQ [-s {phase,transform,e2e}] [--snp SNP] [-t THREADS] [-b BAM] [--link-simplify] [--debug] [--unitig-split-length UNITIG_SPLIT_LENGTH] [--only-split ONLY_SPLIT] [-d CLUSTER_DIVERGENCE] [-a ALLELE_FREQUENCY]

                  [--min-unitig-length MIN_UNITIG_LENGTH] [--min-unitig-coverage MIN_UNITIG_COVERAGE] [--max-unitig-coverage MAX_UNITIG_COVERAGE] [-v]

 

options:

  -h, --help            show this help message and exit

  -s {phase,transform,e2e}, --stage {phase,transform,e2e}

                        stage to run: either phase, transform or e2e (phase + transform) (default: e2e)

  --snp SNP             path to vcf file with SNP calls to use (default: None)

  -t THREADS, --threads THREADS

                        number of threads to use (default: 4)

  -b BAM, --bam BAM     path to indexed alignment in bam format (default: None)

  --link-simplify       Enable agressive graph simplification (default: False)

  --debug               Generate extra output for debugging (default: False)

  --unitig-split-length UNITIG_SPLIT_LENGTH

                        The length (in kb) which the unitigs that are longer will be split, set 0 to disable (default: 50)

  --only-split ONLY_SPLIT

                        Do not run stRainy, only split long gfa unitigs (default: False)

  -d CLUSTER_DIVERGENCE, --cluster-divergence CLUSTER_DIVERGENCE

                        cluster divergence (default: 0)

  -a ALLELE_FREQUENCY, --allele-frequency ALLELE_FREQUENCY

                        Set allele frequency for internal caller only (pileup) (default: 0.2)

  --min-unitig-length MIN_UNITIG_LENGTH

                        The length (in kb) which the unitigs that are shorter will not be phased (default: 1)

  --min-unitig-coverage MIN_UNITIG_COVERAGE

                        The minimum coverage threshold for phasing unitigs, unitigs with lower coverage will not be phased (default: 20)

  --max-unitig-coverage MAX_UNITIG_COVERAGE

                        The maximum coverage threshold for phasing unitigs, unitigs with higher coverage will not be phased (default: 500)

  -v, --version         show program's version number and exit

 

Required named arguments:

  -o OUTPUT, --output OUTPUT

                        output directory (default: None)

  -g GFA, --gfa GFA     input gfa to uncollapse (default: None)

  -m {hifi,nano}, --mode {hifi,nano}

                        type of reads (default: None)

  -q FASTQ, --fastq FASTQ

                        fastq file with reads to phase / assemble (default: None)

 

 

テストラン

StrainyはPacBio HiFi、Nanopore R9(Guppy5+)、R10シーケンサーをサポートしている。

(metaFlyeの)GFAファイルとアセンブル/phasingのリードを指定する。

cd strainy/
./strainy.py -g test_set/toy.gfa -q test_set/toy.fastq.gz -o out_strainy -m nano -t 8
  • -g    input gfa to uncollapse (default: None)
  • -t     number of threads to use (default: 4)
  • -o    output directory (default: None)

  • -m {hifi,nano  type of reads (default: None)

  • -q    fastq file with reads to phase / assemble (default: None)

 

出力例

出力についてはレポジトリのOutput filesで説明されています。

 

  • "--mode hifi"のプリセットではリードのアラインメントにmap-hifiが使われるが、minimap2の"-x map-hifi"はminimap2のバージョンによっては存在しないためエラーになることがある。おそらくminimap2を最近のバージョンにアップグレードすれば解決する。
  • (レポジトリより)最初のクラスタリングでは、最も分岐の多い株が分離される一方で、(バリアントが少ない)近縁の株は結合したままになる可能性がある。この問題を解決するために、Strainyでは、株のバリアントに対する感度を高めたクラスタリング手順を再帰的に繰り返す。 クラスタリングの厳密さの閾値を上げることで、非常に類似した株のコラプス(注;バリエーションを潰してコンセンサスで表現すること)を可能にし、より分岐した株だけ分離することもできる。

引用

Strainy: phasing and assembly of strain haplotypes from long-read metagenome sequencing

Ekaterina Kazantseva, Ataberk Donmez, Maria Frolova, Mihai Pop & Mikhail Kolmogorov 

Nature Methods (2024), Published: 26 September 2024

 

関連