在不使用Biopython的情况下,将标题与fasta文件中的序列分开

时间:2017-07-05 04:25:57

标签: python file parsing fasta

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

以下是单个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

1 个答案:

答案 0 :(得分:2)

以下内容如何:

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

您将如何分析字典中的每条记录。让我们说你   想要计算序列中的一些字母?

代码生成一个字典,标题作为键,连接数据作为值。我添加了一个循环来提取标题和数据,并打印出数据长度的标题。