使用R获取DNA的反向互补序列
序列 使用 获取 反向 dna 互补
2023-06-13 09:13:02 时间
前面跟大家聊了一下☞R如何reverse一个字符串,其实这个只能实现反向,那怎么样才能实现互补呢?其实获取DNA的反向互补序列这个事情本身并不是很难。有很多网页工具都能够实现,我随便在网上搜了一下就找到3个。我这里只是想结合R语言来解决我们生物信息里面的一些小问题,帮助大家理解R。我们还是用上次的DNA序列来举例
DNA='ATTTAGCGATGCGGCTATGCTATCGGA'
如果大家只是想解决这个问题,可以使用下面提到的三个网页工具
1.https://www.bioinformatics.org/sms/rev_comp.html
将你的序列贴进对话框,点击SUBMIT就能得到方向互补序列
2.https://arep.med.harvard.edu/labgc/adnan/projects/Utilities/revcomp.html
你会发现这个工具不仅可以得到反向互补序列,还可以得到反向序列,互补序列,看你自己的需求是什么。将你的序列贴进对话框,点击reverse complement就能得到反向互补序列
3.http://www.cellbiol.com/cgi-bin/complement/rev_comp.cgi
将你的序列贴进对话框,点击Do the Job!就可以得到反向互补序列了
接下来我们用R语言来实现这个功能,我还是给大家介绍两种不同的方法。一种是比较原始一点的方法。第二种是站在前人的肩膀上,使用已有的R包来实现。
1.使用strsplit,rev,paste等R自带的函数来实现
DNA='ATTTAGCGATGCGGCTATGCTATCGGA'
#定义互补配对的表
from=c("A","T","G","C","a","g","t","c","N","n")
to =c("T","A","C","G","t","c","a","g","N","n")
#得到带有名字的向量,名字是原始碱基,值是互补碱基
names(to)=from
#字符串拆分成字符串向量
sep_DNA=unlist(strsplit(DNA,""))
#获取互补序列
complementary_DNA=to[sep_DNA]
#获取反向序列
rev_complementary=rev(complementary_DNA)
#将字符串向量粘贴成字符串
rev_complementary_DNA=paste(rev_complementary,collapse = "")
#输出反向互补序列
rev_complementary_DNA
2.使用mgsub包中的mgsub函数
#安装mgsub和stringi
BiocManager::install("mgsub")
BiocManager::install("stringi")
#加载mgsub和stringi
library(mgsub)
library(stringi)
DNA='ATTTAGCGATGCGGCTATGCTATCGGA'
#使用mgsub获取互补序列
complementary_DNA=mgsub(DNA, #原始序列
c("A","T","G","C","a","g","t","c","N","n"), #原始碱基
c("T","A","C","G","t","c","a","g","N","n") #互补碱基
)
#使用stri_reverse获取反向序列
rev_complementary_DNA=stri_reverse(complementary_DNA)
#输出反向互补序列
rev_complementary_DNA
参考资料:R如何reverse一个字符串
相关文章
- Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测|附代码数据
- 使用时间序列数据预测《Apex英雄》的玩家活跃数据
- 召回和排序模型中的用户行为序列的建模
- 【综合笔试题】难度 2.5/5,状态机序列 DP 运用题
- 序列操作神器:Seqkit
- R语言Pearson相关性分析就业率和“性别平等”谷歌搜索热度google trend时间序列数据可视化
- 如何使用A2P2V针对特定目标生成攻击序列
- 开心档之MySQL 序列使用
- Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
- 使用 Oracle 序列实现自增功能(oracle序列自增)
- 完整的8号染色体序列揭示了新的基因及与其关联的疾病风险
- Oracle数据库中的序列使用教程(oracle中的序列)
- 使用zookeeper序列节点实现不可重入分布式锁
- MySQL日期序列生成方法(mysql日期序列)
- 化使用MSSQL系统表实现数据序列化(mssql系统表 序列)
- MySQL序列的实现和使用方法(mysql中使用序列)
- 使用Oracle中的序列伪列获取定制ID(oracle中的序列伪列)
- Oracle中使用序列产生流水号(oracle中生成流水号)
- Oracle中使用序列实现自增长ID(oracle中引用序列)
- Oracle中序列权限的授予及使用(oracle中序列赋权)
- Oracle数据库不再追求完美的序列(oracle 不要序列)
- valOracle使用currval函数获取序列的当前值(oracle curr)
- php数组函数序列之shuffle()和array_rand()随机函数使用介绍
- php数组函数序列之sort()对数组的元素值进行升序排序