入力データセットに基づいてランダム化されたデータセットを構築しようとしています。入力データセットは856471行で構成され、各行にはタブで区切られた値のペアがあります。ランダム化されたデータセットからのエントリは、入力データセットのエントリと同じにすることはできません。これは、次のことを意味します。
1行目のペアが「Protein1Protein2」の場合、ランダム化されたデータセットに次のペアを含めることはできません。
- 「Protein1Protein2」
- 「Protein2Protein1」
これを達成するために、私は以下を試しました:
data = infile.readlines()
ltotal = len(data)
for line in data:
words = string.split(line)
init = 0
while init != ltotal:
p1 = random.choice(words)
p2 = random.choice(words)
words.remove(p1)
words.remove(p2)
if "%s\t%s\n" % (p1, p2) not in data and "%s\t%s\n" % (p2, p1) not in data:
outfile.write("%s\t%s\n" % (p1, p2))
ただし、次のエラーが発生します。
Traceback (most recent call last): File
"C:\Users\eduarte\Desktop\negcreator.py", line 46, in <module>
convert(indir, outdir) File "C:\Users\eduarte\Desktop\negcreator.py", line 27, in convert
p1 = random.choice(words) File "C:\Python27\lib\random.py", line 274, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
IndexError: list index out of range
私はこれがうまくいくとかなり確信していました。私は何が間違っているのですか?前もって感謝します。