gpt4 book ai didi

python - 将 Fasta 序列与多播文件的子字符串进行比较并更改 ID 名称

转载 作者:行者123 更新时间:2023-12-01 06:49:49 28 4
gpt4 key购买 nike

我正在尝试比较两个 multifasta 文件。一种具有 microRNA 前体 (70nt),另一种具有成熟的 microRNA (22nt)。我想将成熟的 microRNA 与前体文件的前 20 nt 进行比较,如果包含该序列,我希望它将成熟的 microRNA 中的 ID 更改为 >ID_5p。到目前为止,我编写了一个脚本,它给出的输出只是我的成熟文件中多次复制的一些序列。你能帮我吗?

from Bio import SeqIO

for mature in SeqIO.parse("mature_microRNAs_final.txt", "fasta"):
mature.id
repr(mature.seq)
len(mature)

for precursors in SeqIO.parse("precursors_microRNAs_final.txt", "fasta"):
precursors.id, precursors.seq, len(precursors.seq)
precursors_5p = precursors.seq[0:20]

for seq in mature:
if mature.seq == precursors_5p:
print(mature.id+"_5p" , "\n" + mature.seq)

最佳答案

这里不需要嵌套循环(这会导致重复输出),而是存储相关的前体序列并与成熟序列进行比较:

from Bio import SeqIO

precursors = {
record.seq[:20] for record in SeqIO.parse("precursors_microRNAs_final.txt", "fasta")
}

for record in SeqIO.parse("mature_microRNAs_final.txt", "fasta"):
if record.seq[:20] in precursors:
record.id += "_5p"
record.description = record.id + " " + record.description.split(" ", 1)[1]
print(record.format("fasta"))

请注意,我假设您只希望成熟记录的前 20 个核苷酸与前体记录的前 20 个核苷酸中的任何一个相同。该解决方案可以适应其他标准。

关于python - 将 Fasta 序列与多播文件的子字符串进行比较并更改 ID 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59072201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com