溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么整理DNA序列

發布時間:2021-08-13 13:55:33 來源:億速云 閱讀:228 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Python中怎么整理DNA序列,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

給定一堆DNA序列,即由字符A, C, G, T組成的字符串,統計所有長度為n的子序列出現的頻率。比如 ACGTACGT,子序列長度為2,于是 AC=2, CG=2, GT=2, TA=1,其余長度為2的子序列頻率為0.

***想到的就是建一個字典,key是所有可能的子序列,value是這個子序列出現的頻率。但是當子序列比較長的時候,比如 n=8,需要一個有65536 (4的8次方) 個key-value pair的字典,且每個key的長度是8字符。這樣ms有點浪費內存。。

于是想到,所有的長度為n的子序列是有序且連續的,所以可以映射到一個長度為4的n次方的的list里。令 A=0, C=1, G=2, T=3,則把子序列 ACGT 轉換成 0*4^3 + 1*4^2 + 2*4 + 3 = 27, 映射到list的第27位。如此,list的index對應子序列,而list這個index位置則儲存這個子序列出現的頻率。

于是我們先要建立2個字典,Python統計表示ACGT和0123一一對應的關系:

i2mD = {0:'A', 1:'C', 2:'G', 3:'T'}  m2iD = dict(A=0,C=1,G=2,T=3)  # This is just another way to initialize a dictionary

以及下面的子序列映射成整數函數:

def motif2int(motif):  '''convert a sub-sequence/motif to a non-negative integer'''  total = 0 for i, letter in enumerate(motif):  total += m2iD[letter]*4**(len(motif)-i-1)  return total  Test:  >>> motif2int('ACGT')  27

看完上述內容,你們對Python中怎么整理DNA序列有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節
推薦閱讀:
  1. python序列
  2. Cisco DNA簡介

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女