DNA序列随机抽样

时间:2013-11-18 18:48:48

标签: python bioinformatics

我想用100个DNA序列创建1000个随机组。我有包含100个fasta序列的文本文件(sequence.txt),我希望随机选择包含10个fasta序列的子组进行进一步分析。这是我试过的代码,我遇到了一些错误。

import random
import re
f = open("sequence.txt", "r")
lf = f.split(">")
lf.pop(0)
f.close()
for i in range(10):
    sublist = "subset_%s.fas" % i
    random_group = random.randrange(len("sequence.txt"), 10)
    output = open(sublist, "w")
    for m in random_group:
        sequence = ">" + lf[m]
        output.write(sequence)
    output.close()

2 个答案:

答案 0 :(得分:4)

结帐random.sample。它允许您对序列中的k(在您的情况下为k=10)元素进行采样(在您的情况下为lf):

>>> import random
>>> sequences = range(100)
>>> for i in range(1000):
...     # Sample a random group
...     random_group = random.sample( lf, 10 )

        # Output group
        ...

答案 1 :(得分:0)

您未正确使用random.randrangerandom.randrange(start, stop[, step])。如果您提供两个值,则它们会变为startstop。您的len("sequence.txt")已大于10(12)。

为什么len("sequence.txt")不是len(lf)len("sequence.txt")只是给出了string的长度。

[random.randrange(0, len(lf)) for i in range(10)]应该是您想要的,或使用random.sample