又来做Rosalind题目啦~
2.Counting DNA Nucleotides
这题也比较简单,就是给出一段DNA序列,将它翻译成RNA,本质上也就是将T碱基替换成U碱基。
python里面也有一个特殊的方法
replace()
可以对字符串中的子字符串进行替换,直接在命令行中执行即可。
>>> str="GATGGAACTTGACTACGTAAATT"
>>> print(str.replace("T","U"))
GAUGGAACUUGACUACGUAAAUU
这题好像没有看到什么特殊的解法。
3.Complementing a Strand of DNA
给出一个DNA序列,需要打印出其互补链上的序列,本质上实际上是字符串倒置加上替换的一个操作。
这里需要用到python中一个反向输出字符串的小技巧
seq[::-1]
能够将seq
非常方便地倒置,再加上上面介绍的replace()
,可以很轻松地完成需求。
>>> s="AAAACCCGGT"
>>> print(s[::-1].replace("A","M").replace("C","N").replace("T","A").replace("G","C").replace("M","T").replace("N","G"))
ACCGGGTTTT
我这里替换使用了临时替代“M”“N”,还看到了一种写法是利用大小写的不同,最后用upper()
转换大小写,这样会比我少写两个replace()
,比较巧妙。
seq = 'AAAACCCGGT'
rev_seq=seq[::-1].replace('C', 'g').replace('G', 'c').replace('T', 'a').replace('A', 't').upper()
print(rev_seq)