1

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

4 回答 4

1

我为此使用 biopython:

def random_seq(N=180):
    return Seq("".join(random.choice("ATCG") for _ in range(N)))
于 2020-12-15T05:00:21.523 回答
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 处有一个项目,但您没有给它任何命令行参数。因此它会尝试转到列表中不存在的位置。

于 2014-01-21T20:49:02.927 回答
0

首先,我会推荐这本书

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

于 2014-01-21T20:50:49.897 回答
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

于 2021-06-15T16:50:41.467 回答