成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python DNA序列中子序列出現(xiàn)頻率

開發(fā) 后端
Python DNA序列是在Python語言中使用比較廣泛的一個。當然我們在不斷的進行學習中還是有不少的問題存在。下面我們就詳細的看看。

Python DNA序列在使用的時候有很多需要我們注意的東西,其實在不斷的學習中有很多問題存在,下面我們就詳細的看看如何進行相關(guān)的技術(shù)學校。ms是我?guī)煹艿膔otation project:給定一堆Python DNA序列,即由字符A, C, G, T組成的字符串,統(tǒng)計所有長度為n的子序列出現(xiàn)的頻率。

比如 ACGTACGT,子序列長度為2,于是 AC=2, CG=2, GT=2, TA=1,其余長度為2的子序列頻率為0.

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

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

于是我們先要建立2個字典,表示ACGT和0123一一對應的關(guān)系:

 

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

以及下面的子序列映射成整數(shù)函數(shù):

 

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

雖然我們內(nèi)部把子序列當成正整數(shù)來存儲(確切地說,其實這個整數(shù)是沒有存在內(nèi)存里的,而是由其在list的index表示的),為了方便生物學家們看,輸出時還是轉(zhuǎn)換回子序列比較好。

于是有了下面的整數(shù)映射成子序列函數(shù),其中調(diào)用了另外一個函數(shù)baseN(),來源在此,感謝作者~

 

  1. def baseN(n,b):  
  2. '''convert non-negative decimal integer n to  
  3. equivalent in another base b (2-36)'''  
  4. return ((n == 0) and '0' ) or ( baseN(n // b, b).lstrip('0') + \  
  5. "0123456789abcdefghijklmnopqrstuvwxyz"[n % b])  
  6. def int2motif(n, motifLen):  
  7. '''convert non-negative integer n to a sub-sequence/motif with length motifLen'''  
  8. intBase4 = baseN(n,4)  
  9. return ''.join(map(lambda x: i2mD[int(x)],'0'*(motifLen-len(intBase4))+intBase4))  
  10. Test:  
  11. >>> int2motif(27,4)  
  12. 'ACGT'  

以下代碼從命令行讀入一個存有DNA序列的fasta文件,以及子序列長度,并輸出子序列和頻率。注意以下代碼需要Biopython module。

 

  1. if __name__ == '__main__':  
  2. import sys  
  3. from Bio import SeqIO  
  4. # read in the fasta file name and motif length  
  5. # from command line parameters  
  6. fastafile = sys.argv[1]  
  7. motifLen = int(sys.argv[2])  
  8. # list to store subsequence frequency  
  9. frequencyL = [0]*4**motifLen  
  10. # go over each DNA sequence in the fasta file  
  11. # and count the frequency of subsequences  
  12. it = SeqIO.parse(open(fastafile),'fasta')  
  13. for rec in it:  
  14. chrom = rec.seq.tostring()  
  15. for i in range(len(chrom)-motifLen+1):  
  16. motif = chrom[i:i+motifLen]  
  17. frequencyL[motif2int(motif)] += 1  
  18. # print frequency result to screen  
  19. for i, frequency in enumerate(frequencyL):  
  20. print int2motif(i, motifLen), frequency  

以上就是對Python DNA序列的相關(guān)介紹。

【編輯推薦】

  1. 簡介Python程序的校園網(wǎng)的認證方法
  2. Python文本亂碼發(fā)生時的解決方案
  3. Python編程語言總體性能優(yōu)點評測
  4. Python編程語言具有相當高的適應能力
  5. Python編程語言維和受到眾人的追捧
責任編輯:張浩 來源: IT168
相關(guān)推薦

2010-03-12 20:08:53

Python統(tǒng)計

2023-12-13 13:49:52

Python序列化模塊

2020-06-15 08:12:07

Linux系統(tǒng)數(shù)據(jù)

2021-03-31 11:20:57

PythonADTK異常檢測

2022-08-06 08:41:18

序列化反序列化Hessian

2011-06-01 15:05:02

序列化反序列化

2010-03-05 13:44:00

Python序列

2021-07-01 21:46:30

PythonHot-Winters數(shù)據(jù)

2024-09-09 14:57:31

2009-08-24 17:14:08

C#序列化

2013-04-16 10:48:04

Python序列

2021-03-03 10:43:57

Python列表陷進

2021-07-02 10:05:45

PythonHot-winters指數(shù)平滑

2009-08-06 11:16:25

C#序列化和反序列化

2011-05-18 15:20:13

XML

2018-03-19 10:20:23

Java序列化反序列化

2021-08-30 12:25:12

Python序列化函數(shù)

2020-10-27 10:13:06

Python時間序列代碼

2024-11-06 14:58:05

2013-03-11 13:55:03

JavaJSON
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜精品一区二区三区在线视频 | 欧美国产日韩一区二区三区 | 免费在线一区二区 | 国产一区二| 免费在线观看一区二区 | 国产精品不卡一区 | 99一级毛片 | 亚洲91| 草b视频| 国产综合久久久久久鬼色 | 久久99精品国产 | 成人免费视频 | 天天干干 | 色爱区综合 | 青青草免费在线视频 | 中文在线一区 | 亚洲综合一区二区三区 | 天天看天天操 | 一区二区三区播放 | 色网站视频 | 蜜桃视频在线观看免费视频网站www | 成人免费视频网站在线看 | 欧美精品久久久久 | 国产福利视频网站 | 久久久久久国产 | 国产日本精品视频 | www97影院| 91av在线免费 | 精品亚洲一区二区三区四区五区 | 久久一| 久久久久久久久久久久91 | 国产精品久久久久一区二区 | 成人高清在线 | 精品久久久久久久久久久院品网 | 视频在线一区 | 在线亚州 | 亚洲免费一 | 亚洲国产精品久久人人爱 | 国产精品久久久久久久岛一牛影视 | 亚洲天堂一区二区 | 国产精品96久久久久久 |