1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 import textwrap
29
30 from Bio import Alphabet
31 from Bio import Writer
32
36
38 seq = record.seq
39 assert seq.alphabet.size == 1, "cannot handle alphabet of size %d" % \
40 seq.alphabet.size
41 data = seq.data
42 upperdata = data.upper()
43
44
45
46
47 if isinstance(seq.alphabet, Alphabet.RNAAlphabet):
48 molecule = 'mRNA'
49 letters = ['A', 'C', 'G', 'U']
50 else:
51 molecule = 'DNA'
52 letters = ['A', 'C', 'G', 'T']
53
54 division = 'UNC'
55
56 self.outfile.write("ID %s standard; %s; %s; %d BP.\n"
57 % (record.id, molecule, division, len(data)))
58
59 desclist = textwrap.wrap(record.description, 74)
60 for l in desclist:
61 self.outfile.write("DE %s\n" % l)
62
63 counts = [ upperdata.count(l) for l in letters ]
64 othercount = len(upperdata) - sum(counts)
65
66 countstring = ''.join([ " %d %s;" % p for p in zip(counts, letters) ])
67
68 self.outfile.write("SQ Sequence %s BP;%s %d other;\n"
69 % (len(data), countstring, othercount))
70
71 rowlength = 60
72 blocklength = 10
73 for i in xrange(0, len(data), rowlength):
74 self.outfile.write(" " * 5)
75 row = data[i:i+rowlength]
76 for b in xrange(0, rowlength, blocklength):
77 block = row[b:b+blocklength]
78 self.outfile.write("%-*s" % (blocklength+1, block))
79 self.outfile.write("%9d\n" % min(i+rowlength, len(data)))
80
81 self.outfile.write("//\n")
82
83
84 make_writer = WriteEmbl
85