macでインフォマティクス

macでインフォマティクス

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

seqkitに新しく追加されたコマンドを確認する 其の2

2022/03/14追記

 

これまで数回に分けてseqkitのコマンドを紹介して来ましたが(リンク)、バージョンアップが続いていて、ありがたいことに新しいコマンドも追加されています(谢谢您)。久しぶりに新機能を確認してみます。

この記事を書いたすぐ後にv2.2が公開されたので、そちらも追記しています。

 

2022/03/14

 

HP

https://bioinf.shenwei.me/seqkit/

 

インストール

Githubリリース (armのM1 (apple silicon)のmac向けリリースもあります)

#version2.1を導入(conda)2.2はリリースよりダウンロード(リンク
mamba install -c bioconda seqkit=2.1 -y

 

 

新機能

まず、v0.9.4の時点であったコマンドを復習しておきます。

アルファベット順

  • duplicate  配列を複製
  • common  IDや配列が共通する配列抽出
  • concat      同じIDの配列を指定長ずつ合体
  • convert       fastqのクオリティエンコードの変換 (Solexa形式 ⇔サンガーイルミナ)
  • duplicate    配列を指定回、複製
  • faidx      FASTAのindexを作成、特定の配列を抽出(samttools faidxより高機能)
  • fq2fa   fastqをfastaに変換
  • fx2tab    fasta/fastqをtab形式に変換し、さらにGCなどの情報を表示
  • genautocomplete  シェルオートコンプリートスクリプト
  • grep       特定の配列をミスマッチ許容で検索
  • head   指定数だけ先頭からリードを抽出
  • locate    配列をミスマッチ許容でリプレース
  • range    指定間のリードを抽出 (headでもtailでも対応できない時)
  • rename    duplicateしたIDをユニークな名前に修復
  • replace      名前/文字列を正規表現で置き換える
  • rmdup     duplication除去
  • restart     環状ゲノムのスタート位置変更
  • sample   リードをランダムサンプリング(10%だけランダムに取り出す)
  • sana     壊れた一行だけの fastq ファイルをサニタイズ(置き換える)
  • seq       配列を変形(逆相補鎖、DNA<=>RNA、指定サイズ以上/以下)
  • shuffle    ランダムな順番にする
  • sliding    配列を指定の単位ずつずらしながら部分重複ありで取り出す
  • sort      長さでソート
  • split     分割(fastqを均等にn個に分けて出力)
  • split2   入力配列を分割
  • stats       fasta/fastqの要約統計
  • subseq     gtf/bedの領域に隣接するなど特定の配列だけ抽出
  • tab2fx       FASTA/FASTQをタブ区切り(TSV)フォーマットに変換
  • translate   DNA/RNAアミノ酸配列に翻訳
  • watch        配列特徴量のモニタリングとオンラインヒストグラム

その後もバージョンアップが続き、バージョン番号v0.16まであがった後、v2.0になりました (Tags)。2,022年3月現在、バグ修正もされたv2.1.0が最新となっています。v0.9.4以後に追加されたコマンドや当時紹介していなかったコマンドをアルファベット順で見ていきます。

 

  • amplicon - アンプリコン プライマーを介してアンプリコンを取得

フォワードとリバース(逆相補)のプライマー配列を指定する。

echo -ne ">seq\nacgcccactgaaatga\n" \
    | seqkit amplicon -F ccc -R ttt

#bedをつけると配列の代わりにポジションが出力される
echo -ne ">seq\nacgcccactgaaatga\n" \
  | seqkit amplicon -F ccc -R ttt --bed

出力

f:id:kazumaxneo:20220313233409p:plain

出力領域を調整することもできます。詳細はリンク先(赤文字がリンクになっています)で確認して下さい。

 

  • bam - BAMファイルの特徴量のモニタリング

bamファイルを指定する。

#bamの要約統計
seqkit bam -s *.bam

#indexed bamの要約統計(-sよりずっと高速、出力内容は異なる)
seqkit bam -i *.bam

#保存(STDERR)
seqkit bam -i *.bam 2> result

#BAMのindexを使用してリファレンスの染色体ごとににマッピングされたトータルのリード数をカウント(高速)
seqkit bam -C sorted_indexed.bam

#リファレンスにマッピングされたリードのデプス分布をプリント
cat sample.bam | seqkit bam -c counts.tsv -
  • -s     print BAM satistics of the input files
  • -i     fast statistics based on the BAM index

 

cat sample.bam | seqkit bam -c counts.tsv  -

f:id:kazumaxneo:20220314001522p:plain

seqkit bam -s *.bam

f:id:kazumaxneo:20220314012649p:plain

seqkit bam -i *.bam

f:id:kazumaxneo:20220314012922p:plain

 

 

  • fish - ローカルアライメントを利用して、巨大な配列から短い配列のマッチを探す

クエリの配列とターゲットの配列を指定する。

#GGCGGCTGTGACCを探してポジションをプリント(STDOUT)
seqkit fish -F GGCGGCTGTGACC genome.fna

#-gをつけるとアラインメントもプリントされる(STDERR)
seqkit fish -q 4.7 -F GGCGGCTGTGACC -g mouse-p53-cds.fna

#結果をbam形式で保存。-fでクエリの配列を指定することもできる。
seqkit fish -a -q 4.67 -f query.fas -b alignments.bam -g mouse-p53-cds.fna
  • -q   minimum mapping quality (default 5)
  • -F   query sequences
  • -g   print sequence alignments
  • -b   save aligmnets to this BAM file (memory intensive)
  • -f   query fasta

出力

出力座標はBEDライクな0ポジションベース、左閉じ、右開き

f:id:kazumaxneo:20220313235316p:plain

 

 

  • mutate - 配列を編集する(点突然変異、挿入、欠失)

クエリの配列とターゲットの配列を指定する。

#-pで点変異;最初(1)をxに置換
echo -ne ">1\nACTGNactgn\n>2\nactgnACTGN\n" \
  | seqkit mutate -p 1:x --quiet

#-iで挿入変異;最後(-1)にxxを挿入
echo -ne ">1\nACTGNactgn\n>2\nactgnACTGN\n" \
    | seqkit mutate -i -1:xx --quiet

#-dで欠失変異;最初(1)の塩基を欠失
echo -ne ">1\nACTGNactgn\n>2\nactgnACTGN\n" \
    | seqkit mutate -d 1:1 --quiet
  • -p    point mutation: changing base at given position. e.g., -p 2:C for setting 2nd base as C, -p -1:A for change last base as A
  • -i     insertion mutation: inserting bases behind of given position, e.g., -i 0:ACGT for inserting ACGT at the beginning, -1:* for add * to the end
  • -d  deletion mutation: deleting subsequence in a range. e.g., -d 1:2 for deleting leading two bases, -d -3:-1 for removing last 3 bases

 

 

  • pair - 2 つの fastq ファイルからペアエンドのリードをマッチング(同期)させる。

ペアエンドfastqを指定する。出力ディレクトリを指定しなければ現在のパスに書き出される。

seqkit pair -1 reads_1.fq.gz -2 reads_2.fq.gz -O out_dir

#ペアでないリードも保存する
seqkit pair -1 reads_1.fq.gz -2 reads_2.fq.gz -O result -u
  • -O    output directory
  • -u     save unpaired reads if there are

reads_1.paired.fq.gzとreads_2.paired.fq.gzが書き出される。

 

 

  • scat - ファイルのリアルタイム再帰的連結とストリーミング
#fastq_dir下の全てのfastqを連結
seqkit scat -j 4 -f fastq_dir > all_records.fq

#ディレクトリを監視し、その下に5秒間書き込みがなくなるまでリアルタイムでFastqレコードをストリーム処理
seqkit scat -j 4 -T "5s" fastq_dir > all_records.fq

#
指定したPIDのプロセスがアライブするまで、ディレクトリを監視してリアルタイムでfastqレコードをストリーム処理
seqkit scat -j 4 -p $PID fastq_dir > all_records.fq

 

 

壊れたfastqを指定する。

seqkit sana broken.fq.gz -o rescued.fq.gz
  • -i    input and output format: fastq or fasta (default "fastq")

壊れたレコードを除くリードがrescued.fq.gzとして出力される。

 

  • sum - FASTA/Qファイル中の全配列に対してMD5 ダイジェストを計算する。

環状ゲノムのスタート位置だけが違う全く配列かどうか確認するために利用できる。

seqkit sum -c -k 51  virus-*.fasta
  • -k      k-mer size for processing circular genomes (default 1000)
  • -c      the file contains a single cicular genome sequence
  • -a      show all information, including the sequences length and the number of sequences
  • -s      only consider the positive strand of a circular genome, e.g., ssRNA virus genomes

環状ゲノムのスタート位置だけが違う配列同士(-cを付ける)や、逆補数鎖だけで同じ配列同士(- 一本鎖ゲノムの場合は、-sを使用)は同じ値がプリントされる。 配列のヘッダと品質はスキップされ、配列のみが分析対象になる。

 

 

  • watch - 配列特徴量の分析と監視

リード長分布のヒストグラム

#ONTのリードを分析
seqkit watch --fields ReadLen nanopore.fq.gz -O len.png

f:id:kazumaxneo:20220314022105p:plain

 

出力を指定しなければコンソール(STDOUT)に出力される。

seqkit watch --log --fields ReadLen nanopore.fq.gz

 

出力を指定しなければコンソール(STDOUT)に出力される。デスクトップがないCUI環境で便利。

seqkit watch -p 500 -O qhist.png -f MeanQual nanopore.fq.gz

f:id:kazumaxneo:20220314022256p:plain

 

他にもhead-genomeなどのコマンドがあります。

引用

SeqKit: A Cross-Platform and Ultrafast Toolkit for FASTA/Q File Manipulation

Wei Shen, Shuai Le, Yan Li , Fuquan Hu 

PLOS ONE. 2016. doi:10.1371/journal.pone.0163962