【问题标题】:Extract terms from a FASTA header从 FASTA 标题中提取术语
【发布时间】:2013-06-18 06:32:39
【问题描述】:

我需要为以下术语解析 FASTA 标头:叶子、芽、茎和嫩芽,如果一个序列包含任何一个术语,那么我打开一个文件并使用 Biopython 将其放置在那里。

所以我使用SeqIO.to_dict 将它们转换为字典:

from Bio import SeqIO
records_dict = SeqIO.to_dict(SeqIO.parse("my_example.fasta","fasta"))

但现在我不知道如何从标题中获取条款。序列如下所示:

>gi|393741877|gb|FS945568.1|FS945568 FS945568 tea plant lateral roots cDNA library Camellia sinensis cDNA clone LR29G09, mRNA sequence
CCGGGGATCCATTCCAAAATTCATCATAAACCTCTCAATATTGTTCACTTGAAAAAAGATGA...

>gi|393741878|gb|FS945569.1|FS945569 FS945569 tea plant lateral roots cDNA library Camellia sinensis cDNA clone LR29G11, mRNA sequence
CCGGGGGCTATCGAGCACTCACCGACTCACTCGAGAGCTAATACAGTCCACAGC...

>gi|393751846|gb|FS959695.1|FS959695 FS959695 tea plant young leaves cDNA library Camellia sinensis cDNA clone YL16A05, mRNA sequence
CCAACAACTTCTTCCTAACACTACCACCTTCTGTCAACTTACTTCTCCAAAGGCTTCTTTCTTCCACCAT
GGCTGCTTCTACCATGGCTCTCTCTTCCCCATCTTTCGCCGGAAAGGCGGTGAAACTTGCCCCGGAG...

>gi|393751847|gb|FS959696.1|FS959696 FS959696 tea plant young leaves cDNA library Camellia sinensis cDNA clone YL16A06, mRNA sequence
GAAACTGCATATAGAAAATCTCACTACCACTCTCTTCCTCTTCCTCTCTATCTTTCCTACCAAAGAAAG...

>gi|393750830|gb|FS956287.1|FS956287 FS956287 tea plant terminal buds cDNA library Camellia sinensis cDNA clone TB26G04, mRNA sequence
AGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGA
TAGT...

>gi|393750831|gb|FS956288.1|FS956288 FS956288 tea plant terminal buds cDNA library Camellia sinensis cDNA clone TB26G05, mRNA sequence
TCCCACAAACATGTTGCTCTCATCTTTCCAGTAAAAGATAGAGAGAGAGAGAGAGAGAACAAAGCAG...

【问题讨论】:

    标签: python biopython fasta


    【解决方案1】:

    不要转换为字典 - 您需要每个定义的描述(使用 to_dict() 只会使 id 成为键)。

    描述只是一个字符串,您可以在其中搜索术语。 按类别分解记录(每条记录可能属于多个类别),然后使用SeqIO.write() 保存到文件:

    import os
    from Bio import SeqIO
    
    records = SeqIO.parse("my_example.fasta", "fasta")
    
    terms = ["leaves", "buds", "stems", "tender shoots"]
    categorized_records = {term: [] for term in terms}
    
    for record in records:
        for term in terms:
            if term in record.description:
                categorized_records[term].append(record)
    
    for term, records in categorized_records.items():
        fasta_out = "%s.fasta" % term
        SeqIO.write(records, fasta_out, 'fasta')  # Will overwrite file
    

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多