標籤:python3 turn 擷取 div 字典 try style let pre
在生物資訊學分析中,經常對DNA序列進行一系列操作,包括子序列截取,互補序列擷取,反向序列擷取,反向互補序列擷取。在python語言中,可編寫如下函數完成這些簡易功能。
子序列截取
python中對序列截取使用字串切片功能就可以完成,例如:
>>> seq="ATGATATAGtatatatgCAAGAGg">>> subseq = seq[1:6]>>> subseq"TGATA"
注意,切片操作是“0-base”的,包左不包右。
互補序列擷取
比較常見的做法是定義一個堿基替換字典,如下所示:
def complement(s): basecomplemt = { "A":"T", "T":"A", "G":"C", "C":G", "a":"t", "t":"a", "g":"c", "c":"g", } letters = list(s) letters = [basecomplement[base] for base in letters] return ‘‘.join(letters)
使用python3字串使用的translate方法
def complement(seq): return seq.translate(str.maketrans(‘ACGTacgtRYMKrymkVBHDvbhd‘, ‘TGCAtgcaYRKMyrkmBVDHbvdh‘))
或python2 string包中的maketrans方法
from string import maketransdef complement(seq): return seq.translate(maketrans(‘ACGTacgtRYMKrymkVBHDvbhd‘, ‘TGCAtgcaYRKMyrkmBVDHbvdh‘))
反向互補序列擷取
def revcomp(seq): return complement(seq)[::-1]
參考資料
DNA反向互補序列擷取
python實現DNA序列字串轉換,互補鏈,反向鏈,反向互補鏈