マッピングを利用したSNPsの検出: samtools, bcftools

UB3/informatics/bioinformatics/bowtie2_snp

このページの最終更新日: 2025/05/19

  1. 解析の準備
  2. bcftools のインストール
  3. SNPs の探索


広告

解析の準備

NCBI から 次世代シークエンス のデータをダウンロードし、SNP を探索するときの手順を示したページです。

Mac でバイオインフォマティクスを行う環境が整っていることが前提となります。具体的には、ターミナルを使うための知識があり、マッピングのソフト (ここでは bowtie2 を使います)、Homebrew および Samtools がインストールされている状態です。

準備が整っていない方は、以下のページを先に読むことをお勧めします。

  1. Mac: ターミナルの使い方
  2. シェルスクリプトと vi エディタ
  3. 次世代シークエンス
  4. bowtie2 のインストール

bcftools のインストール

マッピングが完了しており、.bam の拡張子をもつ結果ファイルがある状態からスタートする。

Samtools および bcftools というパッケージが必要である。Samtools は bowtie2 のインストール のページですでにインストールしてある。Homebrew がある状態で、


brew install samtools


でよい。bcftools も同様に brew install bcftools でインストールできた気がする。

最初にやったときは、このページ1 に従うと bcftools 1.7 をダウンロードし、そのフォルダで


./configure
make
make install


を実行した。本来は ./configure でパス指定をしなければならないのだが、忘れてもフォルダがごちゃごちゃして汚くなるだけで、動かすことは可能。make install には sudo 権限が必要だった。

which bcftools で確認すると、/usr/local/bin/bcftools にインストールされたことがわかる。

SNPs の探索

sam から bam への変換

参考サイト (Ref. 2) ではマッピングに bwa を使っているが、たぶん .bam か .sam があれば何でも良い。

解析は基本的に .bam で行うので、.sam しかない場合は、まず samtools で変換する。

samtools view -Sb input.sam > output.bam


-S は、Samtools のヘルプに "Ignored for compatibility with previous samtools versions. Previously this option was required if input was in SAM format, but now the correct format is automatically detected by examining the first few characters of input." とあるので、もしかすると不要かもしれない。

-b は .bam をアウトプットにするためのオプションなので、これは必要。

このほか、-F オプションをつけてマップされた配列のみを選抜しても良いだろう。


bam ファイルのソート

次に生成した .bam file をソートする。解析に含めたい .bam file が複数ある場合には、最初に merge する。merge のときは、output の名前が最初に来る。

sort には、インプットはオプション不要、アウトプットに -o オプションが必要である。

samtools merge out.bam in1.bam in2.bam ...

samtools sort in.bam -o out_sorted.bam



SNPs の抽出

とりあえず、以下のコマンドで動くには動く。それぞれのオプションについて勉強していきたい。

bcftools mpileup -f reference.fasta out_sorted.bam -Ou | bcftools call -mv -Ov -o variants.vcf


これで variants.vcf というファイルが出力される。このファイルの中身は、bcftools view で見ることができる。

bcftools view variants.vcf | less


IGV に vcf ファイルと bam ファイルを読み込めば、マッピングと SNP を可視化することが可能である。

SNP のみを抽出して、quality score の順にソートする。Quality score は、10 ならば 1/10 の確率でその SNP が偽であることを意味するスコア。20 ならば 1/100 の確率、30 ならば 1/1000 である。数百という値が出てくることもあるので、その場合は非常に確かな SNP であると言える。

bcftools view -v snps variants.vcf -Ov -o snps.vcf
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%QUAL\n' snps.vcf | sort -k5,5nr



かつては samtools mpileup が使えたが、現在は上記の bfctool

samtools mpileup -aa -uf gene.fasta out_sorted.bam | bcftools call -c


samtools のオプションは このページ。-aa で全ての塩基について出力、-f は fasta ファイルの使用、-u は bcttools にパイプするときにはほぼ必須の非圧縮オプション (3)。

bcftools のオプションは ここ に。call が SNP をコールするコマンド。かつては view だった。-c は consensus caller で、もともとの calling method らしい。-m で multiallelic and rare-variant calling を選ぶことができ、こっちの方がいいかもしれない。無論、-c と -m は同時に指定できない。


広告

References

  1. Last access 2018/03/18.
  2. BWAとSAMtoolsを用いたSNPとIndel/Insertionの同定②. Link: Last access 2025/05/14.
  3. kuro の覚え書き. 次世代シークエンサーによるSNPの検出. Link: Last access 2018/03/18.