我想以一對預定義的基序長度讀取序列氨基酸序列(“ACDEFGHIKL”),讓我們說 3 并列印它。輸出將是 [ACD,EFG,HIK]。但下次我想將其基數增加 1,所以下一個輸出應該是 [CDE,FGH,IKL]。
我撰寫了以下 python 代碼,它作業得很好。我只是想探索是否有任何其他選擇來撰寫它以使其變得簡單。
motif_len=int(motif_len)
if len(AA_seq)>=motif_len:
for i in range(len(AA_seq)-motif_len 1):
a=i
b=i motif_len
# print(a,b)
print(AA_seq[a:b])
任何意見或建議將不勝感激。我想知道 Python 是否有任何用于這種函式的預構建庫。謝謝
uj5u.com熱心網友回復:
如果我理解正確,您正在實作所謂的“滑動視窗”或“滾動視窗”。
我最近正在研究這個并遇到以下執行緒:
滾動或滑動視窗迭代器?
這篇文章可能也很有趣:
https://medium.com/geekculture/implement-a-sliding-window-using-python-31d1481842a7
我的結論是,沒有明顯的內置函式可以呼叫這個函式,而且最簡單的實作基本上就是你已經為自己制定的那個!
uj5u.com熱心網友回復:
我會走這條路-
group_len = 4
AA_seq = "ACDEFGHIKL"
print([AA_seq[i: i group_len] for i in range(len(AA_seq) - group_len 1) if len(AA_seq) >= group_len ])
對于這種特定情況,這將導致:
['ACDE'、'CDEF'、'DEFG'、'EFGH'、'FGHI'、'GHIK'、'HIKL']
uj5u.com熱心網友回復:
您可以使用正則運算式庫來獲取塊串列:
import re
re.findall('...','ACDEFGHIKL')
另一種選擇是 textwrap 庫:
from textwrap import wrap
wrap('ACDEFGHIKL', 3)
要完成,請遍歷子字串:
s_cur = s
for i in range(len(s)):
print(get_blocks(s_cur))
s_cur = s_cur[1:]
其中 get_blocks 是使用上述兩種方法之一的函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453455.html
上一篇:在瀑布圖和蜂群圖中繪制SHAP值
