macでインフォマティクス

macでインフォマティクス

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

ゲノム間のアラインメントを高速に行う FastGA

 

  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はGitHubhttp://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がわかりやすい(太字が各サブプログラム名)。

 

インストール

Github

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 BFastGA 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つだそうです。