构建DNA序列发生器

时间:2014-01-21 20:46:14

标签: python random generator bioinformatics dna-sequence

我刚开始在生物信息学研究实验室学习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
    >>> 

谢谢。

4 个答案:

答案 0 :(得分:0)

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处有一个项目,但您没有给它任何命令行参数。因此它会尝试转到列表中不存在的位置。

答案 1 :(得分:0)

首先,我建议this book

错误来自于这个程序是从命令行运行而不是为解释器运行的。 sys.argv[1]获取第一个命令行参数(从技术上讲,第二个是第二个,因为第一个是程序的名称)。在解释器中,您无法指定参数。只需将其粘贴到文本编辑器中,然后从命令行运行它,如:DNA.py 100

答案 2 :(得分:0)

我为此使用biopython:

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

答案 3 :(得分:0)

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