碱基互补配对原则是:A 与 T 配对,G 与 C 配对。

求 DNA 的反向互补序列分两步:第一是反向,第二是互补。比如序列“ATGC”,反向就是“CGTA”,再互补就是“GCAT”。

给定:长度不超过 1000bp 的 DNA 序列。

需得:其反向互补序列。

示例数据

AAAACCCGGT

示例结果

ACCGGGTTTT

Python 实现

Complementing_a_Strand_of_DNA.py

import sysdef reverse_complement(dna):revc = ""basepair = {'A':'T', 'T':'A', 'G':'C', 'C':'G'}for c in dna:revc = basepair[c] + revcreturn revcdef test():dna = 'AAAACCCGGT'return reverse_complement(dna) == 'ACCGGGTTTT'if __name__ == '__main__':if not test():print("reverse_complement: Failed")sys.exit(1)with open('rosalind_revc.txt') as fh:dna = fh.read()revc = reverse_complement(dna.strip().upper())print(revc)
  • 在 Python 中,是没有 switch 语句的,可以用 if...elif...elif..else 来模拟 switch 语句;而更 pythonic 的做法是用字典来代替。在本题中,你可以尝试用 if...elif...else 来实现反向互补。

  • Python 中的序列反向可以通过切片实现,如 dna_forward[::-1],就得到了其反向序列,再求其互补序列,也可以实现反向互补的需求。

Problem

In DNA strings, symbols 'A' and 'T' are complements of each other, as are 'C' and 'G'.

The reverse complement of a DNA string is the string formed by reversing the symbols of , then taking the complement of each symbol (e.g., the reverse complement of "GTCA" is "TGAC").

Given: A DNA string of length at most 1000 bp.

Return: The reverse complement of .

Sample Dataset

AAAACCCGGT

Sample Output

ACCGGGTTTT

喜欢文章请点个“赞”吧!或者点击“在看”让更多朋友看到,点击“阅读原文”可以在知乎专栏上给我留言,博客地址:https://jianzuoyi.github.io

生物信息学算法之Python实现|Rosalind刷题笔记:004 求DNA的反向互补序列相关推荐

  1. 生物信息学算法之Python实现|Rosalind刷题笔记:010 DNA一致性序列计算

    经常碰到需要计算一组 DNA 序列的一致性序列,比如去除测序数据中的 PCR 错误,最简单的方法就是通过计算它们之间的一致性序列. 图源:rosalind.info 计算一致性序列,通常借助一个中间矩 ...

  2. 生物信息学算法之Python实现|Rosalind刷题笔记:011 DNA六框翻译

    开放阅读框(Open Reading Frame, ORF)是由起始密码子开始,直到终止密码子结束,中间不含有其他终止密码子的核酸序列.由于 DNA 是双链结构,任何一条链都可以作为模板合成 RNA: ...

  3. 生物信息学算法之Python实现|Rosalind刷题笔记:002 中心法则:转录

    我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...

  4. 生物信息学算法之Python实现|Rosalind刷题笔记:003 中心法则:翻译

    我在生物信息学:全景一文中,阐述了生物信息学的应用领域非常广泛.但是有一点是很关键的,就是细胞内的生命活动都遵从中心法则,生物信息学很多时候就是在中心法则上做文章: 分子生物学中心法则:DNA --& ...

  5. 生物信息学算法之Python实现|Rosalind刷题笔记:001 碱基统计

    前言 Rosalind is a platform for learning bioinformatics and programming through problem solving. Rosal ...

  6. 生物信息学算法之Python实现|Rosalind刷题笔记:013 随机DNA序列

    众所周知,基因组的核酸链不可能是随机形成的.有时候许多物种基因组之间,存在一些保守序列(motif),这意味着它们可能具有重要功能.但是,我们如何确定这些序列不是随机形成的 DNA 片段呢? 一个常识 ...

  7. Python牛客刷题笔记

    一.类型转换 a=input() print(a.lower()) #全小写 print(a.upper()) #全大写 print(a.title()) #首字母大写a=int(input()) p ...

  8. Github最强算法刷题笔记.pdf

    资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...

  9. 写了三百篇算法题解,关于如何刷题有些话我想对你说

    这篇文章憋了我挺久的,感觉都快憋出内伤,一次次的打开 Typora 写几十个字,一次次的修改删除最后关闭 Typora,如此反复. 为什么会如此纠结? 或许是太狂妄了,我真的想让那些看了这篇文章的人都 ...

最新文章

  1. COM:追踪植物-微生物组互作的进化历史
  2. MySQL的binlog_row_image
  3. 怎么样快速学习AngularJS?
  4. 给电子类大学生一点求职建议
  5. python 堆_面试再问你什么是堆和栈,你就把这篇文章甩给他
  6. 在高并发环境下该如何构建应用级缓存
  7. 基于Java Bean Validation对Request参数进行校验的设计思路
  8. C#分布式缓存二:Asp.Net中使用Couchbase
  9. struts2学习笔记(一):配置struts2开发环境
  10. MAPGIS与ARCVIEW之间的文件转换技巧。(转载自当当吧网络驿站)
  11. WPS Android版API
  12. java命令生成jdk文档(jdk文档)-jdk文档是通过命令生成
  13. 分享几个有趣的Python小项目
  14. 数电课设—智力抢答器(五路抢答器),已在Proteus8.9版本中仿真通过
  15. 【iOS沉思录】:iOS多媒体音频(下)-录音及其播放
  16. 《网络神采4》技术大揭密之:DedeCMS存储过程
  17. Android监听系统来电,弹出提示窗口
  18. 免费丨永洪科技2017用户大会@北京
  19. APP合规讲堂(七)-App有关收集使用规则的内容晦涩难懂、冗长繁琐,用户难以理解
  20. 'utf-8' codec can't decode byte 0xb5 in position : invalid start byte

热门文章

  1. vscode更换主题的插件_01-vscode主题及插件
  2. Python解题:Dream to EC-Final 梦回长安
  3. 计算机一级考试最难套题,计算机一级考试套题
  4. Xendit获得1.5亿美元C轮融资,用于在东南亚构建数字支付基础设施
  5. 苏宁易购电器的主图视频怎么下下来哦
  6. Navicat Premium 12安装和破解
  7. Android activity默认横屏设置
  8. TCP拥塞控制图解(不包括RTO,因为它太简单了)
  9. 微服务和分布式的区别是什么?
  10. abb机器人指令手册_ABB机器人控制器死机故障维修