前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生物信息学算法之Python实现|Rosalind刷题笔记:004 求DNA的反向互补序列

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

作者头像
简说基因
发布2020-12-14 14:10:41
9760
发布2020-12-14 14:10:41
举报
文章被收录于专栏:简说基因简说基因

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

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

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

需得:其反向互补序列。

示例数据

代码语言:javascript
复制
AAAACCCGGT

示例结果

代码语言:javascript
复制
ACCGGGTTTT

Python 实现

Complementing_a_Strand_of_DNA.py

代码语言:javascript
复制
import sys

def reverse_complement(dna):
    revc = ""
    basepair = {'A':'T', 'T':'A', 'G':'C', 'C':'G'}
    for c in dna:
        revc = basepair[c] + revc
    return revc

def 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

代码语言:javascript
复制
AAAACCCGGT

Sample Output

代码语言:javascript
复制
ACCGGGTTTT

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例数据
  • 示例结果
  • Python 实现
  • Problem
  • Sample Dataset
  • Sample Output
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档