在fasta文件中拆分序列

时间:2013-07-19 23:55:39

标签: python split fasta

我使用fasta文件格式,我想在没有 ids 的情况下从中提取序列,并拆分序列,我写这段代码

    outfile=open('output.txt','r')
    for line in open('sequences.fasta')
        if line[0]==">":
           continue
           outfile.write(line)

此步骤创建一个包含序列的文本文件,它给出:

    AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG
    CCGCCTCGGGAGCGTCCATGGCGGGTTTGAACCTCTAGCCCGGCGCAGTTTGGGCGCCAAGCCATATGAA
    AGCATCACCGGCGAATGGCATTGTCTTCCCCAAAACCCGGAGCGGCGGCGTGCTGTCGCGTGCCCAATGA

    CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGTTGAGACAACAGAATATATGATCGAGTG
    AATCTGGAGGACCTGTGGTAACTCAGCTCGTCGTGGCACTGCTTTTGTCGTGACCCTGCTTTGTTGTTGG
    GCCTCCTCAAGAGCTTTCATGGCAGGTTTGAACTTTAGTACGGTGCAGTTTGCGCCAAGTCATATAAAGC

    CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGTTGAGACAGCAGAACATACGATCGAGTG
     AATCCGGAGGACCCGTGGTTACACGGCTCACCGTGGCTTTGCTCTCGTGGTGAACCCGGTTTGCGACCGG
     GCCGCCTCGGGAACTTTCATGGCGGGTTTGAACGTCTAGCGCGGCGCAGTTTGCGCCAAGTCATATGGAG
     ....

然后,我想拆分每个序列,以获得包含三个基序的子序列,如“CGT”,我把这段代码:

    for line in open('f:/output.txt', 'r'):
    seq=line.strip()
        [seq[i:i+3] for i in range(0, len(seq), 3)]

这样:

    ['CGT', 'AAC', 'AAG', 'GTT', 'TCC', 'GTA', 'GGT', 'GAA', 'CCT', 'GCG', 'GAA',        'GGA', 'TCA', 'TTG', 'ATG', 'AGA', 'CCG', 'TGG', 'AAT', 'AAA', 'CGA', 'TCG',     'AGT', 'G']

    ['AAT', 'CCG', 'GAG', 'GAC', 'CGG', 'TGT', 'ACT', 'CAG', 'CTC', 'ACC', 'GGG','GGC', 'ATT', 'GCT', 'CCC', 'GTG', 'GTG', 'ACC', 'CTG', 'ATT', 'TGT', 'TGT', 'TGG', 'G']
    ['CCG', 'CCT', 'CGG', 'GAG', 'CGT', 'CCA', 'TGG', 'CGG', 'GTT', 'TGA', 'ACC', 'TCT', 'AGC', 'CCG', 'GCG', 'CAG', 'TTT', 'GGG', 'CGC', 'CAA', 'GCC', 'ATA', 'TGA', 'A']

对我来说,我想分组分组,每组包含三个序列,长度为9(九个碱基),然后我将每个序列分成三个碱基的子序列,所以我必须知道它的长度每个序列。

例如

    CGTAACAAG 
    AATCCGGAG 
    CCGCCTCGG

然后,我对这个子序列应用了一些操作,并且我在序列的所有长度上执行相同的步骤。

可以帮助我做一些,并纠正我的代码

1 个答案:

答案 0 :(得分:0)

BioPython对此有好处,如果您有更多生物信息学问题,我建议您查看BioStars.

你的意思是做这样的事情吗?

outfile=open('outf','w')
for line in open('input'):
    if line[0]==">":
       outfile.write('\n')
    else:
        outfile.write(line.strip())

outfile.close()

all_codons=[]
for line in open('outf', 'r'):
    seq=line.strip()
    codons = [seq[i:i+3] for i in xrange(0, len(seq), 3) if len(seq[i:i+3])==3]
    all_codons.append(codons)

all_tripeptides = []
for seq_line in all_codons:
    tripeptides = [''.join(seq_line[i:i+3]) for i in xrange(len(seq_line)) if len(seq_line[i:i+3])==3]
    all_tripeptides.append(tripeptides)