有时候我们需要对序列进行排列组合得到新的突变,这里有点像不放回的、有顺序的抽样,我们有两种思路,第一种模拟随机抽样,第二种顺序抽样。
一、模拟随机抽样
seq1 = ["YLasfsgLL", "KksaTK", "afrhfL", "ildfsA", "shgY", "IjkkufAY", "RLolfjffjV", "fsgfgYV", "Vkuuky", "fassfagd"]
from tqdm import tqdm
from random import choice
import random
import math
f = open("E:\资料\课题\数据\sequence4.txt","w")
seq = []
b = ""
m = math.factorial(len(seq1))#阶乘运算
seq2 = seq1
while len(seq) <= m:
for a in range(len(seq1)):
c = random.choice(seq2)
b += c
del seq2[seq2.index(c)]
if b not in seq:
f.write(">" + str(len(seq) + 1) + "\n" + b + "\n")
seq.append(b)
b = ""
del seq2
seq2 = seq1
print(len(seq))
f.close()
二、顺序抽样
from tqdm import tqdm
s = ["YLasfsgLL", "KksaTK", "afrhfL", "ildfsA", "shgY", "IjkkufAY", "RLolfjffjV", "fsgfgYV", "Vkuuky", "fassfagd"]
ff = open("E:\资料\课题\数据\sequence.txt","w")
ii = 0
for a in tqdm(s):
for b in s:
if b not in a:
for c in s:
if c not in (a + b):
for d in s:
if d not in (a + b + c):
for e in s:
if e not in (a + b + c + d):
for f in s:
if f not in (a + b + c + d + e):
for g in s:
if g not in (a + b + c + d + e + f):
for h in s:
if h not in (a + b + c + d + e + f + g):
for i in s:
if i not in (a + b + c + d + e + f + g + h):
for j in s:
if j not in (a + b + c + d + e + f + g + h + i):
ii += 1
ff.write(">" + str(ii) + "\n" + a + b + c + d + e + f + g + h + i + j + "\n")
ff.close()
三、两种方法比较优缺点:
模拟随机抽样优点:代码短、简单,可增删元素便可直接运行,可替代性强
模拟随机抽样缺点:随机产生,序列越长,后续随机抽取的重复样本越多,越到后面出现新序列的时间呈现指数增加,可能永远也不能得到所有的排列组合,程序会一直运行;但如果只需要100万条序列以下还是比较容易实现,但也得花费十来个小时。
顺序抽样优点:能一直保持很快的速度产生新序列,直到完成所有的排列组合,几百万条序列可能需要20min完成。
顺序抽样缺点:代码长,如果有增删列表长度,则需要修改代码,对于不熟悉代码的新手不太友好
对于多片段(大于10个),个人更推荐模拟随机抽样,这样更能体现序列 的随机性,在一定程度上这种随机性更能表示突变或者说重组的任意性,符合生物进化的规律。较少的片段组合,则可以考虑顺序抽样,弥补样本库的不足。
四、ChatGPT
ChatGPT是一个基于自然语言处理技术的智能聊天机器人。它使用了目前最先进的神经网络技术,比如像GPT-3这样的预训练语言模型来解决各种问题和任务,具有极高的语言理解能力和灵活性。ChatGPT可以帮助用户进行自然对话,回答用户提出的各种问题,并学习日常用语、语法和知识库中的信息,并不断完善和更新以提供更准确、更人性化和优质的服务。ChatGPT在日常应用场景中有很多实用价值,比如可以用来解答各种问题、进行个性化推荐、提供娱乐互动等。
上面这段百度百科也是找ChatGPT给出的答案,非常有意思,网站:Chatgpt在线网页版-永久免费使用!(qdymys.cn) https://chatgpt.qdymys.cn/
大家可以试试玩玩!
五、文本处理工具
工作中有很多文件,其大小可能到几百兆甚至以G计算,电脑自带的txt处理文本,打开非常缓慢,有一个能快速打开并处文本的工具,特别是在windows下,将非常有意思。如Notepad++和EmEditor,其中EmEditor速度尤其的快,是我用过的最快的文本打开软件,上G的文本秒开不卡顿。