Rに読み込んだVCFに、アノテーションを付加しましょう。
VariantAnnotationの公式説明書はこちらです。
アノテーションの付加には、Bioconducterのアノテーションデータパッケージを利用します。
パッケージ一覧はこちらから見られます。 Bioconductor - 3.7 AnnotationData Packages
アノテーションパッケージの読み込み
例として、変異が遺伝子のどの領域に位置するか(例: coding, intron)の情報を付加します。
アノテーションパッケージ TxDb.Hsapiens.UCSC.hg38.knownGene を読み込みます。
このとき、VCFとパッケージのゲノムビルドを揃えることに注意してください。
> vcf <- readVcf("ERX100000.vcf", "hg38") # VCFの読み込み
> biocLite("TxDb.Hsapiens.UCSC.hg38.knownGene") #アノテーションパッケージ
> library(TxDb.Hsapiens.UCSC.hg38.knownGene)
アノテーション付加
公式の説明書では、読み込んだVCFの rowRanges(vcf) (paramRangeID, REF, ALT, QUAL, FILTER)を抽出し、それにアノテーションすることが推奨されています。
変異の位置情報を付与する場合は、 locateVariants() を使用します。
> rd <- rowRanges(vcf) # rowRangesを抽出 # locateVariants(アノテーションされるデータ, アノテーションパッケージ, 付与する情報) > loc_code <- locateVariants(rd, TxDb.Hsapiens.UCSC.hg38.knownGene, CodingVariants()) # CordingVariantの変異に付加 > loc_all <- locateVariants(rd, TxDb.Hsapiens.UCSC.hg38.knownGene, AllVariants()) # 全ての変異に付加
アノテーション結果の閲覧
LOCATION(変異の位置)列以降が付加されています。
例えば1行目の変異はintergenic 、遺伝子間であることがわかります。
> class(loc_all)
[1] "GRanges"
attr(,"package")
[1] "GenomicRanges"
> head(loc_all,4)
GRanges object with 4 ranges and 9 metadata columns:
seqnames ranges strand | LOCATION LOCSTART
<Rle> <IRanges> <Rle> | <factor> <integer>
chr1:14464_A/T chr1 [14464, 14464] * | intergenic <NA>
chr1:14522_G/A chr1 [14522, 14522] * | intergenic <NA>
chr1:14542_A/G chr1 [14542, 14542] * | intergenic <NA>
chr1:17005_A/G chr1 [17005, 17005] * | intergenic <NA>
LOCEND QUERYID TXID CDSID GENEID
<integer> <integer> <character> <IntegerList> <character>
chr1:14464_A/T <NA> 1 <NA> <NA>
chr1:14522_G/A <NA> 2 <NA> <NA>
chr1:14542_A/G <NA> 3 <NA> <NA>
chr1:17005_A/G <NA> 4 <NA> <NA>
PRECEDEID FOLLOWID
<CharacterList> <CharacterList>
chr1:14464_A/T 100130417,100132287,100302278,...
chr1:14522_G/A 100130417,100132287,100302278,...
chr1:14542_A/G 100130417,100132287,100302278,...
chr1:17005_A/G 100130417,100132287,100302278,...
-------
seqinfo: 25 sequences from hg38 genome
LOCATIONにはどのような分類があるか見てみます。
> levels(loc_all$LOCATION)
[1] "spliceSite" "intron" "fiveUTR" "threeUTR" "coding"
[6] "intergenic" "promoter"
> summary(loc_all$LOCATION)
spliceSite intron fiveUTR threeUTR coding intergenic
187 168767 6091 34545 46521 17017
promoter
39771
これまでで、データの列名や位置情報の分類名がわかりましたので、
条件を絞り込んで見ることもできます。
> head(subset(loc_all, LOCATION == "coding")) #LOCATION(位置)がcordingである変異を表示 > head(subset(loc_all, !is.na(GENEID))) # GENEIDがある(<NA>以外)変異を表示
変異の絞り込みは、VariantAnnotationの機能を利用して行うこともできます。今後ご紹介していきます。