0
我有通過類似於這種結構的製表符分隔genecodes txt文件:從嵌套在列表中的每個列表中,它們之間的不同選擇一個隨機項,並生成列表的n倍(重採樣)
ENSG00000111111 ENSG00000111111 ENSG00000111111 ENSG00000111555
ENSG00000111111 ENSG00000111111 ENSG00000111111 ENSG00000111222
ENSG00000111111 ENSG00000111111 ENSG00000111111 ENSG00000333555
我想創建一個列表從每行中隨機選擇一個項目和選定的項目必須是不同之間他們。在端欲重複該過程n次,以便獲得具有這種結構的輸出文件:
ENSG00000111111 ENSG00000111222 ENSG00000333555
ENSG00000111555 ENSG00000111222 ENSG00000333555
ENSG00000111555 ENSG00000111222 ENSG00000111111
...
(每行對應於隨機項中的每個生成的列表) 。目前,我有這樣的腳本: 其中:all_cand是與我的腳本TXT輸入文件
#!/usr/bin/python
import sys
import os
import random
from itertools
import numpy as np
def rand_cand (all_cand):
cand_list= []
main_list = []
cand_file= open(all_cand, "r")
for _ in itertools.repeat(None, 10):
for line in cand_file:
cand_rows = line.split()
cand_list.append(cand_rows)
for item in cand_list:
aux_old = np.random.choice(item, replace=False)
if not aux_old in main_list:
main_list.append(aux_old)
else:
aux_new = np.random.choice(item, replace=False)
main_list.append(aux_new)
print(main_list)
,每次生成的列表中包含的重複,我認爲這是由於如果循環。我嘗試在將要附加到列表中的那些已經存儲的每一個項目比較,但它沒有......所以我錯了一個輸出爲:
ENSG00000111111 ENSG00000111111 ENSG00000111111
ENSG00000111111 ENSG00000111111 ENSG00000111222
ENSG00000111111 ENSG00000111111 ENSG00000111111
ENSG00000111555 ENSG00000111111 ENSG00000111111
...
感謝事先!我希望清楚我的問題
謝謝您的回答。我已經使用過你的腳本,但它沒有給出任何結果...... – Gaferolo
@Gaferolo:那裏有一個小錯誤。現在已經修復了。一探究竟! – inspectorG4dget
我已經改變了這個小錯誤,但它仍然無法正常工作。你有沒有測試過它? – Gaferolo