我试图为“ACDEFGHIKLMNPQRSTVWY'”生成随机数据。使用以下脚本以3-mer形式(如AEF),但在输出中我得到了许多类似的3-mer。你能告诉我怎么做,不要得到类似的结果或删除相同的3-mer?
提前致谢, 伯克
import random
def random_AA_seq(length):
return ''.join(random.choice('ACDEFGHIKLMNPQRSTVWY') for i in range(length))
list_size = 10000
lengths = []
for j in range(list_size):
a = int(random.normalvariate(3, 0))
print random_AA_seq(a)
答案 0 :(得分:1)
要删除相同的项目,只需将其设为:
var request = require('request');
request({
url: "https://www.googleapis.com/gmail/v1/users/me/watch",
method: "POST",
headers: {
Authorization: 'Bearer {YOUR_API_KEY}'
},
data: {
topicName: "projects/pipedrivesekoul/topics/my-new-topic",
labelIds: ["INBOX"]
},
json: true
}, function(response) {
console.log(JSON.stringify(response, null, 4));
});
要获得所有可能的排列,您还可以使用itertools ...
print set(random_AA_seq(a))
......然后随机挑选你的3-mers。
答案 1 :(得分:1)
每条评论:
alphabet = "ACDEFGHIKLMNPQRSTVWY"
all_trimers = map("".join, itertools.product(* [alphabet] * 3))
a_few_distinct_trimers = random.sample(all_trimers, 42)
答案 2 :(得分:0)
只是
''.join(random.choice(string.ascii_uppercase) for _ in range(3))
应该没问题
答案 3 :(得分:0)
更新回答,以下脚本将返回所需长度为3的列表。每个3mer将出现在列表中一次:
import random
def random_3mers(length):
seqs = set()
while len(seqs) < length:
seqs.add("".join(random.sample("ACDEFGHIKLMNPQRSTVWY", 3)))
lseqs = list(seqs)
random.shuffle(lseqs)
return lseqs
for three_mer in random_3mers(10):
print three_mer
如果长度为10,将显示以下类型的输出:
MKY
KWV
PRY
WKQ
YGI
ANQ
GFL
RQE
SCN
GRY