gpt4 book ai didi

python - 使用 BioPython 根据限制序列过滤 FASTA 文件

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

我有一个 fasta 文件。从该文件中,我需要获取包含 'CCNNNGG' 的唯一序列(其中 'N' 代表随机核苷酸),并将它们放入新的 fasta 文件中。

示例(它应该输出第一个序列):

m121012_054644_42133_c100390582550000001523038311021245_s1_p0/7/3312_3597 CGCGGCATCGAATTAATACGACTCACTATAGGTTTTTTTATTG*********CCTACGG***********GTATTTTCAGTTAGATTCTTTCTTCTTAGAGGGTACAGAGAAAGGGAGAAAATAGCTACAGACATGGGAGTGAAAGGTAGGAAGAAGAGCGAAGCAGACATTATTCA

m121012_054644_42133_c100390582550000001523038311021245_s1_p0/7/3708_4657 CAACGGTTTTGCCACAAGATCAGGAACATAAGTCACCAGACTCAATTCATCCCCATAAGACCTCGGACCTCTCAATCCTCGAATTAGGATGTTCTCGTACGGTCTATCAGTATATAAACCTGACATACTATAAAAAAGTATACCAT TCTTATCATGTACAGTAGGGTACAGTAGG

(添加*用于突出显示)

我的代码:

 from Bio import SeqIO 


my_sequences = []
for record in SeqIO.parse(open("example.fa", "rU"), "fasta") :
if "CCTACGG" in record.seq : #Works fine with CCTACGG

my_sequences.append(record)



output_handle = open("my_seqs.fasta", "w")
SeqIO.write(my_sequences, output_handle, "fasta")
output_handle.close()

我的问题是我不知道如何编写随机核苷酸,而不是在 if 之后写 "CCTACGG" 我想把 'CCNNNGG' ,其中 N 代表随机核苷酸('C''T''G''A')。

最佳答案

您可以使用正则表达式来执行此操作,通过 Python 的 re module :

import re

pattern = 'CCNNNGG'
regex = re.compile(pattern.replace('N', '[ACGT]'))
for record in SeqIO.parse(...):
if re.search(regex, record.seq) is not None:
my_sequences.append(record)

这会将模式中的每个 'N' 替换为 '[ACGT]',它将匹配这四个字符中的任何一个,然后在每个字符中搜索该模式record.seq

另外,请注意,您的示例不是很好 - 第二个示例也匹配该模式(它包含 'CCCATGG') - 请参阅 results !

关于python - 使用 BioPython 根据限制序列过滤 FASTA 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23980744/

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