【问题标题】:Separate headers from sequences in fasta file without using Biopython在不使用 Biopython 的情况下从 fasta 文件中的序列中分离标题
【发布时间】:2017-07-05 04:25:56
【问题描述】:

我一直在尝试通过在不使用 Biopython 的情况下使用 Python 3.5 构建字典,将多个 DNA 序列与它们的标头分开在一个 fasta 文件中。我无法让它正常工作。任何建议,将不胜感激。非常感谢你。 标题跟随符号'>'

以下是单个 fasta 文件的示例:

>XM_021728176.1 PREDICTED: Ictidomys tridecemlineatus forkhead box N1 (Foxn1), transcript variant X1, mRNA
ATGGTGTCGCTACTCCCGCCACAGTCTGACGTCACGCTGCCTGGCCCCACCAGACTGGAGGGCGAGCCCC
AAGGGGACCTCATGCAGGCTCCGGGCCTCCCAGGCTCCCCTGCTCCACAGAGTAAGCACGCCGGCTTCAA
CTGCTCGTCATTTGTGCCCGACGGTCCTCCAGAGAGGGCACCCTCACTGCCCCCACACAGCCCGAGCATT
GCGTCACCAGGCCCCGAGCAAGTCCAGGGCCACTGCCCAGCCGGCCCTGGCCCAGGGCCTTTCCGGCTTT
CACCCTCAGATAAGTATCCTGGCTTTGGCTTTGAGGAGGGCCCAGCAAGCAGCCCTGGGCGCTACCTCAA
GGGCAACCACGTGCCCTTCCACCCATACAAGCGGCATTTCCATGAGGATATCTTCCCTGAAGCCCAGACC
GCCCTGGCCCTGGATGGACACTCCTTTAAGACCCCAGGGGCACTGGAGGCCTTTGAGGAGATCCCTGTGG
ACGTGGGGGAGGCCGAGGCCTTCCTGCCTGGTTTCCCTGCAGAGGCCTGGTGCAATGGGCTCCCTTACCC
CAGCCAGGAGCATGGCCAAGTCCTGCAGGCGTCAGAGGTCAAGATCAAGCCTCCAGCTCTGGAGAATGGT
CCTGGGATGTACTGCTACCAACCCCCCTTGCAGCACATGTACTGCCCTTCCCAGCCCCCTTTCCACCAGT
ATTCACAGGGTGGTGGCAGCTACCCTGTACCCTACCTGGGCTCCTCTCACTATCCATACCAGCGGATCGC
ACCCCAGGCCAGCGCTGATGGGCACCAGCCGCTCTTCCCCAAACCCATCTACTCCTACAGCATCCTCATC
TTCATGGCCCTCAAGAACAGCAAAACTGGAAGCCTGCCTGTCAGCGAGATCTACAATTTTATGACGGAGC

>XM_006532268.2 PREDICTED: Mus musculus forkhead box N1 (Foxn1), transcript variant X15, mRNA
CTCTCCAGGGAGACTCAGGATCAGGATGCTGCTGTGGAAGTGCAGAGAGCTCTGCTGACACAGCCTGGAA
TGGACAGCCTCGCCTGGCGCTGAGCCCCAAGGCCTCCCAGCTGCTCTGTGGTGCTGGGTCAGGGTTCTAC
AACAACAGTTCAGAAGGGGACTGGGTGATGGTGTCGCTACTCCCTCCGCAGTCTGACGTCACACTTCCAG
GCTCCACCCGACTGGAGGGCGAACCCCAAGGGGACCTCATGCAGGCTCCGGGCCTCCCAGACTCCCCTGC
CCCACAGAACCAGGGGTCAGAGGTCAAGGTCAAGCCCCAAGCTCTGGACAGTGGTCCTGGGATGTACTGC
TACCAGCCTCCCTTGCAACATATGTACTGTTCTTCTCAGCCTGCCTTCCATCAGTACTCCCCGGGTGGAG
GCAGCTACCCTGTGCCCTACCTGGGCTCACCTCACTATCCCTATCAGAGGATTGCACCCCAGGCCAACGC
CGAAGGTCACCAGCCACTCTTCCCAAAGCCCATCTACTCTTACAGCATCCTCATCTTCATGGCCCTTAAG
AACAGTAAGACCGGAAGCCTTCCAGTCAGTGAAATCTACAATTTCATGACGGAGCACTTCCCTTACTTCA
AGACTGCTCCTGATGGCTGGAAGAATTCTGTTCGCCATAACCTGTCCCTCAACAAGTGCTTTGAGAAGGT
GGAGAATAAATCCGGAAGTTCCTCTCGAAAGGGCTGTCTGTGGGCCCTCAATCCTTCCAAAATCGACAAG
ATGCAGGAAGAACTGCAGAAGTGGAAGAGGAAAGACCCCATTGCTGTGCGCAAAAGCATGGCCAAACCAG
AAGAGCTGGACAGCCTCATTGGAGACAAAAGGGAAAAACTGGGCTCTCCGCTGCTGGGCTGTCCACCCCC
TGGGCTGGCAGGCCCAGGTCCCATCCGGCCCATGGCACCATCAGCTGGTCTTTCCCAGCCTCTGCACCCA

【问题讨论】:

    标签: python file parsing fasta


    【解决方案1】:

    以下内容如何:

    import sys
    
    sequences = {}
    
    with open(sys.argv[1]) as fasta:
        header = None
        data = ''
    
        for line in fasta:
            if line.startswith('>'):
                if header and data:
                    sequences[header] = data
                data = ''
                header = line.rstrip()
            else:
                data += line.rstrip()
    
        if header and data:
            sequences[header] = data  # deal with the last one in the file
    
    for header, data in sequences.items():
        print('{}; {}bp'.format(header, len(data)))
    

    您将如何分析字典中的每条记录。让你说 想计算序列中的字母数吗?

    代码创建了一个字典,其中标题作为键,连接的数据作为值。我添加了一个循环来拉出标题和数据并打印出带有数据长度的标题。

    【讨论】:

    • 非常感谢。它运作良好。您将如何分析字典中的每条记录。假设您想计算序列中的字母数?
    • @Sergey_yaklichk,我在代码末尾添加了一个循环,该循环打印出附加了序列长度的标题。通常我会使用 Biopython,而不是简单的 len(),但你要求我不要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多