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