Mercurial > repos > miller-lab > genome_diversity
annotate dpmix_plot.py @ 32:03c22b722882
remove BeautifulSoup dependency
| author | Richard Burhans <burhans@bx.psu.edu> |
|---|---|
| date | Fri, 20 Sep 2013 13:54:23 -0400 |
| parents | a631c2f6d913 |
| children |
| rev | line source |
|---|---|
| 12 | 1 #!/usr/bin/env python |
| 2 | |
| 3 import os | |
| 4 import sys | |
| 5 import math | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
6 |
| 12 | 7 import matplotlib as mpl |
| 8 mpl.use('PDF') | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
9 from matplotlib.backends.backend_pdf import PdfPages |
| 12 | 10 import matplotlib.pyplot as plt |
| 11 from matplotlib.path import Path | |
| 12 import matplotlib.patches as patches | |
| 13 | |
| 14 ################################################################################ | |
| 15 | |
| 16 def build_chrom_len_dict(dbkey, galaxy_data_index_dir): | |
| 17 chrom_len_root = os.path.join(galaxy_data_index_dir, 'shared/ucsc/chrom') | |
| 18 chrom_len_file = '{0}.len'.format(dbkey) | |
| 19 chrom_len_path = os.path.join(chrom_len_root, chrom_len_file) | |
| 20 | |
| 21 chrom_len = {} | |
| 22 | |
| 23 try: | |
| 24 with open(chrom_len_path) as fh: | |
| 25 for line in fh: | |
| 26 line = line.rstrip('\r\n') | |
| 27 elems = line.split() | |
| 28 if len(elems) == 2: | |
| 29 chrom = elems[0] | |
| 30 length = int(elems[1]) | |
| 31 chrom_len[chrom] = length | |
| 32 except: | |
| 33 pass | |
| 34 | |
| 35 return chrom_len | |
| 36 | |
| 37 def parse_input_file(input_file): | |
| 38 chroms = [] | |
| 39 individuals = [] | |
| 40 data = {} | |
| 41 chrom_len = {} | |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
42 used_states = [] |
| 12 | 43 |
| 44 with open(input_file) as fh: | |
| 45 for line in fh: | |
| 46 line = line.strip() | |
| 47 if line: | |
| 48 elems = line.split() | |
| 49 chrom = elems[0] | |
| 50 p1, p2, state = map(int, elems[1:4]) | |
| 51 id = elems[4] | |
| 52 | |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
53 if state not in used_states: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
54 used_states.append(state) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
55 |
| 12 | 56 if chrom not in chroms: |
| 57 chroms.append(chrom) | |
| 58 | |
| 59 if id not in individuals: | |
| 60 individuals.append(id) | |
| 61 | |
| 62 data.setdefault(chrom, {}) | |
| 63 data[chrom].setdefault(id, []) | |
| 64 data[chrom][id].append((p1, p2, state)) | |
| 65 | |
| 66 if p2 > chrom_len.setdefault(chrom, 0): | |
| 67 chrom_len[chrom] = p2 | |
| 68 | |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
69 return chroms, individuals, data, chrom_len, used_states |
| 12 | 70 |
| 71 def check_chroms(chroms, chrom_len, dbkey): | |
| 72 error = 0 | |
| 73 for chrom in chroms: | |
| 74 if chrom not in chrom_len: | |
| 75 print >> sys.stderr, "Can't find length for {0} chromosome {1}".format(dbkey, chrom) | |
| 76 error = 1 | |
| 77 if error: | |
| 78 sys.exit(1) | |
| 79 | |
| 80 def check_data(data, chrom_len, dbkey): | |
| 81 error = 0 | |
| 82 for chrom in data: | |
| 83 chrom_beg = 0 | |
| 84 chrom_end = chrom_len[chrom] | |
| 85 for individual in data[chrom]: | |
| 86 for p1, p2, state in data[chrom][individual]: | |
| 87 if p1 >= p2: | |
| 88 print >> sys.stderr, "Bad data line: begin >= end: {0} {1} {2} {3}".format(chrom, p1, p2, state, individual) | |
| 89 error = 1 | |
| 90 if p1 < chrom_beg or p2 > chrom_end: | |
| 91 print >> sys.stderr, "Bad data line: outside {0} boundaries[{1} - {2}]: {3} {4} {5} {6}".format(dbkey, chrom_beg, chrom_end, chrom, p1, p2, state, individual) | |
| 92 error = 1 | |
| 93 if error: | |
| 94 sys.exit(1) | |
| 95 | |
| 96 def make_rectangle(p1, p2, color, bottom=0.0, top=1.0): | |
| 97 verts = [ | |
| 98 (p1, bottom), # left, bottom | |
| 99 (p1, top), # left, top | |
| 100 (p2, top), # right, top | |
| 101 (p2, bottom), # right, bottom | |
| 102 (0.0, 0.0) # ignored | |
| 103 ] | |
| 104 | |
| 105 codes = [ | |
| 106 Path.MOVETO, | |
| 107 Path.LINETO, | |
| 108 Path.LINETO, | |
| 109 Path.LINETO, | |
| 110 Path.CLOSEPOLY | |
| 111 ] | |
| 112 | |
| 113 path = Path(verts, codes) | |
| 114 return patches.PathPatch(path, facecolor=color, lw=0) | |
| 115 | |
| 116 def make_split_rectangle(p1, p2, top_color, bottom_color): | |
| 117 patch1 = make_rectangle(p1, p2, bottom_color, top=0.5) | |
| 118 patch2 = make_rectangle(p1, p2, top_color, bottom=0.5) | |
| 119 return [patch1, patch2] | |
| 120 | |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
121 def make_state_rectangle_2pop(p1, p2, state, chrom, individual): |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
122 p1_color = 'r' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
123 p2_color = 'g' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
124 heterochromatin_color = '#c7c7c7' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
125 |
| 12 | 126 if state == 0: |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
127 return [ make_rectangle(p1, p2, heterochromatin_color) ] |
| 12 | 128 elif state == 1: |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
129 return [ make_rectangle(p1, p2, p1_color) ] |
| 12 | 130 elif state == 2: |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
131 return [ make_rectangle(p1, p2, p2_color) ] |
| 12 | 132 elif state == 3: |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
133 return make_split_rectangle(p1, p2, p1_color, p2_color) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
134 else: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
135 print >> sys.stderr, "Unknown state: {0}: {1} {2} {3} {4}".format(state, chrom, p1, p2, state, individual) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
136 sys.exit(1) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
137 |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
138 def make_state_rectangle_3pop(p1, p2, state, chrom, individual): |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
139 p1_color = 'r' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
140 p2_color = 'g' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
141 p3_color = 'b' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
142 heterochromatin_color = '#c7c7c7' |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
143 |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
144 if state == 0: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
145 return [ make_rectangle(p1, p2, heterochromatin_color) ] |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
146 if state == 1: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
147 return [ make_rectangle(p1, p2, p1_color) ] |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
148 if state == 2: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
149 return [ make_rectangle(p1, p2, p2_color) ] |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
150 if state == 3: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
151 return [ make_rectangle(p1, p2, p3_color) ] |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
152 if state == 4: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
153 return make_split_rectangle(p1, p2, p1_color, p2_color) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
154 if state == 5: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
155 return make_split_rectangle(p1, p2, p1_color, p3_color) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
156 if state == 6: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
157 return make_split_rectangle(p1, p2, p2_color, p3_color) |
| 12 | 158 else: |
| 159 print >> sys.stderr, "Unknown state: {0}: {1} {2} {3} {4}".format(state, chrom, p1, p2, state, individual) | |
| 160 sys.exit(1) | |
| 161 | |
| 162 def nicenum(num, round=False): | |
| 163 if num == 0: | |
| 164 return 0.0 | |
| 165 | |
| 166 exp = int(math.floor(math.log10(num))) | |
| 167 f = num / math.pow(10, exp) | |
| 168 | |
| 169 if round: | |
| 170 if f < 1.5: | |
| 171 nf = 1.0 | |
| 172 elif f < 3.0: | |
| 173 nf = 2.0 | |
| 174 elif f < 7.0: | |
| 175 nf = 5.0 | |
| 176 else: | |
| 177 nf = 10.0 | |
| 178 else: | |
| 179 if f <= 1.0: | |
| 180 nf = 1.0 | |
| 181 elif f <= 2.0: | |
| 182 nf = 2.0 | |
| 183 elif f <= 5.0: | |
| 184 nf = 5.0 | |
| 185 else: | |
| 186 nf = 10.0 | |
| 187 | |
| 188 return nf * pow(10, exp) | |
| 189 | |
| 190 def tick_foo(beg, end, loose=False): | |
| 191 ntick = 10 | |
| 192 | |
| 193 range = nicenum(end - beg, round=False) | |
| 194 d = nicenum(range/(ntick - 1), round=True) | |
| 195 digits = int(math.floor(math.log10(d))) | |
| 196 | |
| 197 if loose: | |
| 198 graph_min = math.floor(beg/d) * d | |
| 199 graph_max = math.ceil(end/d) * d | |
| 200 else: | |
| 201 graph_min = beg | |
| 202 graph_max = end | |
| 203 | |
| 204 nfrac = max([-1 * digits, 0]) | |
| 205 vals = [] | |
| 206 | |
| 207 stop = graph_max | |
| 208 if loose: | |
| 209 stop = graph_max + (0.5 * d) | |
| 210 | |
| 211 x = graph_min | |
| 212 while x <= stop: | |
| 213 vals.append(int(x)) | |
| 214 x += d | |
| 215 | |
| 216 vals = vals[1:] | |
| 217 | |
| 218 # if not loose: | |
| 219 # if vals[-1] < graph_max: | |
| 220 # vals.append(int(graph_max)) | |
| 221 | |
| 222 labels = [] | |
| 223 for val in vals: | |
| 224 labels.append('{0}'.format(int(val/math.pow(10, digits)))) | |
| 225 | |
| 226 # labels.append('{0:.1f}'.format(vals[-1]/math.pow(10, digits))) | |
| 227 | |
| 228 return vals, labels | |
| 229 | |
| 230 ################################################################################ | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
231 ################################################################################ |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
232 ################################################################################ |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
233 ################################################################################ |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
234 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
235 def space_for_legend(plot_params): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
236 space = 0.0 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
237 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
238 legend_states = plot_params['legend_states'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
239 if legend_states: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
240 ind_space = plot_params['ind_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
241 ind_height = plot_params['ind_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
242 space += len(legend_states) * (ind_space + ind_height) - ind_space |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
243 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
244 return space |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
245 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
246 ################################################################################ |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
247 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
248 def space_for_chroms(plot_params, chroms, individuals, data): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
249 space_dict = {} |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
250 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
251 chrom_height = plot_params['chrom_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
252 ind_space = plot_params['ind_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
253 ind_height = plot_params['ind_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
254 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
255 for chrom in chroms: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
256 space_dict[chrom] = chrom_height |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
257 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
258 individual_count = 0 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
259 for individual in individuals: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
260 if individual in data[chrom]: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
261 individual_count += 1 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
262 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
263 space_dict[chrom] += individual_count * (ind_space + ind_height) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
264 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
265 return space_dict |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
266 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
267 ################################################################################ |
| 12 | 268 |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
269 def make_dpmix_plot(input_dbkey, input_file, output_file, galaxy_data_index_dir, state2name=None, populations=3): |
| 12 | 270 fs_chrom_len = build_chrom_len_dict(input_dbkey, galaxy_data_index_dir) |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
271 chroms, individuals, data, chrom_len, used_states = parse_input_file(input_file) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
272 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
273 ## populate chrom_len |
| 12 | 274 for chrom in chrom_len.keys(): |
| 275 if chrom in fs_chrom_len: | |
| 276 chrom_len[chrom] = fs_chrom_len[chrom] | |
| 277 | |
| 278 #check_chroms(chroms, chrom_len, input_dbkey) | |
| 279 check_data(data, chrom_len, input_dbkey) | |
| 280 | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
281 ## plot parameters |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
282 plot_params = { |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
283 'plot_dpi': 300, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
284 'page_width': 8.50, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
285 'page_height': 11.00, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
286 'top_margin': 0.10, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
287 'bottom_margin': 0.10, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
288 'chrom_space': 0.25, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
289 'chrom_height': 0.25, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
290 'ind_space': 0.10, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
291 'ind_height': 0.25, |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
292 'legend_space': 0.10 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
293 } |
| 12 | 294 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
295 ## in the legend, only print out states that are |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
296 ## 1) in the data |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
297 ## - AND - |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
298 ## 2) in the state2name map |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
299 legend_states = [] |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
300 if state2name is not None: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
301 for state in used_states: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
302 if state in state2name: |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
303 legend_states.append(state) |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
304 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
305 plot_params['legend_states'] = legend_states |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
306 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
307 ## choose the correct make_state_rectangle method |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
308 if populations == 3: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
309 plot_params['rectangle_method'] = make_state_rectangle_3pop |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
310 elif populations == 2: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
311 plot_params['rectangle_method'] = make_state_rectangle_2pop |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
312 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
313 pdf_pages = PdfPages(output_file) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
314 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
315 ## generate a list of chroms for each page |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
316 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
317 needed_for_legend = space_for_legend(plot_params) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
318 needed_for_chroms = space_for_chroms(plot_params, chroms, individuals, data) |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
319 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
320 chrom_space_per_page = plot_params['page_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
321 chrom_space_per_page -= plot_params['top_margin'] + plot_params['bottom_margin'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
322 chrom_space_per_page -= needed_for_legend + plot_params['legend_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
323 chrom_space_per_page -= plot_params['chrom_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
324 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
325 chroms_left = chroms[:] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
326 pages = [] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
327 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
328 space_left = chrom_space_per_page |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
329 chrom_list = [] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
330 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
331 while chroms_left: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
332 chrom = chroms_left.pop(0) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
333 space_needed = needed_for_chroms[chrom] + plot_params['chrom_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
334 if (space_needed > chrom_space_per_page): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
335 print >> sys.stderr, 'Multipage chroms not yet supported' |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
336 sys.exit(1) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
337 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
338 ## sometimes 1.9 - 1.9 < 0 (-4.4408920985e-16) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
339 ## so, we make sure it's not more than a millimeter over |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
340 if space_left - space_needed > -0.04: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
341 chrom_list.append(chrom) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
342 space_left -= space_needed |
| 12 | 343 else: |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
344 pages.append(chrom_list[:]) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
345 chrom_list = [] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
346 chroms_left.insert(0, chrom) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
347 space_left = chrom_space_per_page |
| 12 | 348 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
349 ############################################################################ |
| 12 | 350 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
351 plot_dpi = plot_params['plot_dpi'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
352 page_width = plot_params['page_width'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
353 page_height = plot_params['page_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
354 top_margin = plot_params['top_margin'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
355 ind_space = plot_params['ind_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
356 ind_height = plot_params['ind_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
357 make_state_rectangle = plot_params['rectangle_method'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
358 legend_space = plot_params['legend_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
359 chrom_space = plot_params['chrom_space'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
360 chrom_height = plot_params['chrom_height'] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
361 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
362 for page in pages: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
363 fig = plt.figure(figsize=(page_width, page_height), dpi=plot_dpi) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
364 bottom = 1.0 - (top_margin/page_height) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
365 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
366 # print legend |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
367 if legend_states: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
368 top = True |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
369 for state in sorted(legend_states): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
370 if top: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
371 bottom -= ind_height/page_height |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
372 top = False |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
373 else: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
374 bottom -= (ind_space + ind_height)/page_height |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
375 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
376 ax1 = fig.add_axes([0.0, bottom, 0.09, ind_height/page_height]) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
377 plt.axis('off') |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
378 ax1.set_xlim(0, 1) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
379 ax1.set_ylim(0, 1) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
380 for patch in make_state_rectangle(0, 1, state, 'legend', state2name[state]): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
381 ax1.add_patch(patch) |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
382 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
383 ax2 = fig.add_axes([0.10, bottom, 0.88, ind_height/page_height], frame_on=False) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
384 plt.axis('off') |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
385 plt.text(0.0, 0.5, state2name[state], fontsize=10, ha='left', va='center') |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
386 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
387 bottom -= legend_space/page_height |
| 12 | 388 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
389 # print chroms |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
390 top = True |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
391 for chrom in page: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
392 length = chrom_len[chrom] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
393 vals, labels = tick_foo(0, length) |
| 12 | 394 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
395 if top: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
396 bottom -= chrom_height/page_height |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
397 top = False |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
398 else: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
399 bottom -= (chrom_space + chrom_height)/page_height |
| 12 | 400 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
401 ax = fig.add_axes([0.0, bottom, 1.0, chrom_height/page_height]) |
| 12 | 402 plt.axis('off') |
| 403 plt.text(0.5, 0.5, chrom, fontsize=14, ha='center') | |
| 404 | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
405 individual_count = 0 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
406 for individual in individuals: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
407 if individual in data[chrom]: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
408 individual_count += 1 |
| 12 | 409 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
410 i = 0 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
411 for individual in individuals: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
412 if individual in data[chrom]: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
413 i += 1 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
414 bottom -= (ind_space + ind_height)/page_height |
| 12 | 415 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
416 ax1 = fig.add_axes([0.0, bottom, 0.09, ind_height/page_height]) |
| 12 | 417 plt.axis('off') |
| 418 plt.text(1.0, 0.5, individual, fontsize=10, ha='right', va='center') | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
419 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
420 ax2 = fig.add_axes([0.10, bottom, 0.88, ind_height/page_height], frame_on=False) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
421 ax2.set_xlim(0, length) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
422 ax2.set_ylim(0, 1) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
423 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
424 if i != individual_count: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
425 plt.axis('off') |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
426 else: |
| 12 | 427 ax2.tick_params(top=False, left=False, right=False, labelleft=False) |
| 428 ax2.set_xticks(vals) | |
| 429 ax2.set_xticklabels(labels) | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
430 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
431 for p1, p2, state in sorted(data[chrom][individual]): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
432 for patch in make_state_rectangle(p1, p2, state, chrom, individual): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
433 ax2.add_patch(patch) |
| 12 | 434 |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
435 # extend last state to end of chrom |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
436 if p2 < length: |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
437 for patch in make_state_rectangle(p2, length, state, chrom, individual): |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
438 ax2.add_patch(patch) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
439 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
440 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
441 pdf_pages.savefig(fig) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
442 plt.close(fig) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
443 |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
444 pdf_pages.close() |
| 12 | 445 |
| 446 ################################################################################ | |
| 447 | |
| 448 if __name__ == '__main__': | |
|
31
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
449 make_dpmix_plot('loxAfr3', 'output.dat', 'output2_files/picture.pdf', '/scratch/galaxy/home/oocyte/galaxy_oocyte/tool-data', state2name={0: 'heterochromatin', 1: 'reference', 2: 'asian'}, populations=2) |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
450 # input_dbkey, input_file, output_file, galaxy_data_index_dir = sys.argv[1:5] |
|
a631c2f6d913
Update to Miller Lab devshed revision 3c4110ffacc3
Richard Burhans <burhans@bx.psu.edu>
parents:
27
diff
changeset
|
451 # make_dpmix_plot(input_dbkey, input_file, output_file, galaxy_data_index_dir) |
| 12 | 452 sys.exit(0) |
| 453 | |
|
27
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
454 ## notes |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
455 # 1) pass in a state to name mapping |
|
8997f2ca8c7a
Update to Miller Lab devshed revision bae0d3306d3b
Richard Burhans <burhans@bx.psu.edu>
parents:
12
diff
changeset
|
456 # 2) only print out names for states which exist in the data, and are in the state to name mapping |
