注:本博客旨在分享个人学习心得,有不规范之处请多多包涵!

目录

  • 概念介绍
  • 找ORF的代码实现
  • 结束语

概念介绍

在人体内,为了表达DNA上的基因,这个基因包含的DNA在被转录为pre-mRNA后经过进一步处理成为成熟的mRNA,mRNA紧接着会被核糖体用来合成蛋白质,从而控制生物体的反应。在mRNA上,每三个碱基组成一个密码子,对应一种氨基酸。下图为密码子与氨基酸的对照表:

要合成一个正常的蛋白质,mRNA序列上的两端需要分别有一个起始密码子(图上标为start)和一个终止密码子(图上标为stop)。但在DNA上有许多这样子的起始和终止密码子,产生很多种不同的序列组合。为了在DNA上找到所有可能的能用来制作某种蛋白质的序列组合,我们用开放阅读框(ORF,Open Reading Frame)来找到所有具有编码蛋白质潜能的序列。

找ORF的代码实现

在R语言中找ORF的程序流程如下:

下面是具体代码:

findORF <- function(seq){ #传入参数为DNA序列,注意方向一定要是5'到3'findStartCodons <- function(seq){ #找起始密码子的函数startcodons <- numeric(0) #创建空函数k <- 1for(i in 1:(length(seq)-5)){ #以密码子的第一位碱基位置计算,最后五位无需检查,因为长度过短if(seq[i] == "a" && seq[i+1] == "t" && seq[i+2] == "g"){ #ATG对应起始密码子startcodons[k] <- i #记录位置k <- k + 1 #位置下标加一}}return(startcodons) #返回结果}findStopCodons <- function(seq){ #找终止密码子的函数stopcodons <- numeric(0) #创建空函数k <- 1for(i in 1:(length(seq)-2)){ #以密码子的第一位碱基位置计算if((seq[i] == "t" && seq[i+1] == "a" && seq[i+2] == "a") || (seq[i] == "t" && seq[i+1] == "a" && seq[i+2] == "g") || (seq[i] == "t" && seq[i+1] == "g" && seq[i+2] == "a")){ #TAA TAG TGA对应终止密码子stopcodons[k] <- i #记录位置k <- k + 1 #位置下标加一}}return(stopcodons) #返回结果}startcodon <- findStartCodons(seq) #找到所有的起始密码子stopcodon <- findStopCodons(seq) #找到所有的终止密码子usedStop <- numeric(0) #记录用过的终止密码子ORFs <- character(0) #记录有效开放阅读框k <- 1for(i in startcodon){ #遍历所有起始密码子for(j in stopcodon){ #遍历所有终止密码子if((j-i)%%3==0 && j > i){ #如果在一个阅读框内,即两个密码子之间的位置为3的整数if(j %in% usedStop){ #如果终止密码子被用过break #跳出这次循环,到下一个起始密码子}else if(j-i < 300){ #如果密码子之间的序列长度过短break #同上}else{ORFs[k] <- paste(i, "to", j) #生成字符串,记录的结果如"1 to 3001"usedStop[k] <- j #记录用过的终止密码子k <- k + 1 #位置下标加一break #跳出本次循环,到下一个起始密码子}}}}return(ORFs) #返回结果
}

这种找ORF的算法比较简单快速,但相应地准确度会有所下降。在NCBI官网有更准确的算法。

结束语

在找到ORF后,就能将该ORF与数据库中的已知序列进行比对,从而预测该物种基因的组成与功能等有用信息。下次将会介绍Needleman-Wunsch这一序列全局比对算法,敬请期待!和有任何问题或想法欢迎留言和评论!

(五)R语言入门生物信息学——ORF和序列分析相关推荐

  1. 【万字长文】R语言入门学习路线与资源汇总

    本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上. 今天简单介绍下R语言的学习路线以及R学习资源汇总. 下面涉及到的R语言书籍我打包了PDF文件,有需要的在 ...

  2. (一)R语言入门指南——数据分析的第一步

    注:本博客旨在分享个人学习心得,有不规范之处请多多包涵! 目录 R语言 数值与逻辑运算符 变量类型与赋值 逻辑判定与循环 结束语 R语言 简单来说,R语言是一个免费开源.数据分析和可视化功能强大的编程 ...

  3. 01 R语言入门——一些介绍

    01 R语言入门--简介 1.1 学习目标 安装R语言平台 www.r-project.org 熟悉R界面 掌握Help帮助功能 1.2 简介 R语言是从S统计绘图语言演变而来,可看作S的" ...

  4. r语言x c(-1 -2),【软件】R语言入门之向量

    "R语言入门开篇,向量(vector)相关知识的介绍" R语言是一款优秀统计学编程语言,本文介绍R语言的几个重要命令,以及R语言中非常重要的一种数据结构-向量(Vector)的相关 ...

  5. R语言入门4---R语言流程控制

    ​ 流程控制语句在任何语言中都是非常重要的,通过流程控制语句编程者能够根据业务逻辑在程序中设计合理的循环.分支,实现程序各种各样强大的功能.一般实现任一算法的控制结构都可以分为顺序结构.分支结构.循环 ...

  6. R语言入门——常用函数50个

    R语言函数入门50个基本函数 0引言 1.入门准备操作及函数 1.1R版本介绍以及IDE的选择 1.2IDE及其常用的快捷键 2.空间操作以及纠错函数 2.1 ? .??.help.demo.exam ...

  7. R语言入门——猜数小游戏

    R语言入门--猜数小游戏 题目介绍 使用代码(2种方法) 运行结果 题目介绍 设计一个猜数字的游戏:计算机随机生成一个1~100 之间的整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提 ...

  8. R语言入门第一集 R语言、RTools、RStudio的简介、安装与使用

    R语言入门第一集!R语言.RTools.RStudio的简介.安装与使用! 一.简介:什么是R语言.RTools.RStudio? R语言 RStudio R 语言的集成开发环境 rtools是什么工 ...

  9. R语言必看推荐:R语言入门经典版(中文版)+R语言实战第二版(中文完整版)

    R语言入门经典(中文版)R for beginners R语言经典教材 第二版 适合初学者 作者:Emmanuel Paradis R 语言实战第二版(中文完整版) R语言实战(第2版)注重实用性,是 ...

最新文章

  1. git add . 之后 想执行回滚操作(git add 到本地仓库的代码回滚到没有add 之前的操作)
  2. Android语音信号波形显示
  3. Jsonplugin+struts2使用说明
  4. STVD出现红色区域
  5. MongoDB C++ gridfs worked example
  6. C++检查给定数字是否为4的幂的算法实现(附完整源码)
  7. 《迷人的8051单片机》---- 1.2小元器件有大智慧
  8. jdk11换jdk8版本_在JDK 9(以及8)以及更高版本中,所有内容都可以作为一个流
  9. c++ memory 头文件详细介绍
  10. HPU 1002 A + B Problem II【大数】
  11. dup java_java web----TCP/DUP 通信
  12. WEB自定义控件小记
  13. ubuntu开机自启vnc虚拟显示器并使用向日葵远程连接
  14. MySQL数据库语句
  15. 「c#」图片转换ico图标程序及源码
  16. 小提琴弓是如何出现的?
  17. python代理ip_python代理ip7个汇总技巧
  18. 防刷新网站访问量计数器
  19. MySQL——SQLyog如何导出、导入数据库
  20. 大学c语言基础 Turbo C2.0 (32位/64位通用)

热门文章

  1. 使用Vue3学习Vue的基础知识
  2. Python 办公自动化:全网最强最详细 PDF 文件操作手册!
  3. SQLite 视图(View)
  4. ApiCloud使用小结图文示例-简单的认识
  5. CSS入门笔记5(浏览器渲染,CSS动画全解)
  6. 色彩基础-图像处理必备
  7. 财会法规与职业道德【11】
  8. gateway+vue实现防接口重放、防篡改
  9. JointJS入门实例01-在JOINTJS元素中使用HTML
  10. 拉格朗日松弛求解问题