需求
使用snpEff
软件对vcf
格式文件进行注释后会生成一个snpEff_summary.html
;这个文件是对vcf
格式文件中的内容进行的统计,结果会以表格和图片的形式在html文件里展示。我现在想把html中的数据提取出来,自己来做图。
参考文章
- https://stackoverflow.com/questions/14517732/how-to-get-table-data-from-html-table-in-xml How to get table data from html table in xml
使用R语言的 XML包
使用到的R语言代码
代码语言:javascript复制library(XML)
doc<-htmlParse("snpEff_summary.html")
total_table<-getNodeSet(doc,"//table")
# 以上代码是固定的写法
# 下面的代码想获得第几个表格,中括号中的数字就改成几
df3<-readHTMLTable(total_table[[3]])
df3
class(df3)
- 结果以数据框的形式存储
以上功能使用python的BeautifulSoup模块应该也可以实现,如果有时间回头看一下自己之前写的利用python的BeautifulSoup模块抓取火箭当家球星哈登数据的那篇笔记,争取利用python的BeautifulSoup模块也来实现一下本文提到的这个需求。
另外vcftools工具只保留vcf文件中的二等位基因
代码语言:javascript复制vcftools --vcf input.vcf --min-alleles 2 --max-alleles 2 --recode --recode-INFO-all --out output_vcf_prefix
- vcftools的帮助文档
--min-alleles <integer>
--max-alleles <integer>
Include only sites with a number of alleles greater than or equal to the "--min-alleles" value and less than or equal to the "--max-alleles" value. One of these options may be used without the other.
For example, to include only bi-allelic sites, one could use:
vcftools --vcf file1.vcf --min-alleles 2 --max-alleles 2