包含使用python生成所有dna的詞條

本文目錄一覽:

如何用Python構造hash表解決DNA k-mer問題

思路:

1、首先採用命A=0,C=1,G=2,T=3. 就相當於4進制數字,然後採用karp-Rabin算法轉換成唯一十進制數字。由於用此算法的哈希函數為:hash(value)=value*(4^(k-q-1));

value是該字符對應的值,k是kmer長度,q是此字符在字符串的位置範圍在[0-(q-1)]。然後把一個kmer裏面所有字符的hash值求和就行了。

2、那麼很容易看出來,對於連續的下害常憤端蒞得縫全俯戶一個Kmer,就有推理公式了 hashNew=addValue+(hashOld-deleteValue*(4^(k-1)))*4; hashNew就是往右平移一個字符的kmer hash值,hashOld就是平移之前的值,addValue就是平移後右邊多的一個字符,deleteValue就是平移後左邊少的一個字符。這樣整個hash表建立的時間複雜度約為O(m+k),m是整個文本長度。

3、由於kmer長度如果過長,其hash值過大,會造成內存不夠溢出的現象,所以kmer內部定死為10 。那麼問題就來了,如何應對不同的kmer值。分三種情況。

第一種:q10

這種可以將kmer以10為單位,將hash表中對應值取出,然後對結果進行分析,這邊分析方法為建立兩個數組一個二維數組unionName儲存位置關係,一個一維數組unionScore,計數用。 思路就是首先第一輪初始化unionName[Name][Pos]全部賦值Pos 並初始化unionScore,然後再第二輪匹配如果unionName[Name][Pos-cycle]=Pos-1則將其賦值為當前Pos,cycle為當前循環次數。並將當前循環數存入unionScore[NAME]中。最後當unionScore[NAME]值也就是循環數為k-1,即我們需要的交集了。

第二種:q=10

直接求出hash值,取出相應的值即可。

第三種:q10

可以用前綴種子+後綴種子交集產生。

前綴種子:在字符串後面補字符直到長度等於K,這個很容易看出來 最小是全補A,最大是全補T,然後將最小值到最大值之間的hash值即為所求。

後綴種子:後綴種子和前綴種子不同就是在字符串左邊補齊字符。所以此時需要進行變換。只要對前置種子產生的值變化下就行了。(preValue-minValue)*(4^(K-q))+hash(p) 。其中preValue就是對應的前置種子的hash值,minValue就是前置種子中最小值也就是全補A的情況,hash(p)就是字符串長度為p時候的hash值。

交集就是先求後綴種子所有的值,再加上 前綴種子中起始位置在[0-(k-1)]中的值。

將DNA序列在Python問題,怎麼解決

1#!/usr/bin/python

 2 #-*- coding:utf-8 -*-

 3 “將DNA序列轉換為RNA序列,即將T轉換為U即可,利用字符串的replace方法”

 5 f=open(‘./test.txt’, ‘r’)

 6 line=f.read()

 7 dna2rnaline=line.replace(‘T’, ‘U’)

 8 f.close()

 9 f=open(‘./test.txt’, ‘w’)

10 line=f.write(dna2rnaline)

11 f.close()#了解DNA序列和RNA序列的鹼基差別

用c語言編寫一個程序,產生所有可能的長度為10bp的DNA序列

沒用C寫,用python寫的,道理都一樣。

def generate(n):  //n為長度

    for i in range(4**n):

        a=[0 for i in range(n)] //a為長度為n的一個序列

        num = i

        z = 0

        while(num!=0):

            a[z]=num%4

            z = z+1

            num = int(num/4)

        for j in a:

            if j==0:

                print(‘A’,end=””)

            elif j==1:

                print(‘T’,end=””)

            elif j==2:

                print(‘G’,end=””)

            else:

                print(‘C’,end=””)

        print()

原理就是四進制轉換。

當調用函數generate(2),產生結果AA,TA,GA,CA,AT,TT,GT,CT,AG,TG,GG,CG,AC,TC,GC,CC

python這個代碼啥意思?求具體的。

import string

str_c=’dna’

str_letter=string.ascii_letters # 生成所有小寫字母列表

dict_letter={} # 新建空字典

for letter in str_letter: # 遍歷字母列表

dict_letter[letter]=[] # 以每個小寫字母為key,以空列表為 value,為字典創建新成員

for i in str_c: # 遍歷字符串

dict_letter[i].append(i) # 查找字典中以 i 為鍵key的值value,並在其(列表)中添加 i

for count in str_letter:

if len(dict_letter[count])!=0: # 若字典中以 count 為鍵的值不是空列表

print(‘%s:%d’%(count,len(dict_letter[count]))) #輸出此列表的長度

print() # 輸出一個換行符

已有一個文件DNA.txt。寫一個Python程序

def readfromfile(filename):

with open(filename, ‘rt’) as handle:

return handle.read()

def appendtofile(filename, lines):

with open(filename, ‘at’) as handle:

handle.writelines(lines)

def itercui():

while 1:

content = raw_input()

if content in (‘exit’, ‘quit’):

break

yield content

if __name__ == “__main__”:

filename = “record.log”

print readfromfile(filename)

appendtofile(

filename,

[ln+’\n’ for ln in itercui()]

)

python 遺傳算法問題

遺傳算法(GA)是最早由美國Holland教授提出的一種基於自然界的「適者生存,優勝劣汰」基本法則的智能搜索算法。

遺傳算法也是借鑒該基本法則,通過基於種群的思想,將問題的解通過編碼的方式轉化為種群中的個體,並讓這些個體不斷地通過選擇、交叉和變異算子模擬生物的進化過程,然後利用「優勝劣汰」法則選擇種群中適應性較強的個體構成子種群,然後讓子種群重複類似的進化過程,直到找到問題的最優解或者到達一定的進化(運算)時間。

原創文章,作者:HBGJC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329371.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HBGJC的頭像HBGJC
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論