macでインフォマティクス

macでインフォマティクス

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

フォーマット変換 FASTA => BED

 

fasta.faiから作る。

samtools faidx input.fasta 
awk '{print $1 "\t0\t" $2}' input.fasta.fai > output.bed

 

またはpythonスクリプトを使う。

pip install pyfaidx 
faidx --transform bed input.fasta > output.bed

 

ヒトゲノムhg19ならこのようなbedができる。

user$ head hg19.bed 

chr1 0 249250621

chr2 0 243199373

chr3 0 198022430

chr4 0 191154276

chr5 0 180915260

chr6 0 171115067

chr7 0 159138663

chr8 0 146364022

chr9 0 141213431

chr10 0 135534747

 

 

 

引用

Shirley MD, Ma Z, Pedersen B, Wheelan S. Efficient "pythonic" access to FASTA files using pyfaidx. PeerJ PrePrints 3:e1196. 2015.

https://github.com/mdshw5/pyfaidx

 

Biostarスレッド

https://www.biostars.org/p/191052/

BEDフォーマット

 

UCSCのゲノムブラウザーなどで使うフォーマット。最初の3列が必須で、オプションでさらに9列情報がつく場合がある。

 

最初の3列に記載する情報

  1. クロモソームの名前(e.g., chr1)
  2. リードや遺伝子のスタートポジション(ポジションは1でなく0スタート
  3. リードや遺伝子のエンドポジション

 

追加の9列

  1. 名前
  2. 1-1000のスコア。スコアに応じて以下のようなカラー情報を持たせる事も可能である。f:id:kazumaxneo:20170703222731j:plain
  3. リードや遺伝子の向き(+/-)
  4. CDSのスタートポジション。リードなら2の座標と同じになる。
  5. CDSのエンドポジション。
  6. exonの数
  7. 各exonのサイズ(数値をコンマで区切り全て記載する)
  8. exonのスタート位置。

  

 BAMから変換したり、bed同士のオーバラップなどを分析するにはbedtoolsを使います。bedtoolsは以下で紹介しています。


引用

フォーマット一覧(UCSC

https://genome.ucsc.edu/FAQ/FAQformat.html

アメリエフのブログ(旧)

http://blog.amelieff.jp/?eid=195350

 

 

 

VCF, GTF, GFF などを BED に変換 する BEDOPS

2019 6/17 追記

2020 2/21 タイトル修正

2020 3/30 help追記

 

BEDヘの変換はawkperlpythonスクリプトで簡単にできるが、BEDOPSのvcf2nedを使うと、indelの種類などによってフィルタリングしながら分類することができ便利である。

 

インストール

#homebrew
brew install BEDOPS

#bioconda(link)
conda install -c bioconda -y bedops

bedops

$ bedops 

bedops

  citation: http://bioinformatics.oxfordjournals.org/content/28/14/1919.abstract

            https://doi.org/10.1093/bioinformatics/bts277

  version:  2.4.37 (typical)

  authors:  Shane Neph & Scott Kuehn

 

      USAGE: bedops [process-flags] <operation> <File(s)>*

 

          Every input file must be sorted per the sort-bed utility.

          Each operation requires a minimum number of files as shown below.

            There is no fixed maximum number of files that may be used.

          Input files must have at least the first 3 columns of the BED specification.

          The program accepts BED and Starch file formats.

          May use '-' for a file to indicate reading from standard input (BED format only).

 

      Process Flags:

          --chrom <chromosome> Jump to and process data for given <chromosome> only.

          --ec                 Error check input files (slower).

          --header             Accept headers (VCF, GFF, SAM, BED, WIG) in any input file.

          --help               Print this message and exit successfully.

          --help-<operation>   Detailed help on <operation>.

                                 An example is --help-c or --help-complement

          --range L:R          Add 'L' bp to all start coordinates and 'R' bp to end

                                 coordinates. Either value may be + or - to grow or

                                 shrink regions.  With the -e/-n operations, the first

                                 (reference) file is not padded, unlike all other files.

          --range S            Pad or shrink input file(s) coordinates symmetrically by S.

                                 This is shorthand for: --range -S:S.

          --version            Print program information.

 

      Operations: (choose one of)

          -c, --complement [-L] File1 [File]*

          -d, --difference ReferenceFile File2 [File]*

          -e, --element-of [bp | percentage] ReferenceFile File2 [File]*

                 by default, -e 100% is used.  'bedops -e 1' is also popular.

          -i, --intersect File1 File2 [File]*

          -m, --merge File1 [File]*

          -n, --not-element-of [bp | percentage] ReferenceFile File2 [File]*

                 by default, -n 100% is used.  'bedops -n 1' is also popular.

          -p, --partition File1 [File]*

          -s, --symmdiff File1 File2 [File]*

          -u, --everything File1 [File]*

          -w, --chop [bp] [--stagger <nt>] [-x] File1 [File]*

                 by default, -w 1 is used with no staggering.

      

Example: bedops --range 10 -u file1.bed

      NOTE: Only operations -e|n|u preserve all columns (no flattening)

 

 

 

公式マニュアル

http://bedops.readthedocs.io/en/latest/content/reference/file-management/conversion/vcf2bed.html

 

ラン

vcfからbedに変換する。

vcf2bed < gatk.vcf > gatk.bed
  • --do-not-sort (-d)  Do not sort BED output with sort-bed
  • --snvs (-v) Report only single nucleotide variants
  • --insertions (-t) Report only insertion variants
  • --deletions (-n) Report only deletion variants
  • --keep-header (-k) Preserve header section as pseudo-BED elements

snpsのみbedに変換する。

vcf2bed --snvs < gatk.vcf > gatk_snps.bed

 

塩基置換、挿入、欠損の数を数える。

vcf2bed --snvs < gatk.vcf|wc -l       #SNV
vcf2bed --insertions < gatk.vcf|wc -l  #Insertion
vcf2bed --deletions < gatk.vcf|wc -l  #Deletion

  

vcf2bedはBAM、GFF、GTF、GVF、PSL、RepeatMasker (OUT)、SAM、VCF、WIGなど多様なフォーマットをBEDに変換することができる。

GFF(GFF3)をbedに変換する。

convert2bed --input=gff < input.gff3 > output.bed

 

 またはawkを使う。以下のようにして6列フォーマットのBEDに変換できる。

cat input.gtf | awk '{OFS = "\t"} {print $1,$4,$5,$3,$6,$7}' > output.bed

 awkはデフォルトスペース区切り出力だが、bedtoolsはタブを区切りとして認識するので、タブ区切りを指定。

 

 

追記

BEDからGTF (cent OSで動作確認)

awk '{print $1"\t"$7"\t"$8"\t"($2+1)"\t"$3"\t"$5"\t"$6"\t"$9"\t"(substr($0, index($0,$10)))}' input.bed > output.gtf

 

 

 

BEDを使って何かするにはbedtoolsを使います。


 

 

引用

BEDOPS: high-performance genomic feature operations
Neph S1, Kuehn MS, Reynolds AP, Haugen E, Thurman RE, Johnson AK, Rynes E, Maurano MT, Vierstra J, Thomas S, Sandstrom R, Humbert R, Stamatoyannopoulos JA.

Bioinformatics. 2012 Jul 15;28(14):1919-20 

 

How To Convert Bed Format To Gtf?

 

bedtoolsでpromoter配列を抽出する。

 

Biostarとbedtoolsの公式サイトに、bedtoolsを使ったpromoter配列の抽出の仕方がまとめられている(How To Use Bedtools To Extract Promoters From A Mouse Bed File)。試してみる。

 

このようなbedファイルの各featureの上流を抽出する。

user$ head -5 genes.bed 

chr1 11873 12227 NR_046018_exon_0_0_chr1_11874_f

chr1 12612 12721 NR_046018_exon_1_0_chr1_12613_f

chr1 13220 14409 NR_046018_exon_2_0_chr1_13221_f

chr1 14361 14829 NR_024540_exon_0_0_chr1_14362_r

chr1 14969 15038 NR_024540_exon_1_0_chr1_14970_r

 

 

まずクロモソームのサイズを書いたファイルを準備する。単純なタブ区切りのテキストファイルであればよい。ここではsamtools faidxを使いfastaから作っている。

samtools faidx reference.fa
cut -f 1,2 reference.fa.fai > genome.txt

 

上流領域を抽出する。bedtoolsで隣接 featureを取れるコマンドは複数あるが、今回はflankコマンドを使う。

bedtools flank -i genes.bed -g genome.txt -l 1000 -r 0 -s > genes.1kb.promoters.bed

flankコマンドで隣接領域を抽出している。この時-l 1000 -r 0とすることで隣接する上流1000-bp、下流0-bpが抽出されるように工夫している。ちなみにクロモソームの末端でクロモソームからはみ出すfeatureがある場合、トリミングして出力される。

 

さらにbedtoolsのgetfastaで配列を抽出する。

bedtools getfasta -fi reference.fa -bed genes.1kb.promoters.bed |fold -w 60 > genes.1kb.promoters.bed.fa
  • -fi Input FASTA file
  • -bed BED/GFF/VCF file of ranges to extract from -fi

-fiでリファレンスゲノムを指定して使う。また、パイプを使いfoldで60文字ごとに改行している。少し重くなるので、不要なら外す。上記コマンドはヘッダー名が違うとワークしないので気をつける。

出力は、例えば grep -n "^>" input.fasta | wc -l で配列数をカウントできる。

 

 

使用したpromoter配列の塩基組成や偏りなどの基本情報をまとめたい場合、bedtoolsのnucを使う。

先ほど作ったbedを使い、以下のように打つ。

bedtools nuc -fi reference.fa -bed genes.1kb.promoters.bed > ATGC.bed

カラムの後半に以下のような情報がつく。

  • 1) %AT content
  • 2) %GC content
  • 3) Number of As observed
  • 4) Number of Cs observed
  • 5) Number of Gs observed
  • 6) Number of Ts observed
  • 7) Number of Ns observed
  • 8) Number of other bases observed
  • 9) The length of the explored sequence/interval.
  • 10) The seq. extracted from the FASTA file. (opt., if -seq is used)
  • 11) The number of times a user's pattern was observed. 

  

平均や最大/最小などの情報はRでまとめる。

 

 

上で使ったbedtoolsのコマンドはこちらでまとめています。

 

 

引用

How To Use Bedtools To Extract Promoters From A Mouse Bed File

オオムギ(大麦)のRNA seq解析

 勉強会用資料

時系列データ

 

publishされた論文

http://www.sciencedirect.com/science/article/pii/S1631069115000888?via=ihub

 

利用するシーケンスデータ

https://www.ncbi.nlm.nih.gov/Traces/study/?acc=SRP032854

 

fastaとgtf

http://plants.ensembl.org/Hordeum_vulgare/Info/Index

 

シーケンスデータのダウンロード(上記リンクよりAccession Listをダウンロードして使用)

prefetch --option-file SRR_Acc_List.txt  --max-size 1000000000

#SRAのID、例えばSRR6364639を直接ダウンロードするなら
prefetch SRR6364639 --max-size 1000000000
  •   --max-size 1000000000 20GB以上のファイルのダウンロードに必要。

 

fastqに変換 

fastq-dump <inputt.sra> -O <directory>
  • -O 指定したディレクトリに出力。
  • --split-files  paired-endならをつける。

 

 index

bowtie2-build -f Hordeum_vulgare.fa chr

 

mapping

tophat2 -I 500000 -i 20 -p 15 --read-mismatches 5 --read-gap-length 4 --max-multihits 100 --read-edit-dist 6 -G Hordeum_vulgare.Hv_IBSC_PGSB_v2.36.gtf -o tophat_Bs1_2 chr Bs3_24/SRR1049655.fastq

 

featurecount

featureCounts -T 8 -t exon -g gene_id -a Hordeum_vulgare.Hv_IBSC_PGSB_v2.36.gtf -o geaturecounts_all.txt tophat_Bs1_2/accepted_hits.bam tophat_Bs2_2/accepted_hits.bam tophat_Bs3_2/accepted_hits.bam tophat_Bs1_24/accepted_hits.bam tophat_Bs2_24/accepted_hits.bam tophat_Bs3_24/accepted_hits.bam 

 

 

 raw read

library("ggplot2") 
library("reshape2")
rawCount = read.table("featureCounts_counts_trimmed.txt", header = TRUE, row.names = 1)
head(rawCount) #必ず毎回確認
artificialCount = log2(rawCount + 1)
head(artificialCount)
df <- melt(logdata) #data.frame形式に変換。
head(df) #必ず毎回確認
g <- ggplot(df, aes (x = variable, y = value )) + geom_boxplot()
plot(g)

 

f:id:kazumaxneo:20170716161733j:plain

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bedtools

追記 bedgraph出力 

2019 9/4 インストール、twitterリンク追加

 

BEDファイルのオーバーラップ領域を抽出したり、マージしたりできるツール。BED以外にGFF、VCFも扱うことができる。bedtools <command> -a .bed -b .bedという使い方が基本。-aで指定したbedを-bで指定したbedと比較する。出力はリダイレクト(>)で指定しないと標準出力となる。中にはGC/AT含量を調べるコマンドまであり、多岐に渡っている。使えそうなコマンドを紹介してみます。

f:id:kazumaxneo:20180324100345j:plain

公式より転載。

 

 

 

インストール 

#bioconda (link)
mamba install -c bioconda -y bedtools

 

コマンド

intersect

オーバーラップする領域の抽出。

aのfeatureのうちbの遺伝子とオーバーラップする領域だけをコールする。

bedtools intersect -a reads.bed -b genes.bed -sorted > output.bed
  • -wa Write the original entry in A for each overlap.
  • -wo Write the original A and B entries plus the number of base pairs of overlap between the two features.
  • -c For each entry in A, report the number of overlaps with B.
  • -f Minimum overlap required as a fraction of A. - Default is 1E-9 (i.e., 1bp). - FLOAT (e.g. 0.50)

-waをつけるとbとオーバーラップするaの領域がそのまま出力され、-waをつけないとaとbでオーバーラップする領域が出力される(参考)。-woをつけると右端カラムにオーバーラップする領域のサイズ付きで出力される。-cをつけると右端カラムにオーバーラップする領域数付きで出力される。デフォルトでは1bp以上のオーバーラップを重複とみなすが、-fで指定することでその閾値をコントロールできる。厳しくするなら、例えば-f 0.5にすれば50%以上オーバーラップを重複に設定できる。

 

(複数ファイル同時)オーバーラップする領域の抽出。

aのfeatureのうち3つのファイルのオーバーラップする領域をコールする。

bedtools intersect -a reads.bed -b genes1.bed genes2.bed genes3.bed -sorted > output.bed

-wa -wb をつけると重複したfeature数がわかる。-namesをつけると、どのデータ由来かわかる(-names gene1 gene2 gene3 )。

 

オーバーラップしない領域の抽出。

aのfeatureのうちbの遺伝子領域にない領域だけをコールする。

bedtools intersect -a reads.bed -b genes.bed -v -sorted > output.bed

 

Aとオーバーラップし、Bとオーバーラップしない領域の抽出。

aのfeatureのうちLINEとオーバーラップしており、かつSINEとはオーバーラップしていないfeatureを抽出。

bedtools intersect -a genes.bed -b LINES.bed |  
bedtools intersect -a stdin -b SINEs.bed -v > output.bed

パイプと標準入力(stdin)を使い2回連続比較している。順次実行してもよい。

  

merge

オーバーラップしているfeatureを統合して返す。

bedtools merge -i reads.bed > output.bed
  • -d Maximum distance between features allowed for features to be merged. - Def. 0. That is, overlapping & book-ended features are merged.

-dはdefaultでは0だが、1bp以上に指定することでオーバーラップしてないが-d指定値以内にあるfeatureを統合できる(-d 1000なら1000bp以内のfeatureを統合できる)。 -c 4 -o count,collapseをつければ、どのfeatureがどのfeatureと何回オーバーラップしたのかも出力される。

 

マージコマンドは、chr順、スタートポジション順にソートされていないとエラーを起こす。unixのsortコマンドでソートしてから使う(sort -k1,1 -k2,2n リンク)。似たコマンドにclusterがある。clusterはマージを実行せず、そのfeatureについてタグIDをつけて返す。

 

complement

featureされている領域以外の部位を返す。exon配列を入力すれば、intronとintergenicの領域が出力される。使うにはgenome配列情報が必要。

bedtools complement -i exon.bed -g genome.txt > non-exonic.bed

genomeはタブで仕切られた以下のような長さが記載してあるファイル。

User$ head -5 genome.txt 

chr1 249250621

chr10 135534747

chr11 135006516

chr11_gl000202_random 40103

chr12 133851895

samtools faidxで簡単に作れる。

samtools faidx reference.fa
cut -f 1,2 reference.fa.fai > genome.txt

complementと似たコマンドにsubstractがある。

 

substract

featureされている領域以外の部位を返す。exon配列を入力すれば、intronとintergenicの領域が出力される。complementコマンドと異なり、bはbedファイルを指定する。

bedtools complement -a genes.bed -b introns.bed > exons.bed

例えばintron (/exon) を-bで指定して、exon (/intron) を抽出するような用途に使う。

 

flank

featureされている領域に隣接した領域を返す。

bedtools flank -i gens.bed -g genome.txt -b 10 > intergenic.bed

-bで抽出する配列の長さを指定する。-b 10ならfeatureの上流、下流10-bpずつが出力される。-l 2 -r 3ならfeatureの上流2-bp、下流3-bpが出力される。

 

slop

featureされている領域を指定値だけ増減させて返す。

bedtools slop -i reads.bed -g genome.txt -b 5 > output.bed
  • -b Increase the BED/GFF/VCF entry -b base pairs in each direction. - (Integer) or (Float, e.g. 0.1) if used with -pct.
  • -l The number of base pairs to subtract from the start coordinate. - (Integer) or (Float, e.g. 0.1) if used with -pct.
  • -r The number of base pairs to add to the end coordinate. - (Integer) or (Float, e.g. 0.1) if used with -pct.
  • -s Define -l and -r based on strand. E.g. if used, -l 500 for a negative-stranded feature, it will add 500 bp downstream. Default = false.
  • -pct Define -l and -r as a fraction of the feature's length. E.g. if used on a 1000bp feature, -l 0.50, will add 500 bp "upstream". Default = false.

-bで抽出する配列の長さを指定する。-b 5ならfeatureの上流末端と下流末端がそれぞれ5-bpずつ伸びて出力される。”5 100”なら”0 105”になる。-l 2 -r 3ならfeatureの上流2-bp、下流3-bpずつ伸びて出力される。-sもつけると、-l と-rで伸びる領域がリードの方向性を考慮して決められる。

 

genomecov

genome全体に対するfeatureのカバレッジを返す。mergeコマンドと同様、bedはあらかじめソートされている必要がある。"-i"でbedを指定する場合はgenome配列情報も必要。"-ibam"でbamを指定する場合、genome配列情報は不要。

bedtools genomecov -i exons.bed -g genome.txt > intergenic.bed

#0カバレッジの領域だけ出力(awkフィールド4が1以下か判定)
bedtools genomecov -bga -ibam sort.bam | awk '$4 < 1' > zero-coverage
#0カバレッジの領域だけ出力。awkの代わりにgrepを使う
bedtools genomecov -bga -ibam sort.bam | grep -w 0$ > zero-coverage

このコマンドは他より時間がかかる。-bgをつけるとfeatureのカバレッジを返す。-bgをつけないとゲノム全体のカバレッジを一定の間隔で区切って計算した値が返される。

  • -ibam  The input file is in BAM format. Note: BAM _must_ be sorted by position
  • -bg Report depth in BedGraph format. For details, see: genome.ucsc.edu/goldenPath/help/bedgraph.html
  • -bga   Report depth in BedGraph format, as above (-bg). However with this option, regions with zero coverage are also reported. This allows one to quickly extract all regions of a genome with 0 coverage by applying: "grep -w 0$" to the output.
  • -strand   Calculate coverage of intervals from a specific strand. With BED files, requires at least 6 columns (strand is column 6). - (STRING): can be + or -

  • -pc   Calculate coverage of pair-end fragments. Works for BAM files only

 似た名前のコマンドにcoverageがあるが、coverageコマンドはbed同士を比較して被っている割合、個数などを出す。

bedgraph出力

bedtools genomecov -i exons.bed -ibam input.bam -bg > bedgraph_output

 

coverage

aのfeatureについてbのfeatureとオーバーラップしている領域の割合、個数などの情報を返す。

bedtools coverage -a A.bed -b B.bed > coverage.bed

公式マニュアルの図がわかりやすいのでそのまま引用する。

Chromosome  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

BED FILE A  ***************     ***************     ******    **************

BED File B  ^^^^ ^^^^              ^^             ^^^^^^^^^    ^^^ ^^ ^^^^
              ^^^^^^^^                                      ^^^^^ ^^^^^ ^^

Result      [  N=3, 10/15 ]     [  N=1, 2/15 ]     [N=1,6/6]   [N=6, 12/14 ]

上のaのfeatureについて、bのfeatureを使いcoverageを分析した結果はresultのようになる。-sをつけるとfeature同士の向きが同じものだけカウントされる。

 

closest

aのそれぞれのfeatureについて、最も近いbのfeatureをコール。

bedtools closest -a genes.bed -b ALUs.bed > output.bed

  -t last-t firstなどをつけると、同じ距離に複数featureがあった場合の選択をコントロールできる。

  • -t How ties for closest feature are handled. This occurs when two features in B have exactly the same "closeness" with A. By default, all such features in B are reported. Here are all the options:

   - "all"    Report all ties (default).

   - "first" Report the first tie that occurred in the B file. -

   - "last" Report the last tie that occurred in the B file.

 

 

bamtobed

 bamをbedに変換する(bed)。 

bedtools bamtobed -i reads.bam > reads.bed

bamをbedpeに変換する(bedpe)。 

bedtools bamtobed -i reads.bam -bedpe > reads.bedpe

似たコマンドにBEDOPSのgtf2bedがある。gtf2bedの方がより様々なフォーマットからBEDを作成可能である。

フォーマット変換 GTF => BED - macでインフォマティクス

 

bamtofastq

bamをfastqに変換する。

bedtools bamtofastq -i reads.bam -fq single.fastq
  • -fq2 FASTQ for second end. Used if BAM contains paired-end data. BAM should be sorted by query name (samtools sort -n aln.bam aln.qsort) if creating paired FASTQ with this option.

 ペアリードのbamなら-fq2で相方の出力も指定する。

 

bedtobam

bedをbamに変換する。

bedToBam [OPTIONS] -i reads.bed -g <GENOME> > reads.bam
  • -mapq Set a mapping quality (SAM MAPQ field) value for all BED entries. Default: 255

似たコマンドにbedpetobamリンク)がある。

 

getfasta

bedからfasta配列を出力する。 

bedtools getfasta -fi ref.fasta -bed reads.bed > reads.fasta
  • -fi Input FASTA file
  • -s Force strandedness. If the feature occupies the antisense strand, the sequence will be reverse complemented. Default: strand information is ignored.
  • -bedOut Report extract sequences in a tab-delimited BED format instead of in FASTA format.
  • -name Use the “name” column in the BED file for the FASTA headers in the output FASTA file.
  • -fo output file (リダイレクトでも同じ)

bedで指定した領域の配列が出力される。配列はfeatureの向きを考慮して出力されるので、リファンレスと同じ配列の強制出力には-sをつける。

コマンドを使う場合、リファレンスのfastaのヘッダーはbedと同じものである必要がある。また、出力されるfastaは改行されない。長くて見にくい時はfoldコマンドで折り返す。( | fold -w 60 > reads.fasta)

 

window

CNVの上流/下流10000bp以内にあるgeneを調べる。

bedtools window -a CNVs.bed -b genes.bed -w 10000

-l -rをつけることで、上流と下流の数値を個別に指定できる。例えば-l 10000 -r 5000なら上流10000bp以内、下流5000bp以内となる。defaultは1000bp。smとSmをつけると向きも考慮できる。

  • -sm Only report hits in B that overlap A on the _same_ strand. - By default, overlaps are reported without respect to strand.
  • -Sm Only report hits in B that overlap A on the _opposite_ strand. - By default, overlaps are reported without respect to strand.

 

annotate

オーバーラップしているfeatureの個数、名前などの情報を返す。

bedtools annotate -both -i variants.bed -files genes.bed conserve.bed known_var.bed
  • -both Report the counts followed by the % coverage. - Default is to report the fraction of -i covered by each file.
  • -s Require same strandedness. That is, only counts overlaps on the _same_ strand. - By default, overlaps are counted without respect to strand.
  • -S Require different strandedness. That is, only count overlaps on the _opposite_ strand. - By default, overlaps are counted without respect to strand.

例えば変異をコールしたファイルのfeatureをgene.bedと比較して、コールされた部位のアノテーションをつけることに使える。上の例では3つのbedと比較し、同時に3つのアノテーションをつけている。-sや-Sを指定することでリードの向きを限定できる。

 

groupby 

featureをグループ分けして、様々な情報を返す。

bedtools groupby [OPTIONS] -i <input> -g <group columns> -c <op. column> -o <operation>

タブ仕分けされたファイルならなんでも使えるため、 公式ページではbed以外のテキストファイルの分析ツールとしての利用価値もあるとしている。

 作成途中

 

maskfasta

指定した領域以外をNにしてfastaを返す。

bedtools maskfasta -fi ref.fasta -bed genes.bed -fo output.fasta
  •  -fi  Input FASTA file
  • -bed BED/GFF/VCF file of ranges to mask in-fi
  • -fo    Output FASTA file
  • -soft Enforce "soft" masking. That is, instead of masking with Ns, mask with lower-case bases.

 -softをつけると、指定した領域以外をNでなく小文字にして返す。

 

shift

featureを指定した数値だけ移動させる。

bedtools shift -i reads.bed -g genome.txt -s 5 > reads_shifted.bed
  • -s Shift the BED/GFF/VCF entry -s base pairs. Integer or Float (e.g. 0.1) if used with -pct.
  • -m Shift entries on the - strand -m base pairs. Integer or Float (e.g. 0.1) if used with -pct
  • -p Shift entries on the + strand -p base pairs. Integer or Float (e.g. 0.1) if used with -pct
  • -pct Define -s, -m and -p as a fraction of the feature’s length. E.g. if used on a 1000bp feature, -s 0.50, will shift the feature 500 bp “upstream”. Default = false.

-s 5なら5bpポジションが下流にシフトする。-p 2 -m -3なら+のfeatureは2-bp下流、-のfeatureは3-bp上流にそれぞれシフトする。-s 0.5 -pctなら100-bpのfeatureが50-bp下流にシフトする。

  

nuc

featureの塩基組成を分析して返す。

bedtools nuc -fi input.fasta -bed genes.bed > oputput.bed

以下の情報が出力される。

  • 1) %AT content
  • 2) %GC content
  • 3) Number of As observed
  • 4) Number of Cs observed
  • 5) Number of Gs observed
  • 6) Number of Ts observed
  • 7) Number of Ns observed
  • 8) Number of other bases observed
  • 9) The length of the explored sequence/interval.
  • 10) The seq. extracted from the FASTA file. (opt., if -seq is used)
  • 11) The number of times a user's pattern was observed. 

GC/AT含量の分析に広く活用できると思われる。

 

random

指定された配列からrandomにfeatureを発生させる。

bedtools random -g genome.txt |sort -k1,1 -k2,2n > randam.bed
  • -l The length of the intervals to generate. Default = 100
  • -n The number of intervals to generate. Default = 1,000,000

部位がランダムに選ばれるので、sortコマンドに渡し、名前とポジションでソートして出力した方が見やすくなる(sort -k1,1 -k2,2n リンク。 

デフォルトではfeature間の間隔が 1,000,000なので、ゲノムが小さいとたくさんfeatureが出来すぎてしまう。-nを使いゲノムサイズに合わせて調節する(featureのサイズは-lで変えられるが、サイズをランダムにすることは出来ないらしい。-nで少しオーバーラップするくらいにfeatureを発生させて、bedtools merge -dすれば少しランダムなサイズのfeatureになる。しかし真のランダムとは程遠い...)。

 

 

 他にも様々なコマンドがあります。fisher検定して有意なのか偶然なのか判定させたり、オーバーラップの度合いを計算したりするなど多種多様なコマンドがあります。興味があれば公式ページから探してみてください。

The BEDTools suite — bedtools 2.26.0 documentation

 

その他、公式ページではbedtoolsを使った応用例がいくつか記載されています。exome解析やRNA seq解析のカバレッジを調べる方法などを知ってると便利です。

http://bedtools.readthedocs.io/en/latest/

時間があればここでもまとめてみます。

 

 

 

BEDフォーマットは別に紹介しています。

 

BEDがない場合、GTFやGFFから変換して作ります。

 

追記

bedutils


こちらも確認してください(主にヒト)。


 

 

引用

BEDTools: a flexible suite of utilities for comparing genomic features.

Quinlan AR1, Hall IM.

Bioinformatics. 2010 Mar 15;26(6):841-2. 

https://www.ncbi.nlm.nih.gov/pubmed/20110278

 

Example usage

http://bedtools.readthedocs.io/en/latest/content/example-usage.html

  

IGVが重い時のtips

 

IGVにbamファイルを読み込むと重くて困ることがある。表示を軽くするためのtipsを書いておく。

 

bamを読み込んでリードが見えるまで拡大した状態。

f:id:kazumaxneo:20170722115958j:plain

 

view -> Preference

f:id:kazumaxneo:20170722120151j:plain

 

赤枠部分を以下のように修正。

f:id:kazumaxneo:20170722122106j:plain

 

リードがダウンサンプリングされ、動作が軽くなった。

f:id:kazumaxneo:20170722122822j:plain

 

まずvisiblity range threshold (kb) だが、この値はリードが表示されるようになるサイズを規定している。値を小さくすると、メモリーにキャッシュされるリード量が減り動作が高速化する (10kbなら10kb以下の縮尺にならないとリードを読み込まない)。またリードの表示数を調整するため、Downsample readsの項目を"max read count => 1"、"per window size (bases) => 100にして、100bpに1リードの割合までデータ減らして表示している。

ただしリードを減らしすぎるとレアな変異などのイベントが見えなくなってしまう。減らす場合、10リードくらいにとどめておく。

 

max read count を1から10に変更した。

f:id:kazumaxneo:20170722123546j:plain

このようになった。100-bpあたり10リードぐらいあるのが見て取れる。

f:id:kazumaxneo:20170722123643j:plain

このくらいの数ならmacbook airなどのlaptopでも軽快に動作すると思われる。

 

 

そのほか下のオプション設定を追加しても良いかもしれない。

f:id:kazumaxneo:20170722131439j:plain

Filter duplicate readsにチェックをつけると、PCR duplicateと思われるリードが表示されなくなる。Filter secondary alignmentsにチェックをつけると、複数のアライメント部位を持つリードについては、アライメントスコアがベスト以外のアライメントが表示されなくなる。

center lineも必要なければチェックを外して、中央の破線を消している。そのほかshow soft-clipped basesとshow center lineなどのチェックを外している。indel周辺などミスアライメントが補正できなかった部位はミスアライメントが多発しており、そういった部位のリードはsoft-clipしてマッピングされている。soft-clipされたリードの領域を確認したければチェックをつける。

 

おまけ

リードが多すぎて見づらい時は、画面を右クリックしてCollapsedを選ぶとリードが圧縮され見やすくなります。