annotate lib/block.py @ 0:757f2a1f8732
Initial commit with the lib modules
author |
Boris Burkov <BurkovBA@gmail.com> |
date |
Fri, 21 May 2010 20:30:40 +0400 |
parents |
|
children |
bbf3a797cc67 |
rev |
line source |
BurkovBA@0
|
1 #!usr/bin/python |
BurkovBA@0
|
2 |
BurkovBA@0
|
3 import sys |
BurkovBA@0
|
4 |
BurkovBA@0
|
5 import configure |
BurkovBA@0
|
6 import project |
BurkovBA@0
|
7 import sequence |
BurkovBA@0
|
8 import monomer |
BurkovBA@0
|
9 import rooted_tree |
BurkovBA@0
|
10 from Lgamma import Lgamma |
BurkovBA@0
|
11 |
BurkovBA@0
|
12 class Block(object): |
BurkovBA@0
|
13 """ |
BurkovBA@0
|
14 Mandatory data: |
BurkovBA@0
|
15 * self.project -- project object, which the block belongs to |
BurkovBA@0
|
16 * self.sequences - list of sequence objects, that contain monomers |
BurkovBA@0
|
17 and/or gaps, that constitute the block |
BurkovBA@0
|
18 * self.positions -- positions of the project.alignment that are |
BurkovBA@0
|
19 included in the block |
BurkovBA@0
|
20 |
BurkovBA@0
|
21 How to create a new block: |
BurkovBA@0
|
22 >>> import project |
BurkovBA@0
|
23 >>> import block |
BurkovBA@0
|
24 >>> proj = project.Project(open("test.fasta")) |
BurkovBA@0
|
25 >>> block1 = block.Block(proj, proj.sequences, range(len(proj.alignment[proj.sequences[0]]))) |
BurkovBA@0
|
26 |
BurkovBA@0
|
27 """ |
BurkovBA@0
|
28 |
BurkovBA@0
|
29 def __init__(self,project,sequences,positions): |
BurkovBA@0
|
30 self.project=project |
BurkovBA@0
|
31 self.sequences=sequences |
BurkovBA@0
|
32 self.positions=positions |
BurkovBA@0
|
33 |
BurkovBA@0
|
34 def to_fasta(self,file): |
BurkovBA@0
|
35 """writes the block as an alignment in fasta-format into the file. |
BurkovBA@0
|
36 |
BurkovBA@0
|
37 No changes in the names, descriptions or order of the sequences |
BurkovBA@0
|
38 are made. |
BurkovBA@0
|
39 |
BurkovBA@0
|
40 """ |
BurkovBA@0
|
41 for sequence in self.sequences: |
BurkovBA@0
|
42 file.write(">%s %s\n"%(sequence.name,sequence.description)) |
BurkovBA@0
|
43 string_index=0 |
BurkovBA@0
|
44 for position in self.positions: |
BurkovBA@0
|
45 if string_index>=60: |
BurkovBA@0
|
46 file.write("\n") |
BurkovBA@0
|
47 string_index=0 |
BurkovBA@0
|
48 if self.project.alignment[sequence][position]==None: |
BurkovBA@0
|
49 file.write("-") |
BurkovBA@0
|
50 string_index+=1 |
BurkovBA@0
|
51 else: |
BurkovBA@0
|
52 file.write(self.project.alignment[sequence][position].code) |
BurkovBA@0
|
53 string_index+=1 |
BurkovBA@0
|
54 file.write("\n") |
BurkovBA@0
|
55
|