前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言实现基因序列的匹配和比对

R语言实现基因序列的匹配和比对

作者头像
一粒沙
发布2019-07-31 11:26:52
7K0
发布2019-07-31 11:26:52
举报
文章被收录于专栏:R语言交流中心R语言交流中心

我们对字符串都很熟悉,那么面对大量的测序序列字符串,我们如何对其进行处理分析,获得最终的结果。在R语言中有学者专门针对字符串的处理开发了对应的包,命名为Biostrings。

接下来我们介绍下其安装以及主要的功能。

安装还是通过bioconductor进行安装,具体代码如下:

source("https://bioconductor.org/biocLite.R")

biocLite("Biostrings")

接下来生成我们需要的基础数据(摘自CSDN全文地址请点击:https://blog.csdn.net/u014801157/article/details/24372455?utm_source=copy

):

rndSeq <- function(dict, n) {

paste(sample(dict, n, replace = T), collapse = "")

}

set.seed(0)

# 用mapply和rndSeq函数获取5条序列(字符串):

DNA.raw <- mapply(rndSeq,list(DNA_BASES), rep(20, 5))

names(DNA.raw) <- paste("SEQ",1:5, sep = "-")

# DNAString对象,1条序列

DNA.str <- DNAString(DNA.raw[1])

# DNAStringSet对象,含5条序列

DNA.set <- DNAStringSet(DNA.raw)

# Views对象

DNA.vws <- successiveViews(DNA.str,width = rep(4, 5))

函数的介绍从此处开始:

1. reverse() 获取反向序列

2. complement() 获取互补的序列

3. reverseComplement() 获取反向互补的序列

4. translate() 翻译函数,他只能针对XString和XXXSet类对象。

XString 类允许我们创建、存储和使用不同类型的字符串。不过我们只被允许使用XString的一些子类: BString, DNAString, RNAString,和AAString.。那么我们首先看下Xstrings类的构建:

bstring = BString("I am a BStringobject")#换成指定的类名称的函数即可。

另外也可以利用另一个函数subseq(),其可以更加方便的构造任意长度的Xstrings。

subseq(bstring, start=1, end=3)

当然我们也可以将Xstrings进行字符串的转化,那么涉及到的函数是toString()。

5. letterFrequency() 获取序列中某些字符的频率。

其中主要的参数as.prob如果为TRUE那么所得的值就是频率,如果FALSE那么为个数。

示例如下:

另一种特殊的用法可能会更有用:

6. letterFrequencyInSlidingView() 函数主要是获取在指定长度序列中各字符的频率,并且将此指定长度作为窗口进行下移一个碱基,直至计算整个序列。示例如下:

letterFrequencyInSlidingView(DNA.set[[1]],view.width = 13, letter = DNA_BASES)

7. alphabetFrequency() 主要是对矩阵中所有的因子进行统计,并列出指定的频率:

接下来我们看下Biostrings中更高级的函数,那就是模式匹配和序列比对。

1. 单模式匹配主要包含以下函数:

matchPattern():1个查询模式1条序列

countPattern():1个查询模式1条序列,仅计数

vmatchPattern():1个查询模式n条序列

vcountPattern():1个查询模式n条序列,仅计数

2. 多模式的匹配函数如下:

matchPDict():n个查询模式1条序列

countPDict():n个查询模式1条序列,仅计数

vmatchPDict():n个查询模式n条序列

vcountPDict():n个查询模式n条序列,仅计数

首先我们导入我们需要的数据包:

source("https://bioconductor.org/biocLite.R")

biocLite("drosophila2probe")

biocLite("BSgenome.Dmelanogaster.UCSC.dm3")

利用以上数据构建我们的字典以及匹配数据:

接下来看我们的实例:

mi0 <- matchPDict(pdict0, chr3R)

注:我们上面所提到的所谓模式也就是指的序列的reads。

3. PWM() 位置频率矩阵计算。具体的实例如下:

motif <-DNAStringSet(c(rep("ACGTGGC", 10), rep("ACGTGTC", 3)))

pwm <- PWM(motif)

4. pairwiseAlignment() / PairwiseAlignments()序列的对比,实例如下:

pwa <-pairwiseAlignment("-PA--W-HEAE", "HEAGAWGHE-E", gapOpening= -3, gapExtension = -1)

PairwiseAlignments("-PA--W-HEAE","HEAGAWGHE-E", gapOpening = -3, gapExtension = -1)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档