如果第一次阅读,请查看写在前面

#翻译过程的if,else写的极其拙劣,以后有时间有了更好的方法再来重写
#B站未琢三个碱基为一体遍历是一种比较好的思路,可以借鉴
import rewith open("../examples/ros_bio18_ORF.txt") as f:file = f.readlines()table = {} # 密码子表
#RNA密码子表
codon = """UUU F      CUU L      AUU I      GUU V
UUC F      CUC L      AUC I      GUC V
UUA L      CUA L      AUA I      GUA V
UUG L      CUG L      AUG M      GUG V
UCU S      CCU P      ACU T      GCU A
UCC S      CCC P      ACC T      GCC A
UCA S      CCA P      ACA T      GCA A
UCG S      CCG P      ACG T      GCG A
UAU Y      CAU H      AAU N      GAU D
UAC Y      CAC H      AAC N      GAC D
UAA Stop   CAA Q      AAA K      GAA E
UAG Stop   CAG Q      AAG K      GAG E
UGU C      CGU R      AGU S      GGU G
UGC C      CGC R      AGC S      GGC G
UGA Stop   CGA R      AGA R      GGA G
UGG W      CGG R      AGG R      GGG G """
codon = codon.split("\n")
#将密码子表字符串转为字典
for line in codon:i = 0pattern = re.compile(r'(.{3} \S+)\s*(.{3} \S+)\s*(.{3} \S+)\s*(.{3} \S+)')m = pattern.match(line)while i <= 4:single = m.group(i).split(" ")table.update({single[0]: single[1]})i += 1#将序列读入sequence
base = {'A': 'U', 'G': 'C', 'C': 'G', 'T': 'A'}
dna = ''
for line in file:line = re.sub("\n", "", line)m = re.match(r'^>.*', line)if m:continueelse:dna += line
#获取dna的补码mrna和反向补码
mrna = dna.replace('T', 'U')
r_mrna = ''.join([base[i] for i in dna[::-1]])
rna = [mrna, r_mrna]#遍历两个rna,对每个rna进行三次循环,给起始密码子和终止密码子各设置一个开关,以便获取是否开始翻译的信息
all_pro = []
for index in rna:n = 0while n < 3:i = nprotein = ''start = end = 0location = []while i < len(index):amino = index[i:i+3]if len(amino) != 3:breakif table[amino] == 'M':if protein == '':location = i + 3 # 获取起始密码子的索引,在翻译结束后从location继续遍历寻找新的起始密码子protein += table[amino]start = 1elif table[amino] == 'Stop' and start == 1:end = 1elif protein != '':protein += table[amino]if start == 1 and end == 1:all_pro.append(protein)protein = ''start = end = 0i = locationcontinuei += 3n += 1all_pro = list(set(all_pro)) # 删除列表重复元素
for e in all_pro:print(e)

Rosalind第18题——ros_bio18_ORF相关推荐

  1. 高等数学(第七版)同济大学 习题6-2 (后18题)个人解答

    高等数学(第七版)同济大学 习题6-2(后18题) 函数作图软件:Mathematica 13.把星形线x23+y23=a23所围成的图形绕x轴旋转(图6−21),计算所得旋转体的体积.\begin{ ...

  2. [剑指offer][JAVA]面试题第[18]题[删除链表的节点]

    [问题描述][中等] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val ...

  3. 记录——《C Primer Plus (第五版)》第十二章编程练习第1-8题

    1.不使用全局变量,重写12.4的程序 . # include <stdio.h>int critic(void); int main(void) {int units = 0;print ...

  4. Rosalind第五题:计算GC内容

    问题 DNA字符串的GC含量由字符串中" C"或" G"的符号百分比给出.例如," AGCTATAG"的GC含量为37.5%.请注意,任何D ...

  5. 信息技术学业水平考试上机考试 18题 EXCEL操作题(25分)

    ​​免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813150714009747972&logTag=oZrgMIFg3 ...

  6. 信息技术学业水平考试 上机考试 18题 Word操作题(20分)三

    免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813150014995431944&logTag=dTzLbiFOv4H ...

  7. 信息技术学业水平考试 上机考试 18题 Word操作题(20分)二

    ​​免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813148155358478861&logTag=TvQq_3xdz ...

  8. 信息技术学业水平考试 上机考试 18题 Word操作题一(20分)

    ​​免费精讲视频操作演示: https://www.ixigua.com/6813147875942334983/?utm_source=xiguastudio ​3.Word操作题(20分) ​1) ...

  9. Rosalind第四题:兔子与递归关系

    http://rosalind.info/problems/fib/ 问题 序列是对象(通常是数字)的有序集合,允许重复.序列可以是有限的也可以是无限的.两个例子是有限奇数数列和无限奇数数列.我们用这 ...

最新文章

  1. linux下安装db2
  2. php监控nginx,Zabbix添加nginx-php监控
  3. spss相关性分析_SPSS有话说:如何得出问卷或量表的结构或维度——探索性因素分析...
  4. js 数组 转为树形结构
  5. ubuntu mysql增加用户_Ubuntu中给mysql添加新用户并分配权限
  6. 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
  7. Windows与Linux下进程间通信技术比较
  8. 图结构练习——BFSDFS——判断可达性
  9. 【vue2.0进阶篇】用transition组件轻松实现过渡效果
  10. plsql连mysql数据库12541_启动plSql时候报ORA-12541:TNS:tns:无法解析指定的连接标识符的解决办法(org11)...
  11. rtsp 报文转发_rtsp_proxy_server
  12. 嵌入式Linux/Android疑难杂症工作笔记
  13. 史上最全Java项目实战课程(含项目实战+源码)
  14. varbinary mysql,如何在MySQL中存储varbinary?
  15. 根据中文字符串查询拼音声母
  16. 小米笔记本linux系统下载软件,小米笔记本用什么系统 小米笔记本电脑将预装Linux系统...
  17. 苹果官方下载_苹果官方发布的2018年应用榜单里,有安卓也能下载的抠图神器!...
  18. 浏览器连不上 Flink WebUI 8081 端口
  19. Postman中文版下载[9.12.0]
  20. esxi 命令行格式化硬盘

热门文章

  1. VENUE | S6L初次安装详细视频指南
  2. Python 简单元组入门之“简易中文数字对照表”
  3. VMware 连接ISO镜像时,切换可移动设备时遇到错误: 对磁盘“ide1:0”执行的连接控制操作失败?
  4. 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib
  5. 【MQ】MQ消息中间件RabbitMQ
  6. Ubuntu如何安装Python
  7. Libtorch:Linux系统中使用libtorch【下载、解压】【下载的libtorch是编译好的库文件,可直接使用】
  8. Batch Normalization + Internal Covariate Shift(论文理解)
  9. Problem 1004: 蛤玮打扫教室(区间覆盖端点记录)
  10. MATLAB中cell(元胞)数组的基本用法