配列ファイル形式(FASTAおよびFASTQ)は、バイオインフォマティクス、分子生物学、生化学の分野でよく使用されている。次世代シーケンサー(NGS)の登場により、FASTQデータセットの作成・解析数は飛躍的に増加しており、これらのファイルを効率的に取り扱い、解析・操作するための専用ソフトウェアの開発が急がれている。FASTAおよびFASTQファイルのフィルタリングと操作を行うバイオインフォマティクス・パッケージがいくつか提供されているが、一部の重要なタスクは十分にサポートされておらず、NGSデータセットのワークフロー解析にはカスタムスクリプトで埋めなければならないギャップが残されている。これは、重要なステップに有害な変動やパフォーマンスのボトルネックをもたらす可能性がある。SeqFu (Sequence Fastx utilities) は、一般的な操作と特殊な操作の両方を簡単に実行できる幅広いコマンドを提供し、高性能な解析パイプラインに簡単に実装できるよう設計されている。SeqFuは、FASTQファイルのインターリーブおよびデインターリーブ、イルミナレーンのマージ、各種品質管理(degenerateプライマーの特定、長さ統計の解析、データセットの一部抽出)を行うアルゴリズムを高性能に実装している。SeqFuは、複数のファイルから、出所を追跡しながら配列をデリプレートする。SeqFuは高性能処理のためにNimで開発され、フリーで利用でき、一般的なパッケージマネージャMinicondaでインストールすることができる。
Documentation
https://telatin.github.io/seqfu2/
インストール
mamba install -c bioconda seqfu -y
> seqfu -h
SeqFu - Sequence Fastx Utilities
version: 1.9.2
· count [cnt] : count FASTA/FASTQ reads, pair-end aware
· deinterleave [dei] : deinterleave FASTQ
· derep [der] : feature-rich dereplication of FASTA/FASTQ files
· interleave [ilv] : interleave FASTQ pair ends
· lanes [mrl] : merge Illumina lanes
· list [lst] : print sequences from a list of names
· metadata [met] : print a table of FASTQ reads (mapping files)
· rotate [rot] : rotate a sequence with a new start position
· sort [srt] : sort sequences by size (uniques)
· stats [st] : statistics on sequence lengths
· cat : concatenate FASTA/FASTQ files
· grep : select sequences with patterns
· head : print first sequences
· rc : reverse complement strings or files
· tab : tabulate reads to TSV (and viceversa)
· tail : view last sequences
· view : view sequences with colored quality and oligo matches
Type 'seqfu version' or 'seqfu cite' to print the version and paper, respectively.
Add --help after each command to print its usage.
実行方法
base;FASTAおよびFASTQファイル中のA、C、G、T、Nの数をカウント。
fastqファイルを指定する。
seqfu bases -H -c *fastq.gz
- -n Print terminal table
- -H Print header (auto enabled with --nice)
- -c Print counts and not ratios
ATGCとN、それ以外の他、GCの割合と大文字が占める割合も表示されている。
-cを付けないと相対値(%)になる。
seqfu bases -H *fastq.gz
-nをつけるとテーブル表示になる。
seqfu bases -H *fastq.gz
- -n Print terminal table
cat ;GNU catユーティリティと同様に複数のFASTA/FASTQファイルを連結する。
連結したいFASTA/FASTQファイルを指定する。
seqfu cat seq1.fna seq2.fna > concatenated.fna
catとは異なり、デフォルトで配列途中にあった改行は除去される。
FASTAファイルとFASTQファイルを混在させることが可能で、両方指定した場合、混在した出力を生成する。fastaまたは-fastqを使用すると、特定の出力形式が強制される。
seqfu cat seq1.fna seq2.fna > concatenated.fna
- --fasta Force FASTA output
- --fastq Force FASTQ output
- --list Output a list of sequence names
- -q <INT> FASTQ default quality [default: 33]
-pで出力配列名に指定したprefixをつける。
seqfu cat -p prefix seq1.faa
- -p <STRING> Rename sequences with prefix + incremental number
<prefix>_<original_name>となる。
-p <STRING>に加えて-zもつけると、出力にオリジナルの配列名は無くなり指定したprefix_INTとなる。
seqfu cat -p prefix -z seq1.faa
- -z Remove the original sequence name
-aをつけると配列名+suffixとなる。
seqfu cat -a ABC seq1.faa
- -a <STRING> Append this string to the sequence name [default: ]
check;FASTQファイルに異常がないかを評価
illuminaなどのfastqを指定
#single (-nをつけるとシングルと強制にみなす、通常無しでOK)
seqfu check -n input.fq.gz
#paired-end
seqfu check input_R1.fq.gz input_R2.fq.gz
- -n Disable autodetection of second pair
$ seqfu check BAQ2420.2_36_L001_R1_001.fastq.gz
OK PE BAQ2420.2_36_L001_R1_001.fastq.gz 200 30200 0
OKは各レコードが同じ配列長と品質長を持ち、A,C,G,T,Nの文字だけが存在する場合に表示される。ここではペアエンドの片方のファイルのみ使ったが、正しくPEと表示された。配列名の隣は配列数(200)、その隣は累積塩基数(30200)、エラーの数(0)
--dirをつけるとディレクトリ内の全てのfastqをチェックできる(ダウンロードやコピーに失敗していないかなど)。
seqfu check --dir fastq_dir/
出力例
1組のペアエンドでリード数がマッチしていないというエラーが出た。少なくとも1つのファイルでエラーが確認された場合、seqfu checkはゼロ以外の終了ステータスで終了する(-safe-exitオプションが使用されていない時)。(注;0が正常終了)
interleave;インターリーブのfastqを作成
ペアエンドのfastqを指定する。
seqfu interleave -1 R1.fq.gz -2 R2.fq.gz > out.fq
deinterleave;インターリーブされたファイルから2つの別々のFASTQファイルを生成
illuminaなどのfastqを指定
seqfu deinterleave interleaved.fq.gz -o ouutprefix
- -o <str> save output to output_R1.fq and output_R2.fq
- -f extension for R1 file [default: _R1.fq]
- -r extension for R2 file [default: _R2.fq]
derep;FASTAファイルやFASTQファイルの重複を除く
illuminaなどのfastqを指定
seqfu deinterleave interleaved.fq.gz -o ouutprefix
- -k Do not rename sequence, but use the first sequence name
デフォルトではUSEARCHのように見つかった同一配列の数が配列名に追加される。
上が人工的に2つ連結した配列、下がseqfu deinterleaveの実行後。size=2がついている。
grep;配列名やコメント、IUPAC縮退オリゴ配列などをクエリとしてFASTAファイルやFASTQファイルを検索
-nをつけて配列名で検索。-fを付けると全体一致のみ対象。
#seqという名前の配列を検索
seqfu grep -n seq input.fasta
- -n String required in the sequence name
- -f The string or pattern covers the whole name (mainly used without -c)
-oをつけて配列で検索。NはATGC全てにマッチする。
#ATGCを含む配列を検索
seqfu grep -o ATGC input.fasta
- -o Oligonucleotide required in the sequence, using ambiguous bases and reverse complement
出力例
$ seqfu grep -o "CGGTTCNNN" 1.fa
>seq
TACGTAGGGGGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGGGCGCGCAGGCGGTTCTTCAAGTCAGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTTGAGACTGAAGAACTCGAGTTCGGGAGAGGATGGCGGAATTCCCAGT
そのほか、配列間にあるコメント行(#~)も探索するなら-cをつける。-rフラグを立てると正規表現での検索に対応する。
先頭10配列を表示
seqfu head input.fq
- -n Print the first NUM sequences [default: 10]
- -s Remove comments
-kでスキップする数を指定できる。先頭から4配列に1つの間隔で5配列分表示
seqfu head -k 4 -n 5 input.fq
最後の10配列を表示
seqfu tail input.fq
- -n Print the first NUM sequences [default: 10]
- -k Print one sequence every SKIP [default: 0]
lane;イルミナの複数レーンのfastqを迅速にマージ
イルミナの標準の命名則に従ったfastqが配置されているディレクトリを指定する。
seqfu lane -o outdir fastq_dir
- -o Output directory
- -e File extension [default: .fastq]
マニュアルにはcatで連結する時と比べたベンチマークが出ています。数倍以上短い時間で連結できるようです。
list;配列ファイルから配列を抽出
FASTAまたはFASTQと、抽出したい配列名を示したリストファイルを指定する。これはシーケンス名だけを持つ単純なテキストファイルとなる。
seqfu list list.txt input.fq
テキストにはコメントを含むことができる。先頭に > または @ があっても動作する(抽出後は消える)。
fastqを含むディレクトリを指定する。
seqfu metadata -f manifest fastq_dir/
- -f Output format: dadaist, irida, manifest, metaphage, qiime1, qiime2 [default: manifest]
デフォルトのフォーマット"manifest"では、タブ区切りでID、ファイルパスがプリントされる。-cをつけるとリード数もプリントされる。
qual;クオリティのエンコードタイプを表示(Illumina 1.8かなど)
fastqを含むディレクトリを指定する。
seqfu metadata fastq_dir/
ファイル名 、最低と最大のクオリティ値、クオリティエンコーディング(セミコロン区切り)、クオリティ値の平均とStDev、Last qualified position、の順番で表示される。
出力例
rc;入力配列の逆相補(rev comp.)配列を表示
fastqを含むディレクトリを指定する。
seqfu rc input.fasta
- -r Reverse, do not complement
- --strip-comments Remove sequence comments
rotate;環状配列のスタート位置を変える
fastaファイルを指定する。
seqfu rotate -i 14 input.fasta
- -i Restart from base POS, where 1 is the first base [default: 1]
指定した配列モチーフをスタート位置とする。
seqfu rotate -m AAAAAAAAAA homopolymer.fa
- -m Rotate sequences using motif STR as the new start, where STR is a string of bases
- -s If a motif is provided, skip sequences that do not match the motif
- -r Also scan for reverse complemented motif
sort;FASTA/FASTQファイルを配列サイズでソート
FASTA/FASTQファイルを指定する。デフォルトでは配列長の降順でソートされる。
seqfu sort input.fasta
- --asc Ascending order
FASTA/FASTQファイルを指定する。
seqfu stats *fq.gz
出力例
-nをつけるとテーブル形式になる。--gcをつけるとGC含量もプリントされる。
view;FASTQファイルをターミナル上で視覚的に検査
FASTQファイルを指定してクオリティをチェック
seqfu view sequence.fq | less -SR
出力例
クオリティスコアは塩基ごとに異なるカラーバー(グレー、赤、黄、緑)の高さで表示される。
特定のオリゴ配列を強調表示する(例えばindexなど)。
seqfu view -r ATGC sequence.fq | less -SR
- -o Match oligo, with ambiguous IUPAC chars allowed (rev. compl. search is performed), color blue
- -r Second oligo to be scanned for, color red
- --match-ths Oligo matching threshold [default: 0.75]
- --min-matches Oligo minimum matches [default: 5]
- --max-mismatches Oligo maxmimum mismataches [default: 2]
一致するオリゴは、青い矢印(順方向)または赤い矢印(逆方向)で表示される。図では中央下に順方向で1つヒットしている、
tabulate;FASTA/FASTQファイルをタブ区切りテキストに変換
FASTA/FASTQファイルを指定する。
seqfu view sequence.fq | less -SR
出力例
他にもユーティリティコマンドが用意されています。興味がある方はアクセスしてみて下さい。
https://telatin.github.io/seqfu2/utilities/fu-16Sregion.html
引用
SeqFu: A Suite of Utilities for the Robust and Reproducible Manipulation of Sequence Files
Andrea Telatin, Piero Fariselli, Giovanni Birolo
Bioengineering (Basel). 2021 May 7;8(5):59