当前位置: 首页 > 面试题库 >

如何使用Python随机提取FASTA序列?

欧桐
2023-03-14
问题内容

我有以下序列,这些序列是带有序列标头及其核苷酸的fasta格式。如何随机提取序列。例如,我想从总序列中随机选择2个序列。提供的工具可以根据百分比而不是序列数进行提取。谁能帮我?

快餐

>chr1:1310706-1310726
GACGGTTTCCGGTTAGTGGAA
>chr1:901959-901979
GAGGGCTTTCTGGAGAAGGAG
>chr1:983001-983021
GTCCGCTTGCGGGACCTGGGG
>chr1:984333-984353
CTGGAATTCCGGGCGCTGGAG
>chr1:1154147-1154167
GAGATCGTCCGGGACCTGGGT

预期产量

>chr1:1154147-1154167
GAGATCGTCCGGGACCTGGGT
>chr1:901959-901979
GAGGGCTTTCTGGAGAAGGAG

问题答案:

如果您正在使用FASTA文件时使用BioPython,获得n序列使用random.sample:

from Bio import SeqIO
from random import sample
with open("foo.fasta") as f:
    seqs = SeqIO.parse(f,"fasta")
    print(sample(list(seqs), 2))

输出:

[SeqRecord(seq=Seq('GAGATCGTCCGGGACCTGGGT', SingleLetterAlphabet()), id='chr1:1154147-1154167', name='chr1:1154147-1154167', description='chr1:1154147-1154167', dbxrefs=[]), SeqRecord(seq=Seq('GTCCGCTTGCGGGACCTGGGG', SingleLetterAlphabet()), id='chr1:983001-983021', name='chr1:983001-983021', description='chr1:983001-983021', dbxrefs=[])]

您可以根据需要提取字符串:

 print([(seq.name,str(seq.seq)) for seq in  sample(list(seqs),2)])
 [('chr1:1310706-1310726', 'GACGGTTTCCGGTTAGTGGAA'), ('chr1:983001-983021', 'GTCCGCTTGCGGGACCTGGGG')]

如果行始终成对出现,并且您跳过了顶部的元数据,则可以压缩:

from random import sample

with open("foo.fasta") as f:
    print(sample(list(zip(f, f)), 2))

这会给你成对的元组线:

[('>chr1:983001-983021\n', 'GTCCGCTTGCGGGACCTGGGG\n'), ('>chr1:984333-984353\n', 'CTGGAATTCCGGGCGCTGGAG\n')]

要准备编写这些行:

from Bio import SeqIO
from random import sample
with open("foo.fasta") as f:
    seqs = SeqIO.parse(f, "fasta")
    samps = ((seq.name, seq.seq) for seq in  sample(list(seqs),2))
    for samp in samps:
        print(">{}\n{}".format(*samp))

输出:

>chr1:1310706-1310726
GACGGTTTCCGGTTAGTGGAA
>chr1:983001-983021
GTCCGCTTGCGGGACCTGGGG


 类似资料:
  • 问题内容: 我有一个模型,代表我在网站上展示的绘画。在主要网页上,我想展示其中的一些:最新的,大多数时间未访问的网页,最受欢迎的网页和随机的网页。 我正在使用Django 1.0.2。 尽管使用django模型可以轻松提取其中的前3个,但最后一个(随机)却给我带来了一些麻烦。在我看来,我可以将代码进行如下编码: 在我看来,这看起来并不像我想要的东西-这完全是数据库抽象的一部分,应该包含在模型中。另

  • 我试图读取一个FASTA文件,然后找到特定的motif(字符串)并打印出它出现的顺序和次数。FASTA文件只是以标题行开始的一系列序列(字符串),标题或新序列开始的签名是“” 属性错误:“str”对象没有属性“下一个” 我不确定这是怎么回事。

  • 问题内容: 说我有一个序列,我想从中选择随机的子序列,每个序列都有长度,并存储在矩阵中。有没有比这更麻木的方式了 问题答案: 我们可以利用基础来有效地提取补丁,就像这样-

  • 我还没有经验,这是我的第一语言,所以任何建议和提示都会受到欢迎。 我正在尝试创建一个抽奖计划,询问参与者人数,并根据最大人数抽取一名获胜者。我尝试了:

  • 本文向大家介绍如何使用Python提取MAC地址?,包括了如何使用Python提取MAC地址?的使用技巧和注意事项,需要的朋友参考一下 每台计算机都需要网络接口卡(NIC)才能成为网络或Internet的一部分。分配给该卡的地址称为MAC地址。MAC地址的值对于每个NIC都是唯一的。它也适用于其他可以连接到LAN或Internet的设备,例如打印机和路由器。 要找到MAC地址,我们使用以下方法之一

  • 问题内容: 如何使用Django获得两个不同的随机记录?我见过有关如何获得一个记录的问题,但我需要获得两个随机记录,而且它们必须有所不同。 问题答案: 如果你在ORM中指定了随机运算符,我很确定它将为你提供两个不同的随机结果,不是吗?