簡體   English   中英

構建 DNA 序列生成器

[英]Building a DNA sequence generator

我剛剛開始在生物信息學研究實驗室學習 Python。 我的第一個項目是生成一個程序,該程序可以吐出具有長度和拷貝數參數的各種 DNA 序列。 然后需要以 FASTA 格式輸出序列。

對於那些不熟悉的人來說,DNA 序列可以由四個“字母”組成:A、G、C、T。 DNA 序列示例:ACGTTCCGTACGTACTCT

我對這一切真的很陌生,我想要一些關於如何解決這個問題以及如何學習 Python 的建議(依靠教程,做隨機項目等)。

我目前正在將別人的程序用於我的 DNA 序列項目,然后我將逐行查看正在完成的工作。

我在復制代碼時遇到的第一個錯誤是:

    >>> import random
    >>> import sys
    >>> def simulate_sequence (length) :
        dna = ['A','G','C','T']
        sequence = ''
        for i in range (length) :
            sequence += random.choice (dna)
        return sequence

    >>> setsize = int (sys.argv[1])
    Traceback (most recent call last):
      File "<pyshell#10>", line 1, in <module>
        setsize = int (sys.argv[1])
    IndexError: list index out of range
    >>> 

謝謝你。

我為此使用 biopython:

def random_seq(N=180):
    return Seq("".join(random.choice("ATCG") for _ in range(N)))

sys.argv是傳遞給程序的參數列表。

例如這個程序(稱為amt.py ):

import sys
print (sys.argv)

會像這樣:

$ ./amt.py
['./amt.py']
$ ./amt.py 1
['./amt.py', '1']
$ ./amt.py 1 abc
['./amt.py', '1', 'abc']
$ ./amt.py 1 abc 33
['./amt.py', '1', 'abc', '33']

您的代碼的問題在於它期望sys.argv在索引 1 處有一個項目,但您沒有給它任何命令行參數。 因此,它嘗試轉到列表中不存在的位置。

首先,我會推薦這本書

錯誤來自這樣一個事實,即該程序是從命令行運行的,而不是為解釋器運行的。 sys.argv[1]獲取第一個命令行參數(好吧,技術上是第二個,因為第一個是程序的名稱)。 在解釋器中,您不能指定參數。 只需將其粘貼到文本編輯器中,然后從命令行運行它,例如:DNA.py 100

dna = ['A','G','C','T']
def generateDNA(N):
   result= [random.choice(dna) for i in np.arange(N)]
   return("".join(result))

print(generateDNA(100))

輸出:

TTCGCGGACGGTTCATCAGCCCTAGCCGGTTAAGAACTATCGAGCCACCCTAAGAACGGTCCATATTTGGAGTGTTACAACTTTGGATCTTCTACGTTGC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM