macでインフォマティクス

macでインフォマティクス

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

アライメントに基づく配列抽出ソフトウェア ALiBaSeq

 

 シーケンシングデータを解析するためのバイオインフォマティクスソリューションは数多く存在するが、系統樹の作成を最終目的とした全ゲノムシーケンス(WGS)データからの標的配列検索のためのオプションはほとんど存在しない。利用可能なツールは、特に深い系統レベルで苦労しており、アミノ酸空間検索を必要とするため、偽陽性結果の割合が増加する可能性がある。また、多くのツールはインストールが難しく、十分なユーザーリソースがない可能性がある。ここでは、自由に利用できる相同性検索ツールを用いて、アセンブルされたWGSデータから相同性検索を行うプログラムについて説明する。ゲノムアノテーションが存在する2つの分岐した昆虫種(>200 My)と、高度に保存された遺伝子座とより多様な遺伝子座のそれぞれの大規模セットについて、他の一般的なバイオインフォマティクスツールと比較して、その性能を評価した。本ソフトウェアは、すべてのデータセットにおいて、最も多くの遺伝子を最大限のカバレッジで回収し、偽陽性の割合が低いことから評価すると、他のソフトウェアと同等以上に、十分にキュレートされたまたは未アノテーションの、低デプスまたは高デプスのショットガンおよびターゲットキャプチャアセンブリからオルソログを検索することができる。この基準の組み合わせを評価すると、ALiBaSeqは、テストしたすべてのタイプのデータで最も包括的で正確な系統樹アライメントを収集するツールとして、しばしば最高の評価を得ている。ソフトウェア(Pythonで実装)、チュートリアル、マニュアルは、https://github.com/AlexKnyshov/alibaseq で自由に利用できる。

 

Githubより

ソフトウェアの中核であるalibaseq.pyは、コンティグを含むFASTAファイル(例:NGSリードアセンブリファイル)から相同領域を検索するように設計されている。検索は、BLAST、HMMER、LASTZ検索のタブ区切り出力表やSAM / BAMアライメントファイルを読み込み、その結果をアセンブリファイルから検索することに基づいて行われる。系統推論用に遺伝子領域をコンパイルする(処理中の全分類群を遺伝子座ごとにグループ化し、このデータを与えられた遺伝子座ファイルに付加する)ように設計されているが、これは必須ではなく、別の出力構造を選択することができる。オプションとして、リバースサーチ(レシプロカルなベストヒットチェック)テーブルとリファレンスサーチ(ベイトが由来する分類群の完全アセンブリ/プロテオームに対して検索)テーブルを提供することができる。

 

tutorial 

https://github.com/AlexKnyshov/alibaseq/tree/master/phylogenetic_tutorial

 

インストール

python2環境でテストした。

依存

  • Python 2 or 3, Biopython, Pysam (only if SAM / BAM used as input)

Github

mamba create -n alibaseq python=2.7 -y
conda activate alibaseq
mamba install -c bioconda -y biopython pysam blast

#本体
git clone https://github.com/AlexKnyshov/alibaseq.git
cd alibaseq/

python alibaseq.py -h

usage: alibaseq.py [-h] -b table -f {S,M,SM} -x {n,s,a,b} [-t assembly]

                   [-q query] [-o output] [-s logsuffix]

                   [--om {query,target,combined}] [-e N] [-i N] [-B N] [-c N]

                   [--fl N] [--lr {none,actual,range}] [--is] [--hit-ovlp N]

                   [--ctg-ovlp N] [--recip-ovlp N]

                   [--bt {blast,hmmer22,hmmer18,hmmer15,lastz,sam,bam}]

                   [--btR {blast,bed}]

                   [--ac {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}]

                   [--acr {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}]

                   [--acR {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}]

                   [-r file/folder] [-R file]

                   [-m {e/b-i,e-b-i,b-e-i,i-b-e,i-e-b,b-i-e,e-i-b}]

                   [--rescale-metric] [--metric-merge-corr N] [--no-hs]

                   [--ref-hs] [--keep-strand] [--rm-rec-not-found]

                   [--hmmer-global] [--amalgamate-hits] [--max-gap N]

                   [--cname] [--both-strands {1,0}] [--srt N]

                   [--samScore metric] [--dd {all,none,random}] [--log-header]

                   [--synteny {1,0}] [-d namedelim]

 

ALiBaSeq (Alignment-Based Sequence extraction)

 

required arguments:

  -b table              alignment table file (default: None)

  -f {S,M,SM}           file / folder mode (default: None)

  -x {n,s,a,b}          extraction type: n (whole contig), s (only best hit

                        region), a (extract all hit regions and join them), b

                        (extract region between two outmost hit regions)

                        (default: None)

 

optional arguments:

  -t assembly           assembly file (default: None)

  -q query              query file(s) to which extracted results are to be

                        appended; if not specified, sequences are extracted

                        into blank files (default: None)

  -o output             output folder for modified files with extracted

                        sequences (default: alibaseq_out)

  -s logsuffix          output log suffix (default: default)

  --om {query,target,combined}

                        output mode: group in files per bait [query], per

                        sample [target], or combine in a single file

                        [combined] (default: query)

  -e N                  evalue cutoff (default: 0.01)

  -i N                  identity cutoff (default: 0.0)

  -B N                  bitscore cutoff (default: 0.0)

  -c N                  number of contigs to extract; if set to 0, then

                        extract all contigs; if set to -1, then extract the

                        best and all close matches (default: 1)

  --fl N                flanks on each side in bp (default: 0)

  --lr {none,actual,range}

                        local reciprocator setting (default: range)

  --is                  perform contig stitching (default: False)

  --hit-ovlp N          allowed hit overlap on query, >= 1 in bp, or relative

                        0 < N < 1 (default: 0.1)

  --ctg-ovlp N          allowed contig overlap on query, >= 1 in bp, or

                        relative 0 < N < 1 (default: 0.2)

  --recip-ovlp N        contig overlap on query for reciprocator selection, >=

                        1 in bp, or relative 0 < N < 1 (default: 10)

  --bt {blast,hmmer22,hmmer18,hmmer15,lastz,sam,bam}

                        alignment table type (default: blast)

  --btR {blast,bed}     reference alignment table type (default: blast)

  --ac {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}

                        alignment coordinate type (default: dna-dna)

  --acr {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}

                        reciprocal alignment coordinate type (default: dna-

                        dna)

  --acR {dna-dna,tdna-aa,aa-tdna,aa-aa,tdna-tdna}

                        reference alignment coordinate type (default: dna-dna)

  -r file/folder        reciprocal search output file or folder (default:

                        None)

  -R file               bait to reference contig correspondence file (default:

                        None)

  -m {e/b-i,e-b-i,b-e-i,i-b-e,i-e-b,b-i-e,e-i-b}

                        order of metrics to use to select best matches (e -

                        evalue, b - bitscore, i - identity) (default: e/b-i)

  --rescale-metric      divide metric value by length of hit region (default:

                        False)

  --metric-merge-corr N

                        modify combined metric by this value (default: 1.0)

  --no-hs               do not run hit stitcher (default: False)

  --ref-hs              run hit stitcher on reciprocal table (slow) (default:

                        False)

  --keep-strand         keep original contig direction (default: False)

  --rm-rec-not-found    remove hits without matches in reciprocal search

                        (default: False)

  --hmmer-global        use HMMER contig score instead of domain score

                        (default: False)

  --amalgamate-hits     combine score for different hits of the same contig

                        (default: False)

  --max-gap N           max gap between HSP regions in either query or hit,

                        use 0 for no filtering (default: 0)

  --cname               append original contig name to output sequence name

                        (default: False)

  --both-strands {1,0}  allow both strands of the same contig region to be

                        considered (default: 1)

  --srt N               score ratio threshold, greater which the hits

                        considered be close matches (default: 0.9)

  --samScore metric     metric to use for scoring matches (default: MAPQ)

  --dd {all,none,random}

                        in case hit matches several query with exactly equal

                        score, assign such hit to [all queries / none of the

                        queries / at random to only one] (default: none)

  --log-header          add a header to the table-like log files (default:

                        False)

  --synteny {1,0}       only stitch hits that are in synteny to query

                        (default: 1)

  -d namedelim          sample/contigID delimiter (default: |)

 

 

テストラン

1、リファレンスゲノムのBLASTnデータベースの作成。

cd alibaseq/phylogenetic_tutorial/
makeblastdb -in reference/reference_genome.fasta -dbtype nucl -parse_seqids

 

2、リファレンスゲノムに由来するベイトをリファレンスゲノムに対して検索。

mkdir refblast_results
bash ../blast_wrapper.sh baits/ reference/reference_genome.fasta 1e-10 blastn 4 n
mv *.blast refblast_results

 

3、BLASTするアセンブリのリストを作成(提供されたBLASTおよび相互検索ラッパースクリプトで使用するために必要)。

mkdir refblast_results
bash ../blast_wrapper.sh baits/ reference/reference_genome.fasta 1e-10 blastn 4 n
mv *.blast refblast_results

上のコマンドで指定したベイト配列

baits/

f:id:kazumaxneo:20220320012900p:plain

 

4、サンプルアセンブリの BLAST データベースの作成。

for f in assemblies/*.fasta
do
    makeblastdb -in $f -dbtype nucl -parse_seqids
done

 

5、サンプルアセンブリのベイトを探す。

mkdir blast_results
bash ../blast_wrapper.sh baits/ assemblies/ 1e-10 dc-megablast 4 n assembly_list.txt
mv *.blast blast_results

 

6、baits-vs-sample 検索で見つかったコンティグをリファレンスゲノムに対して検索。

bash ../reciprocal_search.sh blast_results assemblies \
reference/reference_genome.fasta dc-megablast 4 n ../reciprocal_get_contigs.py \
assembly_list.txt

 

7、alibaseqを実行する(python3環境ならalibaseqPy3.pyを使用)。

python ../alibaseq.py -x a -f M -b blast_results -t assemblies -q baits -s tutorial_logs -o tutorial_results \
-e 1e-10 --is --amalgamate-hits -r blast_results -R refblast_results/reference_genome.fasta.blast

出力

tutorial_results/

f:id:kazumaxneo:20220320012711p:plain

 

引用

New alignment-based sequence extraction software (ALiBaSeq) and its utility for deep level phylogenetics
Alexander Knyshov​, Eric R.L. Gordon, Christiane Weirauch
PeerJ. 2021 Mar 31;9:e11019