使用BioPython根据restrictionsequence过滤FASTA文件

2024-05-28 20:53:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

(添加*s以突出显示)

我的密码是:

 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()

在{cd8}后面写的是{cd8},而不是^{cd7}的问题。在


Tags: 文件inoutputmy序列recordfastahandle
1条回答
网友
1楼 · 发布于 2024-05-28 20:53:47

您可以通过Python的^{} 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!在

相关问题 更多 >

    热门问题