1

私はこれをウェブで検索しましたが、あまり運がありませんでした。多かれ少なかれ、常にVariantAnnotation Packageの例に到達します。この例は私のコンピューターで正常に機能するため、作成した VCF が機能しない理由がわかりません。

問題:選択した遺伝子の SNP の数と位置を特定したい。いくつかのマウス系統のすべての染色体上のすべての SNP に関する情報を含む大きな VCF ファイル (5GB 以上) があります。全ゲノム スケールで何かをしようとすると、明らかにコンピューターがフリーズするので、最初に染色体 1 上の目的の遺伝子のゲノム位置を特定しました。次に、VariantAnnotation Package を使用して、目的の遺伝子に関連するデータのみをVCF ファイル:

library(VariantAnnotation)
param<-ScanVcfParam(
  info=c("AC1","AF1","DP","DP4","INDEL","MDV","MQ","MSD","PV0","PV1","PV2","PV3","PV4","QD"), 
  geno=c("DP","GL","GQ","GT","PL","SP","FI"),
  samples=strain, 
  fixed="FILTER",
  which=gnrng
  )

上記のコードは、ひずみを引数として取る、私が書いた関数から取り出したものです。gnrng は、関心のある遺伝子のゲノム位置を含む GRanges オブジェクトを参照します。

vcf<-readVcf(file, "mm10",param)

これは正常に機能し、vcf (dim: 21783 1) を取得しますが、保存しようとすると機能しません

file.vcf<-tempfile()
writeVcf(vcf, file.vcf)
Error in .pasteCollapse(ALT, ",") : 'x' must be a CharacterList

最初にパッケージの例を実行してから、VCF ファイルを置き換えて、並行して試してみました。

#This is the example:
out1.vcf<-tempfile()
in1<-readVcf(fl,"hg19")
writeVcf(in1,out1.vcf)

これは問題なく動作しますが、vcfをin1に置き換えるだけで同じエラーが発生します。

私は自分自身を明確にしたことを願っています...そして、どんな助けも大歓迎です!! 前もって感謝します!

4

2 に答える 2

2

このバグを報告していただきありがとうございます。この問題は、バージョン 1.9.47 (開発ブランチ) で修正されています。この修正は、4 月 14 日以降にリリース ブランチで利用できるようになります。

問題は、「固定」フィールドから「FILTER」を選択的にインポートしたが、「ALT」からはインポートしなかったことです。書き出す ALT 値がなかったため、writeVcf() はエラーをスローしていました。修正されたバージョンにアクセスできない場合は、回避策として ALT フィールドをインポートします。

ScanVcfParam(fixed = c("ALT", "FILTER"))

fixed() アクセサーでインポートされた値を確認できます。

fixed(vcf)

バグや問題は、Martin が参照した Bioconductor メーリング リストに報告してください。より多くの Bioc ユーザーが質問を表示し、より迅速にサポートを受けることができます。

ヴァレリー

于 2014-03-28T17:57:34.323 に答える
0

ここに再現可能な例があります

library(VariantAnnotation)
fl <- system.file("extdata", "chr22.vcf.gz", package="VariantAnnotation")
param <- ScanVcfParam(fixed="FILTER")
writeVcf(readVcf(fl, "hg19", param=param), tempfile())

## Error in .pasteCollapse(ALT, ",") : 'x' must be a CharacterList

問題は、 writeVcf がオブジェクトに「ALT」フィールドがあることを期待しているようです。

param <- ScanVcfParam(fixed="ALT")
writeVcf(readVcf(fl, "hg19", param=param), tempfile())

成功します。

于 2014-03-28T14:00:50.550 に答える