allpy
annotate lib/fasta.py @ 190:08494fb2c47a
repeats: visitors for visiting tree items (almost) completed
(tree from 10 Nov 2010 of
https://docs1.google.com/document/d/1-7kCo7cdYTpHOtPXGMdSG9wxoXh6sIvrNyYyZuCKECs/edit?hl=en#)
author | boris (netbook) <bnagaev@gmail.com> |
---|---|
date | Thu, 18 Nov 2010 00:01:07 +0300 |
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 |