allpy
annotate lib/fasta.py @ 161:0ffdb88c13bd
fix fasta.long_line
author | boris (netbook) <bnagaev@gmail.com> |
---|---|
date | Thu, 28 Oct 2010 19:33:15 +0400 |
parents | 675b402094be |
children |
rev | line source |
---|---|
bnagaev@151 | 1 def save_fasta(out_file, string, name, description='', long_line=70): |
bnagaev@151 | 2 """ Saves given string to out_file in fasta_format |
bnagaev@151 | 3 |
bnagaev@151 | 4 Splits long lines to substrings of length=long_line |
bnagaev@151 | 5 To prevent this, set long_line=None |
bnagaev@151 | 6 """ |
bnagaev@151 | 7 out_file.write(">%(name)s %(description)s \n" % {'name':name, 'description':description}) |
bnagaev@151 | 8 if long_line: |
bnagaev@151 | 9 for i in range(0, len(string) // long_line + 1): |
bnagaev@151 | 10 out_file.write("%s \n" % string[i*long_line : i*long_line + long_line]) |
bnagaev@151 | 11 else: |
bnagaev@151 | 12 out_file.write("%s \n" % string) |
bnagaev@151 | 13 |
bnagaev@151 | 14 def determine_long_line(in_file): |
bnagaev@151 | 15 """ Returns maximum sequence line length in fasta file """ |
bnagaev@161 | 16 sequences = in_file.read().split('>') |
bnagaev@161 | 17 for sequence in sequences[1:]: |
bnagaev@161 | 18 lines = sequence.split('\n')[1:] |
bnagaev@161 | 19 if len(lines) >= 2: |
bnagaev@161 | 20 return len(lines[0].strip()) |
bnagaev@161 | 21 return 70 |