2013-07-19 77 views
0

我用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(9 baseses),然后我分裂每个序列子 - 三个碱基的序列,所以我必须知道每个序列的长度。

例如

CGTAACAAG 
    AATCCGGAG 
    CCGCCTCGG 

然后,我申请在此子序列中的一些操作,并且我做对序列的整个长度相同的步骤。

能有人帮我做到这一点,并纠正我的代码

回答

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

好的,谢谢。从拆分的序列中知道我想要取三个序列的长度为9,我将第一个序列拆分为3个碱基的3个子序列,因此,从一个序列中我得到3个子序列我使用了这个函数:def identical_segment(input_string): \t code = {“a”:0,“c”:1,“g”:2, “T”:3} \t p = [代码[I对于i在input_string]] \t N = LEN(input_string) \t C = 0 \t对于i,n的枚举(范围(N,0,-1 )): \t \t c + = p [i] *(4 **(n-1)) \t \t return c + 1 – m28

+0

我想将这个函数应用于这三个序列的每个子序列,然后将相同的东西应用于所有fasta文件 – m28

+0

因此,目的是获取矩阵,例如我采用第一个子序列'cct'并应用函数identical_segment(),它返回24,其余8个子序列的结果相同。所以我得到一个矩阵(3,3): – m28