FastGAは、同等の感度を持つ従来手法と比較して1桁以上高速に2つのゲノム配列間のアラインメントを発見する。その高速性は以下の要因による:(a) MSD基数ソートとマージのみを伴う完全キャッシュローカルアーキテクチャ、(b) ソート済みk-merテーブルの線形マージにおける適応的シードヒット発見アルゴリズム、(c) シードヒットの連鎖周辺のアラインメント発見のためのMyers適応波動アルゴリズムの変種。さらに、トレースポイント符号化と本稿で導入するONEcodeデータシステムを用いることで、従来型CIGAR文字列のわずか数分の1の空間でアラインメントを保存する。
例えば、2つの2GbpコウモリゲノムをAppleノートPCで8スレッド・5.7GBメモリ使用時、2.1分で比較し、各ゲノムの60%をカバーする105万のアラインメントを生成した。本ALN形式ファイルは66MBを占め、わずか6秒で標準的な1.03GBのPAFファイルに変換可能である。FastGAはGitHub(http://www.github.com/thegenemyers/FASTGA)で無償提供されている。入力・中間・出力の表示用ユーティリティや、CIGAR文字列の有無を選択可能なALNファイルからPSL/PAFへの変換ツールも併せて利用できる。さらにFastGAのアラインメントを連結し、Postscriptファイルでドットプロット表示するユーティリティも用意されている。
以下のコマンドが用意されている。
- FastGA: 2つのゲノム、または1つのゲノムをそれ自身と比較し、見つかったすべてのアラインメントの.1aln、.paf、または.pslファイルを出力する。
Sub-Process Routines
- FAtoGDB: FASTAまたはONEcode配列ファイルをゲノムデータベース(GDB)に変換
- GIXmake: 指定されたGDB用のゲノムインデックス(GIX)を構築
- ALNtoPAF: 指定された.1alnファイルからPAF形式のアラインメントをストリーム出力
- ALNtoPSL: 指定された.1alnファイルからPSL形式のアラインメントをストリーム出力
表示ユーティリティ
- GDBshow: GDBから選択したコンティグまたはその部分文字列を表示
- GDBstat: GDB内のスキャフォールド&コンティグに関する各種統計とヒストグラムを表示
- GIXshow: GIXの範囲を表示
- ALNshow: .1alnファイル内の選択したアラインメントを様々な形式で表示
- ALNplot: .1alnまたは.pafファイル内のアラインメントを静的コリニアプロットで表示
追加ユーティリティ
- GDBtoFA: GDBを元のFASTAまたはONEcode配列ファイルに変換
- GIXrm: 隠れた部分を含むGDBとGIXを削除
- GIXcp: 隠れた部分を含むGDBとGIXをアンサンブルとしてコピー
- GIXmv: 隠れた部分を含むGDBとGIXをアンサンブルとして移動
- ALNchain: 局所的連鎖の構築によるアラインメントフィルタリング
- ALNreset: .1alnファイルの内部参照を、計算元となったGDBへリセット
- PAFtoALN: X-CIGAR文字列を含むPAF形式ファイルを.1alnファイルに変換
- PAFtoPSL: X-CIGAR文字列を含むPAF形式ファイルを.pslファイルに変換
fastaファイルはGenome DataBase(GDB)というランダムアクセス可能なONEcode バイナリ形式に変換されて使用されるため、GDB関連の補助ユーティリティが様々準備されている。FastGAのフローはレポジトリの図か論文図5がわかりやすい(太字が各サブプログラム名)。
インストール
git clone https://github.com/thegenemyers/FASTGA.git
cd FASTGA
make -j 10
make install #cp FAtoGDB GDBtoFA GDBstat GDBshow GIXmake GIXshow GIXrm GIXmv GIXcp FastGA ALNshow ALNtoPAF ALNtoPSL ALNreset ALNplot ALNchain PAFtoALN PAFtoPSL ONEview FastKS ~/bin
or
#一過的にカレントにパスを通す
export PATH=$PWD:$PATH
or
#パスの通ったディレクトリにコピー
sudo cp FASTGA/FastGA /usr/local/bin/
sudo cp FASTGA/FAtoGDB /usr/local/bin/
sudo cp FASTGA/GDB* /usr/local/bin/
sudo cp FASTGA/GIX* /usr/local/bin/
sudo cp FASTGA/ALN* /usr/local/bin/
sudo cp FASTGA/PAF* /usr/local/bin/
> ./FastGA
Usage: FastGA [-vkMS] [-L:<log:path>] [-T<int(8)>] [-P<dir($TMPDIR)>] [<format(-paf)>]
[-f<int(10)>] [-c<int(85)> [-s<int(1000)>] [-l<int(100)>] [-i<float(.7)]
<source1:path>[<precursor>] [<source2:path>[<precursor>]]
<format> = -paf[mxsS]* | -psl | -1:<align:path>[.1aln]
<precursor> = .gix | .1gdb | <fa_extn> | <1_extn>
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-v: Verbose mode, output statistics as proceed.
-k: Keep any generated .1gdb's and .gix's.
-M: Use soft mask information if available.
-S: Use symmetric seeding (not recommended).
-L: Output log to specified file.
-T: Number of threads to use.
-P: Directory to use for temporary files.
-paf: Stream PAF output
-pafx: Stream PAF output with CIGAR string with X's
-pafm: Stream PAF output with CIGAR string with ='s
-pafs: Stream PAF output with CS string in short form
-pafS: Stream PAF output with CS string in long form
-psl: Stream PSL output
-1: Generate 1-code output to specified file
-f: adaptive seed count cutoff
-c: minimum seed chain coverage in both genomes
-s: threshold for starting a new seed chain
-l: minimum alignment length
-i: minimum alignment identity
-S: seed adaptamers from both genomes
> FAtoGDB
Usage: FAtoGDB [-v] [-L:<log:path>] [-n<int>] <source:path>[<fa_extn>|<1_extn>] [<target:path>[.1gdb]]
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-n: Turn runs of n's of length < # into a's.
-L: Output log to specified file.
> GDBtoFA
Usage: GDBtoFA [-v] [-w<int(80)>] <source:path>[.1gdb] [ @ | <target:path>[<fa_extn>|.1seq] ]
<fa_extn> = (.fa|.fna|.fasta)[.gz]
-w: Print -w bp per line (default is 80).
> GDBstat
Usage: GDBstat [-h[<int>,<int>]] [-hlog] <source:path>[.1gdb]
-h: Display histograms of scaffold & contig lengths.
int's give bucket sizes for respective histograms if given.
> GDBshow
Usage: GDBshow [-h] [-w<int(80)>] <source:path>[.1gdb] [ <selection>|<FILE> ]
<selection> = <range>[+-] [ , <range>[+-] ]*
<range> = <object/position> [ - <object/position> ] | @ | .
<object/position> = @ <scaffold> [ . <contig>] [ : <position> ]
| . <contig> [ : <position> ]
| <position>
<scaffold> = # | <int> | <identifier>
<contig> = # | <int>
<position> = # | <int> [ . <int> ] [kMG]
-h: Show only the header lines.
-w: Print -w bp per line (default is 80).
> GIXmake
Usage: GIXmake [-v] [-L:<log:path>] [-T<int(8)>] [-P<dir($TMPDIR)>] [-k<int(40)]
( <source:path>[.1gdb] | <source:path>[<fa_extn>|<1_extn>] [<target:path>[.gix]] )
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-v: Verbose mode, output statistics as proceed.
-L: Output log to specified file.
-T: Number of threads to use.
-P: Directory to use for temporary files.
-k: index k-mer size
> GIXshow
Usage: GIXshow <source>[.gix] [ <address>[-<address>] ]
<address> = <int> | <dna:string>
> GIXrm
Usage: GIXrm [-vifg] <source:path>[.1gdb|.gix] ...
-v: Verbose mode, list what is being deleted.
-i: prompt for each (stub) deletion
-f: force operation quietly
-g: Also delete the associated GDB.
> GIXmv
Usage: GIXmv [-vinfx] <source:path>[.1gdb|.gix] <target:path>[.1gdb|.gix]
-v: Verbose mode, list what is being deleted.
-i: prompt for each deletion
-n: do not overwrite existing files.
-f: force operation quietly
> GIXcp
Usage: GIXcp [-vinfx] <source:path>[.1gdb|.gix] <target:path>[.1gdb|.gix]
-v: Verbose mode, list what is being deleted.
-i: prompt for each deletion
-n: do not overwrite existing files.
-f: force operation quietly
> ALNshow
Usage: ALNshow [-anrU] [-i<int(4)>] [-w<int(100)>] [-b<int(10)>]
<alignments:path>[.1aln] [<selection>|<FILE> [<selection>|<FILE>]]
<selection> = <range>[+-] [ , <range>[+-] ]*
<range> = <object/position> [ - <object/position> ] | @ | .
<object/position> = @ <scaffold> [ . <contig>] [ : <position> ]
| . <contig> [ : <position> ]
| <position>
<scaffold> = # | <int> | <identifier>
<contig> = # | <int>
<position> = # | <int> [ . <int> ] [kMG]
-a: Show the alignment of each LA with -w columns in each row.
-r: Show the alignment of each LA with -w bp's of A in each row.
-n: Use scaffold names (-a or -r only)
-U: Show alignments in upper case.
-i: Indent alignments by -i spaces.
-w: Width of each row of alignment in symbols (-a) or bps (-r).
-b: # of bordering bp.s to show on each side of LA.
> ALNtoPAF
Usage: ALNtoPAF [-mxsS] [-T<int(8)>] <alignment:path>[.1aln]
-m: produce Cigar string tag with M's
-x: produce Cigar string tag with X's and ='s
-s: produce CS string tag in short form
-S: produce CS string tag in long form
-T: Use -T threads.
> ALNtoPSL
Usage: ALNtoPSL [-T<int(8)>} <alignment:path>[.1aln]
-T: Use -T threads.
> ALNreset
Usage: ALNreset [-T<int(8)>] <alignments:path>[.1aln]
<source1:path>[.1gdb|<fa_extn>|<1_extn>] [<source2:path>[.1gdb|<fa_extn>|<1_extn>]]
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-T: Number of threads to use.
> ALNplot
Usage: ALNplot [-vSL] [-T<int(4)>] [-p[:<output:path>[.pdf]]]
[-l<int(100)>] [-i<float(.7)>] [-n<int(100000)>]
[-H<int(600)>] [-W<int>] [-f<int>] [-t<float>]
<alignment:path>[.1aln|.paf[.gz]]> [<selection>|<FILE> [<selection>|<FILE>]]
<selection> = <range>[+-] [ , <range>[+-] ]*
<range> = <object/position> [ - <object/position> ] | @ | .
<object/position> = @ <scaffold> [ . <contig>] [ : <position> ]
| . <contig> [ : <position> ]
| <position>
<scaffold> = # | <int> | <identifier>
<contig> = # | <int>
<position> = # | <int> [ . <int> ] [kMG]
-S: print sequence IDs as labels instead of names
-L: do not print labels
-T: use -T threads
-p: make PDF output (requires '[e]ps[to|2]pdf')
-l: minimum alignment length
-i: minimum alignment identity
-n: maximum number of lines to display (set '0' to force all)
-H: image height
-W: image width
-f: label font size
-t: line thickness
> ALNchain
Usage: ALNchain [-v] [-g<int(10000)>] [-l<int(10000)>] [-p<float(0.1)>] [-q<float(0.1)>]
[-z<int(1000)>] [-s<int(10000)>] [-n<int(1)>] [-c<float(0.5)>] [-e<0.0>]
[-f<int(1000)>] [-o<output:path>[.1aln]] <alignments:path>[.1aln]
-g: maximum gap size
-l: maximum overlap size
-p: a gap of size G cost (-p)*G
-q: an overlap of size O cost (-q)*O
-z: score drop threshold for breaking a chain
-s: minimum chain score
-n: minimum number of alignment fragments in a chain
-c: maximum coverage as a fraction of chain size
-e: minimum extension as a fraction of sequence size
-f: maximum gap for fuzzy merge
-o: 1-code output file name
-v: verbose mode
> PAFtoALN
Usage: PAFtoALN [-T<int(8)>] <alignments:path>[.paf]
<source1:path>[.1gdb|<fa_extn>|<1_extn>] [<source2:path>[.1gdb|<fa_extn>|<1_extn>]]
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-T: Number of threads to use.
> PAFtoPSL
Usage: PAFtoPSL [-T<int(8)>] [-C<str(cg:Z:)>] <alignments:path>[.paf]
-T: Number of threads to use.
-C: Cigar tag in the PAF file.
> ONEview
ONEview [options] onefile
-t --type <abc> file type, e.g. seq, aln - required if no header
-S --schema <schemafile> schema file name for reading file
-h --noHeader skip the header in ascii output
-H --headerOnly only write the header (in ascii)
-s --writeSchema write a schema file based on this file
-b --binary write in binary (default is ascii)
-o --output <filename> output file name (default stdout)
-i --index T x[-y](,x[-y])* write specified objects/groups of type T
-v --verbose write commentary including timing
index only works for binary files; '-i A 0-10' outputs first 10 objects of type A
> FastKS
Usage: FastKS [-vk] [-b:<name>] [-T<int(8)>] [-P<dir($TMPDIR)>]
<source1:path>[<precursor>] <source2:path>[<precursor>]
<precursor> = .gix | .1gdb | <fa_extn> | <1_extn>
<fa_extn> = (.fa|.fna|.fasta)[.gz]
<1_extn> = any valid 1-code sequence file type
-b: output adaptamer lengths for each A entry.
-v: Verbose mode, output statistics as proceed.
-k: Keep any generated .1gdb's and .gix's.
-T: Number of threads to use.
-P: Directory to use for temporary files.
実行方法
FastGAコマンド
FastGAは、2つの高品質なゲノム間のすべてのローカルDNAアライメント(局所的な相同性領域)を探索する。前提として、ゲノムがほぼ完全に近く、最大でも数千のコンティグから構成され、配列品質がQ40以上である。例えば2つの2Gbpサイズのコウモリゲノム間の比較なら、70%以上の類似性を持つ100bpを超えるほとんどすべての領域を、MacPro(8コア)上では約5.0分の実時間で見つけることができる(レポジトリより)。
比較したい2つのゲノム配列を指定する。 生のFASTA形式ファイル、gzip圧縮されたFASTA形式ファイル (.fa, .fna, .fasta, .fa.gz, .fna.gz, .fasta.gz)、またはONEcodeシーケンスファイル(.1seq)を認識する。optionの引数は-T<int> のようにコロンなしで値を直接続ける。
FastGA -T8 genomeA.fa genomeB.fa
#保存
FastGA -T8 genomeA.fa genomeB.fa > result.paf
- -T Number of threads to use (default 8).
FastGA は見つけたアライメントを ALN形式(.1aln):ONEcode バイナリファイルで保存する。ALN形式からPAF / PSL / その他形式に変換でき、デフォルト設定のランでは、2つのゲノム間で発見されたすべてのローカルアライメントがPAFファイルにエンコードされて標準出力にストリーミングされる。
出力例

FastGAによって生成される多数の一時ファイルは、デフォルトでは環境変数 TMPDIR で指定されたディレクトリ(TMPDIR未定義時はカレントディレクトリ)に配置される。”-P”オプションで変更できる。
mkdir temporary_dir
FastGA -T8 -Ptemporary_dir genomeA.fa genomeB.fa
- -P Directory to use for temporary files.
デフォルトはPAF形式だが、"BLAT"互換のPSLフォーマットでも出力できる(pBLAT紹介)。
FastGA -psl genomeA.fa genomeB.fa > result.psl
-
-paf Stream PAF output
-
-pafx Stream PAF output with CIGAR string with X's
-
-pafm Stream PAF output with CIGAR string with ='s
-
-pafs Stream PAF output with CS string in short form
-
-pafS Stream PAF output with CS string in long form
-
-psl Stream PSL output
ONEcodeバイナリファイルのままで出力 (そのままでは読めない)
FastGA -1:result.1aln genomeA.fa genomeB.fa
- -1 Generate 1-code output to specified file
注: ALN形式はバイナリ形式なので標準出力に流すと正しく保存されない。上のように書く(-1:)
Self comparison
FastGAは単一のgenomeだけソースファイルとして呼び出すこともできる。この場合、FastGAはAをA自身と比較するが、自己マッチ(完全一致)は慎重に避ける。これは、ゲノムの反復領域(とその反復度)を検出したり、フェーズ化されていないゲノムアセンブリ、またはフェーズ化されているがハプロタイプファイルに分割されていないアセンブリ内のハプロタイプ間の相同領域を見つけるのに役立つ(レポジトリより)。
FastGA -T8 genomeA.fa
Soft Mask
FastGAは、”-M”オプションを指定するとゲノム配列中のソフトマスク情報を認識する:マスクされていない配列は大文字、マスクされた区間は小文字で記述されている必要がある。FastGAがこのソフトマスクを検出すると、アライメント検索で使用するシードを決定する際にそれらを使用し、マスクされたシードは使用しなくなる。FastGAは Martin Frith の adaptamer seed(適応型シード) のアイデアを使用している(レポジトリより)。
FastGA -T8 -M genomeA.fa genomeB.fa
- -M Use soft mask information if available.
FAtoGDBコマンド
ゲノム比較を繰り返す場合、FASTAファイルをGDBに置き換えることでディスク容量を節約できる(元のFASTAファイルは GDBtoFA で完全に再現できる)
FAtoGDB assembly.fasta
#出力名指定
mkdir out/
FAtoGDB assembly.fasta out/AG.1gdb
.1gdb のゲノムデータベース(GDB):foo.1gdbと隠しファイル.foo.bpsが作成される。出力パスが指定されない場合、FASTA ファイルと同じディレクトリに同じprefixで作成される。
出力例

Homo_sapiens.GRCh38でテストすると変換には1分ほどかかった。
GIXmakeコマンド
一連のゲノムを相互に比較する場合は、事前に GIXmake を使用して各ゲノムのGIXを構築することが推奨されている。GIXの構築にはギガベースあたり約30秒かかる。
GIXmake -k40 assembly.fasta
or
GIXmake -k40 assembly.1gdb
- -k index k-mer size (default 40)
これにより、FastGAが呼び出されるたびに構築する必要がなくなり時間が節約される。しかしGIXは大きく、ゲノムのギガベースあたり14GBを占めるため、一連のFastGA呼び出しの前段階としてこれらを構築し、その後 GIXrm で削除することを推奨する(ただしGDBは削除しない。レポジトリより)。
出力される GIX ファイルの拡張子は .gixとなる。
出力例

ALNtoPAFコマンド
ALN ファイルを PAF 形式に変換し、その結果を標準出力にストリーミング出力する。デフォルトでは 8 スレッドを使用、-T オプションで変更可能。
ALNtoPAF input.1aln
-m および -x オプションを指定すると、最適アラインメントを明示的にエンコードした CIGAR 文字列タグ cg:Z:<cigar-string> を出力する。-m オプションでは、塩基が一致しているかどうかに関係なく、整列した位置をすべて 'M' として表現する。-x オプションでは、一致した塩基を '='、不一致の塩基を 'X' で表現する。-m と -x は排他仕様。また、-s および -S オプションを指定すると、差異情報をエンコードした CS 文字列タグ cs:Z:<cs-string> が出力される。-s は短形式(short form)で差異のみを表す。-S は長形式(long form)でクエリおよびリファレンス配列全体を含める。-s と -S も排他関係にある。注意点として、-m、-x、-s、-S オプションを使うと、ALNtoPAF の実行時間は約10倍に、出力ファイルのサイズはほぼ100倍に増大する。
ALNtoPSLコマンド
ALN ファイルを PSL形式に変換し、その結果を標準出力にストリーミング出力する。
ALNtoPSL input.1aln
ALN ファイルには、それらの GDB の相対パスまたは絶対パスが作成時に記録されている。したがって、指定するGDB を移動したりリネームしたりしないよう注意する必要がある。ただし、作成時と同じ相対パスの関係が保たれていれば、ALNtoPSL 実行時にも問題なく参照できる。もし GDB をリネームしたり別の場所に移動してしまった場合は、ALNreset コマンドを使って、ALN ファイル内に記録された GDB の参照パスを新しい場所に更新する。PSL 形式での出力は、元の ALN ファイルよりも約 15 倍大きくなる。
可視化関連
GDBshowコマンド
指定したGDBファイルの特定のスキャフォールド/コンティグ (の一部) を表示する。領域の指定なしだと配列全長が標準出力にストリーミング出力される。一部だけプリントするには@chr1:10000-12000のように指定する。カンマ区切りで複数領域指定可能。
#GDB形式に変換
FAtoGDB genome.fasta
#GDBshowの実行
GDBshow genome.1gdb @chr1:10000-12000,@chr2:200-300
===============他の例===============
#2番目のcontigの500–2000 bpを表示
GDBshow assembly.1gdb .2:500-2000
#scaffolds全部を表示
GDBshow genome.gdb @
#3番目のscaffoldを表示
GDBshow genome.gdb @3
#3番目から5番目のscaffoldを表示
GDBshow genome.gdb @3-@5
#3番目から5番目のcontigを表示
GDBshow genome.gdb .3-.5
#最後のscaffoldを表示
GDBshow genome.gdb @#
#s番目のscaffoldsのc番目のcontigを表示
GDBshow genome.gdb @s.c
#最後のスキャフォールド中の1番目のcontigを表示
GDBshow genome.gdb @#.1
#第1スキャフォールド内の3番コンティグの10kb位置から5番コンティグの20kb位置までを表示。以下のようにも書ける
GDBshow genome.gdb @1.3:10k-.5:20k
#3番目のののコンティグを逆方向に表示
GDBshow genome.gdb :3-
#領域を書いたリストファイルから表示
GDBshow genome.gdb ranges.txt
出力例

"@"で全体(全スキャフォールド)、"."で現在の位置または直前の指定位置。U を指定すると大文字で出力され、-w オプションで1行あたりの幅を設定できる。@s はゲノム中の s 番目のスキャフォールドを表し、@# は最後のスキャフォールドを表す。末尾に k, M, G の接尾辞を付けると、それぞれキロベース、メガベース、ギガベースとして指定できる。たとえば、10.1k は位置 10,100 を意味し、2.0324M は位置 2,032,400 を意味する。+ または - の符号は、選択された配列区間の 5' 方向または 3' 方向を指定する。たとえば、:3- はゲノム中の3番目のコンティグの逆相補鎖を表示する
GDBstatコマンド
GDBファイル内のゲノムに関する要約統計情報やヒストグラムを出力
GDBstat genome.1gdb
出力例

GIXshowコマンド
ゲノムインデックス中のすべて、または指定範囲の k-mer をそれぞれの位置情報とともに表示する。引数が指定されていない場合、GIX全体が、最小のk-merから順に出力される。
GIXmakeでGIXファイル作成、k-merサイズはここで指定する
GIXmake -k40 genome.fasta
#すべてのk-merを辞書順で表示
GIXshow genome.1gdb
#100番目の k-merのみ表示
GIXshow genome.1gdb 100
#100-200番目のk-merを表示
GIXshow genome.gix 100-200
#"ATG" で始まる最初の k-mer から出力
GIXshow genome.gix ATG
#""ATG" で始まる最初の k-mer から "CGA" で始まる最後の k-mer まで
GIXshow genome.gix ATG-CGA
出力例 (GIXshow Homo_sapiens.GRCh38.dna.primary_assembly.gix 10000000-10000010)

ALNshowコマンド
指定したALNファイルの指定したローカルアラインメントを表示する。元のゲノムや GDBファイルも存在している必要がある。
#1 ゲノム比較
FastGA -1:result.1aln genomeA.fa genomeB.fa
#2 アラインメント可視化(-a) 1行に100塩基ずつ表示((-w100)、大文字(-U)
ALNshow -a -U -w100 result.1aln
-
-a Show the alignment of each LA with -w columns in each row.
-
-r Show the alignment of each LA with -w bp's of A in each row.
-
-n Use scaffold names (-a or -r only)
-
-U Show alignments in upper case.
-
-i Indent alignments by -i spaces.
-
-w Width of each row of alignment in symbols (-a) or bps (-r).
出力例

ALNresetコマンド
ALNshowで1alnを可視化するには、元のゲノムや GDBファイルも存在している必要がある。もしファイルを移動・名前変更してしまった場合は、ALNresetコマンドで内部参照を修復できる。
ALNreset result.1aln /path/to/genomeA.fa /path/to/genomeB.fa
ALNplotコマンド
1alnまたは.pafファイル内のアラインメントを静的コリニアプロットで表示(参考#3)
#1 ゲノム比較
FastGA -1:result.1aln genomeA.fa genomeB.fa
#2 アラインメント可視化(-a) 1行に100塩基ずつ表示((-w100)、大文字(-U)
ALNshow -a -U -w100 result.1aln
#3 ALNplotでコリニアプロットをPDF保存(-p)、100bpかつ70%以上の配列同一性のみ。画像サイズも指定。縦横サイズはどちらかだけ指定する
ALNplot -p:result.pdf -l100 -i0.7 -n 500 -W800 -f14 -t2 result.1aln
-
-L do not print labels
-
-T use -T threads
-
-p make PDF output (requires '[e]ps[to|2]pdf')
-
-l minimum alignment length
-
-i minimum alignment identity
-
-n maximum number of lines to display (set '0' to force all)
-
-H image height
-
-W image width
-
-f label font size
-
-t line thickness
ALNshowと同じで、元のゲノムが存在している必要がある。
出力例
小さな細菌ゲノムの自己比較
> ALNplot -p:result.pdf -l1000 -i0.8 -n500 -W400 -f18 -t1 result.1aln

他のコマンドはレポジトリを確認してください。
論文より
-
FastGA は 極めて高速・軽量 に全ゲノム比較を行える。誤アライメントが既存の実装より少なく、実行時間とメモリ使用量の少なさ、ミスアラインメントの少なさ、アライメントの数とカバー範囲の高さなどはminimap2と同等でどちらも高性能。
-
進化的に離れた哺乳類でもアラインメントが可能で、遠縁なゲノム間のアラインメントではどのアライナーと比べても1桁以上高速 (minimap2よりも数十倍以上高速)
- FastGAは Martin Frith の adaptamer seed(適応型シード) のアイデアを使用している。これは、FastGA A B が FastGA B A と同じアライメントのセットを見つけるわけではないことを意味している。なぜなら、AとBの適応型シードが同一ではないからである。-S オプション(SはSymmetric=対称性)を指定すると、FastGAは両方のゲノムの適応型シードを使用し、処理に多少時間はかかるが、AとBの指定順序に依存せずほぼ同じ結果を生成する。したがって、シンテニー(synteny、共線性)が目的の場合はこのオプションを使用しないことを推奨する。このオプションは両方のゲノムの反復構造に関心がある場合にのみ使用することを推奨する。
引用
FastGA: Fast Genome Alignment Open Access
Gene Myers, Richard Durbin, Chenxi Zhou
Bioinformatics Advances, Published: 06 October 2025
関連
コメント
コンパイルするだけでほぼライブラリ依存なしで使用でき(参考)、扱いやすくなっています。個人的にはGene Myers氏が1stで論文を出されていることに驚きました。実はレポジトリのREADMEの書き方を見るまで著者が誰なのか気づかなかったのですが、感服の一言です。
参考
https://publications.mpi-cbg.de/Myers_2013_5660.pdf
FastGAとは直接関係ありませんが、このDocumentの"1 The Meeting"を読んでみました。バイオインフォマティクスの基礎を築いた非常に有名な研究者が結集している感じですね。創成期の主要人物がほぼ総登場しているんじゃないでしょうか?
ちなみにBLASTはバイオインフォマティクス分野で最も引用数の多い論文の1つだそうです。
