日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用python做频数分析_Python统计如何进行DNA序列整理

發布時間:2024/5/8 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python做频数分析_Python统计如何进行DNA序列整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python統計在我們的使用中有很多的障礙,其中在DNA序列上的相關問題就需要我們不斷的去學習。下面我們就向大家介紹有關的問題,希望在以后Python統計的使用過程中有所收獲。

給定一堆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統計的相關介紹。雖然我們內部把子序列當成正整數來存儲(確切地說,其實這個整數是沒有存在內存里的,而是由其在list的index表示的),為了方便生物學家們看,輸出時還是轉換回子序列比較好。

【編輯推薦】

【責任編輯:張浩 TEL:(010)68476606】

點贊 0

總結

以上是生活随笔為你收集整理的用python做频数分析_Python统计如何进行DNA序列整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。