Changeset 310
- Timestamp:
- 05/05/08 10:08:06 (7 months ago)
- Files:
-
- trunk/vertex/bin/vertex.scgi (added)
- trunk/vertex/lib/vertex/data/__init__.py (modified) (3 diffs)
- trunk/vertex/lib/vertex/web/__init__.py (modified) (2 diffs)
- trunk/vertex/lib/vertex/web/draw/__init__.py (modified) (3 diffs)
- trunk/vertex/lib/vertex/web/user.py (modified) (6 diffs)
- trunk/vertex/scripts/make-png.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/vertex/lib/vertex/data/__init__.py
r309 r310 14 14 from vertex import coords 15 15 16 genome = maps = colors = None 17 refseq_exondb = xeno_refseq_exondb = None 16 genome = maps = None 17 refseq_map = conserv_map = None 18 18 19 _initialized = False 19 20 20 21 def load(): 21 global genome, maps, colors, _initialized 22 global refseq_exondb 23 global xeno_refseq_exondb 22 global genome, maps, _initialized, refseq_map, conserv_map 24 23 25 24 if not _initialized: … … 29 28 slicedb = shelve.BsdDbShelf(_db) 30 29 31 _db = bsddb.btopen('/mnt/ctb/data/refseq_exons.db', 'r')32 refseq_exondb = shelve.BsdDbShelf(_db)30 # _db = bsddb.btopen('/mnt/ctb/data/refseq_exons.db', 'r') 31 # refseq_exondb = shelve.BsdDbShelf(_db) 33 32 34 33 _db = bsddb.btopen('/mnt/ctb/data/xeno_refseq.db', 'r') 35 34 xeno_refseqdb = shelve.BsdDbShelf(_db) 36 35 37 _db = bsddb.btopen('/mnt/ctb/data/xeno_refseq_exons.db', 'r')38 xeno_refseq_exondb = shelve.BsdDbShelf(_db)36 # _db = bsddb.btopen('/mnt/ctb/data/xeno_refseq_exons.db', 'r') 37 # xeno_refseq_exondb = shelve.BsdDbShelf(_db) 39 38 40 39 _db = bsddb.btopen('/mnt/ctb/data/phastConsMost.db', 'r') … … 81 80 # maps.append(xeno_refseq_map) 82 81 83 colors = ('red', 'black', 'blue')84 82 _initialized = True trunk/vertex/lib/vertex/web/__init__.py
r309 r310 5 5 return Publisher(Top()) 6 6 7 from . import draw8 7 from . import user 9 8 … … 14 13 _q_exports = ['', 'draw'] 15 14 16 draw = draw.Draw(data.genome, data.maps, data.colors)17 18 15 def _q_index(self): 19 return " hello, world"16 return "Welcome to vertex!<p>Users: <ul><li> <a href='./titus/'>Titus Brown</a></ul>" 20 17 21 18 def _q_lookup(self, username): trunk/vertex/lib/vertex/web/draw/__init__.py
r309 r310 5 5 from vertex import coords 6 6 7 _cache = {} 8 7 9 ### 8 10 … … 10 12 _q_exports = [''] 11 13 12 def __init__(self, genome, maps, map_colors): 14 def __init__(self, cachekey, genome, maps, map_colors): 15 self.cachekey = cachekey 13 16 self.genome = genome 14 17 self.maps = maps 15 18 self.map_colors = map_colors 19 self.addl_maps = [] 16 20 17 21 def _q_index(self): … … 21 25 (chr, start, stop) = coords.translate(info) 22 26 23 interval = self.genome[chr][start:stop] 27 # image = _cache.get((self.cachekey, chr, start, stop)) 28 image = None 29 30 if not image: 31 interval = self.genome[chr][start:stop] 24 32 25 picture_class = pygr_draw.BitmapSequencePicture 26 p = pygr_draw.draw_annotation_maps(interval, self.maps, 27 default_colors=self.map_colors, 28 picture_class=picture_class) 29 image = p.finalize() 33 picture_class = pygr_draw.BitmapSequencePicture 34 p = pygr_draw.draw_annotation_maps(interval, self.maps, 35 default_colors=self.map_colors, 36 picture_class=picture_class) 37 image = p.finalize() 38 _cache[(self.cachekey, chr, start, stop)] = image 39 else: 40 print '(cache hit: %s)' % (str((chr, start, stop)),) 30 41 31 42 response = get_response() trunk/vertex/lib/vertex/web/user.py
r309 r310 1 import quixote 1 2 from quixote.directory import Directory 3 4 import motility 2 5 3 6 from vertex import data, coords … … 16 19 'ret-e' : 'chr6:5,894,800-5,895,100' } 17 20 21 motifs = { 'WGATAR' : 'purple', 22 'AGCGGA' : 'green', 23 'GGGTTGC' : 'red' } 24 18 25 ### 19 26 … … 29 36 30 37 def _q_index(self): 31 s = "Welcome %s" % (self.username,) 32 38 s = "Welcome, %s!" % (self.username,) 39 40 ### 41 42 keys = views.keys() 43 keys.sort() 44 33 45 x = [] 34 for k in views:46 for k in keys: 35 47 x.append("<a href='v/%s'>%s</a>" % (k, k,)) 36 s += "<ul><li>" + "<li>".join(x) + "</ul>" 48 s += "<p>Bookmarked regions: <ul><li>" + "<li>".join(x) + "</ul>" 49 50 ### 51 52 keys = constructs.keys() 53 keys.sort() 54 55 x = [] 56 for k in keys: 57 x.append("<a href='v/%s'>%s</a>" % (k, k,)) 58 s += "Constructs: <ul><li>" + "<li>".join(x) + "</ul>" 37 59 38 60 return s … … 44 66 Translate user viewname into coordinates, and display. 45 67 """ 46 _q_exports = ['draw' ]68 _q_exports = ['draw', 'sequence'] 47 69 48 70 def __init__(self, username): 49 71 self.username = username 50 72 51 maps = list(data.maps)52 73 maps = [ data.refseq_map, data.conserv_map ] 74 53 75 constructs_nlmsa = make_nlmsa(data.genome, constructs) 54 76 maps.append(constructs_nlmsa) 55 56 self.draw = Draw(data.genome, maps, data.colors) 77 78 maps.append(motif_nlmsa) 79 80 colors = [ 'red', 'black', 'blue', 'black' ] 81 82 self.draw = Draw(username, data.genome, maps, colors) 83 84 def sequence(self): 85 request = quixote.get_request() 86 where = request.form['i'] 87 (chr, start, stop) = coords.translate(where) 88 89 seq = data.genome[chr][start:stop] 90 seq = str(seq) 91 92 response = quixote.get_response() 93 response.set_content_type('text/plain') 94 s = ">%s\n" % (where,) 95 96 for i in range(0, len(seq), 60): 97 s += seq[i:i+60] + "\n" 98 99 return s 57 100 58 101 def _q_lookup(self, view): 59 102 if view in views: 60 coords = views[view] 103 where = views[view] 104 elif view in constructs: 105 where = constructs[view] 61 106 else: 62 coords = view 107 where = view 108 109 ### 110 111 (chr, start, stop) = coords.translate(where) 112 113 center = (stop + start) / 2 114 size = stop - start 115 116 zoom_out_size = float(size) * 3 117 zoom_out = '%s:%d-%d' % (chr, 118 center - zoom_out_size/2, 119 center + zoom_out_size/2) 120 121 zoom_in_size = float(size) / 3 122 zoom_in = '%s:%d-%d' % (chr, 123 center - zoom_in_size/2, 124 center + zoom_in_size/2) 125 126 shift_size = size / 3 127 shift_left = '%s:%d-%d' % (chr, start - shift_size, stop - shift_size) 128 shift_right = '%s:%d-%d' % (chr, start + shift_size, stop + shift_size) 129 130 ### 131 132 x = [] 133 for motif, color in motifs.items(): 134 x.append('%s (%s)' % (motif, color,)) 135 motiflist = ", ".join(x) 136 137 ### 63 138 64 139 return """\ 65 140 <h2>%s</h2> 66 141 %s 142 <p> 143 interval size: %s (%s kb) 144 <p> 145 <a href='./sequence?i=%s'>get genomic sequence</a> 146 <p> 147 <a href='./%s'>zoom out</a>, <a href='./%s'>zoom in</a>, 148 <a href='./%s'>shift left</a>, <a href='./%s'>shift right</a> 149 <p> 150 <a href='..'>return</a> 67 151 <hr> 68 <img src='draw/%s'> 69 """ % (view, coords, coords) 152 Display features: <font color='red'>RefSeq mRNA</font>, conservation, 153 <font color='blue'>constructs</font> 154 <p> 155 Motifs: %s 156 <img src='draw/%s' width='1000'> 157 """ % (view, where, size, size / 1000, where, 158 zoom_out, zoom_in, shift_left, shift_right, motiflist, where) 70 159 71 160 ### 161 162 def make_motif_search_nlmsa(genome, subseqs, motifs): 163 from pygr import cnestedlist, seqdb 164 from pygr_draw import Annotation 165 166 d = {} 167 m = 0 168 for subseq in subseqs: 169 assert subseq.start >= 0 170 171 for motif, color in motifs.items(): 172 matches = motility.find_iupac(str(subseq), motif, 173 offset=subseq.start) 174 175 for n, (start, stop, orientation, _) in enumerate(matches): 176 z = n + m 177 d[str(z)] = Annotation(str(z), subseq.id, start, stop, color) 178 179 m += len(matches) 180 181 annodb = seqdb.AnnotationDB(d, genome) 182 nlmsa = cnestedlist.NLMSA('simple', mode='memory', use_virtual_lpo=True) 183 184 for k in annodb: 185 nlmsa.addAnnotation(annodb[k]) 186 187 nlmsa.build() 188 189 return nlmsa 72 190 73 191 def make_nlmsa(genome, coords_dict): … … 80 198 d[str(n)] = Annotation(str(n), chr, start, stop, 'blue') 81 199 82 import sys83 print >>sys.stderr, chr, start, stop84 85 200 annodb = seqdb.AnnotationDB(d, genome) 86 201 nlmsa = cnestedlist.NLMSA('simple', mode='memory', use_virtual_lpo=True) … … 92 207 93 208 return nlmsa 209 210 data.load() 211 212 x = [] 213 for v in views.values(): 214 (chr, start, stop) = coords.translate(v) 215 subseq = data.genome[chr][start:stop] 216 x.append(subseq) 217 218 motif_nlmsa = make_motif_search_nlmsa(data.genome, x, motifs) trunk/vertex/scripts/make-png.py
r309 r310 56 56 conserv_map = cnestedlist.NLMSA('/mnt/ctb/data/conserv_map', 'r', genomeUnion, 57 57 pairwiseMode=True) 58 xeno_refseq_map = cnestedlist.NLMSA('/mnt/ctb/data/xeno_refseq_map',59 'r', genomeUnion, pairwiseMode=True)58 #xeno_refseq_map = cnestedlist.NLMSA('/mnt/ctb/data/xeno_refseq_map', 59 # 'r', genomeUnion, pairwiseMode=True) 60 60 61 61 sd = refseq_map.seqDict 62 62 63 seq = sd['galGal3.chr 6']63 seq = sd['galGal3.chr1'] 64 64 65 subseq = seq[5 788957:6042376]65 subseq = seq[52958231:53024630] 66 66 67 67 pprint.pprint(refseq_map[subseq].keys()) … … 72 72 print repr(k[0]) 73 73 74 pprint.pprint([ k.human_name for k in xeno_refseq_map[subseq].keys() ])75 k = xeno_refseq_map[subseq].keys()76 print k[0].human_name74 #pprint.pprint([ k.human_name for k in xeno_refseq_map[subseq].keys() ]) 75 #k = xeno_refseq_map[subseq].keys() 76 #print k[0].human_name 77 77 78 78 k = conserv_map[subseq].keys() … … 81 81 picture_class = pygr_draw.BitmapSequencePicture 82 82 p = pygr_draw.draw_annotation_maps(subseq, 83 (refseq_map, conserv_map, 84 xeno_refseq_map), 83 (refseq_map, conserv_map,), 85 84 picture_class=picture_class) 85 # xeno_refseq_map), 86 86 87 87 image = p.finalize()
