allpy
annotate lib/fasta.py @ 158:2ed0c183867a
fix. delete sequence.pdb_files on pdb_unload. however memory leak remains
| author | boris <bnagaev@gmail.com> |
|---|---|
| date | Thu, 28 Oct 2010 08:14:23 +0400 |
| parents | |
| children | 0ffdb88c13bd |
| 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@151 | 16 max_length = 70 |
| bnagaev@151 | 17 start = False |
| bnagaev@151 | 18 for line in in_file: |
| bnagaev@151 | 19 if line[0:] != '>': |
| bnagaev@151 | 20 if start: |
| bnagaev@151 | 21 max_length = max(max_length, line.strip()) |
| bnagaev@151 | 22 else: |
| bnagaev@151 | 23 start = True |
| bnagaev@151 | 24 return max_length |
