gpt4 book ai didi

python - 根据 python 中是否存在 2 个短序列来过滤行

转载 作者:太空宇宙 更新时间:2023-11-03 21:25:14 24 4
gpt4 key购买 nike

我有一个像这样的示例的文本文件:

示例:

>chr9:128683-128744
GGATTTCTTCTTAGTTTGGATCCATTGCTGGTGAGCTAGTGGGATTTTTTGGGGGGTGTTA
>chr16:134222-134283
AGCTGGAAGCAGCGTGAATAAAACAGAATGGCCGGGACCTTAAAGGCTTTGCTTGGCCTGG
>chr16:134226-134287
GGAAGCAGCGTGGGAATCACAGAATGGACGGCCGATTAAAGGCTTTGCTTGGCCTGGATTT
>chr1:134723-134784
AAGTGATTCACCCTGCCTTTCCGACCTTCCCCAGAACAGAACACGTTGATCGTGGGCGATA
>chr16:135770-135831
GCCTGAGCAAAGGGCCTGCCCAGACAAGATTTTTTAATTGTTTAAAAACCGAATAAATGTT

该文件分为不同的部分,每个部分有 2 行。第一行以 > 开头(这一行称为 ID),第二行是字母序列。我想在字母序列中搜索 2 个短主题(AATAAAGGAC),如果它们包含这些主题,我想获取该主题的 ID 和序列部分。但重点是 AATAAA 应该是第一个序列,GGAC 将在其之后。它们之间有一个距离,但这个距离可以是 2 个字母或更多。

预期输出:

>chr16:134222-134283
AGCTGGAAGCAGCGTGAATAAAACAGAATGGCCGGGACCTTAAAGGCTTTGCTTGGCCTGG

我正在尝试使用以下命令在 python 中执行此操作:

infile = open('infile.txt', 'r')
mot1 = 'AATAAA'
mot2 = 'GGAC'
new = []
for line in range(len(infile)):
if not infile[line].startswith('>'):
for match in pattern.finder(mot1) and pattern.finder(mot2):
new.append(infile[line-1])


with open('outfile.txt', "w") as f:
for item in new:
f.write("%s\n" % item)

这段代码没有返回我想要的。你知道如何解决吗?

最佳答案

您可以将 ID 与序列分组,然后使用 re.findall:

import re
data = [i.strip('\n') for i in open('filename.txt')]
new_data = [[data[i], data[i+1]] for i in range(0, len(data), 2)]
final_result = [[a, b] for a, b in new_data if re.findall('AATAAA\w{2,}GGAC', b)]

输出:

[['>chr16:134222-134283', 'AGCTGGAAGCAGCGTGAATAAAACAGAATGGCCGGGACCTTAAAGGCTTTGCTTGGCCTGG']]

关于python - 根据 python 中是否存在 2 个短序列来过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887543/

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