Как сохранить файл Variant Call Format (VCF) на диск в R с помощью пакета VariantAnnotation

Я искал в Интернете это без особой удачи. Более или менее вы всегда получаете пример из пакета VariantAnnotation. И поскольку этот пример отлично работает на моем компьютере, я понятия не имею, почему созданный мной VCF не работает.

Проблема: я хочу определить количество и расположение SNP в выбранных генах. У меня есть большой файл VCF (более 5 ГБ), в котором есть информация обо всех SNP на всех хромосомах для нескольких линий мышей. Очевидно, что мой компьютер зависает, если я пытаюсь сделать что-либо в масштабе всего генома, поэтому я сначала определил геномное расположение интересующих генов на хромосоме 1. Затем я использовал пакет VariantAnnotation, чтобы получить из массива только данные, относящиеся к интересующим меня генам. 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 относится к объекту GRange, содержащему геномные местоположения интересующих меня генов.

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)

Это прекрасно работает, но если я заменю in1 только на vcf, я получу ту же ошибку.

Надеюсь, я ясно выразился... И любая помощь будет принята с благодарностью!! Заранее спасибо!


person rokosir    schedule 27.03.2014    source источник
comment
Пожалуйста, задавайте вопросы о пакетах Bioconductor на список рассылки (подписка не требуется). Обязательно предоставьте вывод sessionInfo(), так как это похоже на ошибку в VariantAnnotation. пакет.   -  person Martin Morgan    schedule 27.03.2014


Ответы (2)


Спасибо, что сообщили об этой ошибке. Проблема исправлена ​​в версии 1.9.47 (ветка devel). Исправление будет доступно в релизной ветке после 14 апреля.

Проблема заключалась в том, что вы выборочно импортировали «FILTER» из поля «fixed», но не «ALT». writeVcf() выдавал ошибку, потому что не было значения ALT для записи. Если у вас нет доступа к версии с исправлением, можно было бы импортировать поле ALT.

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

Вы можете увидеть, какие значения были импортированы с помощью метода доступа fixed():

fixed(vcf)

Пожалуйста, сообщайте об ошибках или проблемах в списке рассылки Bioconductor, на который ссылается Мартин. Больше пользователей Bioc увидят вопрос, и вы быстрее получите помощь.

Валери

person Valerie Obenchain    schedule 28.03.2014

Вот воспроизводимый пример

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())

удается.

person Martin Morgan    schedule 28.03.2014