随机删除序列的一部分以创建更短的序列

时间:2015-02-08 01:54:53

标签: python perl random cut sequences

我是编程新手,非常感谢你的帮助!

我有一个包含~20K序列的文件,格式如下:

>sequence_1
MAADTPGKPSASPMAGAPASASRTPDKPRSAAEHRKSSKPVMEKRRRARINESLAQLKTLILDALRKESSRHSKLEKADILEMTVRHLRSLRRVQVTAALSADPAVLGKYRAGFHECLAEVNRFLAGCEGVPADVRSRLLGHLAACLRQLGPSRRPASLSPAAPAEAPAPEVYAGRPLLPSLGGPFPLLAPPLLPGLTRALPAAPRAGPQGPGGPWRPWLR

>sequence_2
MGWDLTVKMLAGNEFQVSLSSSMSVSELKAQITQKIGVHAFQQRLAVHPSGVALQDRVPLASQGLGPGSTVLLVVDKCDEPLSILVRNNKGRSSTYEVRLTQTVAHLKQQVSGLEGVQDDLFWLTFEGKPLEDQLPLGEYGLKPLSTVFMNLRLRGGGTEPGGRS

我想创建长度约为50-100个字符的这些序列的随机片段。我需要保持原始订单不变(所以我不是随机化字符)。

我可以从> sequence_1制作的序列示例如下:

MAADTPGKPSASPMAGAPASASRTPDKPRSAAEHRKSSKPVMEKRRRARINESLAQLKTLILDALR

MTVRHLRSLRRVQVTAALSADPAVLGKYRAGFHECLAEVNRFLAGCEGVPADVRSRLLGHLAACLRQLGPSRRPASLSPAAPAEAPAPEVYAGRPLLPSLGGPFPLLAPPLLPGLTRALPAAPRAGPQGPGGPW

我能想到的最好的比喻是将这些序列随机切割成较小的长度。我真的不确定如何解决这个问题,或者是否可以使用脚本。我也很欣赏任何有关回复的解释,以便我可以学习。

2 个答案:

答案 0 :(得分:0)

为切片使用随机生成的开头:

from random import *

def fifty_slice(sequence):
    i = randrange(0, len(sequence) - 50)
    return sequence[i:i+50]

答案 1 :(得分:-1)

我认为你是在python中实现树数据结构之后。

每个20 K序列的每一行都是父节点,然后您可以创建为每个随机子序列创建子代的代码。如果需要,每个孩子也可以成为父母,虽然我不认为你描述的问题需要这个。

请参阅https://github.com/caesar0301/treelib