R语言爬虫(一)抓取Illumina接头序列

        

        昨天师姐在她的研究过程中遇到了一个小小的困难,这个小小的困难却给我一个新的启发。由于研一课程较多,且最近也临近某些科目的考试,所以我今天在此写一部分内容。以后会针对这个问题写详细的推文分享给大家。

        问题的背景是,师姐拿到了一堆病毒的原始测序数据,当然首先做质控了。而师姐发现这次的数据并没有去除接头序列(虽然在2013年之后Illumina公司的Hiseq, Miseq等测序平台都会在下机之后自动去接头)。师姐想用Trimmomatic过滤掉这些接头,而这个软件中只含有Hiseq/Miseq和GAII平台的接头序列。所以师姐很巧妙地想到利用FastQC软件初始质控,从FastQC输出结果中的Overrepresented sequences中查看是否存在接头序列。

R语言爬虫(一)抓取Illumina接头序列

        再将这些接头序列建立Index然后用Trimmomatic过滤。(这真的是一个很好的方法,我第一次学到!!!)

        然而问题来了,由于FastQC输出的文件只有两种形式,一种是离线网页HTML格式文件,另外一种是图片的压缩包文件。我们并不清楚有多少接头序列,如果一个一个从上百个测序结果质控文件中查看将会很花时间。这是我突然有灵感,既然是离线HTML文件,那么也可以爬虫。

        爬虫是一种对互联网信息获取的一种技术或程序,网上对爬虫的解释是网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。再此还需要介绍什么是HTML:超文本标记语言(英语:HyperText Markup Language,简称:HTML),标准通用标记语言下的一个应用。 “超文本”就是指页面内可以包含图片链接,甚至音乐程序等非文字元素。 超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

          简而言之,HTML是一种标记语言,通常情况下是由<元素>内容</元素>的形式存在,比如你新建一个txt文本文件在里面输入<head>Bioinformatic</head>保存后修改.txt后缀为.html格式,再用你自己的浏览器打开就会出现下图效果

R语言爬虫(一)抓取Illumina接头序列

           所以在每个HTML文件中,每个内容都会在某个或者某些个元素之下即<元素1><元素2><元素n>你的内容</元素1></元素2></元素3>所以我们要找相关内容只需要找到这些内容对应的元素集合,我们将之称为xpath所以我们只要找到接头序列对应的xpath就可以批量找到每个HTML文件中的接头序列。要完成这个需求,使用R语言编程需要加载一个rvest包,下面用Notepad++打开我们的HTML文件,查找TruSeq关键词

          发现所属xpath为<tr><td></tr></td>所以使用R语言编程代码如下

library(rvest)

library(stringi)

setwd(“D:/test/fastQC”)

myQCfile<-dir(“D:/test/fastQC”)

truseqindex<-NULL

for (i in 1:length(myQCfile)) {

  qc<-read_html(myQCfile[i])

  a<-qc%>%这里%>%是管道符,意在把qc变量传递给a后继续进行后续操作

    html_nodes(xpath = “//tr/td”)%>%

    html_text()

  b<-NULL

  for (j in 1:length(a)) {

    if(grepl(a[j],pattern = “(TruSeq|Primer)”)){b<-c(b,a[j-3],a[j])}

  }

  truseqindex<-c(truseqindex,b)

}

        代码运行最后得到如下结果

        以下是完整代码

这次仅仅只是利用爬虫技术对离线网页进行爬取,可能多数读者读完后依然不太理解,不过没关系,我会在后期详细推送爬虫技术的内容,利用R语言爬虫还可以爬取在线网页进行基因、物种注释、NCBI文献获取等各种信息,甚至你想买房,买股票也可以通过在这种技术获得你想要的信息。

R语言爬虫(一)抓取Illumina接头序列》来自互联网公开内容,收录仅供学习使用,如侵权请联系删除。本文URL:https://www.ezixuan.com/1020815.html

(0)
上一篇 2023年 1月 29日 上午9:36
下一篇 2023年 1月 29日 上午9:36