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

博文

Rosalind 12 - Counting Point Mutations

已有 4910 次阅读 2017-10-28 08:39 |个人分类:Python Learning|系统分类:科研笔记|关键词:学者

Bioinformatics Stronghold - HAMM: Counting Point Mutations


Evolution as a Sequence of Mistakes


突变mutation)是核酸链进行合成或者复制产生的错误。由于核酸对于细胞的功能是至关重要的,所以突变往往会引起细胞内的连锁反应,最终影响整个细胞。尽管突变是错误的,但一些罕见的突变对于细胞来说可能是有益的。实际上,进化的宏观效应正是由几代微效有益突变的积累所产生的。


最简单的也是最为常见的核酸突变就是点突变point mutation),所谓点突变就是DNA单链上一个碱基被另外一个碱基替换。而延伸到双链上,就是一对碱基对被替换,比如C-G碱基对被替换成了A-T碱基对。


A point mutation in DNA changing a C-G pair to an A-T pair.


来自于同一近期祖先的两个生物或物种的DNA是同源的(homologous),因此统计同源链上差异的碱基数量会帮助我们理解这两个物种在进化过程中发生的点突变事件。


对于两条同源序列,我们最感兴趣的还是计算能够区分这两条序列差异最小的突变数,因为生物简约性原则要求解释进化历史要越简单越好。


Problem


Given two strings s and t of equal length, the Hamming distance (汉明距) between s and t, denoted dH(s, t), is the number of corresponding symbols that differ in s and t.


Given: Two DNA strings s and t of equal length (not exceeding 1 kbp).


Return: The Hamming distance dH(s, t).


Sample Dataset


GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT


Sample Output


7


Solution



>>> s = 'GAGCCTACTAACGGGAT'
>>> t = 'CATCGTAATGACGGCCT'
>>> count = 0
>>> for i in range(len(s)):
...        if s[i] == t[i]:
...         count = count + 1
...
>>> print len(s) - count
7
>>>


另外,看到网友Ben Usman的代码更加简洁:


>>> s = 'GAGCCTACTAACGGGAT'
>>> t = 'CATCGTAATGACGGCCT'
>>> print [ a!=b for (a, b) in zip(s, t)].count(True)
7
>>>


其中,zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),比如:


>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
>>>


参考


【脚本之家】Python中zip()函数用法实例教程


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://m.sciencenet.cn/blog-3158122-1082707.html

上一篇:Plant Cell:拟南芥全基因组复制后同源基因的功能分化
下一篇:New Phytologist:WRKY70通过抑制SARD1的表达无菌激活植物免疫

0

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

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

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

GMT+8, 2024-4-19 21:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部