TickingClock的个人博客分享 http://blog.sciencenet.cn/u/TickingClock

博文

Rosalind 9 - Complementing a Strand of DNA

已有 4058 次阅读 2017-10-25 08:33 |个人分类:Python Learning|系统分类:科研笔记

Bioinformatics Stronghold - REVC: Complementing a Strand of DNA


The Secondary and Tertiary Structures of DNA


核酸链上的碱基排序构成了核酸链的一级结构primary structure),但其并未解释核酸分子的三维结构。自从1953年James WatsonFrancis Crick两位大神在Nature上发表了一篇不足800字的文章,对于核酸完整化学结构的研究就成了20世纪中期所有分子生物学研究的中心课题。Watson和Crick利用加强版的X射线呈像技术(由Rosalind FranklinRaymond Gosling两位大神发明)研究了核酸的结构,并提出核酸具有以下几个特点:
  1. DNA分子双链,且方向相反;

  2. 两条链上的碱基互补配对,A与T、C与G;

  3. 两条链相互缠绕形成螺旋着的阶梯结构,叫做双螺旋a double helix)。

以上1和2是DNA的二级结构secondary structure);3则是DNA的级结构tertiary structure)。



The double helix of DNA on the molecular scale.


在双螺旋的模型中,一对碱基就叫做碱基对a base pair),简称bp。因此DNA(双链核酸)的长度单位就是bp,而不是nt。另外,在已知DNA双链的其中一条链的情况下,我们可以根据碱基互补配对原则得到另一条链的序列。不过由于两条链的方向相反,所以根据一条链获取对应链的序列过程又叫做反向互补reverse complement)。


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 s is the string sc formed by reversing the symbols of s, then taking the complement of each symbol (e.g., the reverse complement of "GTCA" is "TGAC").


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


Return: The reverse complement sc of s.


Sample Dataset


AAAACCCGGT


Sample Output


ACCGGGTTTT


Solution


>>> s = 'AAAACCCGGT'

>>> r = reversed(s)
>>> c = ''.join(list(r))
>>> d = {'A':'T', 'T':'A', 'C':'G', 'G':'C'}
>>> revc = [d[i] for i in c]
>>> print ''.join(revc)
ACCGGGTTTT

>>>


reversed()这个函数是将一段序列进行反转,并将其元素从后向前颠倒构建成一个新的迭代器,且reversed()之后的iterator只在第一次遍历时返回值,比如:


>>> s = 'AAAACCCGGT'
>>> r = reversed(s)
>>> r
<reversed object at 0x10f9d6990>
>>> list(r)
['T', 'G', 'G', 'C', 'C', 'C', 'A', 'A', 'A', 'A']
>>> list(r)
[]

>>>


s中存放的是一段序列’AAAACCCGGT',r = reversed(s)就是将s进行反转并存放于r中,构成一个新的迭代器,可以用list查看该迭代器内所有元素,但只能查看一次,下一次迭代器重新生成,默认为空。


我们的思路就是先将给定序列进行反转,然后构建一个Dictionary将反转后的序列进行互补,最后得到反向互补序列。


参考


【菜鸟Python练习3】[ROSALIND-REVC] 获取反向互补序列

(出处: 生信技能树)


【十月狐狸】Python内置函数(54)——reversed

http://www.cnblogs.com/sesshoumaru/p/6060407.html


【justheretobe】python:为什么reversed()之后,第二次以后的list()得到的结果都是空?

http://blog.csdn.net/justheretobe/article/details/50609418


Over


Rosalind is a platform for learning bioinformatics and programming through problem solving. Take a tour to get the hang of how Rosalind works.


P.S. 欢迎关注微信公众号:微信号Plant_Frontiers




https://blog.sciencenet.cn/blog-3158122-1082344.html

上一篇:Plant Cell:拟南芥中促进叶片衰老的三重放大回路模型
下一篇:Plant Physiology:GA通过独立于DELLA的信号通路提高胞内钙离子
收藏 IP: 221.181.145.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 08:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部