This is a test version of Biostars. For the public version, visit https://www.biostars.org.
karyoploteR SNP density

I'm following the Gene Density example but modifying it to show SNP density across the genome. I found this post for getting a VCF file into the GRanges format, but when I follow it, I get this warning at the last step:

toGRanges(tmp.vcf.data)
Warning: NAs introduced by coercionError in .new_IRanges_from_start_end(start, end) : 
  'start' or 'end' cannot contain NAs

If I ignore the warning or run tmp.vcf.data %>% drop_na() before making the plot I get this error message:

kp <- plotKaryotype(genome = custom.genome)
kp <- kpPlotDensity(kp, tmp.vcf.data)
Error in kpPlotDensity(kp, tmp.vcf.data) : 
  In kpPlotDensity: 'data' must be a valid 'GRanges' object

How do I process my VCF file into a GRanges object for kpPlotDensity() ?


VCF file

My custom genome (I only want to plot the chromosomes and ignore unplaced scaffolds):

custom.genome <- toGRanges(data.frame(chr=c("Chromosome1", "ptg000009l", "ptg000006l","Chromosome4", "Chromosome5", "Chromosome6", "Chromosome7", "Chromosome8"), start=c(0, 0, 0, 0, 0, 0, 0, 0), end=c(185090896, 133334114, 131385308, 127816055, 128169929, 101006030, 125626, 6859227)))
snp vcf karyoploter

1 answer

Adding a comment to the answer I gave in the post you mentioned would have been a better option so I could have been notified of your issue. In the answer I wrote some years ago, OP was implying a BED12 format with specifically 12 columns in the vcf file.

You should replace this line :

tmp.vcf.data <- tmp.vcf.data[, c(1,2,12, 3:11)]

with a more generic one,

tmp.vcf.data <- tmp.vcf.data[, c(1,2,ncol(tmp.vcf.data), 3:(ncol(tmp.vcf.data)-1))]

Log in to answer this question.