Rosalind第18题——ros_bio18_ORF
如果第一次阅读,请查看写在前面
#翻译过程的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相关推荐
- 高等数学(第七版)同济大学 习题6-2 (后18题)个人解答
高等数学(第七版)同济大学 习题6-2(后18题) 函数作图软件:Mathematica 13.把星形线x23+y23=a23所围成的图形绕x轴旋转(图6−21),计算所得旋转体的体积.\begin{ ...
- [剑指offer][JAVA]面试题第[18]题[删除链表的节点]
[问题描述][中等] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val ...
- 记录——《C Primer Plus (第五版)》第十二章编程练习第1-8题
1.不使用全局变量,重写12.4的程序 . # include <stdio.h>int critic(void); int main(void) {int units = 0;print ...
- Rosalind第五题:计算GC内容
问题 DNA字符串的GC含量由字符串中" C"或" G"的符号百分比给出.例如," AGCTATAG"的GC含量为37.5%.请注意,任何D ...
- 信息技术学业水平考试上机考试 18题 EXCEL操作题(25分)
免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813150714009747972&logTag=oZrgMIFg3 ...
- 信息技术学业水平考试 上机考试 18题 Word操作题(20分)三
免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813150014995431944&logTag=dTzLbiFOv4H ...
- 信息技术学业水平考试 上机考试 18题 Word操作题(20分)二
免费精讲视频操作演示: https://www.ixigua.com/6813170851190407692?id=6813148155358478861&logTag=TvQq_3xdz ...
- 信息技术学业水平考试 上机考试 18题 Word操作题一(20分)
免费精讲视频操作演示: https://www.ixigua.com/6813147875942334983/?utm_source=xiguastudio 3.Word操作题(20分) 1) ...
- Rosalind第四题:兔子与递归关系
http://rosalind.info/problems/fib/ 问题 序列是对象(通常是数字)的有序集合,允许重复.序列可以是有限的也可以是无限的.两个例子是有限奇数数列和无限奇数数列.我们用这 ...
最新文章
- linux下安装db2
- php监控nginx,Zabbix添加nginx-php监控
- spss相关性分析_SPSS有话说:如何得出问卷或量表的结构或维度——探索性因素分析...
- js 数组 转为树形结构
- ubuntu mysql增加用户_Ubuntu中给mysql添加新用户并分配权限
- 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
- Windows与Linux下进程间通信技术比较
- 图结构练习——BFSDFS——判断可达性
- 【vue2.0进阶篇】用transition组件轻松实现过渡效果
- plsql连mysql数据库12541_启动plSql时候报ORA-12541:TNS:tns:无法解析指定的连接标识符的解决办法(org11)...
- rtsp 报文转发_rtsp_proxy_server
- 嵌入式Linux/Android疑难杂症工作笔记
- 史上最全Java项目实战课程(含项目实战+源码)
- varbinary mysql,如何在MySQL中存储varbinary?
- 根据中文字符串查询拼音声母
- 小米笔记本linux系统下载软件,小米笔记本用什么系统 小米笔记本电脑将预装Linux系统...
- 苹果官方下载_苹果官方发布的2018年应用榜单里,有安卓也能下载的抠图神器!...
- 浏览器连不上 Flink WebUI 8081 端口
- Postman中文版下载[9.12.0]
- esxi 命令行格式化硬盘
热门文章
- VENUE | S6L初次安装详细视频指南
- Python 简单元组入门之“简易中文数字对照表”
- VMware 连接ISO镜像时,切换可移动设备时遇到错误: 对磁盘“ide1:0”执行的连接控制操作失败?
- 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib
- 【MQ】MQ消息中间件RabbitMQ
- Ubuntu如何安装Python
- Libtorch:Linux系统中使用libtorch【下载、解压】【下载的libtorch是编译好的库文件,可直接使用】
- Batch Normalization + Internal Covariate Shift(论文理解)
- Problem 1004: 蛤玮打扫教室(区间覆盖端点记录)
- MATLAB中cell(元胞)数组的基本用法