diff --git a/.gitignore b/.gitignore index dca87ef..475a9f5 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,5 @@ static node slurm-*.out + +.html diff --git a/README.md b/README.md index b4f5b97..737e246 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,8 @@ dashboard start a web app that visualizes observed and expected mutation counts as a function of genomic coordinate predict call genomic regions predicted to be under negative selection [not yet implemented] +report + create .html plot displaying gene transcripts with introns compressed, observed and expected mutation counts, lollipops, tracks, and sequence coverage ``` Required arguments for `train` are: @@ -93,6 +95,23 @@ Optionally, the user may change this by specifying the `--model` argument: Path to a neutral model produced by the train sub-command (in json format). This model is used to compute the expected mutation counts in the visualization. ``` +Required arguments for `report` are: + +``` +--config_file STR + Path to .yaml configuration file (example: reports/constraintview.yaml). +--output_file STR + File name of output plot. +``` + +By default, the `report` subcommand plots all transcripts plus flattened-exons. +Optionally, the user may change this by specifying the `--transcripts` argument: + +``` +--transcripts STR + Specifies which transcripts to plot. Can be 'all' for all transcripts or '['', '', ...]' for specific transcripts. +``` + ## Input Data Assuming one has access to the protected environment on the CHPC at University of Utah, diff --git a/constraint-tools b/constraint-tools index 54556be..bae0bc9 100755 --- a/constraint-tools +++ b/constraint-tools @@ -23,9 +23,9 @@ export PYTHONPATH="${CONSTRAINT_TOOLS}/utilities:${CONSTRAINT_TOOLS}/predict-con PATH="${CONSTRAINT_TOOLS}/bin:$PATH" PATH="${CONSTRAINT_TOOLS}/train-model:$PATH" PATH="${CONSTRAINT_TOOLS}/flask-app:${PATH}" +PATH="${CONSTRAINT_TOOLS}/report:${PATH}" ####################################### - tool="${1}" info "\nTool: ${tool}\n" shift @@ -36,6 +36,8 @@ if [[ ${tool} == "train" ]]; then train-model ${args} elif [[ ${tool} == "dashboard" ]]; then flask-app ${args} +elif [[ ${tool} == "report" ]]; then + constraintview ${args} else error "invalid tool: ${tool}" exit 1 diff --git a/report/axes.py b/report/axes.py new file mode 100755 index 0000000..81b911f --- /dev/null +++ b/report/axes.py @@ -0,0 +1,41 @@ +from bokeh.models import LinearAxis,Range1d + +def add_axis(plot, plot_params, axis_label, y_max, min_tick, max_tick, tick_precision, tick_scientific_notation, y_min=0, num_ticks=3, axis_position='right', visible=True): + + ticks = [(max_tick-min_tick)/(num_ticks+1)*i+min_tick for i in range(num_ticks+2)] + ticks = list(map(lambda x: int(x) if int(x)==x else x , ticks)) #have to do this for overrides to work on ticks ending in .0 + ticker_dict = {tick:str((y_max-y_min)/(num_ticks+1)*(idx)+y_min) for idx,tick in enumerate(ticks)} + #tick formatting + ticker_dict = format_ticks(ticker_dict, tick_precision, tick_scientific_notation) + plot.extra_y_ranges[axis_label] = Range1d(0,plot_params['plot_height']) + axis = LinearAxis(y_range_name=axis_label, axis_label=axis_label, ticker=ticks, major_label_overrides=ticker_dict, visible=visible) + plot.add_layout(axis, axis_position) + return axis + +def add_user_axis(plot, plot_params, user_line_params, axis_name, y_max, min_tick, max_tick, y_min=0, num_ticks=3, axis_position='right', visible=True): + axis_label = user_line_params[axis_name]['y_axis_label'] + axis = add_axis(plot, plot_params, axis_label, y_max, min_tick, max_tick, user_line_params[axis_name]['tick_precision'], user_line_params[axis_name]['tick_scientific_notation'], y_min=y_min, num_ticks=num_ticks, axis_position=axis_position, visible=visible) + return axis + +def add_variant_axis(plot_params, variant_params, plot, axis_label, allele_vals, visible=True): + y_min = min(allele_vals) + y_max = max(allele_vals) + min_tick = plot_params['y0']+variant_params['min_lollipop_height'] + max_tick = plot_params['plot_height']-variant_params['lollipop_radius']-variant_params['lollipop_line_width'] + tick_precision = 2 #TODO + tick_scientific_notation = False + num_ticks = 3 + axis_position = 'left' + visible = visible + axis = add_axis(plot, plot_params, axis_label, y_max, min_tick, max_tick, tick_precision, tick_scientific_notation, y_min=y_min, num_ticks=num_ticks, axis_position=axis_position, visible=visible) + return axis + + +def format_ticks(ticker_dict, tick_precision, tick_scientific_notation): + for key in ticker_dict: + if int(float(ticker_dict[key])) == float(ticker_dict[key]): ticker_dict[key] = str(int(float(ticker_dict[key]))) + for key in ticker_dict: + if tick_scientific_notation: format_precision = '.{}e'.format(tick_precision) + else: format_precision = '.{}f'.format(tick_precision) + ticker_dict = {key:format(float(value),format_precision) for (key,value) in ticker_dict.items()} + return ticker_dict diff --git a/report/colors.py b/report/colors.py new file mode 100755 index 0000000..4722856 --- /dev/null +++ b/report/colors.py @@ -0,0 +1,37 @@ +import numpy as np +import random + +def lighten_hex_color(color, delta): + def limit(x): + if x > 255: return 255 + if x < 0: return 0 + return x + + if '#' in color: color = color[1:] + + r = hex(limit(int(color[:2], 16) + delta))[2:] + g = hex(limit(int(color[2:4], 16) + delta))[2:] + b = hex(limit(int(color[4:6], 16) + delta))[2:] + + new_color = '#{}{}{}'.format(r, g, b) + return new_color + +def color_variants(plot_params, variant_params, variant_ls): + #colors = [variant_params['variant_severity_colors'][v['severity']] for v in variant_ls] + for v in variant_ls: + #v['color'] = variant_params['variant_severity_colors'][v['severity']] + if v['severity']: v['color'] = variant_params['variant_severity_colors'][v['severity']] + else: v['color'] = plot_params['glyph_colors']['variant'] + + +def color_boxes(plot_params, user_track_params, track_name, boxes): + IDs = np.unique([b['ID'] for b in boxes]) + color_dict = {ID: random.choice(np.unique(plot_params['track_colors'])) for ID in IDs} + + try: + for (ID, color) in user_track_params[track_name]['colors'].items(): + color_dict[ID] = color + except: pass + + for idx in range(len(boxes)): + boxes[idx]['color'] = color_dict[boxes[idx]['ID']] \ No newline at end of file diff --git a/report/constraintview b/report/constraintview new file mode 100755 index 0000000..bfaf967 --- /dev/null +++ b/report/constraintview @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +#config_file="constraintview.yaml" +transcripts="all" +output="plot.html" + +while [[ "$1" =~ ^- ]]; do + case $1 in + --config_file ) shift; [[ ! $1 =~ ^- ]] && config_file=$1;; + --transcripts ) shift; [[ ! $1 =~ ^- ]] && transcripts=$1;; + --output_file ) shift; [[ ! $1 =~ ^- ]] && output_file=$1;; + *) error "$0: $1 is an invalid flag"; exit 1;; + esac + shift +done + +cd ${CONSTRAINT_TOOLS}/report +python create_constraint_txt.py ${config_file} +python constraintview.py ${config_file} ${transcripts} -o ${output_file} \ No newline at end of file diff --git a/report/constraintview.py b/report/constraintview.py new file mode 100755 index 0000000..f36f05d --- /dev/null +++ b/report/constraintview.py @@ -0,0 +1,228 @@ +from process_gene_gff import gff_to_db, get_gene_feature, get_transcript_dict +from get_coords import get_variants,get_line,get_track +from map_coords import map_line +from colors import color_boxes, color_variants +from axes import add_user_axis,add_variant_axis +from glyphs import add_intron_glyph, add_exon_glyph, add_variant_glyph, add_UTR_glyph, add_track_glyph, add_multi_line_glyph +from widget_callbacks import add_checkbox,add_user_tracks_checkbox,add_user_lines_checkbox,add_smoothing_slider,add_legend,add_linear_log_scale,add_exon_zoom +import project_coords +import numpy as np +import argparse +from bokeh.plotting import figure, output_file, save +from bokeh.layouts import column, row, gridplot +from bokeh.models import ColumnDataSource, Range1d, HoverTool, LabelSet +import yaml +from yaml.loader import SafeLoader + +def constraint_view_plot(plot_params, variant_params, user_line_params, transcript_dict, glyph_dict, axes, variant_ls, user_tracks, user_track_glyphs, user_lines, user_line_glyphs, title=''): + + project_coords.adjust_coordinates(transcript_dict['exons'], intron_size=plot_params['intron_size']) + plot_height = plot_params['plot_height'] + plot = figure(title=title, plot_width=1500, tools='tap,box_zoom,xpan,reset', plot_height=plot_height,min_border=0,#, toolbar_location=None, + x_range=Range1d(0, transcript_dict['exons'][-1]['compact_end']), y_range=Range1d(0,plot_height), background_fill_color='white') + + plot.grid.grid_line_color = None + plot.toolbar.active_drag = None + plot.yaxis[0].visible = False + + ### VARIANTS ### + if variant_ls: + project_coords.map_point(variant_ls, transcript_dict['exons']) + ray_glyph,circle_glyph,allele_counts,allele_frequencies = add_variant_glyph(plot_params, variant_params, plot, variant_ls) + if ray_glyph and circle_glyph: + tooltips_variations = [('Position (compact)', '@x'), ('Position (chr)', '@pos'), + ('Allele count', '@allele_counts'), ('Allele number', '@allele_numbers'), ('Allele frequency', '@allele_frequencies'), + ('Change', '@ref > @alt'), ('VEP Annotation', '@ann'), ('Severity', '@sev')] + plot.add_tools(HoverTool(tooltips=tooltips_variations, renderers=[circle_glyph,ray_glyph], point_policy='follow_mouse', attachment='below')) + glyph_dict['Variant'].extend([ray_glyph,circle_glyph]) + + if variant_params['add_variant_axis']: + axes['count'].append(add_variant_axis(plot_params, variant_params, plot, 'Allele count', allele_counts, visible=True)) + axes['allele_frequency'].append(add_variant_axis(plot_params, variant_params, plot, 'Allele frequency',allele_frequencies, visible=False)) + + else: variant_params['add_variant_axis'] = False + + tooltips_features = [('Type','@feat_type'), ('Start (compact)', '@adj_start'), ('End (compact)', '@adj_end'), + ('Start (chr)', '@true_start'), ('End (chr)', '@true_end'), ('Length', '@true_len')] + + ### INTRONS ### + introns = project_coords.get_introns_from_exons(transcript_dict['exons']) + introns_glyph = add_intron_glyph(plot_params, plot, introns) + plot.add_tools(HoverTool(tooltips=tooltips_features, renderers=[introns_glyph], point_policy='follow_mouse', attachment='below')) + + ### EXONS ### + exons_glyph,arrow_glyph = add_exon_glyph(plot_params, plot, transcript_dict['exons'], transcript_dict['direction']) + plot.add_tools(HoverTool(tooltips=tooltips_features, renderers=[exons_glyph], point_policy='follow_mouse', attachment='below')) + + glyph_dict['Direction'].append(arrow_glyph) + glyph_dict['exon'].append(exons_glyph) + + ### UTRs ### + project_coords.map_box(transcript_dict['UTRs'], transcript_dict['exons']) + UTR_glyph = add_UTR_glyph(plot_params, plot, transcript_dict['UTRs']) + plot.add_tools(HoverTool(tooltips=tooltips_features, renderers=[UTR_glyph], point_policy='follow_mouse', attachment='below')) + glyph_dict['UTRs'].append(UTR_glyph) + + ### USER TRACKS ### + h = plot_params['track_height'] + + for idx,track_name in enumerate(user_tracks): + project_coords.map_box(user_tracks[track_name], transcript_dict['exons']) + + tooltips_tracks = [('Name','@track_names'), ('Start (adjusted)', '@adj_start'), ('End (adjusted)', '@adj_end'), + ('Start (true)', '@true_start'), ('End (true)', '@true_end'), ('Length', '@true_len')] + + y = ((h*1.5)*(len(user_tracks) - idx - 1)+(h)) + track_glyph = add_track_glyph(plot, user_tracks[track_name], h*0.9, y) + plot.add_tools(HoverTool(tooltips=tooltips_tracks, renderers=[track_glyph], point_policy='follow_mouse', attachment='below')) + user_track_glyphs[track_name].append(track_glyph) + cs = ColumnDataSource(dict(x=[0], y=[(h*1.5)*(len(user_tracks) - idx - 1)], text=[list(user_tracks.keys())[idx]])) + label = LabelSet(source=cs, x='x', y='y', text='text',text_font_size='{}px'.format(plot_params['track_height']), + text_align='left') + plot.add_layout(label) + user_track_glyphs[track_name].append(label) + + ### USER LINES ### + for idx,axis_name in enumerate(user_line_params): + all_xs = [] + all_ys = [] + for line in user_line_params[axis_name]['lines']: + xs_ls,ys_ls = map_line(user_lines[axis_name][line], transcript_dict['exons']) + all_xs.append(xs_ls) + all_ys.append(ys_ls) + y_max = max([item for sublist in list(np.array(all_ys,dtype=object).flat) for item in sublist]) + + for idx,line in enumerate(user_line_params[axis_name]['lines']): + line_params=user_line_params[axis_name]['lines'][line] + line_glyph = add_multi_line_glyph(plot_params, plot, all_xs[idx], all_ys[idx], max_y=y_max, y0=plot_params['y0'], fill_area=line_params['fill_area'], line_color=line_params['color'], line_alpha=line_params['alpha']) + line_glyph.level = 'underlay' + user_line_glyphs[axis_name].append(line_glyph) + + add_user_axis(plot, plot_params, user_line_params, axis_name, y_max, plot_params['y0'], plot_params['plot_height'], y_min=0, num_ticks=3, axis_position='right', visible=True) + + return plot,glyph_dict + +def parse_args(): + parser = argparse.ArgumentParser(description='constraintview') + parser.add_argument('config_file', help='must be .yaml; sample config file can be found at xyz') + parser.add_argument('transcripts', help='transcripts to plot, can be [... str] or all') + parser.add_argument('-o', '--output', required=False, help='output filepath') + args = parser.parse_args() + + ### CONFIG ### + config_file = args.config_file + # TODO what to do if config file doesn't have required params? + if config_file[-5:] != '.yaml': raise ValueError('configuration file must be .yaml') + with open(config_file) as f: + params = list(yaml.load_all(f, Loader=SafeLoader)) + plot_params = params[0] + variant_params = params[1] + user_track_params = params[2] + user_line_params = params[3] + plot_params['transcript_height'] = 20 + len(user_track_params) * plot_params['track_height'] * 1.5 + plot_params['y0'] = plot_params['transcript_height'] + plot_params['exon_height'] / 2 # "0" for line plots + + ### COLORS ### + with open('named_colors.yaml') as f: + named_colors = list(yaml.load_all(f, Loader=SafeLoader))[0] + + ### GLYPH COLORS ### + for glyph_type in plot_params['glyph_colors']: + color = plot_params['glyph_colors'][glyph_type] + if color[0] != "#": plot_params['glyph_colors'][glyph_type] = named_colors[color] + + ### TRACKS ### + for track_name in user_track_params: + track_db = gff_to_db(user_track_params[track_name]['gtf_path'], user_track_params[track_name]['gtf_path'] + '.db') + user_track_params[track_name]['db'] = track_db + with open('palettes.yaml') as f: + palettes = list(yaml.load_all(f, Loader=SafeLoader))[0] + track_colors = [named_colors[c] for c in palettes[plot_params['track_palette']]] + plot_params['track_colors'] = track_colors + + ### TRANSCRIPTS ### + transcript_IDs = args.transcripts + if transcript_IDs != 'all': + transcript_IDs = transcript_IDs.strip('[').strip(']').split(',') + transcript_IDs = [t.strip('\'') for t in transcript_IDs] + + ### OUTPUT ### + if args.output: output = args.output + '.html' if args.output[-5:] != '.html' else args.output + else: output = 'plot.html' + return plot_params,variant_params,user_track_params,user_line_params,transcript_IDs,output + +def constraint_view(): + plot_params, variant_params, user_track_params, user_line_params, transcript_IDs, output = parse_args() + # 'test.db' to make sure .db does not accidentally get overwritten during development + gff_db = gff_to_db(plot_params['gff_path'],plot_params['gff_path']+'test.db') + + gene_feature = get_gene_feature(gff_db, plot_params['gene_name']) + + if transcript_IDs == 'transcript_names': + transcripts = get_transcript_dict(plot_params, gff_db, gene_feature, 'all') + print(list(transcripts.keys())) + exit() + + transcripts = get_transcript_dict(plot_params, gff_db, gene_feature, transcript_IDs) + transcript_IDs = list(transcripts.keys()) #if 'all', transcript_IDs will become list of transcript names; if nonexistent IDs they are removed + + variant_ls = get_variants(plot_params['variant_path'], gene_feature.start, gene_feature.end, variant_params['seqid']) if variant_params['plot_variants'] else [] + color_variants(plot_params, variant_params, variant_ls) + user_tracks = {track_name: get_track(user_track_params, track_name) for track_name in user_track_params} + for track_name in user_tracks: color_boxes(plot_params, user_track_params, track_name, user_tracks[track_name]) + user_lines = {axis_name:{} for axis_name in user_line_params} + for axis_name in user_line_params: + for line_name in user_line_params[axis_name]['lines']: + user_lines[axis_name][line_name] = get_line(user_line_params[axis_name]['lines'][line_name]['filepath']) + + plot_ls = [] + glyph_dict = dict(exon=[],UTRs=[],Variant=[],Direction=[]) + user_track_glyphs = {track_name:[] for track_name in user_track_params} + user_line_glyphs = {line_name:[] for line_name in user_line_params} + axes = dict(count=[],allele_frequency=[]) + for line_name in user_line_params: + axes[line_name] = [] + + for idx,ID in enumerate(transcript_IDs): + title = 'gene={}; transcript={}/{}'.format(plot_params['gene_name'], ID, transcripts[ID]['ID']) + if transcripts[ID]['direction']: title += ' ({})'.format(transcripts[ID]['direction']) + plot,glyph_dict = constraint_view_plot(plot_params, variant_params, user_line_params, transcripts[ID], glyph_dict, axes, variant_ls, user_tracks, user_track_glyphs, user_lines, user_line_glyphs, title=title) + plot_ls.append(plot) + + legend = add_legend(user_line_params) + add_exon_zoom(plot_ls,glyph_dict) + checkbox = add_checkbox(plot_ls,axes,glyph_dict,plot_params, variant_params) + user_tracks_checkbox = add_user_tracks_checkbox(plot_ls,axes,user_track_glyphs,glyph_dict['Direction'],plot_params) + + user_line_checkboxes=[] #one checkbox per user line, so that they can be lined up with sliders + for axis in user_line_params: + user_line_checkbox = add_user_lines_checkbox(plot_ls, axes[axis], user_line_glyphs[axis], axis) + user_line_checkboxes.append(user_line_checkbox) + + if variant_params['plot_variants']: + div_type,radio_group_type,div_scale,radio_group_scale = add_linear_log_scale(axes, glyph_dict) + + sliders = [] + for axis_name in user_line_params: + if user_line_params[axis_name]['smoothing_slider']: + fill_area_ls = [user_line_params[axis_name]['lines'][line]['fill_area'] for line in user_line_params[axis_name]['lines']]*len(plot_ls) + sliders.append(add_smoothing_slider(user_line_glyphs[axis_name], fill_area_ls, title='{} smoothing'.format(axis_name))) + else: + sliders.append(None) + + if variant_params['plot_variants'] and variant_params['add_variant_axis']: + grid1 = [[checkbox, user_tracks_checkbox],[div_type, div_scale],[radio_group_type, radio_group_scale]] + else: grid1 = [[checkbox, user_tracks_checkbox]] + + lines = list(zip(user_line_checkboxes,sliders)) + for tup in lines: grid1.append(tup) + grid1.append([legend]) + grid = gridplot(grid1, toolbar_location=None) + + output_file(output) + save(column([grid]+plot_ls)) + +#t0 = time.time() +constraint_view() +#t1 = time.time() +#print(t1-t0) \ No newline at end of file diff --git a/report/constraintview.yaml b/report/constraintview.yaml new file mode 100755 index 0000000..6ae81d2 --- /dev/null +++ b/report/constraintview.yaml @@ -0,0 +1,114 @@ +--- +###Data params +###LOCAL PATHS +#gff_path: 'Homo_sapiens.GRCh38.104.gff3.db' #if not database file, database will be created for you +#variant_path: 'gnomAD_v3.1.1_KCNQ2.csv' +#variant_path: 'gnomad_v3_variants.bed' +###REMOTE PATHS +gff_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/Homo_sapiens.GRCh38.104.gff3.db' +variant_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/gnomAD_v3.1.1_ENSG00000075043_2021_09_16_16_02_28.csv' +#variant_path: /scratch/ucgd/lustre-work/quinlan/data-shared/constraint-tools/gnomad/v3/gnomad_v3_variants.sorted.bed.gz +#variant_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/gnomad.exomes.r2.1.1.sites.20.vcf.bgz' +model_path: '/scratch/ucgd/lustre-work/quinlan/data-shared/constraint-tools/model.ptm.json' +####Plot params +gene_name: 'KCNQ2' +seqid: chr20 + +plot_height: 200 +plot_width: 1500 +track_height: 10 +exon_height: 16 #must be even +intron_size: 20 + +plot_UTRs: True +plot_direction: True + +glyph_colors: + intron: 'gray 11' + exon: 'davys gray' + arrow: '#252525' + UTR: '#969696' + variant: 'charcoal' #default lollipop color if no severity information + +track_palette: 'blues' #palette to draw random track colors from; can be any one palette in palettes.yaml +... +--- +#variants +plot_variants: True +seqid: 20 #for .vcf +#seqid: chr20 #for .bed +min_lollipop_height: 15 +lollipop_radius: 5 +lollipop_line_width: 2 +variant_severity_colors: + LOW: '#80b918' + #LOW: 'apple green' + MODERATE: '#f6aa1c' + HIGH: '#e01e37' + MODIFIER: '#778da9' +... + +--- +###User defined tracks: + +domains: + #LOCAL + #gtf_path: 'pfam.sorted.gtf.db' #must be .gff, .gtf, .gff.db, or .gtf.db; if not database, database will be created for you + #REMOTE + gtf_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/pfam.sorted.gtf.db' + seqid: chr20 + colors: #leave empty to color all randomly + Ion_trans: '#f3722c' #color these boxes as specified, any unspecified boxes colored randomly + KCNQC3-Ank-G_bd: '#A09BE7' + +domains2: + #LOCAL + #gtf_path: 'pfam.sorted.gtf.db' #must be .gff, .gtf, .gff.db, or .gtf.db + seqid: chr20 + #REMOTE + gtf_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/pfam.sorted.gtf.db' +# colors: #leave empty to color all randomly + +domains3: + #LOCAL + #gtf_path: 'pfam.sorted.gtf.db' #must be .gff, .gtf, .gff.db, or .gtf.db + seqid: chr20 + #REMOTE + gtf_path: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/pfam.sorted.gtf.db' +... +--- +###User defined axes: + +Coverage: + #axis params + y_axis_label: 'Sequencing Coverage (30x)' + num_ticks: 3 + tick_precision: 2 #number of decimal places + tick_scientific_notation: False #format ticks to scientific notation + smoothing_slider: False + lines: + Coverage: + #line params + filepath: '/scratch/ucgd/lustre-work/quinlan/u6038618/constraint-tools/data/KCNQ2_coverage.bedgraph' + color: '#00916E' + alpha: 0.5 + fill_area: True + +Mutation counts: + y_axis_label: 'Number of mutations' + num_ticks: 3 + tick_precision: 4 # + tick_scientific_notation: False + smoothing_slider: True + lines: + Expected mutation counts: + filepath: 'expected_mut_counts.txt' + color: '#f26419' + alpha: 1 + fill_area: False + Observed mutation counts: + filepath: 'observed_mut_counts.txt' + #filepath: 'observed_mut_counts_two_fields.txt' + color: '#19a7f2' + alpha: 1 + fill_area: False diff --git a/report/create_constraint_txt.py b/report/create_constraint_txt.py new file mode 100644 index 0000000..95918f7 --- /dev/null +++ b/report/create_constraint_txt.py @@ -0,0 +1,39 @@ +import argparse +import yaml +from yaml.loader import SafeLoader +import sys +sys.path.append("../utilities") +sys.path.append("../predict-constraint") + +from compute_mutation_counts import compute_mutation_counts +from process_gene_gff import gff_to_db,get_gene_feature + +def create_constraint_txt(gene_start, gene_end, chr_num, model, expected_out_filepath='expected_mut_counts.txt', observed_out_filepath='observed_mut_counts.txt', window_size=51, window_stride=25): + exp_fi = open(expected_out_filepath, 'w') + obs_fi = open(observed_out_filepath, 'w') + + mutation_dict = compute_mutation_counts('{}:{}-{}'.format(chr_num,gene_start,gene_end), model, window_size, window_stride) + xs = mutation_dict['windowPositions'] + y1s = mutation_dict['windowExpectedMutationCounts'] + y2s = mutation_dict['windowObservedMutationCounts'] + + for (x,y) in list(zip(xs,y1s)): exp_fi.write('{}\t{}\t{}\n'.format(chr_num,x,y)) + for (x,y) in list(zip(xs,y2s)): obs_fi.write('{}\t{}\t{}\n'.format(chr_num,x,y)) + + exp_fi.close() + obs_fi.close() + +parser = argparse.ArgumentParser(description='create_constraint_txt') +parser.add_argument('config_file') +args = parser.parse_args() + +with open(args.config_file) as f: + params = list(yaml.load_all(f, Loader=SafeLoader)) + plot_params = params[0] + +# 'test.db' to make sure .db does not get overwritten during development +#gff_db = gff_to_db(args.gff_path, args.gff_path + 'test.db') +gff_db = gff_to_db(plot_params['gff_path'], plot_params['gff_path'] + 'test.db') + +gene_feature = get_gene_feature(gff_db, plot_params['gene_name']) +create_constraint_txt(gene_feature.start, gene_feature.end, plot_params['seqid'], plot_params['model_path'], expected_out_filepath='expected_mut_counts.txt', observed_out_filepath='observed_mut_counts.txt', window_size=51, window_stride=25) \ No newline at end of file diff --git a/report/expected_mut_counts.txt b/report/expected_mut_counts.txt new file mode 100644 index 0000000..dd1cb79 --- /dev/null +++ b/report/expected_mut_counts.txt @@ -0,0 +1,2899 @@ +chr20 63400208 8.359165729781454 +chr20 63400233 8.84932830873693 +chr20 63400258 9.156954708536814 +chr20 63400283 9.297943514615715 +chr20 63400308 12.527951403097898 +chr20 63400333 13.162491297144902 +chr20 63400358 9.486129668404729 +chr20 63400383 6.30449327320718 +chr20 63400408 4.586377651052205 +chr20 63400433 4.958264464315085 +chr20 63400458 6.23849115511699 +chr20 63400483 7.083296020409146 +chr20 63400508 7.362968435010518 +chr20 63400533 6.306609315893323 +chr20 63400558 7.294090647462939 +chr20 63400583 7.745316474925117 +chr20 63400608 6.603705172110497 +chr20 63400633 8.09620158448064 +chr20 63400658 9.398434509892553 +chr20 63400683 9.975516723943503 +chr20 63400708 12.12426950525357 +chr20 63400733 11.095632460589037 +chr20 63400758 9.273152854206392 +chr20 63400783 10.815346300114019 +chr20 63400808 10.8391363434534 +chr20 63400833 10.216470502233273 +chr20 63400858 10.47649938633331 +chr20 63400883 10.014893126207749 +chr20 63400908 9.416647867317852 +chr20 63400933 8.42092255434612 +chr20 63400958 7.910938507019418 +chr20 63400983 13.178619935461471 +chr20 63401008 13.68176917376264 +chr20 63401033 9.467194941066387 +chr20 63401058 8.906749927553564 +chr20 63401083 7.738808228192552 +chr20 63401108 7.8525421060891185 +chr20 63401133 8.449614966226893 +chr20 63401158 10.534390928903234 +chr20 63401183 8.642910341575881 +chr20 63401208 6.0899424075744735 +chr20 63401233 7.975918986942801 +chr20 63401258 10.801784316682232 +chr20 63401283 14.14884699651495 +chr20 63401308 11.233288260291829 +chr20 63401333 8.018546793667008 +chr20 63401358 8.553936146924721 +chr20 63401383 7.524931569663814 +chr20 63401408 8.740539971778885 +chr20 63401433 10.127083846074793 +chr20 63401458 7.644002350210335 +chr20 63401483 7.2313871708326625 +chr20 63401508 9.797328289919681 +chr20 63401533 9.428482172895071 +chr20 63401558 9.079984279451555 +chr20 63401583 8.684216658219851 +chr20 63401608 7.698196410028963 +chr20 63401633 10.36393489858828 +chr20 63401658 9.3245220729752 +chr20 63401683 7.0025044785377855 +chr20 63401708 7.622050479573002 +chr20 63401733 10.116262017557037 +chr20 63401758 10.61377645421692 +chr20 63401783 8.481834192146835 +chr20 63401808 8.525319852732558 +chr20 63401833 7.945961521613198 +chr20 63401858 8.568228745170229 +chr20 63401883 10.141520029890021 +chr20 63401908 8.920934119506787 +chr20 63401933 8.524328897772719 +chr20 63401958 9.246726339636218 +chr20 63401983 8.836562116132479 +chr20 63402008 8.383642762401125 +chr20 63402033 7.849021375582869 +chr20 63402058 8.995751200698377 +chr20 63402083 9.164253235678528 +chr20 63402108 9.318110373213177 +chr20 63402133 9.569844316206977 +chr20 63402158 8.889613238846644 +chr20 63402183 9.211879094280786 +chr20 63402208 11.366929754629638 +chr20 63402233 12.843559902144335 +chr20 63402258 11.70734621322513 +chr20 63402283 9.175396094074191 +chr20 63402308 7.402171137186873 +chr20 63402333 7.150222156840062 +chr20 63402358 6.638530671748209 +chr20 63402383 7.9934274312132185 +chr20 63402408 7.278553484657042 +chr20 63402433 5.792584464151396 +chr20 63402458 5.614061777395185 +chr20 63402483 4.994953244327399 +chr20 63402508 7.154955326465987 +chr20 63402533 7.5851563532443125 +chr20 63402558 7.21398547732174 +chr20 63402583 7.194001515486768 +chr20 63402608 6.944283470524989 +chr20 63402633 8.248931174916532 +chr20 63402658 9.179187563746813 +chr20 63402683 8.604384197719671 +chr20 63402708 7.661183719192771 +chr20 63402733 7.383863213692387 +chr20 63402758 9.73379303741944 +chr20 63402783 10.285874519570715 +chr20 63402808 8.98557674238695 +chr20 63402833 8.993666362187689 +chr20 63402858 6.460600085076511 +chr20 63402883 8.308059340176476 +chr20 63402908 9.43150618393252 +chr20 63402933 5.615867876209614 +chr20 63402958 4.88377997007552 +chr20 63402983 6.638317280697057 +chr20 63403008 7.888660132277962 +chr20 63403033 8.069876652830816 +chr20 63403058 7.163347885303577 +chr20 63403083 8.805257415218712 +chr20 63403108 9.470601920122528 +chr20 63403133 6.463735559978935 +chr20 63403158 6.926710506310623 +chr20 63403183 7.566091853808972 +chr20 63403208 8.245568641901357 +chr20 63403233 12.858636578891206 +chr20 63403258 12.92211018059074 +chr20 63403283 7.841249416402782 +chr20 63403308 6.182887589470693 +chr20 63403333 6.044308767044792 +chr20 63403358 7.274272423891725 +chr20 63403383 9.072376698283048 +chr20 63403408 6.851431315880005 +chr20 63403433 4.9585549726300675 +chr20 63403458 5.1840798435962725 +chr20 63403483 5.369244774518216 +chr20 63403508 5.366765181689384 +chr20 63403533 5.08224397717654 +chr20 63403558 6.397321772400627 +chr20 63403583 9.042645239701688 +chr20 63403608 8.196990263856625 +chr20 63403633 7.462408920497797 +chr20 63403658 7.887385079842759 +chr20 63403683 6.501688392723666 +chr20 63403708 6.5814695627258715 +chr20 63403733 9.082860507345396 +chr20 63403758 10.187966218995134 +chr20 63403783 8.719071002959417 +chr20 63403808 7.754257919049042 +chr20 63403833 7.343356638308937 +chr20 63403858 10.46219380853008 +chr20 63403883 11.457750748204301 +chr20 63403908 7.643411356765986 +chr20 63403933 5.610065577046256 +chr20 63403958 6.519830938750605 +chr20 63403983 7.249349789140126 +chr20 63404008 8.34629823902714 +chr20 63404033 8.117413475300877 +chr20 63404058 7.808357189513284 +chr20 63404083 7.72956561644757 +chr20 63404108 6.5249360912562375 +chr20 63404133 6.053865994036319 +chr20 63404158 5.6014643390888095 +chr20 63404183 6.614431083995298 +chr20 63404208 8.117999894052788 +chr20 63404233 9.749244654275927 +chr20 63404258 8.623368384908131 +chr20 63404283 6.761424006562302 +chr20 63404308 8.31777274786884 +chr20 63404333 9.310275616782238 +chr20 63404358 7.819739701280152 +chr20 63404383 7.925119278951638 +chr20 63404408 9.084163428241267 +chr20 63404433 9.696746054183599 +chr20 63404458 9.08379210930925 +chr20 63404483 7.046476782003143 +chr20 63404508 6.8973871624896015 +chr20 63404533 9.352544947891927 +chr20 63404558 10.177537263071589 +chr20 63404583 9.534610432652293 +chr20 63404608 8.607888145019492 +chr20 63404633 9.618552819037333 +chr20 63404658 9.85053149776874 +chr20 63404683 10.99040158878264 +chr20 63404708 13.079743677486547 +chr20 63404733 9.471251687550211 +chr20 63404758 10.248076845147954 +chr20 63404783 10.913927602942158 +chr20 63404808 7.340532233951205 +chr20 63404833 7.812438712514075 +chr20 63404858 7.877599100004383 +chr20 63404883 8.550594861302454 +chr20 63404908 10.412331905512426 +chr20 63404933 9.364192979416943 +chr20 63404958 6.9833341307228824 +chr20 63404983 7.307251733518574 +chr20 63405008 10.46884418643887 +chr20 63405033 12.24875395466786 +chr20 63405058 8.194477525397202 +chr20 63405083 4.441848218579851 +chr20 63405108 5.295802261221485 +chr20 63405133 7.037430856684774 +chr20 63405158 8.649107655737877 +chr20 63405183 6.893724732681935 +chr20 63405208 9.169324807863504 +chr20 63405233 9.42028826700002 +chr20 63405258 9.073656442152641 +chr20 63405283 11.330948355354941 +chr20 63405308 8.960505220808901 +chr20 63405333 7.937090919701443 +chr20 63405358 8.775122850671753 +chr20 63405383 10.323336689632166 +chr20 63405408 11.6953797594745 +chr20 63405433 10.655280351986006 +chr20 63405458 7.433176280785053 +chr20 63405483 6.347297733679926 +chr20 63405508 6.388418302378171 +chr20 63405533 8.735945099572186 +chr20 63405558 9.486771807246672 +chr20 63405583 7.93923760341357 +chr20 63405608 9.155907955057994 +chr20 63405633 10.64039662374182 +chr20 63405658 8.134699762327966 +chr20 63405683 7.5618106675482215 +chr20 63405708 9.341593003208118 +chr20 63405733 8.997760387913797 +chr20 63405758 8.539793755017593 +chr20 63405783 9.070353078924942 +chr20 63405808 11.664152626395888 +chr20 63405833 9.93245959208329 +chr20 63405858 9.259443570516915 +chr20 63405883 8.714975642940356 +chr20 63405908 6.234139887573647 +chr20 63405933 5.920710110917455 +chr20 63405958 9.884702923234807 +chr20 63405983 10.728536722121852 +chr20 63406008 6.314953438483585 +chr20 63406033 6.540550288321463 +chr20 63406058 7.4887733956791624 +chr20 63406083 8.039730773607355 +chr20 63406108 8.084399524897544 +chr20 63406133 11.775907482028341 +chr20 63406158 13.61755329290164 +chr20 63406183 10.55197245481954 +chr20 63406208 10.33892603681402 +chr20 63406233 9.259374629222924 +chr20 63406258 7.456308149791677 +chr20 63406283 10.224138388540142 +chr20 63406308 11.924492070669059 +chr20 63406333 10.44723358894802 +chr20 63406358 10.797151007123574 +chr20 63406383 10.50832505674729 +chr20 63406408 8.177903059668397 +chr20 63406433 6.552815701636384 +chr20 63406458 5.698815072703402 +chr20 63406483 6.787207760931285 +chr20 63406508 8.242910258989992 +chr20 63406533 7.317877643330256 +chr20 63406558 7.578061793579801 +chr20 63406583 9.12996195828929 +chr20 63406608 10.573871925364104 +chr20 63406633 10.571782992760246 +chr20 63406658 10.208506391229326 +chr20 63406683 12.518437495497576 +chr20 63406708 13.213892110444284 +chr20 63406733 11.139409353482993 +chr20 63406758 8.844874465001944 +chr20 63406783 9.509740669619822 +chr20 63406808 9.39975090151056 +chr20 63406833 6.080983579444215 +chr20 63406858 6.931580811403315 +chr20 63406883 9.845183551688171 +chr20 63406908 11.120702553267646 +chr20 63406933 10.257283274861683 +chr20 63406958 8.748973951707928 +chr20 63406983 12.289262814482774 +chr20 63407008 14.890882044745839 +chr20 63407033 13.304083139471565 +chr20 63407058 12.731295349364173 +chr20 63407083 10.308406197208937 +chr20 63407108 8.004304025468631 +chr20 63407133 11.67009002064212 +chr20 63407158 11.087935739706326 +chr20 63407183 8.412882880512793 +chr20 63407208 11.250519057733955 +chr20 63407233 11.525977490922344 +chr20 63407258 11.73703637527959 +chr20 63407283 11.456067082855913 +chr20 63407308 9.523398484487887 +chr20 63407333 6.756264335935564 +chr20 63407358 4.5724045016218575 +chr20 63407383 7.270594686217727 +chr20 63407408 9.233921139195248 +chr20 63407433 7.659291942785007 +chr20 63407458 6.644770709452182 +chr20 63407483 6.376790171836846 +chr20 63407508 8.229509123619893 +chr20 63407533 9.20284633958096 +chr20 63407558 7.604629199189985 +chr20 63407583 6.678044939866509 +chr20 63407608 6.959465978310983 +chr20 63407633 7.37990695024154 +chr20 63407658 7.064510550263703 +chr20 63407683 7.817354780939103 +chr20 63407708 8.952385422425616 +chr20 63407733 8.142114023524414 +chr20 63407758 6.649761959654147 +chr20 63407783 7.231660360504699 +chr20 63407808 7.182353355671704 +chr20 63407833 6.500807478417617 +chr20 63407858 8.240971552165913 +chr20 63407883 7.24624305487412 +chr20 63407908 7.760939507544001 +chr20 63407933 8.722179471954014 +chr20 63407958 6.263102447701372 +chr20 63407983 6.189267769483657 +chr20 63408008 6.951959906300004 +chr20 63408033 9.996461632593725 +chr20 63408058 10.796794620684723 +chr20 63408083 7.093464038008832 +chr20 63408108 8.768445540177957 +chr20 63408133 9.100340443638876 +chr20 63408158 8.091286224947359 +chr20 63408183 7.866659040438847 +chr20 63408208 7.6187701554959135 +chr20 63408233 8.51123850980292 +chr20 63408258 7.57064897003301 +chr20 63408283 6.541364664400509 +chr20 63408308 7.621575949424798 +chr20 63408333 8.52808100163518 +chr20 63408358 8.401578890780895 +chr20 63408383 11.581329353477221 +chr20 63408408 11.15901704474755 +chr20 63408433 9.630066840556108 +chr20 63408458 10.8344983040727 +chr20 63408483 10.900755815419755 +chr20 63408508 11.224455169722228 +chr20 63408533 10.85314432669373 +chr20 63408558 9.397268131526518 +chr20 63408583 7.537469922070618 +chr20 63408608 6.208469012486674 +chr20 63408633 7.053774172276862 +chr20 63408658 7.465295420908156 +chr20 63408683 9.234479727718114 +chr20 63408708 10.691168251461827 +chr20 63408733 8.350485543435301 +chr20 63408758 7.823701927623023 +chr20 63408783 8.087049350627256 +chr20 63408808 10.13447422569049 +chr20 63408833 12.386486480337911 +chr20 63408858 10.053430615667189 +chr20 63408883 7.2785389427253815 +chr20 63408908 7.966093099359947 +chr20 63408933 8.331862251293181 +chr20 63408958 8.268930349892537 +chr20 63408983 10.4985977167097 +chr20 63409008 11.125683393149812 +chr20 63409033 10.45551216902091 +chr20 63409058 10.14255157825993 +chr20 63409083 9.369058876413602 +chr20 63409108 6.818525808799222 +chr20 63409133 8.046144655288018 +chr20 63409158 7.910732974717614 +chr20 63409183 8.520751731333482 +chr20 63409208 9.559307276290038 +chr20 63409233 6.454025134391146 +chr20 63409258 7.353750261264402 +chr20 63409283 8.104505467512878 +chr20 63409308 7.322616110507609 +chr20 63409333 5.5220560037191895 +chr20 63409358 4.666496083176414 +chr20 63409383 5.189496733477015 +chr20 63409408 6.230526708175881 +chr20 63409433 6.844274469299493 +chr20 63409458 6.778225475749574 +chr20 63409483 8.239157646531972 +chr20 63409508 8.57183272115679 +chr20 63409533 6.735035871872717 +chr20 63409558 5.38635021903958 +chr20 63409583 6.707330908254722 +chr20 63409608 8.07210824063179 +chr20 63409633 6.8722393997867455 +chr20 63409658 6.851254856787323 +chr20 63409683 8.945997452233645 +chr20 63409708 7.682713614555148 +chr20 63409733 5.89677978565593 +chr20 63409758 5.857178390125959 +chr20 63409783 6.966945039598031 +chr20 63409808 7.222617903402214 +chr20 63409833 7.062778079283249 +chr20 63409858 7.299877904236824 +chr20 63409883 7.15854789496239 +chr20 63409908 8.46146325843696 +chr20 63409933 7.1963809519863835 +chr20 63409958 6.053177312932092 +chr20 63409983 6.539408400465565 +chr20 63410008 7.883099039240223 +chr20 63410033 9.720810494236188 +chr20 63410058 9.516052365438897 +chr20 63410083 7.264541832434538 +chr20 63410108 9.027230399289342 +chr20 63410133 12.469641259792088 +chr20 63410158 10.799631723798155 +chr20 63410183 9.07498771533699 +chr20 63410208 7.575524802535659 +chr20 63410233 9.140199384838603 +chr20 63410258 9.504279709689802 +chr20 63410283 7.610185120844726 +chr20 63410308 6.959201544607221 +chr20 63410333 6.057794014200835 +chr20 63410358 5.787635026679994 +chr20 63410383 6.787132032815596 +chr20 63410408 7.52838701778222 +chr20 63410433 7.647156734738694 +chr20 63410458 9.919480905731477 +chr20 63410483 8.283173832719651 +chr20 63410508 7.5223287146352815 +chr20 63410533 9.089683639453998 +chr20 63410558 8.003391352408917 +chr20 63410583 9.61317758287896 +chr20 63410608 9.34653716256814 +chr20 63410633 7.250325267596965 +chr20 63410658 9.160072210964831 +chr20 63410683 8.636566001765528 +chr20 63410708 6.94487497424644 +chr20 63410733 6.624861921923921 +chr20 63410758 10.233069661215179 +chr20 63410783 9.99560195334729 +chr20 63410808 5.314784488437119 +chr20 63410833 5.093119417376421 +chr20 63410858 5.535893283082905 +chr20 63410883 7.392050166427996 +chr20 63410908 7.122817085288383 +chr20 63410933 7.283779160232204 +chr20 63410958 6.990934065155711 +chr20 63410983 5.028879229395643 +chr20 63411008 4.436646185122846 +chr20 63411033 6.983415179782803 +chr20 63411058 9.624125220693204 +chr20 63411083 6.559054861640054 +chr20 63411108 4.4512186264877505 +chr20 63411133 8.810340014858733 +chr20 63411158 10.142808655238829 +chr20 63411183 8.019382351510746 +chr20 63411208 8.101412203442983 +chr20 63411233 7.17096987018268 +chr20 63411258 8.019654872980132 +chr20 63411283 9.807575182829426 +chr20 63411308 12.355086457252906 +chr20 63411333 10.739269911567387 +chr20 63411358 6.788448206752371 +chr20 63411383 6.191460568790521 +chr20 63411408 6.944623827977065 +chr20 63411433 7.837253247937546 +chr20 63411458 8.280854877360616 +chr20 63411483 7.8796921654806 +chr20 63411508 8.297770401555452 +chr20 63411533 9.443037830891969 +chr20 63411558 7.578955940433224 +chr20 63411583 7.353972465404859 +chr20 63411608 6.8337704884987005 +chr20 63411633 5.05694100622636 +chr20 63411658 7.521231667556941 +chr20 63411683 9.493191713216495 +chr20 63411708 9.445690505264858 +chr20 63411733 9.970182717878064 +chr20 63411758 9.789919119310445 +chr20 63411783 9.05694790894361 +chr20 63411808 8.338207105201738 +chr20 63411833 8.431614153673102 +chr20 63411858 8.688326929237087 +chr20 63411883 6.23871129477866 +chr20 63411908 10.529649390081316 +chr20 63411933 10.879494335368552 +chr20 63411958 7.24725716060865 +chr20 63411983 9.690335240164472 +chr20 63412008 10.510653006634058 +chr20 63412033 8.31062548251526 +chr20 63412058 5.680090362440009 +chr20 63412083 10.449387661417807 +chr20 63412108 13.923135476372716 +chr20 63412133 10.384659623804248 +chr20 63412158 8.60974582605306 +chr20 63412183 12.065385429183593 +chr20 63412208 13.284486799345881 +chr20 63412233 9.034832342269777 +chr20 63412258 5.295709105268779 +chr20 63412283 4.314598586908193 +chr20 63412308 4.975834286236626 +chr20 63412333 5.556213173191408 +chr20 63412358 5.745721406211228 +chr20 63412383 10.848759138058993 +chr20 63412408 15.188706731149278 +chr20 63412433 11.083368339911173 +chr20 63412458 7.445883934828345 +chr20 63412483 7.5999480322102 +chr20 63412508 6.909160070693379 +chr20 63412533 7.601546663002003 +chr20 63412558 7.634197201226807 +chr20 63412583 7.956303107620696 +chr20 63412608 7.487602984085128 +chr20 63412633 7.28674516808112 +chr20 63412658 8.53547699752235 +chr20 63412683 7.618596434849214 +chr20 63412708 6.6934859361220855 +chr20 63412733 7.008465566133859 +chr20 63412758 6.989643352343268 +chr20 63412783 6.446164703933248 +chr20 63412808 7.888204570432337 +chr20 63412833 9.03119482972313 +chr20 63412858 7.214912160529541 +chr20 63412883 7.191474412650175 +chr20 63412908 7.4506010830547815 +chr20 63412933 5.398196583323542 +chr20 63412958 5.725622664294921 +chr20 63412983 7.546585454659726 +chr20 63413008 7.481442916185839 +chr20 63413033 7.449165017943255 +chr20 63413058 10.211224264070498 +chr20 63413083 10.387207269832729 +chr20 63413108 9.809671563242183 +chr20 63413133 8.518501516602491 +chr20 63413158 8.230524503808647 +chr20 63413183 8.962416247788571 +chr20 63413208 10.590785693968586 +chr20 63413233 11.836654258253212 +chr20 63413258 8.109826116791437 +chr20 63413283 5.979712681877297 +chr20 63413308 7.9014499267576355 +chr20 63413333 11.100447947943936 +chr20 63413358 9.974778776002605 +chr20 63413383 7.9830191904275924 +chr20 63413408 7.912252637460353 +chr20 63413433 7.7247566949668 +chr20 63413458 8.53616051653627 +chr20 63413483 8.798223788463103 +chr20 63413508 10.636401513743193 +chr20 63413533 10.262986619630414 +chr20 63413558 8.086358988193924 +chr20 63413583 7.73583894835287 +chr20 63413608 8.580106614091767 +chr20 63413633 8.191671789795977 +chr20 63413658 8.226100897714284 +chr20 63413683 8.562367420150885 +chr20 63413708 7.222609269738787 +chr20 63413733 7.3370451876682505 +chr20 63413758 7.406667776023187 +chr20 63413783 7.288199072334528 +chr20 63413808 6.4358234365905025 +chr20 63413833 7.498033672891985 +chr20 63413858 8.032429764493626 +chr20 63413883 8.924906655621767 +chr20 63413908 7.831807342131267 +chr20 63413933 7.0336898521021585 +chr20 63413958 6.712869361596811 +chr20 63413983 6.12647291495908 +chr20 63414008 9.46954904076925 +chr20 63414033 10.637867728080435 +chr20 63414058 9.819632650056606 +chr20 63414083 8.884270312911015 +chr20 63414108 9.470326055838662 +chr20 63414133 8.479862859719539 +chr20 63414158 7.235860339231648 +chr20 63414183 6.52783330813874 +chr20 63414208 8.38900253721057 +chr20 63414233 10.122595639685454 +chr20 63414258 9.74858437595745 +chr20 63414283 9.105573420084728 +chr20 63414308 7.796558237618815 +chr20 63414333 9.881513615859019 +chr20 63414358 8.884323361154676 +chr20 63414383 7.011348149951136 +chr20 63414408 8.353595014997147 +chr20 63414433 7.776532038210063 +chr20 63414458 8.867361349003756 +chr20 63414483 11.46066065596834 +chr20 63414508 8.15317005639022 +chr20 63414533 9.662174876528356 +chr20 63414558 14.876061827308869 +chr20 63414583 11.685005640765652 +chr20 63414608 7.8051539002679515 +chr20 63414633 6.296442590359415 +chr20 63414658 6.207493964972914 +chr20 63414683 8.53323461401159 +chr20 63414708 7.282793695390924 +chr20 63414733 4.977581690099404 +chr20 63414758 5.659428868638636 +chr20 63414783 6.30368439289618 +chr20 63414808 8.540535464517767 +chr20 63414833 8.762327986187385 +chr20 63414858 6.986241786177606 +chr20 63414883 8.812253889216047 +chr20 63414908 11.735208300677646 +chr20 63414933 12.21656187696167 +chr20 63414958 9.968307361186145 +chr20 63414983 7.427183907771976 +chr20 63415008 8.697118199685505 +chr20 63415033 10.505014214321703 +chr20 63415058 9.982098540126229 +chr20 63415083 9.737148590253298 +chr20 63415108 7.20216371965034 +chr20 63415133 8.545683132794695 +chr20 63415158 8.790604089120343 +chr20 63415183 6.511529135143688 +chr20 63415208 11.632673784430347 +chr20 63415233 11.411393816371564 +chr20 63415258 8.325610567372703 +chr20 63415283 12.716878775081495 +chr20 63415308 11.71620518374239 +chr20 63415333 9.492805318065265 +chr20 63415358 11.312462891318598 +chr20 63415383 11.437960371043872 +chr20 63415408 13.962858472127932 +chr20 63415433 11.540081590002641 +chr20 63415458 10.821184815000203 +chr20 63415483 13.773113476944083 +chr20 63415508 10.93158163273154 +chr20 63415533 10.37143245736829 +chr20 63415558 9.202908944288925 +chr20 63415583 8.221118430153227 +chr20 63415608 7.582228271319989 +chr20 63415633 4.820284041696117 +chr20 63415658 7.12929813481585 +chr20 63415683 8.575703125718757 +chr20 63415708 7.6669083939340155 +chr20 63415733 9.47687135741803 +chr20 63415758 9.309500228174603 +chr20 63415783 9.679528008096826 +chr20 63415808 9.467014556015897 +chr20 63415833 7.663354031229725 +chr20 63415858 8.266167227163828 +chr20 63415883 7.844677991430663 +chr20 63415908 6.805057253228962 +chr20 63415933 6.836556111524619 +chr20 63415958 7.64473859970217 +chr20 63415983 10.675199182361812 +chr20 63416008 9.235340819636864 +chr20 63416033 5.395515502264091 +chr20 63416058 6.432314248042184 +chr20 63416083 7.053119478749557 +chr20 63416108 8.357272264512062 +chr20 63416133 7.9269145983635285 +chr20 63416158 6.283098252101076 +chr20 63416183 8.822249565305228 +chr20 63416208 11.987308004736782 +chr20 63416233 8.722720825690933 +chr20 63416258 6.223068139833235 +chr20 63416283 8.050464268780612 +chr20 63416308 8.42927029116965 +chr20 63416333 8.942325999242044 +chr20 63416358 11.491357230646775 +chr20 63416383 10.020989133190525 +chr20 63416408 7.0160387684849645 +chr20 63416433 8.107082842237647 +chr20 63416458 7.355565092903072 +chr20 63416483 6.970018311459005 +chr20 63416508 7.954226623075105 +chr20 63416533 6.953636270068726 +chr20 63416558 6.797363859455068 +chr20 63416583 7.7351028850735535 +chr20 63416608 7.8162980650273575 +chr20 63416633 7.382157554045815 +chr20 63416658 8.554527382031921 +chr20 63416683 9.918740991748649 +chr20 63416708 9.730750818092183 +chr20 63416733 8.882060162956108 +chr20 63416758 9.77313403531718 +chr20 63416783 8.963866428106547 +chr20 63416808 8.926452050948104 +chr20 63416833 10.893074800861534 +chr20 63416858 12.070114964839798 +chr20 63416883 11.776726782122019 +chr20 63416908 8.578013459911245 +chr20 63416933 6.479102737724634 +chr20 63416958 7.488085528472154 +chr20 63416983 9.03535098943281 +chr20 63417008 11.69615144481171 +chr20 63417033 12.255745161433099 +chr20 63417058 8.945032979766278 +chr20 63417083 8.550240004825726 +chr20 63417108 9.044808496338483 +chr20 63417133 7.4499852676845615 +chr20 63417158 7.093394461501531 +chr20 63417183 7.41514738248581 +chr20 63417208 8.569816518543577 +chr20 63417233 10.276118769329315 +chr20 63417258 8.979061137248387 +chr20 63417283 9.392653079497638 +chr20 63417308 7.5325917778163625 +chr20 63417333 5.864792133631913 +chr20 63417358 6.300216211005537 +chr20 63417383 6.158473399801086 +chr20 63417408 7.655457176008026 +chr20 63417433 6.619764991525185 +chr20 63417458 7.346940706122354 +chr20 63417483 10.349492398540937 +chr20 63417508 8.981555106192282 +chr20 63417533 7.0907878999302785 +chr20 63417558 6.520112181423007 +chr20 63417583 5.725460249617497 +chr20 63417608 9.373373238787568 +chr20 63417633 11.712458598794539 +chr20 63417658 9.96087603249742 +chr20 63417683 8.515798642622647 +chr20 63417708 7.249102450505001 +chr20 63417733 8.595917217348019 +chr20 63417758 8.062759935312346 +chr20 63417783 9.094594962079613 +chr20 63417808 11.566531650942286 +chr20 63417833 10.99190006775966 +chr20 63417858 12.408066442581285 +chr20 63417883 12.366095704853564 +chr20 63417908 10.633928832780448 +chr20 63417933 11.509680713358547 +chr20 63417958 10.64742844703688 +chr20 63417983 8.685136156694274 +chr20 63418008 8.32057807888944 +chr20 63418033 6.834535861226696 +chr20 63418058 6.623305947269312 +chr20 63418083 7.1762201335760505 +chr20 63418108 9.782124551661667 +chr20 63418133 11.185241190700046 +chr20 63418158 9.296284617148252 +chr20 63418183 9.692843225853826 +chr20 63418208 9.822934017312388 +chr20 63418233 8.213279451421688 +chr20 63418258 9.78742924075018 +chr20 63418283 12.013144589641028 +chr20 63418308 9.231380872822708 +chr20 63418333 9.875746929428335 +chr20 63418358 8.809009892714991 +chr20 63418383 6.805025290611186 +chr20 63418408 8.737254342922919 +chr20 63418433 10.544986517583736 +chr20 63418458 9.852570015072644 +chr20 63418483 8.257750624615175 +chr20 63418508 8.122120635004581 +chr20 63418533 8.789606934433444 +chr20 63418558 9.222529442804397 +chr20 63418583 7.355299876956501 +chr20 63418608 8.455503891286499 +chr20 63418633 9.793244209728464 +chr20 63418658 9.73548219502728 +chr20 63418683 11.784226071885547 +chr20 63418708 9.733296886013555 +chr20 63418733 9.446680687424056 +chr20 63418758 9.804542319254692 +chr20 63418783 8.10462790114583 +chr20 63418808 11.300098304038066 +chr20 63418833 11.448288171961053 +chr20 63418858 8.85156975992299 +chr20 63418883 9.592255907571845 +chr20 63418908 10.23632003595097 +chr20 63418933 7.926825275133788 +chr20 63418958 6.136666912458705 +chr20 63418983 9.084567509391523 +chr20 63419008 12.728120106193908 +chr20 63419033 11.196848651875715 +chr20 63419058 8.82539269789507 +chr20 63419083 8.978027178761465 +chr20 63419108 7.925764603345926 +chr20 63419133 6.975683712588079 +chr20 63419158 7.050603601954499 +chr20 63419183 7.9014324597387455 +chr20 63419208 10.951239019250682 +chr20 63419233 8.673688678927018 +chr20 63419258 7.531806207085305 +chr20 63419283 10.207931756772664 +chr20 63419308 10.390310368171694 +chr20 63419333 9.827432538590687 +chr20 63419358 7.552594499333722 +chr20 63419383 8.80892243706325 +chr20 63419408 9.975194458278482 +chr20 63419433 10.510800552645481 +chr20 63419458 10.105807278901231 +chr20 63419483 8.461023833976792 +chr20 63419508 9.72651672767669 +chr20 63419533 7.302844036035538 +chr20 63419558 6.519032796867151 +chr20 63419583 10.903660483620286 +chr20 63419608 13.030521228636061 +chr20 63419633 10.367638822569285 +chr20 63419658 7.785337619829155 +chr20 63419683 7.741703578195094 +chr20 63419708 10.956250524502808 +chr20 63419733 10.416020682906634 +chr20 63419758 8.055945434076204 +chr20 63419783 8.706350702439536 +chr20 63419808 9.58779934336696 +chr20 63419833 9.494909504344513 +chr20 63419858 6.208935579156878 +chr20 63419883 4.0361436750680415 +chr20 63419908 4.076829217037717 +chr20 63419933 4.656862730369694 +chr20 63419958 5.077520621652503 +chr20 63419983 5.599887242236393 +chr20 63420008 6.91266548318879 +chr20 63420033 9.995282606935572 +chr20 63420058 9.174726883436819 +chr20 63420083 6.702090040502343 +chr20 63420108 9.396075119008259 +chr20 63420133 9.786175354213825 +chr20 63420158 9.376841239744154 +chr20 63420183 7.685473368898336 +chr20 63420208 5.41862350614715 +chr20 63420233 7.181151659233517 +chr20 63420258 6.3761709873654775 +chr20 63420283 8.325039664738519 +chr20 63420308 8.64074590532552 +chr20 63420333 5.724783745273909 +chr20 63420358 7.908263367789074 +chr20 63420383 6.896804508538475 +chr20 63420408 4.67225586565814 +chr20 63420433 6.927487828764149 +chr20 63420458 9.261272413598206 +chr20 63420483 7.794585932224934 +chr20 63420508 9.122845624155282 +chr20 63420533 12.177825948089142 +chr20 63420558 9.790653452988977 +chr20 63420583 10.308785186915044 +chr20 63420608 11.632842909141683 +chr20 63420633 13.27543738740601 +chr20 63420658 12.365645584594827 +chr20 63420683 10.479308933322752 +chr20 63420708 8.805996173649781 +chr20 63420733 6.6582534905822985 +chr20 63420758 9.604062632497275 +chr20 63420783 12.855870898625762 +chr20 63420808 10.70511037676172 +chr20 63420833 7.608138388445364 +chr20 63420858 6.551191178496629 +chr20 63420883 9.4255577874503 +chr20 63420908 11.821342302892202 +chr20 63420933 7.062449284593534 +chr20 63420958 7.239587845877435 +chr20 63420983 10.08402720808717 +chr20 63421008 8.09380745908313 +chr20 63421033 7.511490276156317 +chr20 63421058 8.63772846911145 +chr20 63421083 8.742101232442481 +chr20 63421108 8.54631086526401 +chr20 63421133 6.770302402363032 +chr20 63421158 8.212984676309487 +chr20 63421183 10.128478794146819 +chr20 63421208 9.713421729521045 +chr20 63421233 8.04076266283333 +chr20 63421258 8.335231439688146 +chr20 63421283 9.006379699901153 +chr20 63421308 7.188961261516916 +chr20 63421333 6.49336466383876 +chr20 63421358 7.460473743243878 +chr20 63421383 8.334443286511878 +chr20 63421408 10.128863315549165 +chr20 63421433 9.724420702051141 +chr20 63421458 8.50316170236857 +chr20 63421483 7.521665243942136 +chr20 63421508 5.837962549739933 +chr20 63421533 7.630159946875635 +chr20 63421558 11.162332464995997 +chr20 63421583 10.803855411789952 +chr20 63421608 10.22498820323884 +chr20 63421633 11.791835275539604 +chr20 63421658 9.423357646081069 +chr20 63421683 9.230196376373291 +chr20 63421708 9.80728761804343 +chr20 63421733 8.15419878322678 +chr20 63421758 8.217320155684488 +chr20 63421783 9.88511494658366 +chr20 63421808 12.549677321294707 +chr20 63421833 13.875921323022919 +chr20 63421858 12.459125378717085 +chr20 63421883 11.022406917903893 +chr20 63421908 9.690169509962937 +chr20 63421933 11.365359926836316 +chr20 63421958 12.683639375089419 +chr20 63421983 9.149070359920014 +chr20 63422008 6.604459446629722 +chr20 63422033 6.469510747205898 +chr20 63422058 7.6467244756200605 +chr20 63422083 9.228910303809904 +chr20 63422108 9.488463181147358 +chr20 63422133 7.722796928152782 +chr20 63422158 8.283615090350578 +chr20 63422183 8.880924127340107 +chr20 63422208 8.919799420252623 +chr20 63422233 9.572905596096968 +chr20 63422258 8.481422861496943 +chr20 63422283 8.735521994747108 +chr20 63422308 10.16549878444527 +chr20 63422333 11.209562852783854 +chr20 63422358 9.734462820202745 +chr20 63422383 10.085495210364327 +chr20 63422408 9.661809979853599 +chr20 63422433 9.924382021685405 +chr20 63422458 11.464535678472927 +chr20 63422483 10.856772065125194 +chr20 63422508 9.892994770918287 +chr20 63422533 9.779744740208526 +chr20 63422558 8.972309414157374 +chr20 63422583 8.205548807969043 +chr20 63422608 9.104533981002685 +chr20 63422633 7.399790739336511 +chr20 63422658 8.57644005978438 +chr20 63422683 8.173721263894082 +chr20 63422708 7.112425763080565 +chr20 63422733 7.637671622590818 +chr20 63422758 6.8825164887781325 +chr20 63422783 9.494588244196125 +chr20 63422808 13.243251629556772 +chr20 63422833 14.854079082962018 +chr20 63422858 11.543047559852338 +chr20 63422883 11.65506389140839 +chr20 63422908 13.01069319645577 +chr20 63422933 9.613816414233156 +chr20 63422958 7.59452088595753 +chr20 63422983 7.401095131923269 +chr20 63423008 8.802370013555949 +chr20 63423033 7.929326185727853 +chr20 63423058 9.028785648294912 +chr20 63423083 9.03640120038353 +chr20 63423108 5.549753301689657 +chr20 63423133 5.74591907009403 +chr20 63423158 7.652447752153103 +chr20 63423183 6.652865616487067 +chr20 63423208 5.187244775114191 +chr20 63423233 6.085120763679853 +chr20 63423258 9.296887996996755 +chr20 63423283 10.613928195491228 +chr20 63423308 8.249379620940926 +chr20 63423333 9.091952114807238 +chr20 63423358 8.076117377851965 +chr20 63423383 6.254813379101058 +chr20 63423408 7.204958661794636 +chr20 63423433 8.794252675771897 +chr20 63423458 7.242738119220675 +chr20 63423483 5.817456638019639 +chr20 63423508 7.903725464823992 +chr20 63423533 8.439810742940818 +chr20 63423558 9.468913617642947 +chr20 63423583 9.180827678787827 +chr20 63423608 6.801919137673385 +chr20 63423633 6.067106342067416 +chr20 63423658 7.505948435931768 +chr20 63423683 10.77582731959851 +chr20 63423708 9.58414632486909 +chr20 63423733 7.523959066804288 +chr20 63423758 7.409325119632597 +chr20 63423783 9.603997864579766 +chr20 63423808 10.505318462995758 +chr20 63423833 7.487639670086897 +chr20 63423858 9.482268782902231 +chr20 63423883 10.152581556399525 +chr20 63423908 11.528594024190802 +chr20 63423933 10.679107951262425 +chr20 63423958 6.519860992272327 +chr20 63423983 6.3093904504051475 +chr20 63424008 9.365689129410647 +chr20 63424033 9.875172577550327 +chr20 63424058 8.732930876040879 +chr20 63424083 10.16508650594927 +chr20 63424108 10.302569858672861 +chr20 63424133 10.77856818066187 +chr20 63424158 9.582903540440771 +chr20 63424183 9.840066754690204 +chr20 63424208 8.756827965334274 +chr20 63424233 7.722630267447087 +chr20 63424258 10.430300829093715 +chr20 63424283 8.422806096799203 +chr20 63424308 5.78931241584936 +chr20 63424333 7.359038939984588 +chr20 63424358 10.793833341127959 +chr20 63424383 13.53979081783156 +chr20 63424408 11.322676700104994 +chr20 63424433 8.13131060940175 +chr20 63424458 8.131991794840165 +chr20 63424483 6.184330407268609 +chr20 63424508 5.061091337472844 +chr20 63424533 6.564274875643248 +chr20 63424558 5.877002643421294 +chr20 63424583 5.809498591530271 +chr20 63424608 8.855713776285556 +chr20 63424633 7.915371417957558 +chr20 63424658 6.800415499728159 +chr20 63424683 8.559364878397359 +chr20 63424708 8.59639307949869 +chr20 63424733 7.973547251399364 +chr20 63424758 8.185878389862928 +chr20 63424783 10.003933144913 +chr20 63424808 10.049597668583198 +chr20 63424833 8.023342719375433 +chr20 63424858 8.756289460881534 +chr20 63424883 10.412608431907747 +chr20 63424908 9.821959681653196 +chr20 63424933 7.270338461094827 +chr20 63424958 8.186841533228883 +chr20 63424983 10.603473750604337 +chr20 63425008 8.663797918272964 +chr20 63425033 6.635702736321199 +chr20 63425058 8.701265432597156 +chr20 63425083 9.02019845366874 +chr20 63425108 5.881478401941763 +chr20 63425133 6.53169628873296 +chr20 63425158 6.395381871488908 +chr20 63425183 4.94610293519471 +chr20 63425208 5.2561090673229405 +chr20 63425233 5.080223855936574 +chr20 63425258 4.7698644419580605 +chr20 63425283 5.477103607805796 +chr20 63425308 9.287039958794132 +chr20 63425333 10.695964124878454 +chr20 63425358 8.27827471728885 +chr20 63425383 7.454020743354569 +chr20 63425408 7.952854318497711 +chr20 63425433 7.736911382368653 +chr20 63425458 6.494800700368451 +chr20 63425483 7.960944516051001 +chr20 63425508 8.690161244632204 +chr20 63425533 8.00386383729194 +chr20 63425558 7.398915509060618 +chr20 63425583 6.634727352488666 +chr20 63425608 6.72405119803642 +chr20 63425633 6.163789472214128 +chr20 63425658 6.710068130344236 +chr20 63425683 8.414594671987834 +chr20 63425708 7.223398835566971 +chr20 63425733 6.42338111029869 +chr20 63425758 6.64744226067646 +chr20 63425783 5.391864795662175 +chr20 63425808 7.757090729293717 +chr20 63425833 7.995207480776478 +chr20 63425858 5.2134197303628715 +chr20 63425883 6.072258745729603 +chr20 63425908 5.990343581452272 +chr20 63425933 8.362678890537044 +chr20 63425958 10.902608889317461 +chr20 63425983 10.219664520168584 +chr20 63426008 11.02906145592068 +chr20 63426033 11.313281778695998 +chr20 63426058 9.568832394252114 +chr20 63426083 8.61771229574573 +chr20 63426108 7.884889963236209 +chr20 63426133 7.680415462181899 +chr20 63426158 7.8584206120841635 +chr20 63426183 6.3235771863937 +chr20 63426208 5.5834643900381895 +chr20 63426233 8.07382558294586 +chr20 63426258 9.87603083363149 +chr20 63426283 7.061824087122097 +chr20 63426308 7.990176167686893 +chr20 63426333 8.306149214808643 +chr20 63426358 6.04496382632051 +chr20 63426383 5.799347278181794 +chr20 63426408 5.22039951401893 +chr20 63426433 6.165125258410351 +chr20 63426458 6.547187589730102 +chr20 63426483 4.987518888014096 +chr20 63426508 5.119695468599772 +chr20 63426533 7.066825509818437 +chr20 63426558 6.553730715084896 +chr20 63426583 5.645642914557588 +chr20 63426608 6.1227875679389845 +chr20 63426633 5.181162669913984 +chr20 63426658 4.381369439157069 +chr20 63426683 6.696908809145455 +chr20 63426708 7.90372983687188 +chr20 63426733 6.1544664476135 +chr20 63426758 6.826689082820661 +chr20 63426783 7.865949517908442 +chr20 63426808 8.039707594445867 +chr20 63426833 7.6722889077980385 +chr20 63426858 6.419085086515973 +chr20 63426883 5.1367119352169155 +chr20 63426908 4.9051316807926755 +chr20 63426933 6.793728925683012 +chr20 63426958 7.827780751429854 +chr20 63426983 8.500372334816685 +chr20 63427008 7.543617328726293 +chr20 63427033 6.9732626231724355 +chr20 63427058 8.090672964426533 +chr20 63427083 6.9952271750194015 +chr20 63427108 5.069691535946675 +chr20 63427133 6.073689344832688 +chr20 63427158 7.99674151498364 +chr20 63427183 8.901725242710336 +chr20 63427208 7.412134048373818 +chr20 63427233 4.523333654638048 +chr20 63427258 4.393950634678066 +chr20 63427283 6.231410413502391 +chr20 63427308 8.60481108663845 +chr20 63427333 8.414950394932303 +chr20 63427358 10.361418189669223 +chr20 63427383 12.01214040324762 +chr20 63427408 10.713545378014322 +chr20 63427433 9.352272200336174 +chr20 63427458 7.286235363241054 +chr20 63427483 6.099107603877555 +chr20 63427508 6.376194779883081 +chr20 63427533 9.973000368614784 +chr20 63427558 8.930890413632891 +chr20 63427583 4.590225704825245 +chr20 63427608 5.988986390391151 +chr20 63427633 6.591292728000628 +chr20 63427658 5.001876278914068 +chr20 63427683 4.41632493610527 +chr20 63427708 6.017828702195081 +chr20 63427733 7.170666667281367 +chr20 63427758 6.964354145773912 +chr20 63427783 5.873811112933624 +chr20 63427808 6.55752865921202 +chr20 63427833 8.164883893828723 +chr20 63427858 7.732757600722869 +chr20 63427883 8.002885693097587 +chr20 63427908 6.847983994801404 +chr20 63427933 7.794326018094524 +chr20 63427958 10.873040923918603 +chr20 63427983 9.601922203525582 +chr20 63428008 6.9343484301847065 +chr20 63428033 9.062565108002316 +chr20 63428058 12.970511493566972 +chr20 63428083 10.353091154116065 +chr20 63428108 8.705757212468404 +chr20 63428133 11.057014425223967 +chr20 63428158 8.814955722300912 +chr20 63428183 8.093435509669646 +chr20 63428208 7.968915318532002 +chr20 63428233 7.890467395933478 +chr20 63428258 8.045286095519263 +chr20 63428283 6.615843109133825 +chr20 63428308 8.389275766933173 +chr20 63428333 11.049955952105002 +chr20 63428358 9.853331932646496 +chr20 63428383 6.4092812433616215 +chr20 63428408 6.6698369706274345 +chr20 63428433 6.710839145915828 +chr20 63428458 7.483655775826025 +chr20 63428483 7.813975908367989 +chr20 63428508 6.986318288093815 +chr20 63428533 10.74585700018053 +chr20 63428558 9.443121386920303 +chr20 63428583 5.981958211009465 +chr20 63428608 6.24027207226066 +chr20 63428633 5.475205743325615 +chr20 63428658 6.219359153620405 +chr20 63428683 7.302067938090759 +chr20 63428708 9.209067078732826 +chr20 63428733 10.75062477401892 +chr20 63428758 9.928963009130646 +chr20 63428783 7.359967909697787 +chr20 63428808 7.631196522702332 +chr20 63428833 9.572238827810873 +chr20 63428858 6.856919625246956 +chr20 63428883 5.029375655391395 +chr20 63428908 5.14243591349826 +chr20 63428933 6.258922545347506 +chr20 63428958 6.376982593113352 +chr20 63428983 6.7234983060786355 +chr20 63429008 9.416816875372128 +chr20 63429033 10.005021847814486 +chr20 63429058 9.178022810513863 +chr20 63429083 11.280521286706287 +chr20 63429108 10.171196523242257 +chr20 63429133 8.658346367131848 +chr20 63429158 11.346927590104013 +chr20 63429183 9.084248385543848 +chr20 63429208 7.444989068983308 +chr20 63429233 8.050604610649929 +chr20 63429258 9.12062131675037 +chr20 63429283 10.454130396225652 +chr20 63429308 8.6293599798387 +chr20 63429333 7.582892532708878 +chr20 63429358 10.677828904199751 +chr20 63429383 11.489107644819834 +chr20 63429408 8.576733720268152 +chr20 63429433 8.363228160065324 +chr20 63429458 10.122679430271049 +chr20 63429483 11.297111134937268 +chr20 63429508 9.542531915384272 +chr20 63429533 8.754551164584848 +chr20 63429558 7.400581538662701 +chr20 63429583 6.881919443775196 +chr20 63429608 7.2355173154562324 +chr20 63429633 5.849988871525432 +chr20 63429658 5.500989012489414 +chr20 63429683 5.0689924275613905 +chr20 63429708 7.7043540530762105 +chr20 63429733 8.851531877583085 +chr20 63429758 5.90786969261308 +chr20 63429783 7.730236803111611 +chr20 63429808 10.317207644836367 +chr20 63429833 8.830764324695597 +chr20 63429858 7.370115031090478 +chr20 63429883 6.592748404305257 +chr20 63429908 6.705711382431285 +chr20 63429933 7.897709446052567 +chr20 63429958 7.787161394700087 +chr20 63429983 7.2969771386719975 +chr20 63430008 7.991724030554728 +chr20 63430033 9.059985941208383 +chr20 63430058 12.48509348006972 +chr20 63430083 12.742906347982283 +chr20 63430108 8.061854007739894 +chr20 63430133 7.73185674344642 +chr20 63430158 11.716735867003932 +chr20 63430183 10.18902110729119 +chr20 63430208 8.271455537273809 +chr20 63430233 9.21187836414213 +chr20 63430258 7.853914926575016 +chr20 63430283 8.279224939967609 +chr20 63430308 7.838159413770599 +chr20 63430333 8.049009190421685 +chr20 63430358 8.608034848447279 +chr20 63430383 7.810903549357256 +chr20 63430408 6.786828838638034 +chr20 63430433 6.06476814225512 +chr20 63430458 7.364744446467841 +chr20 63430483 7.024503259930597 +chr20 63430508 5.554218303914108 +chr20 63430533 5.627455254875926 +chr20 63430558 6.304409291015279 +chr20 63430583 8.970226470393136 +chr20 63430608 9.317030394085439 +chr20 63430633 6.876597078011132 +chr20 63430658 7.316665246079197 +chr20 63430683 6.982451938182449 +chr20 63430708 8.128253862803865 +chr20 63430733 7.862133886892382 +chr20 63430758 5.131605097048114 +chr20 63430783 5.39497725087676 +chr20 63430808 6.693136922500836 +chr20 63430833 6.984772836617203 +chr20 63430858 6.549977281969992 +chr20 63430883 7.690569561620672 +chr20 63430908 8.633335920244804 +chr20 63430933 8.36514197312481 +chr20 63430958 7.534174571459935 +chr20 63430983 7.554926574828898 +chr20 63431008 8.3556474784487 +chr20 63431033 9.501252921232624 +chr20 63431058 9.550306393497978 +chr20 63431083 8.723855564974038 +chr20 63431108 9.07265287382579 +chr20 63431133 8.112329841945801 +chr20 63431158 9.945086401586043 +chr20 63431183 9.903166394843531 +chr20 63431208 7.436894504997531 +chr20 63431233 8.334025509511504 +chr20 63431258 8.44088009350324 +chr20 63431283 7.3939249993393314 +chr20 63431308 6.791755200613248 +chr20 63431333 7.510944152395349 +chr20 63431358 7.974423296627277 +chr20 63431383 8.665168425858784 +chr20 63431408 8.338495240729955 +chr20 63431433 5.287681013903419 +chr20 63431458 5.206704306238319 +chr20 63431483 5.855315074799319 +chr20 63431508 4.943302845057845 +chr20 63431533 5.143493500005633 +chr20 63431558 6.617348539564434 +chr20 63431583 8.306019836568408 +chr20 63431608 7.421552314284163 +chr20 63431633 6.677292591234112 +chr20 63431658 9.549486918137193 +chr20 63431683 9.838852875363854 +chr20 63431708 7.127475865542056 +chr20 63431733 7.641791385445846 +chr20 63431758 7.628189634069739 +chr20 63431783 6.228159733261231 +chr20 63431808 7.567877946009264 +chr20 63431833 8.777381577553157 +chr20 63431858 8.242402452423542 +chr20 63431883 9.404829743367197 +chr20 63431908 9.146731543702899 +chr20 63431933 7.188880633432038 +chr20 63431958 9.600024612634424 +chr20 63431983 10.044440581102702 +chr20 63432008 7.860859067575102 +chr20 63432033 7.529225744506933 +chr20 63432058 8.082415508065539 +chr20 63432083 9.729357065764148 +chr20 63432108 9.025325088702633 +chr20 63432133 8.996863926300948 +chr20 63432158 9.516578571022572 +chr20 63432183 7.244512583607168 +chr20 63432208 7.9947564643246665 +chr20 63432233 8.704772630499411 +chr20 63432258 8.30643540551197 +chr20 63432283 8.422360277087112 +chr20 63432308 6.762183554967337 +chr20 63432333 7.317303368193438 +chr20 63432358 7.4709492735825975 +chr20 63432383 8.412793450282422 +chr20 63432408 9.864905365045123 +chr20 63432433 8.264690987806006 +chr20 63432458 8.188413012113354 +chr20 63432483 7.615254678358774 +chr20 63432508 6.649674621109638 +chr20 63432533 8.168088891446436 +chr20 63432558 7.6630955522253785 +chr20 63432583 7.737757305473411 +chr20 63432608 8.276155042257482 +chr20 63432633 7.256266414599564 +chr20 63432658 8.679176119436375 +chr20 63432683 8.839278571673987 +chr20 63432708 8.330837277824378 +chr20 63432733 8.403186761420162 +chr20 63432758 7.09769196712908 +chr20 63432783 8.475218262663532 +chr20 63432808 8.258055918081515 +chr20 63432833 8.365906519734917 +chr20 63432858 9.892409733188744 +chr20 63432883 8.347226839361797 +chr20 63432908 7.98963938494377 +chr20 63432933 10.861463633342352 +chr20 63432958 10.880433496182057 +chr20 63432983 9.787881179678255 +chr20 63433008 10.16939484151356 +chr20 63433033 9.60115029280097 +chr20 63433058 7.953732139153708 +chr20 63433083 5.287238417084718 +chr20 63433108 5.800375036686912 +chr20 63433133 6.018480026757433 +chr20 63433158 8.510100208079024 +chr20 63433183 9.012562519279967 +chr20 63433208 7.442250056352552 +chr20 63433233 8.791523897698388 +chr20 63433258 6.940788664501039 +chr20 63433283 6.629915930623203 +chr20 63433308 7.842573879210574 +chr20 63433333 7.648180844724071 +chr20 63433358 10.047957271706508 +chr20 63433383 10.457908530124747 +chr20 63433408 7.414434396371776 +chr20 63433433 7.762195286462657 +chr20 63433458 9.290811072746678 +chr20 63433483 11.703570386187337 +chr20 63433508 9.959315106922356 +chr20 63433533 7.811893109775236 +chr20 63433558 12.452986549423187 +chr20 63433583 10.19038988988346 +chr20 63433608 5.612781275742321 +chr20 63433633 7.82809868957198 +chr20 63433658 8.069769310565958 +chr20 63433683 4.87184986777133 +chr20 63433708 4.17136078273251 +chr20 63433733 5.331793521903291 +chr20 63433758 5.033018600884669 +chr20 63433783 8.474382855883851 +chr20 63433808 11.317244701748358 +chr20 63433833 10.274388044590081 +chr20 63433858 10.43652231650949 +chr20 63433883 10.531007558538416 +chr20 63433908 10.070457925377088 +chr20 63433933 12.968474901205262 +chr20 63433958 14.221270289747592 +chr20 63433983 10.440807770614622 +chr20 63434008 6.864210140384823 +chr20 63434033 6.087042101202825 +chr20 63434058 7.882038778304277 +chr20 63434083 8.239874580565779 +chr20 63434108 7.426997673408521 +chr20 63434133 8.486363738443224 +chr20 63434158 10.160816825916122 +chr20 63434183 7.085680546013338 +chr20 63434208 6.526415561160883 +chr20 63434233 7.623832460831088 +chr20 63434258 6.379275034181795 +chr20 63434283 7.09536424681746 +chr20 63434308 7.2642214283480815 +chr20 63434333 9.606524369617464 +chr20 63434358 10.517423497592882 +chr20 63434383 8.923142507884629 +chr20 63434408 8.441612228535739 +chr20 63434433 6.093007917387475 +chr20 63434458 5.6681836377982595 +chr20 63434483 7.677989784979838 +chr20 63434508 8.051068245260977 +chr20 63434533 8.990953189930831 +chr20 63434558 11.45652448141561 +chr20 63434583 11.357361018953387 +chr20 63434608 10.3056758663761 +chr20 63434633 9.890904633498916 +chr20 63434658 9.15599589788892 +chr20 63434683 9.626688485989941 +chr20 63434708 8.399783378983127 +chr20 63434733 10.594214721062805 +chr20 63434758 13.3586229072054 +chr20 63434783 10.32054446131323 +chr20 63434808 7.294881247384149 +chr20 63434833 5.049759062978873 +chr20 63434858 4.76210601108447 +chr20 63434883 6.452947437264342 +chr20 63434908 6.0514806373289485 +chr20 63434933 4.9608057141946755 +chr20 63434958 7.760187594214538 +chr20 63434983 9.879986857362395 +chr20 63435008 8.662473508980801 +chr20 63435033 8.550227574610119 +chr20 63435058 8.861133316889031 +chr20 63435083 8.12948199655082 +chr20 63435108 8.186223270120681 +chr20 63435133 7.164034389997348 +chr20 63435158 7.677800076453833 +chr20 63435183 8.198379845063881 +chr20 63435208 5.655971963860371 +chr20 63435233 4.614032428497921 +chr20 63435258 5.476365882648262 +chr20 63435283 6.4366486132033485 +chr20 63435308 7.238815805666032 +chr20 63435333 6.853811143791262 +chr20 63435358 6.327528106157913 +chr20 63435383 5.791266812402768 +chr20 63435408 6.4620603274173485 +chr20 63435433 7.534784884814896 +chr20 63435458 6.969966213992584 +chr20 63435483 7.293865113793035 +chr20 63435508 7.457179686632286 +chr20 63435533 7.624296008202699 +chr20 63435558 7.263900170983478 +chr20 63435583 8.19029383907977 +chr20 63435608 9.010503498074387 +chr20 63435633 6.529508629798556 +chr20 63435658 5.852672501297475 +chr20 63435683 5.897957032638198 +chr20 63435708 5.77125902552029 +chr20 63435733 8.949030288978848 +chr20 63435758 8.37356504485526 +chr20 63435783 5.068527214426442 +chr20 63435808 4.74134439027928 +chr20 63435833 5.3833127696899075 +chr20 63435858 7.839055641709205 +chr20 63435883 9.934318381489787 +chr20 63435908 7.747221599331832 +chr20 63435933 4.936960706145001 +chr20 63435958 4.731288277848518 +chr20 63435983 6.539983505507398 +chr20 63436008 6.4290881635172425 +chr20 63436033 4.417158171194962 +chr20 63436058 4.81461117032279 +chr20 63436083 6.028733841549253 +chr20 63436108 7.305755165950343 +chr20 63436133 8.111626327619096 +chr20 63436158 7.3478394274261625 +chr20 63436183 7.707365945286732 +chr20 63436208 7.95113921923365 +chr20 63436233 7.788336590410478 +chr20 63436258 8.471034856024348 +chr20 63436283 8.039675024388927 +chr20 63436308 8.005576784532838 +chr20 63436333 8.756353541355592 +chr20 63436358 6.935215988182189 +chr20 63436383 6.336951695333153 +chr20 63436408 6.769086912864514 +chr20 63436433 5.09690603881828 +chr20 63436458 5.119205084755443 +chr20 63436483 7.332125782115529 +chr20 63436508 9.266535629407025 +chr20 63436533 8.833607239785213 +chr20 63436558 8.256749413266208 +chr20 63436583 9.575872439027409 +chr20 63436608 9.530497575391314 +chr20 63436633 7.578217671052862 +chr20 63436658 5.739893905898768 +chr20 63436683 5.808946915963013 +chr20 63436708 5.901947768662134 +chr20 63436733 5.338797852737482 +chr20 63436758 5.408798546256782 +chr20 63436783 6.477634271333995 +chr20 63436808 7.004000003583114 +chr20 63436833 7.004676770837499 +chr20 63436858 8.307580485591528 +chr20 63436883 6.875499790456172 +chr20 63436908 6.990105245557107 +chr20 63436933 7.571525933308901 +chr20 63436958 6.102310964508784 +chr20 63436983 6.398657381085764 +chr20 63437008 6.716647316593468 +chr20 63437033 6.138113240498447 +chr20 63437058 6.9603174736224664 +chr20 63437083 6.780818020158359 +chr20 63437108 6.2842646135483395 +chr20 63437133 8.942723945386598 +chr20 63437158 9.52216365807995 +chr20 63437183 8.743643774389318 +chr20 63437208 7.319830620753251 +chr20 63437233 5.659975876834974 +chr20 63437258 7.315354338839012 +chr20 63437283 7.62654138193872 +chr20 63437308 9.06599741380432 +chr20 63437333 9.550080082940552 +chr20 63437358 6.706491262708104 +chr20 63437383 5.773070017067677 +chr20 63437408 5.041935180243055 +chr20 63437433 5.335380714894394 +chr20 63437458 6.22070143839223 +chr20 63437483 6.0252194681018025 +chr20 63437508 7.260911002723933 +chr20 63437533 8.752083037203215 +chr20 63437558 7.395559294345928 +chr20 63437583 4.955479130651568 +chr20 63437608 4.982412508193771 +chr20 63437633 6.43974127109678 +chr20 63437658 6.128590563427345 +chr20 63437683 6.307051516779695 +chr20 63437708 6.093600676132158 +chr20 63437733 6.363374410797611 +chr20 63437758 6.427615649848914 +chr20 63437783 5.440487158107971 +chr20 63437808 5.97949310204924 +chr20 63437833 7.367525660826148 +chr20 63437858 8.517818452658616 +chr20 63437883 7.980324268223997 +chr20 63437908 7.373371150342295 +chr20 63437933 9.649686629781936 +chr20 63437958 11.066657260449196 +chr20 63437983 7.9235407664582445 +chr20 63438008 5.696247963094586 +chr20 63438033 6.4995707757950125 +chr20 63438058 7.2207497304119554 +chr20 63438083 8.48222147164784 +chr20 63438108 8.340402077003606 +chr20 63438133 5.92340774729792 +chr20 63438158 9.188523828877582 +chr20 63438183 10.97830625872054 +chr20 63438208 10.387011923856157 +chr20 63438233 11.321714195722947 +chr20 63438258 8.272190420689252 +chr20 63438283 5.864687378855439 +chr20 63438308 6.85516042579313 +chr20 63438333 8.0522195562899 +chr20 63438358 9.942185550431185 +chr20 63438383 11.023810996024611 +chr20 63438408 10.57632689636357 +chr20 63438433 8.505661964394347 +chr20 63438458 7.486869901799953 +chr20 63438483 7.331024073683807 +chr20 63438508 7.111466790198403 +chr20 63438533 8.625911062930486 +chr20 63438558 7.46929107254443 +chr20 63438583 7.092267357254341 +chr20 63438608 6.962012822761289 +chr20 63438633 7.740076249060843 +chr20 63438658 7.265041692267198 +chr20 63438683 5.407169937600794 +chr20 63438708 6.349202348824122 +chr20 63438733 9.942539871023754 +chr20 63438758 12.321814589059324 +chr20 63438783 11.757132129862118 +chr20 63438808 10.714101880439774 +chr20 63438833 10.966832075181145 +chr20 63438858 10.98330773169609 +chr20 63438883 10.947152748069588 +chr20 63438908 11.408564925084866 +chr20 63438933 8.833789483781016 +chr20 63438958 6.776560060443309 +chr20 63438983 6.900085407515024 +chr20 63439008 6.112383406291532 +chr20 63439033 5.859022278798855 +chr20 63439058 6.009654977342935 +chr20 63439083 5.225374437052458 +chr20 63439108 6.164821486689408 +chr20 63439133 8.523356532098882 +chr20 63439158 8.0571602509176 +chr20 63439183 6.942641079879527 +chr20 63439208 6.853411997457159 +chr20 63439233 5.721164945117259 +chr20 63439258 6.5172954561406895 +chr20 63439283 6.375041495578114 +chr20 63439308 6.155298598708386 +chr20 63439333 6.9921315554879255 +chr20 63439358 7.97009439602069 +chr20 63439383 10.331168158643868 +chr20 63439408 8.865462271860585 +chr20 63439433 5.970209106868742 +chr20 63439458 5.688133352851087 +chr20 63439483 6.6286469059817215 +chr20 63439508 7.28518685458868 +chr20 63439533 7.7746730543095595 +chr20 63439558 7.890562397446357 +chr20 63439583 6.808224231579353 +chr20 63439608 8.34756535760834 +chr20 63439633 10.057243616041617 +chr20 63439658 8.324726604355416 +chr20 63439683 7.794475334348887 +chr20 63439708 8.794887106529034 +chr20 63439733 9.407631149279393 +chr20 63439758 11.270905976757609 +chr20 63439783 10.088881843393283 +chr20 63439808 10.503456432021803 +chr20 63439833 10.81934577490563 +chr20 63439858 10.621548426940352 +chr20 63439883 9.128243651244869 +chr20 63439908 6.336847584778722 +chr20 63439933 7.90783404614355 +chr20 63439958 8.483941580535594 +chr20 63439983 9.979085356815162 +chr20 63440008 11.45728625843643 +chr20 63440033 8.262201190957624 +chr20 63440058 7.503932127736367 +chr20 63440083 9.371990612658555 +chr20 63440108 6.942524230591808 +chr20 63440133 5.27568978572806 +chr20 63440158 7.029389684102965 +chr20 63440183 9.667724301972575 +chr20 63440208 10.383959322035535 +chr20 63440233 7.64227943218408 +chr20 63440258 6.0635113324003305 +chr20 63440283 8.144604560764254 +chr20 63440308 11.113741019042617 +chr20 63440333 10.462042649607412 +chr20 63440358 9.862972381508246 +chr20 63440383 10.141304968536733 +chr20 63440408 8.147258424451978 +chr20 63440433 7.959398930622122 +chr20 63440458 12.922629814804356 +chr20 63440483 12.867118416298375 +chr20 63440508 8.499947607241726 +chr20 63440533 7.703111808090681 +chr20 63440558 5.9615257764241125 +chr20 63440583 7.055590682311717 +chr20 63440608 9.708937720644803 +chr20 63440633 8.30175187527032 +chr20 63440658 6.82043876083767 +chr20 63440683 9.31212622026028 +chr20 63440708 10.614914294623457 +chr20 63440733 10.177794663601887 +chr20 63440758 8.776331263495623 +chr20 63440783 7.106322826947747 +chr20 63440808 8.863654988725035 +chr20 63440833 8.211780933832987 +chr20 63440858 9.187115821128767 +chr20 63440883 9.343909163295402 +chr20 63440908 5.819095478317125 +chr20 63440933 7.339847229870814 +chr20 63440958 6.992362361492532 +chr20 63440983 6.41077825860499 +chr20 63441008 8.033489586408114 +chr20 63441033 8.62658102434913 +chr20 63441058 8.776104958902547 +chr20 63441083 8.020457141364956 +chr20 63441108 10.812012764140464 +chr20 63441133 8.874474133962261 +chr20 63441158 5.519219652564889 +chr20 63441183 9.564554674262935 +chr20 63441208 11.396964039439125 +chr20 63441233 8.007710473365023 +chr20 63441258 5.528112989062867 +chr20 63441283 7.050487858585391 +chr20 63441308 7.110166498297265 +chr20 63441333 6.415280304662164 +chr20 63441358 6.620670448146458 +chr20 63441383 7.562299568386554 +chr20 63441408 9.30109590103716 +chr20 63441433 7.72576075029871 +chr20 63441458 5.141183799414778 +chr20 63441483 6.11922042933635 +chr20 63441508 7.146843889729558 +chr20 63441533 6.833442728477703 +chr20 63441558 6.1642636583255275 +chr20 63441583 7.4108169429459485 +chr20 63441608 10.16295476880452 +chr20 63441633 8.65765309306565 +chr20 63441658 6.321772652066167 +chr20 63441683 9.249912553044634 +chr20 63441708 11.473755068828927 +chr20 63441733 9.854110793543898 +chr20 63441758 6.398757514419602 +chr20 63441783 7.079339255895952 +chr20 63441808 8.524051950143 +chr20 63441833 7.497566507466267 +chr20 63441858 10.351185228966745 +chr20 63441883 9.652526744520227 +chr20 63441908 6.930224443914602 +chr20 63441933 7.705582999673537 +chr20 63441958 7.976969535883325 +chr20 63441983 6.46853292467533 +chr20 63442008 5.357820338198426 +chr20 63442033 5.838957594168698 +chr20 63442058 5.699208529536426 +chr20 63442083 8.069102519046934 +chr20 63442108 8.56034748094357 +chr20 63442133 6.924867891151124 +chr20 63442158 6.772307568938471 +chr20 63442183 6.18672522000995 +chr20 63442208 9.3822608595294 +chr20 63442233 10.888584843847788 +chr20 63442258 9.812717378045372 +chr20 63442283 8.733796767905417 +chr20 63442308 6.920243220806413 +chr20 63442333 7.57131634644979 +chr20 63442358 7.401649979736692 +chr20 63442383 5.988372247960872 +chr20 63442408 8.477970358889998 +chr20 63442433 10.211334314722912 +chr20 63442458 8.725270240166669 +chr20 63442483 7.544899824849823 +chr20 63442508 6.031439761966737 +chr20 63442533 6.974524900805378 +chr20 63442558 7.782326766441315 +chr20 63442583 7.09000422880676 +chr20 63442608 6.932917615578452 +chr20 63442633 6.425367907822595 +chr20 63442658 6.875916058530864 +chr20 63442683 7.0787782145765 +chr20 63442708 6.910353308336105 +chr20 63442733 6.954254042393728 +chr20 63442758 6.963119478012787 +chr20 63442783 6.6859229754120815 +chr20 63442808 6.709715904485301 +chr20 63442833 7.075734809755057 +chr20 63442858 6.6491860772266 +chr20 63442883 6.742235792784359 +chr20 63442908 7.017126761288278 +chr20 63442933 6.916753290887647 +chr20 63442958 7.074474707332312 +chr20 63442983 6.825299356234124 +chr20 63443008 6.731353443526413 +chr20 63443033 7.376441101489023 +chr20 63443058 7.108846312686604 +chr20 63443083 6.474972519516645 +chr20 63443108 6.75024400676629 +chr20 63443133 8.504716333765948 +chr20 63443158 8.371887698931438 +chr20 63443183 6.78618763877889 +chr20 63443208 6.775055897792135 +chr20 63443233 7.924391462161471 +chr20 63443258 7.958118383723331 +chr20 63443283 6.872155045348364 +chr20 63443308 7.019681623380293 +chr20 63443333 7.057820651405211 +chr20 63443358 6.9796942341198545 +chr20 63443383 6.96288847186743 +chr20 63443408 6.956030102531226 +chr20 63443433 6.87190759985185 +chr20 63443458 6.905495006560742 +chr20 63443483 7.53948086624834 +chr20 63443508 8.11453774817628 +chr20 63443533 7.3202418114764045 +chr20 63443558 6.620741734770094 +chr20 63443583 7.330418543514089 +chr20 63443608 8.453331131102804 +chr20 63443633 8.593323035263015 +chr20 63443658 7.064302242393364 +chr20 63443683 7.177087961318685 +chr20 63443708 7.531100815777405 +chr20 63443733 8.134804676989013 +chr20 63443758 9.11223184777962 +chr20 63443783 8.108468701245878 +chr20 63443808 7.059035199610755 +chr20 63443833 8.250187069178729 +chr20 63443858 9.587720059208243 +chr20 63443883 8.604623823231352 +chr20 63443908 6.811990304872089 +chr20 63443933 7.6472498664765505 +chr20 63443958 8.045497629972836 +chr20 63443983 7.947220298649491 +chr20 63444008 8.245078351339872 +chr20 63444033 7.802534536838338 +chr20 63444058 7.804016689191482 +chr20 63444083 5.796106830619982 +chr20 63444108 5.719281926026331 +chr20 63444133 9.325261849031605 +chr20 63444158 9.81211776942967 +chr20 63444183 7.643658934662934 +chr20 63444208 7.169206054639767 +chr20 63444233 9.984471389544163 +chr20 63444258 11.618223238774167 +chr20 63444283 8.723904325908912 +chr20 63444308 6.430616383375784 +chr20 63444333 6.209257341983637 +chr20 63444358 8.227384972667304 +chr20 63444383 7.723115813483803 +chr20 63444408 6.412480555200388 +chr20 63444433 6.488240697275688 +chr20 63444458 7.76132885837758 +chr20 63444483 7.54684563953816 +chr20 63444508 6.053795933484158 +chr20 63444533 7.3394324144535945 +chr20 63444558 7.695276789419976 +chr20 63444583 7.826509645307575 +chr20 63444608 9.068587324412729 +chr20 63444633 9.968897968730653 +chr20 63444658 7.973709588648929 +chr20 63444683 6.642668832196773 +chr20 63444708 9.816646045624172 +chr20 63444733 9.710994193517575 +chr20 63444758 7.609714702846098 +chr20 63444783 10.462720248726715 +chr20 63444808 12.288862604139643 +chr20 63444833 10.736084155590312 +chr20 63444858 10.29563583475373 +chr20 63444883 10.936907009439166 +chr20 63444908 9.110559216966367 +chr20 63444933 8.999236387250495 +chr20 63444958 8.55379385948833 +chr20 63444983 6.937679904990013 +chr20 63445008 7.621042800743733 +chr20 63445033 7.220496598587153 +chr20 63445058 6.6955662656068755 +chr20 63445083 6.277202676026273 +chr20 63445108 5.262875808797109 +chr20 63445133 8.596876224548762 +chr20 63445158 11.443344768068993 +chr20 63445183 8.682368357962803 +chr20 63445208 8.769740789561503 +chr20 63445233 10.134863542595676 +chr20 63445258 9.83782236839779 +chr20 63445283 10.411360222889812 +chr20 63445308 11.655269234843525 +chr20 63445333 12.432197780773224 +chr20 63445358 9.563309000056671 +chr20 63445383 6.073788978088842 +chr20 63445408 8.14476619959529 +chr20 63445433 8.588250537878872 +chr20 63445458 7.042899152242706 +chr20 63445483 8.806521983240888 +chr20 63445508 9.156684050139576 +chr20 63445533 7.303926225385687 +chr20 63445558 8.616455829830898 +chr20 63445583 10.20071891293826 +chr20 63445608 7.592917909124931 +chr20 63445633 6.210676297901498 +chr20 63445658 6.2000454987746805 +chr20 63445683 6.0310508963535385 +chr20 63445708 6.192757231749591 +chr20 63445733 5.717465390431194 +chr20 63445758 6.30595361961225 +chr20 63445783 6.394175622556894 +chr20 63445808 6.256603358547075 +chr20 63445833 6.380094668436845 +chr20 63445858 6.38124437410815 +chr20 63445883 6.242707697893732 +chr20 63445908 6.2669039375990545 +chr20 63445933 6.32233783695929 +chr20 63445958 6.337316577386336 +chr20 63445983 6.679263547458019 +chr20 63446008 6.555661440503254 +chr20 63446033 6.007199402060786 +chr20 63446058 6.338096200580553 +chr20 63446083 6.78605111428726 +chr20 63446108 6.374097791195144 +chr20 63446133 6.3997803923350585 +chr20 63446158 6.7403694829782115 +chr20 63446183 7.352689198967276 +chr20 63446208 7.885582735988259 +chr20 63446233 7.957997391831518 +chr20 63446258 6.779407729422531 +chr20 63446283 10.087328632858032 +chr20 63446308 10.700244368716584 +chr20 63446333 8.422912440300998 +chr20 63446358 9.963856985301064 +chr20 63446383 14.00183740756963 +chr20 63446408 15.057822311027465 +chr20 63446433 8.492073799533154 +chr20 63446458 7.146226180758735 +chr20 63446483 11.172872803291149 +chr20 63446508 9.782337658717292 +chr20 63446533 6.9024455643332985 +chr20 63446558 7.980302969557797 +chr20 63446583 7.634957909744538 +chr20 63446608 6.474078722628553 +chr20 63446633 6.868507351107287 +chr20 63446658 8.240610708484077 +chr20 63446683 8.688454055213333 +chr20 63446708 8.481745179408593 +chr20 63446733 8.10403297495385 +chr20 63446758 8.729642463293509 +chr20 63446783 8.363557300170939 +chr20 63446808 6.952534566259684 +chr20 63446833 8.826835186098524 +chr20 63446858 9.459137803699488 +chr20 63446883 7.245746538816219 +chr20 63446908 8.279075778987776 +chr20 63446933 10.191273616331394 +chr20 63446958 10.832227221910992 +chr20 63446983 13.049703982520365 +chr20 63447008 12.167836910646974 +chr20 63447033 8.829115817704604 +chr20 63447058 8.174873513943131 +chr20 63447083 11.899580230923409 +chr20 63447108 10.345144078439512 +chr20 63447133 6.312043142635776 +chr20 63447158 6.302289952353257 +chr20 63447183 6.532056733153818 +chr20 63447208 6.450612390594499 +chr20 63447233 6.42887928104518 +chr20 63447258 8.062390985141766 +chr20 63447283 7.952587976064431 +chr20 63447308 8.637351699006373 +chr20 63447333 8.821772821430068 +chr20 63447358 7.182980332663183 +chr20 63447383 6.523961843476389 +chr20 63447408 6.934614821493563 +chr20 63447433 7.564087140471728 +chr20 63447458 6.015483260302499 +chr20 63447483 8.416030533270533 +chr20 63447508 8.464228641947297 +chr20 63447533 7.2359776004064615 +chr20 63447558 8.251599093828206 +chr20 63447583 5.921736837425338 +chr20 63447608 5.53374978496703 +chr20 63447633 7.624283804193109 +chr20 63447658 8.856010865532989 +chr20 63447683 8.75895358563435 +chr20 63447708 7.024267014634591 +chr20 63447733 6.147071613737001 +chr20 63447758 6.006634678712005 +chr20 63447783 5.230998392625749 +chr20 63447808 7.023770834228835 +chr20 63447833 10.177305520736445 +chr20 63447858 8.715808697915804 +chr20 63447883 7.4624327704479585 +chr20 63447908 7.058133706885602 +chr20 63447933 5.517966380480525 +chr20 63447958 7.692027589099932 +chr20 63447983 8.84840855419595 +chr20 63448008 10.658290807883487 +chr20 63448033 9.977953954609587 +chr20 63448058 6.270181232329931 +chr20 63448083 5.340116214498567 +chr20 63448108 6.655977593877402 +chr20 63448133 6.996355499007579 +chr20 63448158 6.471511054603709 +chr20 63448183 6.638755830570112 +chr20 63448208 5.3052872503765265 +chr20 63448233 5.343690454445943 +chr20 63448258 7.859738465839896 +chr20 63448283 7.953206319480315 +chr20 63448308 8.42160511885639 +chr20 63448333 8.710244482157378 +chr20 63448358 7.544362476110679 +chr20 63448383 9.378522060756106 +chr20 63448408 10.319180316774839 +chr20 63448433 9.9603000493521 +chr20 63448458 9.08703463630648 +chr20 63448483 11.387850510884265 +chr20 63448508 11.61777878769846 +chr20 63448533 9.359752447449372 +chr20 63448558 9.502554983921728 +chr20 63448583 7.371535276526361 +chr20 63448608 5.835240760805375 +chr20 63448633 7.001371157100717 +chr20 63448658 8.067462019752208 +chr20 63448683 6.6234808304752475 +chr20 63448708 7.791809811980531 +chr20 63448733 9.439281431380158 +chr20 63448758 9.704093616170114 +chr20 63448783 10.558234767416748 +chr20 63448808 8.62345365109085 +chr20 63448833 6.544159280704675 +chr20 63448858 8.65690474369256 +chr20 63448883 10.426338417492769 +chr20 63448908 9.618191758208274 +chr20 63448933 7.143127646265198 +chr20 63448958 6.391917476188122 +chr20 63448983 9.049206669233424 +chr20 63449008 8.229209867551992 +chr20 63449033 7.497031291785547 +chr20 63449058 6.907655502031122 +chr20 63449083 6.561008676650353 +chr20 63449108 6.849244659806153 +chr20 63449133 5.655318672076075 +chr20 63449158 4.891495711838827 +chr20 63449183 5.341327860574798 +chr20 63449208 5.926333949853554 +chr20 63449233 5.2920673655086325 +chr20 63449258 5.546574172687879 +chr20 63449283 5.415202352089025 +chr20 63449308 7.867208029777903 +chr20 63449333 12.280774825064892 +chr20 63449358 10.080112778932783 +chr20 63449383 7.001897443000423 +chr20 63449408 8.594906569974041 +chr20 63449433 7.561649152617218 +chr20 63449458 6.675795005200242 +chr20 63449483 7.556458763119764 +chr20 63449508 8.892367811025782 +chr20 63449533 8.640493516790643 +chr20 63449558 6.887066024568908 +chr20 63449583 8.012847938557593 +chr20 63449608 7.423093015287603 +chr20 63449633 7.223010293812637 +chr20 63449658 8.325908035673365 +chr20 63449683 7.849868047772111 +chr20 63449708 7.2146134228849625 +chr20 63449733 7.104025561868677 +chr20 63449758 6.588871443926757 +chr20 63449783 6.740405541187059 +chr20 63449808 9.336641571097548 +chr20 63449833 10.818340901610505 +chr20 63449858 9.313952958833923 +chr20 63449883 7.463511929304393 +chr20 63449908 9.339918634064809 +chr20 63449933 11.031485601465315 +chr20 63449958 9.352665343521524 +chr20 63449983 10.813424528820633 +chr20 63450008 13.527570151826358 +chr20 63450033 11.86168658678749 +chr20 63450058 9.584214778017026 +chr20 63450083 9.350557659017442 +chr20 63450108 12.000657261529524 +chr20 63450133 10.0013979996214 +chr20 63450158 8.261258402762302 +chr20 63450183 10.653950270625135 +chr20 63450208 8.883439297191732 +chr20 63450233 7.640416224718306 +chr20 63450258 8.351958796930347 +chr20 63450283 12.43138210599835 +chr20 63450308 11.690575593841029 +chr20 63450333 6.558997979492723 +chr20 63450358 5.256878992160325 +chr20 63450383 6.603919420078198 +chr20 63450408 8.747959994828951 +chr20 63450433 8.445729628942923 +chr20 63450458 6.673656258048763 +chr20 63450483 7.504618312146819 +chr20 63450508 8.215351059174466 +chr20 63450533 7.006372253968754 +chr20 63450558 7.077007464972074 +chr20 63450583 6.525005632488342 +chr20 63450608 6.828973369490426 +chr20 63450633 7.603370522300028 +chr20 63450658 8.14511871088486 +chr20 63450683 9.62181090188299 +chr20 63450708 8.517390051438918 +chr20 63450733 5.37282466841099 +chr20 63450758 4.831247974663525 +chr20 63450783 5.368410983470331 +chr20 63450808 4.965678712500093 +chr20 63450833 4.283033774385462 +chr20 63450858 7.997756005428022 +chr20 63450883 10.995774585026933 +chr20 63450908 8.011446224998306 +chr20 63450933 6.926002595853165 +chr20 63450958 6.019119949598656 +chr20 63450983 4.930917148403574 +chr20 63451008 5.939582067930941 +chr20 63451033 5.776841539413862 +chr20 63451058 6.973411171488654 +chr20 63451083 7.995801396273575 +chr20 63451108 7.03529511137318 +chr20 63451133 5.191715618501614 +chr20 63451158 4.1098738809462665 +chr20 63451183 5.081775251724694 +chr20 63451208 5.834635694413143 +chr20 63451233 7.070235716687141 +chr20 63451258 7.278187409113083 +chr20 63451283 6.214857601719276 +chr20 63451308 5.4308205579414395 +chr20 63451333 5.095254797657431 +chr20 63451358 5.4628880383959215 +chr20 63451383 7.899910557843482 +chr20 63451408 9.36065809733639 +chr20 63451433 8.801691431732491 +chr20 63451458 7.515260301764995 +chr20 63451483 7.260602124522278 +chr20 63451508 8.228429137565998 +chr20 63451533 7.415979420518251 +chr20 63451558 7.789142879836173 +chr20 63451583 6.802920313119785 +chr20 63451608 5.269940722004434 +chr20 63451633 5.676125278910845 +chr20 63451658 8.24501896983516 +chr20 63451683 12.259429245589056 +chr20 63451708 11.70430948925694 +chr20 63451733 8.098438685691033 +chr20 63451758 8.425679409887543 +chr20 63451783 9.921092722241424 +chr20 63451808 8.298687672356353 +chr20 63451833 8.505783169897224 +chr20 63451858 10.306144135585205 +chr20 63451883 10.154871037837172 +chr20 63451908 9.588694241399507 +chr20 63451933 8.446878362803716 +chr20 63451958 10.200060366815963 +chr20 63451983 10.01135295438972 +chr20 63452008 9.857213915838008 +chr20 63452033 9.939281713943586 +chr20 63452058 6.469982119734555 +chr20 63452083 6.261388805347629 +chr20 63452108 7.435534860877421 +chr20 63452133 7.877589309741778 +chr20 63452158 7.112400511892323 +chr20 63452183 5.837441740370695 +chr20 63452208 7.246058579654673 +chr20 63452233 9.556805582279743 +chr20 63452258 10.066175347303979 +chr20 63452283 7.329849353925406 +chr20 63452308 5.245610578883838 +chr20 63452333 7.143116624644755 +chr20 63452358 7.638010512187309 +chr20 63452383 6.896479836232926 +chr20 63452408 8.383229858924686 +chr20 63452433 11.505371493339066 +chr20 63452458 9.400090245266108 +chr20 63452483 6.339223261275939 +chr20 63452508 9.297921851159472 +chr20 63452533 10.41881278036406 +chr20 63452558 8.236560827082416 +chr20 63452583 7.548702589839843 +chr20 63452608 7.450948050256727 +chr20 63452633 8.35108292116962 +chr20 63452658 8.41791609375372 +chr20 63452683 7.395678406463654 +chr20 63452708 7.98633691618653 +chr20 63452733 8.881582011853785 +chr20 63452758 9.695074398876983 +chr20 63452783 7.739790934285082 +chr20 63452808 7.654501959505716 +chr20 63452833 8.45689865922994 +chr20 63452858 8.165367073581182 +chr20 63452883 9.372440065563266 +chr20 63452908 9.502035014792998 +chr20 63452933 7.012336195467274 +chr20 63452958 5.239831272857319 +chr20 63452983 8.381552086297459 +chr20 63453008 9.06658612753092 +chr20 63453033 10.022681676544488 +chr20 63453058 11.865097805142705 +chr20 63453083 8.785047565926497 +chr20 63453108 9.885575265433177 +chr20 63453133 10.54017577065664 +chr20 63453158 9.650710516891662 +chr20 63453183 11.185102852708962 +chr20 63453208 9.80931696399922 +chr20 63453233 9.697241017861346 +chr20 63453258 13.001666959392349 +chr20 63453283 12.24424773130959 +chr20 63453308 9.257142214612054 +chr20 63453333 8.612957435009884 +chr20 63453358 9.253564018026584 +chr20 63453383 8.97476866557503 +chr20 63453408 6.601711016585174 +chr20 63453433 6.499059005376978 +chr20 63453458 9.147289455175992 +chr20 63453483 11.784126577869957 +chr20 63453508 10.068244145650162 +chr20 63453533 9.206190620144284 +chr20 63453558 7.946834305080881 +chr20 63453583 7.111243032787669 +chr20 63453608 8.458584942652058 +chr20 63453633 7.147468260926409 +chr20 63453658 8.157486814946086 +chr20 63453683 9.319864604092263 +chr20 63453708 8.841229681360558 +chr20 63453733 7.56172879845544 +chr20 63453758 6.065044466576703 +chr20 63453783 6.346045664554465 +chr20 63453808 9.363746289176627 +chr20 63453833 10.398815826976238 +chr20 63453858 9.317279970397104 +chr20 63453883 10.48335507137158 +chr20 63453908 9.436762672225223 +chr20 63453933 7.291216486106002 +chr20 63453958 5.380357819318537 +chr20 63453983 6.309555871178639 +chr20 63454008 7.296775933448927 +chr20 63454033 8.030998491541444 +chr20 63454058 8.086711703691696 +chr20 63454083 7.916061442556168 +chr20 63454108 8.708393329625803 +chr20 63454133 5.6177478088185735 +chr20 63454158 4.761904710215607 +chr20 63454183 5.051305473934041 +chr20 63454208 8.946717465363596 +chr20 63454233 11.057458988548639 +chr20 63454258 8.645037649432968 +chr20 63454283 9.480624917780672 +chr20 63454308 10.051656887561675 +chr20 63454333 8.225148986444328 +chr20 63454358 8.888355148849174 +chr20 63454383 9.998658185894437 +chr20 63454408 9.893720828250137 +chr20 63454433 11.500903490304369 +chr20 63454458 11.211514353712003 +chr20 63454483 10.75991539413517 +chr20 63454508 8.933914105891638 +chr20 63454533 7.4056137721837985 +chr20 63454558 10.929128777720969 +chr20 63454583 11.562534375198663 +chr20 63454608 8.991423708251833 +chr20 63454633 7.876103884999767 +chr20 63454658 6.467887207410386 +chr20 63454683 6.008185063746041 +chr20 63454708 5.805088803435738 +chr20 63454733 7.230857022042347 +chr20 63454758 9.13058138997098 +chr20 63454783 9.024232107147938 +chr20 63454808 7.336534992902528 +chr20 63454833 9.079963186596256 +chr20 63454858 8.474255200394328 +chr20 63454883 6.823621399671341 +chr20 63454908 8.276338991740376 +chr20 63454933 7.122195006704442 +chr20 63454958 7.679168866197722 +chr20 63454983 7.591044725692768 +chr20 63455008 8.710742881616705 +chr20 63455033 9.672589154191218 +chr20 63455058 5.877721175484493 +chr20 63455083 5.383258210647531 +chr20 63455108 10.340510993346832 +chr20 63455133 11.282257291969964 +chr20 63455158 10.787323279265632 +chr20 63455183 8.960882199279379 +chr20 63455208 6.146868013262568 +chr20 63455233 6.729564711021063 +chr20 63455258 6.808976610223126 +chr20 63455283 7.048850022272822 +chr20 63455308 6.117277702444455 +chr20 63455333 5.615672822446529 +chr20 63455358 7.723406239440895 +chr20 63455383 10.541032802856432 +chr20 63455408 12.437614540121842 +chr20 63455433 12.838945859715935 +chr20 63455458 10.042938135071786 +chr20 63455483 8.617469773699803 +chr20 63455508 8.83463030198948 +chr20 63455533 8.76140906705603 +chr20 63455558 7.80094004548172 +chr20 63455583 6.066397406479178 +chr20 63455608 6.10418667977266 +chr20 63455633 6.410446346547348 +chr20 63455658 8.927134354756355 +chr20 63455683 8.834776347519306 +chr20 63455708 9.205244535899954 +chr20 63455733 8.241750273327845 +chr20 63455758 8.101059608251942 +chr20 63455783 12.26158707796453 +chr20 63455808 10.995566638058607 +chr20 63455833 10.699894333737955 +chr20 63455858 12.431647616068936 +chr20 63455883 12.178861976483864 +chr20 63455908 9.990350043085666 +chr20 63455933 10.337636306911845 +chr20 63455958 12.470688129539036 +chr20 63455983 10.388692136244055 +chr20 63456008 9.02825411225507 +chr20 63456033 11.246455014666582 +chr20 63456058 11.810161940854407 +chr20 63456083 10.307309767514562 +chr20 63456108 10.46477046913015 +chr20 63456133 11.485796297584562 +chr20 63456158 11.048348604074071 +chr20 63456183 8.64312127484026 +chr20 63456208 7.792072907512339 +chr20 63456233 6.884135815726131 +chr20 63456258 7.6034984258672775 +chr20 63456283 9.8224468064478 +chr20 63456308 10.091046973808073 +chr20 63456333 10.143131628329533 +chr20 63456358 9.565973981456342 +chr20 63456383 8.060745220724675 +chr20 63456408 6.42472244232356 +chr20 63456433 5.824873625300833 +chr20 63456458 7.237032448014183 +chr20 63456483 9.945985930577223 +chr20 63456508 10.190260996585 +chr20 63456533 8.609013505804763 +chr20 63456558 7.050946504604097 +chr20 63456583 7.644072584678897 +chr20 63456608 8.595597939980287 +chr20 63456633 7.940415397524844 +chr20 63456658 7.872945579945683 +chr20 63456683 8.537756112781024 +chr20 63456708 9.355206280718438 +chr20 63456733 7.986131906636072 +chr20 63456758 9.000731765136612 +chr20 63456783 9.545082666694242 +chr20 63456808 8.001147302083107 +chr20 63456833 7.28571637686445 +chr20 63456858 7.042316937318969 +chr20 63456883 8.343294515631698 +chr20 63456908 8.468039095738915 +chr20 63456933 7.948918813154923 +chr20 63456958 8.09535715177772 +chr20 63456983 9.07382582567969 +chr20 63457008 9.199259535918442 +chr20 63457033 6.867445425347195 +chr20 63457058 6.873715468465016 +chr20 63457083 10.936336663498821 +chr20 63457108 11.36161911233372 +chr20 63457133 8.475130163232269 +chr20 63457158 8.659597372649618 +chr20 63457183 8.61569947051829 +chr20 63457208 8.260297829455405 +chr20 63457233 9.603625385612041 +chr20 63457258 7.8345221877031745 +chr20 63457283 9.02197396713011 +chr20 63457308 10.562368105315153 +chr20 63457333 9.552373061604417 +chr20 63457358 9.317970255884328 +chr20 63457383 7.392891384884299 +chr20 63457408 5.726462391275901 +chr20 63457433 5.692155241839145 +chr20 63457458 8.54203958737794 +chr20 63457483 10.694426724548498 +chr20 63457508 8.616081924270771 +chr20 63457533 7.059380128367602 +chr20 63457558 8.59293914399494 +chr20 63457583 7.81988211276735 +chr20 63457608 6.924103958333672 +chr20 63457633 8.397231318299877 +chr20 63457658 8.686784440736087 +chr20 63457683 9.906249403509326 +chr20 63457708 11.206718078571955 +chr20 63457733 8.86452684653735 +chr20 63457758 8.164254548143152 +chr20 63457783 9.83217126955019 +chr20 63457808 8.551180389315164 +chr20 63457833 6.66742571229313 +chr20 63457858 7.9352077665029155 +chr20 63457883 8.38475420273687 +chr20 63457908 8.732327636999637 +chr20 63457933 10.411313684633766 +chr20 63457958 7.440963438739195 +chr20 63457983 7.026368085067202 +chr20 63458008 9.180745823298631 +chr20 63458033 7.466749904331177 +chr20 63458058 6.699683777440359 +chr20 63458083 10.2426973457502 +chr20 63458108 10.70857981208894 +chr20 63458133 6.764719091530463 +chr20 63458158 8.759297370385799 +chr20 63458183 10.064862159042718 +chr20 63458208 8.615017550160262 +chr20 63458233 7.651958915304854 +chr20 63458258 5.786627497136142 +chr20 63458283 9.6072662768708 +chr20 63458308 11.75549037206429 +chr20 63458333 8.82035600097792 +chr20 63458358 10.152776612029985 +chr20 63458383 10.164005783361707 +chr20 63458408 9.57631943194424 +chr20 63458433 10.284281240346319 +chr20 63458458 8.620380032593474 +chr20 63458483 9.394518851912952 +chr20 63458508 7.709574844036991 +chr20 63458533 7.449628057550497 +chr20 63458558 8.960810806920575 +chr20 63458583 7.009772070831128 +chr20 63458608 10.475436841187907 +chr20 63458633 11.903149633928452 +chr20 63458658 8.871607296566307 +chr20 63458683 8.166871283757057 +chr20 63458708 7.862517591371594 +chr20 63458733 8.281430562275938 +chr20 63458758 7.7858235003390615 +chr20 63458783 6.755324576367174 +chr20 63458808 7.499439024252101 +chr20 63458833 9.844071384116955 +chr20 63458858 12.040456083118352 +chr20 63458883 9.22991095019476 +chr20 63458908 8.533250263811718 +chr20 63458933 10.896148011589238 +chr20 63458958 8.784617747576663 +chr20 63458983 8.295988745758757 +chr20 63459008 10.91160923462068 +chr20 63459033 9.438847752549245 +chr20 63459058 8.46432938581665 +chr20 63459083 11.538546658482169 +chr20 63459108 9.443926036131773 +chr20 63459133 6.49684768365656 +chr20 63459158 6.931126580438991 +chr20 63459183 9.5461595684071 +chr20 63459208 11.295739918698922 +chr20 63459233 11.991238520142737 +chr20 63459258 12.258282771360127 +chr20 63459283 8.648001565163655 +chr20 63459308 7.023897414829686 +chr20 63459333 7.455028012138451 +chr20 63459358 5.8058384361226345 +chr20 63459383 6.552000194695832 +chr20 63459408 8.800973539196262 +chr20 63459433 7.188350103723128 +chr20 63459458 4.914361050986481 +chr20 63459483 7.117267572813642 +chr20 63459508 6.692988203182821 +chr20 63459533 6.35715704183027 +chr20 63459558 8.002953662010817 +chr20 63459583 8.683492656487424 +chr20 63459608 8.584010244424457 +chr20 63459633 6.491282216115344 +chr20 63459658 6.162336515645388 +chr20 63459683 7.502426468862018 +chr20 63459708 7.306970727801479 +chr20 63459733 5.171277824904238 +chr20 63459758 5.8849982750061995 +chr20 63459783 8.435364741822191 +chr20 63459808 7.685635429629297 +chr20 63459833 7.094740360428081 +chr20 63459858 7.157235211298951 +chr20 63459883 5.5560397993782935 +chr20 63459908 6.11685131167134 +chr20 63459933 6.063865759261324 +chr20 63459958 6.275196729240993 +chr20 63459983 7.645509320714702 +chr20 63460008 9.88246745142344 +chr20 63460033 9.5644537157242 +chr20 63460058 5.818831455069024 +chr20 63460083 6.272013637414443 +chr20 63460108 9.190571451969506 +chr20 63460133 10.595038465569845 +chr20 63460158 9.718134921667424 +chr20 63460183 7.51154563108028 +chr20 63460208 6.512804353671827 +chr20 63460233 6.283177778677358 +chr20 63460258 6.0538419082714325 +chr20 63460283 8.547518731790607 +chr20 63460308 8.338669890313762 +chr20 63460333 6.324286392451523 +chr20 63460358 8.177651614849573 +chr20 63460383 9.51934900131411 +chr20 63460408 8.838214257198567 +chr20 63460433 9.441040626376843 +chr20 63460458 11.624220407302479 +chr20 63460483 9.568709046968504 +chr20 63460508 7.062963416666919 +chr20 63460533 7.582033073278067 +chr20 63460558 7.684703925243031 +chr20 63460583 10.69597865379992 +chr20 63460608 11.15604751869258 +chr20 63460633 7.165210475814053 +chr20 63460658 6.832981836363654 +chr20 63460683 6.985435262443076 +chr20 63460708 5.818797650671756 +chr20 63460733 7.562762536605334 +chr20 63460758 8.22652859896638 +chr20 63460783 8.092430111716078 +chr20 63460808 10.620942917742346 +chr20 63460833 9.3003622559428 +chr20 63460858 7.921156052495232 +chr20 63460883 10.088754472285096 +chr20 63460908 8.964702263104662 +chr20 63460933 7.5233585553336875 +chr20 63460958 8.268405541419563 +chr20 63460983 10.631051668910466 +chr20 63461008 11.103696179242823 +chr20 63461033 8.92955688038096 +chr20 63461058 7.379972212084498 +chr20 63461083 7.206885995592612 +chr20 63461108 6.984343983422933 +chr20 63461133 6.6377012769542105 +chr20 63461158 8.244762810559845 +chr20 63461183 10.043412802404415 +chr20 63461208 12.348555528570095 +chr20 63461233 11.125433867024958 +chr20 63461258 7.8602750076663455 +chr20 63461283 7.526182446794529 +chr20 63461308 6.315611204272097 +chr20 63461333 4.37232838474711 +chr20 63461358 7.7061036880696845 +chr20 63461383 13.44876293212875 +chr20 63461408 11.19392652048869 +chr20 63461433 7.350743186113586 +chr20 63461458 7.728981330671687 +chr20 63461483 6.942370413346704 +chr20 63461508 7.54592004503829 +chr20 63461533 7.71259535610666 +chr20 63461558 9.823241820355324 +chr20 63461583 10.447090764337094 +chr20 63461608 7.5802166402232185 +chr20 63461633 7.419160196881451 +chr20 63461658 7.420280184683337 +chr20 63461683 7.665040437846773 +chr20 63461708 8.723471031500676 +chr20 63461733 9.255834143497054 +chr20 63461758 8.65127001930205 +chr20 63461783 10.00098788277394 +chr20 63461808 9.199117292105887 +chr20 63461833 8.001677325074553 +chr20 63461858 10.167534365483325 +chr20 63461883 9.9342452367336 +chr20 63461908 8.594399824227876 +chr20 63461933 8.068712155526978 +chr20 63461958 7.853213434450136 +chr20 63461983 8.09102783892816 +chr20 63462008 8.570929879355486 +chr20 63462033 8.860848104540105 +chr20 63462058 10.133691725390749 +chr20 63462083 11.072107952836319 +chr20 63462108 9.10573445016397 +chr20 63462133 8.586142143387624 +chr20 63462158 9.381964496103581 +chr20 63462183 9.045312288792363 +chr20 63462208 8.612309782546559 +chr20 63462233 7.586054801737678 +chr20 63462258 7.610372189365899 +chr20 63462283 8.611103082765634 +chr20 63462308 8.837364185284764 +chr20 63462333 8.862888272693908 +chr20 63462358 9.947616954806827 +chr20 63462383 8.506807402869459 +chr20 63462408 7.500535526346847 +chr20 63462433 9.39584697835477 +chr20 63462458 9.907383152719902 +chr20 63462483 8.409377970157422 +chr20 63462508 7.41209944235554 +chr20 63462533 7.970946586130274 +chr20 63462558 6.825003909831918 +chr20 63462583 5.036140514056095 +chr20 63462608 5.277560140466834 +chr20 63462633 5.831295169014927 +chr20 63462658 6.5737270326734745 +chr20 63462683 7.822895235125946 +chr20 63462708 11.11872515676801 +chr20 63462733 9.689677611574194 +chr20 63462758 5.832138342269027 +chr20 63462783 10.469784647387112 +chr20 63462808 10.65492051606354 +chr20 63462833 8.688506663796158 +chr20 63462858 8.18756802552202 +chr20 63462883 7.067925350707192 +chr20 63462908 10.0068855555754 +chr20 63462933 9.734895023270212 +chr20 63462958 8.463941570430299 +chr20 63462983 8.088458981927769 +chr20 63463008 5.76447125131329 +chr20 63463033 5.597466554299295 +chr20 63463058 5.040882233019994 +chr20 63463083 4.423030304487027 +chr20 63463108 6.878730935745151 +chr20 63463133 7.005473994536892 +chr20 63463158 6.066454087428002 +chr20 63463183 5.889370539731527 +chr20 63463208 6.336755178265331 +chr20 63463233 9.891153389070471 +chr20 63463258 8.430621825719568 +chr20 63463283 5.6093446745503766 +chr20 63463308 6.475777045248536 +chr20 63463333 6.63690334504775 +chr20 63463358 7.901208596637967 +chr20 63463383 7.439558901759572 +chr20 63463408 7.825657222580448 +chr20 63463433 8.071339140490444 +chr20 63463458 7.662443347454338 +chr20 63463483 8.426933413873593 +chr20 63463508 9.131620720976077 +chr20 63463533 8.703646435535644 +chr20 63463558 9.292752539800368 +chr20 63463583 8.599356097269613 +chr20 63463608 7.358379714209661 +chr20 63463633 7.475499485111942 +chr20 63463658 6.368035208576604 +chr20 63463683 6.0028162253931985 +chr20 63463708 6.218014956868837 +chr20 63463733 8.393407292414652 +chr20 63463758 7.931737332874387 +chr20 63463783 5.634007599465352 +chr20 63463808 7.355413184056842 +chr20 63463833 8.548897978176596 +chr20 63463858 5.880880055745776 +chr20 63463883 6.306127599178382 +chr20 63463908 10.59998580388479 +chr20 63463933 10.845765647803493 +chr20 63463958 9.656850954582758 +chr20 63463983 9.720796529361522 +chr20 63464008 7.832287706379388 +chr20 63464033 6.104701252091912 +chr20 63464058 5.263772791544352 +chr20 63464083 5.937961191204773 +chr20 63464108 7.896410758351207 +chr20 63464133 8.735675659065413 +chr20 63464158 7.900769834386708 +chr20 63464183 9.76669325732904 +chr20 63464208 9.263821653980504 +chr20 63464233 5.6378130866653695 +chr20 63464258 4.904323595941079 +chr20 63464283 6.012269670847301 +chr20 63464308 7.266119852357343 +chr20 63464333 8.825499972025794 +chr20 63464358 11.107508432453109 +chr20 63464383 10.026406553708275 +chr20 63464408 7.187458327286701 +chr20 63464433 7.588653186209146 +chr20 63464458 9.047272815806028 +chr20 63464483 10.912614673537346 +chr20 63464508 13.284756608814964 +chr20 63464533 9.488040690691497 +chr20 63464558 8.80477220795197 +chr20 63464583 10.246097228693197 +chr20 63464608 7.362414417494841 +chr20 63464633 8.823832462143452 +chr20 63464658 10.748616537541611 +chr20 63464683 7.8130167032883024 +chr20 63464708 5.030455784307423 +chr20 63464733 5.114455579458667 +chr20 63464758 6.60925197103786 +chr20 63464783 6.912558567463479 +chr20 63464808 7.713633528961204 +chr20 63464833 7.4744841884968825 +chr20 63464858 10.423427669013615 +chr20 63464883 12.172158133531045 +chr20 63464908 8.405584490227914 +chr20 63464933 7.1284644111937885 +chr20 63464958 5.7586166994902035 +chr20 63464983 6.442712319358667 +chr20 63465008 8.2016975692708 +chr20 63465033 7.67799184278685 +chr20 63465058 8.31250765409643 +chr20 63465083 9.702388709852158 +chr20 63465108 7.963559305549082 +chr20 63465133 6.43431017093282 +chr20 63465158 6.480844711859205 +chr20 63465183 6.941446340431194 +chr20 63465208 7.680774547378941 +chr20 63465233 6.5701767843609264 +chr20 63465258 5.506948107368023 +chr20 63465283 6.629570596699717 +chr20 63465308 6.386289470283852 +chr20 63465333 5.727807578164352 +chr20 63465358 7.422082971959912 +chr20 63465383 9.818714930408555 +chr20 63465408 9.905897262181766 +chr20 63465433 7.758607933640357 +chr20 63465458 9.435083133700209 +chr20 63465483 9.279710501221471 +chr20 63465508 6.18837853366812 +chr20 63465533 7.742809991703647 +chr20 63465558 10.582467807586884 +chr20 63465583 12.788309702431063 +chr20 63465608 11.662980871113362 +chr20 63465633 7.503381858413568 +chr20 63465658 7.970122474685763 +chr20 63465683 10.787978114817513 +chr20 63465708 9.905459638361231 +chr20 63465733 7.156885637606149 +chr20 63465758 6.474971728589523 +chr20 63465783 7.392555266329993 +chr20 63465808 6.07686668770461 +chr20 63465833 10.494158435389867 +chr20 63465858 14.276041897863157 +chr20 63465883 11.322893948841902 +chr20 63465908 12.15622582256626 +chr20 63465933 12.910976562165446 +chr20 63465958 12.91696539500882 +chr20 63465983 9.74284836066887 +chr20 63466008 5.603510942683279 +chr20 63466033 6.1047502633085875 +chr20 63466058 6.235612615314563 +chr20 63466083 5.753634902786153 +chr20 63466108 9.050572984491438 +chr20 63466133 9.918256898707163 +chr20 63466158 9.129525907446741 +chr20 63466183 10.298783884735885 +chr20 63466208 11.693788725253517 +chr20 63466233 13.060157522418447 +chr20 63466258 12.64656124634739 +chr20 63466283 13.265329013133186 +chr20 63466308 13.32160297173273 +chr20 63466333 14.547314796834522 +chr20 63466358 13.964818865163041 +chr20 63466383 10.101783119727713 +chr20 63466408 9.629571694010815 +chr20 63466433 9.662427212170629 +chr20 63466458 11.531909263943097 +chr20 63466483 10.137775661189417 +chr20 63466508 8.84331482755158 +chr20 63466533 9.521922274036596 +chr20 63466558 11.005402593584487 +chr20 63466583 14.44948045195063 +chr20 63466608 12.133872440197441 +chr20 63466633 11.447438044494291 +chr20 63466658 13.3781279230154 +chr20 63466683 10.451794515343975 +chr20 63466708 8.037588549004822 +chr20 63466733 11.2246955675852 +chr20 63466758 13.01760650927448 +chr20 63466783 12.265570924804482 +chr20 63466808 11.374034563730053 +chr20 63466833 10.647140192818085 +chr20 63466858 11.617140969168016 +chr20 63466883 11.885685791170287 +chr20 63466908 8.75018578841993 +chr20 63466933 8.706375232739381 +chr20 63466958 8.917001282826254 +chr20 63466983 7.593794188541928 +chr20 63467008 9.69989062554895 +chr20 63467033 12.059471532882737 +chr20 63467058 10.630071165012168 +chr20 63467083 8.568124186861708 +chr20 63467108 9.13162464720939 +chr20 63467133 9.664753623845295 +chr20 63467158 8.325444293541624 +chr20 63467183 6.4614706061379845 +chr20 63467208 6.777513097280813 +chr20 63467233 8.508587091416436 +chr20 63467258 7.32068937833298 +chr20 63467283 5.77316160996581 +chr20 63467308 6.754368748684284 +chr20 63467333 6.547839206124624 +chr20 63467358 8.715030083268516 +chr20 63467383 8.896077849073055 +chr20 63467408 7.269973246007346 +chr20 63467433 7.296928873675561 +chr20 63467458 6.574367640714436 +chr20 63467483 6.335924708693446 +chr20 63467508 5.681018867110113 +chr20 63467533 5.594972666273189 +chr20 63467558 8.98260915346306 +chr20 63467583 10.205704458170173 +chr20 63467608 7.97248985306919 +chr20 63467633 7.751083684834504 +chr20 63467658 6.088717283163747 +chr20 63467683 4.691538700626918 +chr20 63467708 6.189917407581577 +chr20 63467733 7.680554841505959 +chr20 63467758 6.332130083710126 +chr20 63467783 7.118590308415595 +chr20 63467808 9.1781804349742 +chr20 63467833 7.741739870396975 +chr20 63467858 8.2410852527451 +chr20 63467883 8.577471909548388 +chr20 63467908 5.7850019836736735 +chr20 63467933 4.7634082617533355 +chr20 63467958 4.711665672245775 +chr20 63467983 4.654937895720511 +chr20 63468008 4.968114200543226 +chr20 63468033 5.985320056886471 +chr20 63468058 6.0209734357770035 +chr20 63468083 5.412637427370472 +chr20 63468108 7.998790638838294 +chr20 63468133 7.88188169870415 +chr20 63468158 5.727921251762714 +chr20 63468183 7.070853216174644 +chr20 63468208 6.408296331043072 +chr20 63468233 4.782156239724236 +chr20 63468258 6.891572110179703 +chr20 63468283 8.415160655682497 +chr20 63468308 7.680707733204213 +chr20 63468333 7.030744308129589 +chr20 63468358 7.658293734404692 +chr20 63468383 7.257870211355023 +chr20 63468408 7.143952229264454 +chr20 63468433 10.296384737063505 +chr20 63468458 10.430703375052898 +chr20 63468483 6.576471708694945 +chr20 63468508 7.62862218986927 +chr20 63468533 8.924455856349429 +chr20 63468558 10.010267091588307 +chr20 63468583 10.492547082340021 +chr20 63468608 6.568382616490891 +chr20 63468633 6.550793639877853 +chr20 63468658 6.87025052440032 +chr20 63468683 6.933247397565793 +chr20 63468708 9.510119119141816 +chr20 63468733 9.324921644521933 +chr20 63468758 6.672881339735411 +chr20 63468783 6.587805894771001 +chr20 63468808 6.26431328961883 +chr20 63468833 7.194937782453777 +chr20 63468858 9.452168089570137 +chr20 63468883 7.428990859466325 +chr20 63468908 5.559404682360777 +chr20 63468933 6.7425061014876695 +chr20 63468958 7.392961808781979 +chr20 63468983 9.5958422112431 +chr20 63469008 11.070374776592324 +chr20 63469033 11.586296338156082 +chr20 63469058 11.46010131519632 +chr20 63469083 9.172274994984344 +chr20 63469108 7.822788125096965 +chr20 63469133 8.462504417548793 +chr20 63469158 9.90630059033284 +chr20 63469183 9.600137090102162 +chr20 63469208 8.786700813702929 +chr20 63469233 6.617998187950871 +chr20 63469258 5.9770941942546045 +chr20 63469283 9.754310321965045 +chr20 63469308 10.612810509603657 +chr20 63469333 6.841859844902665 +chr20 63469358 8.965760715251085 +chr20 63469383 10.455824880398342 +chr20 63469408 6.842933806501142 +chr20 63469433 7.0428151232242096 +chr20 63469458 9.163331156898925 +chr20 63469483 9.999447259105823 +chr20 63469508 9.792083929511804 +chr20 63469533 10.587075169532756 +chr20 63469558 9.134991722044658 +chr20 63469583 7.0929705510008105 +chr20 63469608 6.125324571735127 +chr20 63469633 5.6626438447935 +chr20 63469658 7.7814641376694915 +chr20 63469683 8.789060267683142 +chr20 63469708 8.968475437332938 +chr20 63469733 8.092816552252964 +chr20 63469758 6.4866279445905795 +chr20 63469783 9.245871085396162 +chr20 63469808 9.041732976539892 +chr20 63469833 6.046914990621743 +chr20 63469858 6.917554277822295 +chr20 63469883 8.530508576533204 +chr20 63469908 9.903397275685252 +chr20 63469933 8.36178590654109 +chr20 63469958 6.9911461740493275 +chr20 63469983 8.359788920753157 +chr20 63470008 7.652602914141474 +chr20 63470033 8.55416947351521 +chr20 63470058 8.937656675556182 +chr20 63470083 7.024798401118904 +chr20 63470108 7.311820272084427 +chr20 63470133 7.162497523879153 +chr20 63470158 7.574542583268612 +chr20 63470183 8.05749653734162 +chr20 63470208 7.242884946338627 +chr20 63470233 5.51191553092691 +chr20 63470258 6.047618314491943 +chr20 63470283 6.616265777781703 +chr20 63470308 7.542162659600511 +chr20 63470333 10.02183848058753 +chr20 63470358 9.756719250636886 +chr20 63470383 8.087327622848429 +chr20 63470408 8.333452465979189 +chr20 63470433 8.074501473870376 +chr20 63470458 5.9730580259649635 +chr20 63470483 5.430416256525611 +chr20 63470508 9.55016516182759 +chr20 63470533 11.18170538746098 +chr20 63470558 9.79575966856157 +chr20 63470583 7.781862781759667 +chr20 63470608 7.179148409483396 +chr20 63470633 9.272638278168733 +chr20 63470658 8.052702417169144 +chr20 63470683 7.235510085907824 +chr20 63470708 6.735216015591897 +chr20 63470733 6.976499718385657 +chr20 63470758 8.476008775105507 +chr20 63470783 7.17799898091366 +chr20 63470808 6.30019637517701 +chr20 63470833 6.056251022913378 +chr20 63470858 5.6909402543228875 +chr20 63470883 7.469983678003198 +chr20 63470908 7.126653962467759 +chr20 63470933 7.062484668416131 +chr20 63470958 8.927214753197651 +chr20 63470983 6.899955771613863 +chr20 63471008 6.080673968776033 +chr20 63471033 7.939977100952361 +chr20 63471058 8.93676936529908 +chr20 63471083 10.65393990577036 +chr20 63471108 12.400836207984067 +chr20 63471133 9.434674039964783 +chr20 63471158 5.547279966824925 +chr20 63471183 8.334701214202367 +chr20 63471208 7.967095948664906 +chr20 63471233 8.050379120686964 +chr20 63471258 11.84274415093605 +chr20 63471283 13.326080443381215 +chr20 63471308 14.30556789453288 +chr20 63471333 14.989730783105019 +chr20 63471358 12.375080283705485 +chr20 63471383 9.761023040231015 +chr20 63471408 8.98207867230122 +chr20 63471433 8.573010447015566 +chr20 63471458 9.486480422292187 +chr20 63471483 8.808486085428278 +chr20 63471508 10.774987034913595 +chr20 63471533 11.181541234659722 +chr20 63471558 9.071344243252032 +chr20 63471583 11.197050478982387 +chr20 63471608 11.781345437540109 +chr20 63471633 9.296039086406273 +chr20 63471658 8.307240270056768 +chr20 63471683 7.519117111783982 +chr20 63471708 9.114453845567736 +chr20 63471733 11.97556115821067 +chr20 63471758 12.987984725069165 +chr20 63471783 12.901275286190389 +chr20 63471808 11.906430986628678 +chr20 63471833 11.361275543326023 +chr20 63471858 10.586652368829476 +chr20 63471883 8.783964539650883 +chr20 63471908 10.211935194991925 +chr20 63471933 13.872225138485964 +chr20 63471958 13.146169587830624 +chr20 63471983 11.043585141764494 +chr20 63472008 11.75582035180375 +chr20 63472033 12.79725956116947 +chr20 63472058 11.229936218067401 +chr20 63472083 11.38494282887679 +chr20 63472108 13.455276985440022 +chr20 63472133 13.935451858496572 +chr20 63472158 12.615242273183036 +chr20 63472183 12.233343543565587 +chr20 63472208 10.588437183895506 +chr20 63472233 9.947016962316692 +chr20 63472258 12.610257180741904 +chr20 63472283 12.215236234670291 +chr20 63472308 10.79583343703545 +chr20 63472333 13.98560731826211 +chr20 63472358 15.126324593331043 +chr20 63472383 10.601792308506772 +chr20 63472408 9.359578281010558 +chr20 63472433 12.465792492921393 +chr20 63472458 12.676552772431803 +chr20 63472483 11.569680045351916 +chr20 63472508 14.775992870324094 +chr20 63472533 15.358723035855332 +chr20 63472558 13.972170733270282 +chr20 63472583 12.576876588799603 +chr20 63472608 12.316669442952342 +chr20 63472633 13.2986000672163 +chr20 63472658 14.528280567587718 diff --git a/report/get_coords.py b/report/get_coords.py new file mode 100755 index 0000000..3a0a72d --- /dev/null +++ b/report/get_coords.py @@ -0,0 +1,105 @@ +import csv + +def variant_type(annotation): + if annotation in ['synonymous_variant']: + return 'LOW' + if annotation in ['missense_variant', 'inframe_deletion', 'inframe_insertion','stop_lost',]: + return 'MODERATE' + if annotation in ['splice_acceptor_variant','frameshift_variant','splice_donor_variant','stop_gained',]: + return 'HIGH' + if annotation in ['3_prime_UTR_variant', '5_prime_UTR_variant', 'splice_region_variant','intron_variant',]: + return 'MODIFIER' + #print('No classification for variant type {}; classified as "other"'.format(annotation)) + return 'MODIFIER' + +def get_variants(filepath, start, end, seqid): + def get_variants_vcf(vcf_path): + variant_ls = [] + import tabix #putting import here for now because it doesn't work on local machine + tb = tabix.open(vcf_path) + #TODO cast seqid in parse_args + #for idx,r in enumerate(tb.query(str(seqid),start-1400000,end-1400000)): + for idx,r in enumerate(tb.query(str(seqid),start,end)): + #variant_ls.append(dict(pos=int(r[1])+1400000, compact_pos=-1, ref=r[3], alt=r[4], #adding 1.4m bc this vcf is on old build + variant_ls.append(dict(pos=int(r[1]), compact_pos=-1, ref=r[3], alt=r[4], + annotation=r[7].split(';')[-1].split('|')[1], severity=r[7].split(';')[-1].split('|')[2], + allele_count=int(r[7].split(';')[0].split('=')[1]), + allele_number=int(r[7].split(';')[1].split('=')[1]), + allele_frequency=float(r[7].split(';')[2].split('=')[1]))) + return variant_ls + + def get_variants_csv(csv_path): + variant_ls = [] + with open(csv_path, newline='') as csvfile: + reader = csv.reader(csvfile) + next(reader) #skip header + for row in reader: + variant_dict = dict(pos=int(row[1]), compact_pos=-1, ref=row[3], alt=row[4], + annotation=row[12], severity=variant_type(row[12]), + allele_count=int(row[16]), allele_number=int(row[17]), allele_frequency=float(row[18])) + variant_ls.append(variant_dict) + variant_ls = list({v['pos']:v for v in variant_ls}.values()) #remove duplicate dicts + return variant_ls + + def get_variants_bed(bed_path): + import tabix #putting import here for now because it doesn't work on local machine + variant_ls = [] + tb = tabix.open(bed_path) + #TODO cast seqid in parse_args + #for idx,r in enumerate(tb.query(str(seqid),start-1400000,end-1400000)): + for r in tb.query(str(seqid),start,end): + variant_ls.append(dict(pos=int(r[1]), compact_pos=-1, ref=r[3], alt=r[4], #adding 1.4m bc this bed is on old build + annotation=r[8], severity=variant_type(r[8]), + allele_count=-1, + allele_number=-1, + allele_frequency=-1)) + return variant_ls + + if filepath.split('.')[-2] == 'vcf': + variant_ls = get_variants_vcf(filepath) + + elif filepath.split('.')[-1] == 'csv': + variant_ls = get_variants_csv(filepath) + + #TODO what to do about tabix'd vs non tabix'd? + elif '.bed' in filepath: + variant_ls = get_variants_bed(filepath) + + else: raise ValueError('Invalid filepath: {}'.format(filepath)) + + return variant_ls + +def get_line(filepath,chr_num=-1): + fi = open(filepath,'r') + line_coords = [line.strip().split('\t') for line in fi.readlines()] + + #boxes: \t\t\t + if filepath.split('.')[-1] == 'bedgraph' or len(line_coords[0]) == 4: + line_coords = [{'chrom': int(chrom),'start': int(start), 'end': int(end), 'y': float(y)} for (chrom, start, end, y) in line_coords] + if chr_num >= 0: coords = [coord for coord in line_coords if coord['chrom']==chr_num] + + elif filepath.split('.')[-1] == 'txt': + if len(line_coords[0]) == 3: + line_coords = [{'chrom': chrom, 'pos': float(x), 'y': float(y)} for (chrom, x, y) in line_coords] + if chr_num >= 0: coords = [coord for coord in line_coords if coord['chrom']==chr_num] + elif len(line_coords[0]) == 2: + line_coords = [{'chrom': -1, 'pos': float(x), 'y': float(y)} for (x, y) in line_coords] + else: + raise ValueError('Invalid file format') + + fi.close() + return line_coords + + +def get_track(user_track_params, track_name, strand='-'): + boxes = [] + db = user_track_params[track_name]['db'] + seqid = user_track_params[track_name]['seqid'] + for s in list(db.region(seqid=seqid, featuretype='exon', strand=strand)): + box_dict = dict(ID=s['gene_id'][0], start=s.start, end=s.end, compact_start=-1, + compact_end=-1) # more than one gene name? + boxes.append(box_dict) + + return boxes + + diff --git a/report/glyphs.py b/report/glyphs.py new file mode 100755 index 0000000..e39eecb --- /dev/null +++ b/report/glyphs.py @@ -0,0 +1,292 @@ +import numpy as np +from bokeh.models import ColumnDataSource, Rect, Segment, Circle, MultiPolygons +from colors import lighten_hex_color + +def center_feature(feature): + center = feature[0] + (feature[1] - feature[0])/2 + return center + +def add_exon_glyph(plot_params, plot, exons, direction): + features_original = [(exon['start'], exon['end']) for exon in exons] + features_compact = [(exon['compact_start'], exon['compact_end']) for exon in exons] + + x = [center_feature(f) for f in features_compact] + y = [plot_params['transcript_height'] for f in features_compact] + w = [end - start for (start, end) in features_compact] + h = [plot_params['exon_height'] - 4 for f in features_compact] + + ### METADATA ### + feat_type = ['Exon' for f in features_compact] + adj_start = [start for (start, end) in features_compact] + adj_end = [end for (start, end) in features_compact] + true_start = [start for (start, end) in features_original] + true_end = [end for (start, end) in features_original] + true_len = [end - start + 1 for (start, end) in features_original] # +1 for 1 indexed coords + + exon_source = ColumnDataSource(dict(x=x, y=y, w=w, h=h, + feat_type=feat_type, + adj_start=adj_start, adj_end=adj_end, + true_len=true_len, true_start=true_start, true_end=true_end)) + + color = plot_params['glyph_colors']['exon'] + hover_color = lighten_hex_color(color, 20) + + exon_glyph = Rect(x='x', y='y', width='w', height='h', height_units='screen', fill_color=color, line_color=color) + hover_glyph = Rect(x='x', y='y', width='hover_w', height='hover_h', height_units='screen', fill_color=hover_color, + line_color=hover_color) + + if direction == '': + exon_glyph = plot.add_glyph(exon_source, exon_glyph, hover_glyph=hover_glyph) + return exon_glyph, None + + ### ADD ARROWS ### + def adjust_arrow_coords(coords, direction): + ret = [j * (adj_end[i] - adj_start[i]) / 100 for j in coords] + while (max(ret) - min(ret)) / plot_params['plot_width'] > 0.01: + ret = [r * .9 for r in ret] + + if direction == '-': ret = [-r for r in ret] + return [r + x[i] for r in ret] + + xs_dict = [] + for i in range(len(features_compact)): + xs_dict.append([{'exterior': adjust_arrow_coords([-20, -20, 0, 0], direction), 'holes': []}]) + xs_dict.append([{'exterior': adjust_arrow_coords([0, 0, 20], direction), 'holes': []}]) + + ys_dict = [] + for i in range(len(features_compact)): + ys_dict.append([{'exterior': [plot_params['transcript_height'] - plot_params['exon_height'] / 5, + plot_params['transcript_height'] + plot_params['exon_height'] / 5, + plot_params['transcript_height'] + plot_params['exon_height'] / 5, + plot_params['transcript_height'] - plot_params['exon_height'] / 5], + 'holes': []}]) # rect: prev [9, 11, 11, 9] + ys_dict.append([{'exterior': [plot_params['transcript_height'] - plot_params['exon_height'] / 2, + plot_params['transcript_height'] + plot_params['exon_height'] / 2, + plot_params['transcript_height']], 'holes': []}]) # triangle: prev [7,13,10] + + xs = [[[p['exterior'], *p['holes']] for p in mp] for mp in xs_dict] + + ys = [[[p['exterior'], *p['holes']] for p in mp] for mp in ys_dict] + + color = plot_params['glyph_colors']['arrow'] + + arrow_source = ColumnDataSource(dict(x=xs, y=ys, fill_alpha=[1 for i in features_compact] * 2, + direction=[direction for i in features_compact] * 2)) + arrow_glyph = plot.multi_polygons(source=arrow_source, xs='x', ys='y', fill_color=color, line_color=color, + fill_alpha='fill_alpha', line_alpha=0) + arrow_glyph.level = 'overlay' + arrow_glyph.nonselection_glyph = None + + exon_glyph = plot.add_glyph(exon_source, exon_glyph, hover_glyph=hover_glyph, nonselection_glyph=None) + + return exon_glyph, arrow_glyph + +def add_intron_glyph(plot_params, plot, introns, fill_alpha=1, width=14): + features_original = [(intron['start'], intron['end']) for intron in introns] + features_compact = [(intron['compact_start'], intron['compact_end']) for intron in introns] + x = [center_feature(f) for f in features_compact] + y = [plot_params['transcript_height'] for f in features_compact] # prev 10 + w = [plot_params['intron_size'] * 2 for f in features_compact] # avoid white spaces + h = [plot_params['exon_height'] / 2 for f in features_compact] + + ### METADATA ### + feat_type = ['Intron' for f in features_compact] + adj_start = [start for (start, end) in features_compact] + adj_end = [end for (start, end) in features_compact] + true_start = [start for (start, end) in features_original] + true_end = [end for (start, end) in features_original] + true_len = [end - start + 1 for (start, end) in features_original] # +1 for 1 indexed coords + + source = ColumnDataSource(dict(x=x, y=y, w=w, h=h, + feat_type=feat_type, + adj_start=adj_start, adj_end=adj_end, + true_len=true_len, true_start=true_start, true_end=true_end)) + + color = plot_params['glyph_colors']['intron'] + hover_color = lighten_hex_color(color, 50) + + glyph = Rect(x='x', y='y', width='w', height='h', height_units='screen', fill_color=color, fill_alpha=fill_alpha, + line_color=color) + hover_glyph = Rect(x='x', y='y', width='w', height='h', height_units='screen', fill_color=hover_color, + fill_alpha=fill_alpha, line_color=hover_color) + + return plot.add_glyph(source, glyph, hover_glyph=hover_glyph) + + +def add_UTR_glyph(plot_params, plot, UTRs, fill_alpha=0.4): + features_original = [(UTR['start'], UTR['end']) for UTR in UTRs] + features_compact = [(UTR['compact_start'], UTR['compact_end']) for UTR in UTRs] + feat_type = [UTR['featuretype'] for UTR in UTRs] + x = [center_feature(f) for f in features_compact] + y = [plot_params['transcript_height'] for f in features_compact] + w = [end - start for (start, end) in features_compact] + h = [plot_params['exon_height'] - 4 for f in features_compact] + + ### METADATA ### + adj_start = [start for (start, end) in features_compact] + adj_end = [end for (start, end) in features_compact] + true_start = [start for (start, end) in features_original] + true_end = [end for (start, end) in features_original] + true_len = [end - start + 1 for (start, end) in features_original] # +1 for 1 indexed coords + + source = ColumnDataSource(dict(x=x, y=y, w=w, h=h, + feat_type=feat_type, + adj_start=adj_start, adj_end=adj_end, + true_len=true_len, true_start=true_start, true_end=true_end)) + + color = plot_params['glyph_colors']['UTR'] + hover_color = lighten_hex_color(color, 40) + + glyph = Rect(x='x', y='y', width='w', height='h', height_units='screen', fill_color=color, fill_alpha=fill_alpha, + line_color=color) + hover_glyph = Rect(x='x', y='y', width='w', height='h', height_units='screen', fill_color=hover_color, + fill_alpha=fill_alpha, line_color=hover_color) + + return plot.add_glyph(source, glyph, hover_glyph=hover_glyph) + +def add_variant_glyph(plot_params, variant_params, plot, variant_ls, line_width=2): + variant_ls = [v for v in variant_ls if v['compact_pos'] >= 0] + N = len(variant_ls) + if N == 0: + variant_params['add_variant_axis'] = False + return None, None, [0], [0] + allele_counts = [v['allele_count'] for v in variant_ls] + allele_numbers = [v['allele_number'] for v in variant_ls] + allele_frequencies = [v['allele_frequency'] for v in variant_ls] + + if sum(allele_frequencies) < 0: #TODO case where freq data but not cts + variant_params['add_variant_axis'] = False + else: variant_params['add_variant_axis'] = True + + x = [v['compact_pos'] for v in variant_ls] + y0s = [plot_params['y0'] - plot_params['exon_height'] / 2] * N + + def get_y1(fn, ls): + ls_fn = [fn(x) for x in ls] + for idx, x in enumerate(ls_fn): + if x < 0: raise ValueError('Lollipop height cannot be negative') + y1_circle = [c * (plot_params['plot_height'] - plot_params['y0'] - variant_params[ + 'min_lollipop_height'] - variant_params['lollipop_radius'] - line_width - 2) / max([c for c in ls_fn]) + plot_params['y0'] + + variant_params['min_lollipop_height'] for c in ls_fn] + y1_segment = [y - variant_params['lollipop_radius'] for y in y1_circle] + return y1_circle, y1_segment + + r = [variant_params['lollipop_radius']] * N + colors = [v['color'] for v in variant_ls] + + hover_colors = [lighten_hex_color(c, 40) for c in colors] + + if variant_params['add_variant_axis']: + y1_circle,y1_segment = get_y1(lambda x: x, allele_counts) + else: + y1_circle,y1_segment = get_y1(lambda x: x/2, [1 for v in variant_ls]) + y1_circle = [y1/2 for y1 in y1_circle] #if lollipop heights don't hold meaning, set them to 1/2 max height + y1_segment = [y1/2 for y1 in y1_segment] + + cds_dict = dict(x=x, r=r, y0=y0s, y1_circle=y1_circle, y1_segment=y1_segment, + allele_counts=allele_counts, + allele_numbers=allele_numbers, + allele_frequencies=allele_frequencies, + pos=[v['pos'] for v in variant_ls], + ref=[v['ref'] for v in variant_ls], + alt=[v['alt'] for v in variant_ls], + ann=[v['annotation'] for v in variant_ls], + sev=[v['severity'] for v in variant_ls], + colors=colors, hover_colors=hover_colors, line_alpha=[1 for v in variant_ls]) + + if variant_params['add_variant_axis']: + y1_ci_li_ct, y1_sg_li_ct = get_y1(lambda x: x, allele_counts) + y1_ci_lg_ct, y1_sg_lg_ct = get_y1(lambda x: np.log10(x) if x > 0 else 0, allele_counts) + y1_ci_li_fr, y1_sg_li_fr = get_y1(lambda x: x, allele_frequencies) + y1_ci_lg_fr, y1_sg_lg_fr = get_y1(lambda x: -np.log10(x) if x > 0 else 0, allele_frequencies) + + variant_axis_dict = dict( + y1_ci_li_ct=y1_ci_li_ct, y1_sg_li_ct=y1_sg_li_ct, + y1_ci_lg_ct=y1_ci_lg_ct, y1_sg_lg_ct=y1_sg_lg_ct, + y1_ci_li_fr=y1_ci_li_fr, y1_sg_li_fr=y1_sg_li_fr, + y1_ci_lg_fr=y1_ci_lg_fr, y1_sg_lg_fr=y1_sg_lg_fr) + cds_dict.update(variant_axis_dict) + + source = ColumnDataSource(cds_dict) + + segment_glyph = plot.segment(source=source, x0='x', y0='y0', x1='x', y1='y1_segment', line_color='colors', + line_width=line_width, line_alpha='line_alpha') + segment_glyph.hover_glyph = Segment(x0='x', y0='y0', x1='x', y1='y1_segment', line_color='hover_colors', + line_width=line_width, line_alpha='line_alpha') + segment_glyph.nonselection_glyph = None + circle_glyph = plot.circle('x', 'y1_circle', source=source, radius='r', radius_units='screen', fill_color='white', + fill_alpha=0, line_color='colors', line_width=line_width + 0.5, line_alpha='line_alpha') + circle_glyph.hover_glyph = Circle(x='x', y='y1_circle', radius='r', radius_units='screen', fill_color='white', + fill_alpha=0, line_color='hover_colors', line_width=line_width + 0.5, + line_alpha='line_alpha') + circle_glyph.nonselection_glyph = None + return segment_glyph, circle_glyph, allele_counts, allele_frequencies + + +def add_track_glyph(plot, tracks, height, y_pos): + tracks = [di for di in tracks if di['compact_start']>=0] + tracks = sorted(tracks, key=lambda di: di['end']-di['start'], reverse=True) #make sure smaller tracks are in front of larger tracks + tracks_compact = [(di['compact_start'], di['compact_end']) for di in tracks] + tracks_original = [(di['start'], di['end']) for di in tracks] + track_names = [di['ID'] for di in tracks] + colors = [di['color'] for di in tracks] + + x = [center_feature(f) for f in tracks_compact] + y = [y_pos for f in tracks_compact] + w = [end - start for (start, end) in tracks_compact] + h = [height for f in tracks_compact] + hover_colors = [lighten_hex_color(color, 40) for color in colors] + + ### METADATA ### + adj_start = [start for (start, end) in tracks_compact] + adj_end = [end for (start, end) in tracks_compact] + true_start = [start for (start, end) in tracks_original] + true_end = [end for (start, end) in tracks_original] + true_len = [end - start + 1 for (start, end) in tracks_original] # +1 for 1 indexed coords + + source = ColumnDataSource(dict(x=x, y=y, w=w, h=h, colors=colors, hover_colors=hover_colors, + track_names=track_names, + adj_start=adj_start, adj_end=adj_end, + true_len=true_len, true_start=true_start, true_end=true_end)) + + track_glyph = plot.rect(source=source, x='x', y='y', width='w', height='h', height_units='screen', + fill_color='colors', line_color='colors') + hover_glyph = Rect(x='x', y='y', width='hover_w', height='h', height_units='screen', fill_color='hover_colors', + line_color='hover_colors') + track_glyph.hover_glyph = hover_glyph + track_glyph.nonselection_glyph = None + return track_glyph + + +def add_multi_line_glyph(plot_params, plot, xs_ls, ys_ls_unsmoothed, max_y=-1, k=1, y0=0, p=False, fill_area=False, + y_axis_name=None, line_color='black', line_width=2, line_alpha=1): + def smooth_ls(ls, k=1): + ls_copy = ls + for i in range(0, len(ls_copy), k): + window_avg = np.mean(ls_copy[i:i + k]) + for j in range(i, i + k): + if j < len(ls_copy): ls_copy[j] = float(window_avg) + return ls_copy + + if max_y < 0: max_y = max([y for ys in ys_ls_unsmoothed for y in ys]) + + ys_ls_unsmoothed = [[y * (plot_params['plot_height'] - y0) / max_y + y0 for y in ys] for ys in ys_ls_unsmoothed] + + ys_ls_smoothed = [smooth_ls(ys, k=k) for ys in ys_ls_unsmoothed] + + line_alpha = [line_alpha for xs in xs_ls] + + if fill_area: + xs_ls = [[xs[0]] + xs + [xs[-1]] for xs in xs_ls] + ys_ls_smoothed = [[y0] + ys + [y0] for ys in ys_ls_smoothed] + ys_ls_unsmoothed = [[y0] + ys + [y0] for ys in ys_ls_unsmoothed] + source = ColumnDataSource(dict(x=xs_ls, y=ys_ls_smoothed, y_unsmoothed=ys_ls_unsmoothed, line_alpha=line_alpha)) + multi_line_glyph = plot.patches(source=source, xs='x', ys='y', fill_color=line_color, fill_alpha='line_alpha', + line_alpha=0) + else: + source = ColumnDataSource(dict(x=xs_ls, y=ys_ls_smoothed, y_unsmoothed=ys_ls_unsmoothed, line_alpha=line_alpha)) + multi_line_glyph = plot.multi_line(source=source, xs='x', ys='y', line_color=line_color, line_width=line_width, + line_alpha='line_alpha') + + multi_line_glyph.nonselection_glyph = None + return multi_line_glyph \ No newline at end of file diff --git a/report/map_coords.py b/report/map_coords.py new file mode 100755 index 0000000..0a6b76c --- /dev/null +++ b/report/map_coords.py @@ -0,0 +1,26 @@ +from project_coords import map_box,map_point + +#x coords must be ints +def map_line(line_coords,exons,chr_num=-1): + xs_ls = [] + ys_ls = [] + + if 'start' in line_coords[0].keys(): + map_box(line_coords, exons) + for co in line_coords: + if co['compact_start'] < 0: continue + xs = list(range(co['compact_start'],co['compact_end']+1)) + ys = [] + for x in xs: + ys.append(co['y']) + xs_ls.append(xs) + ys_ls.append(ys) + else: + map_point(line_coords, exons) + + for exon in exons: + exon_pts = [co for co in line_coords if exon['compact_start'] <= co['compact_pos'] <= exon['compact_end']] + xs_ls.append([co['compact_pos'] for co in exon_pts]) + ys_ls.append([co['y'] for co in exon_pts]) + + return xs_ls,ys_ls \ No newline at end of file diff --git a/report/named_colors.yaml b/report/named_colors.yaml new file mode 100755 index 0000000..a066a2e --- /dev/null +++ b/report/named_colors.yaml @@ -0,0 +1,91 @@ +#Color names from coolors.co + +#REDS +red salsa: '#f94144' +orange red: '#f3722c' +maroon: '#a53860' +irresistible: '#b4436c' +big dip oruby: '#982649' +rust: '#bf3100' +rose madder: '#db2b39' +carmine: '#d62246' +vermillion: '#c73e1d' +burgundy: '#7d1128' + + +#ORANGES +yellow orange: '#f8961e' +mango tango: '#ff8c42' +sandy brown: #ee964b' +orange soda: '#f95738' +dark orange: '#ff9000' +cadmium orange: '#dd8740' +alloy orange: '#bf6822' +russet : '#7a4419' +safety orange: '#f26419' +mahogany: '#c14b0b' + +#YELLOWS +maize crayola: 'f9c74f' +maxiumum yellow red: '#f7b538' +marigold: '#ec9f05' +orange yellow: '#f5bb00' +honey yellow: '#f6ae2d' +corn: '#fff05a' +saffron: '#e9ba20' +satin sheen gold: '#cba135' +metallic sunburst: '#a2802a' +lemon curry: '#ad9A0b' + +#GREENS +pistachio: '#90be6d' +shiny shamrock: '#49a078' +bud green: '#5fad56' +illuminating emerald: '#4d9078' +warm black: '#104547' +dark green: '#90C290' +moss green: '#809848' +yellow green: '#8Fc93a' +avocado: '#5c8001' +polished pine: '#6ba292' +apple green: '#80b918' + +#BLUES +zomp: '#43aa8b' +queen blue: '#577590' +medium slate blue: '#7161ef' +purple navy: '#404e7c' +ocean blue: '#613dc1' +indigo dye: '#0d3b66' +wild blue yonder: '#a1b5d8' +oxford blue: '#031d44' +dark sky blue: '#86bbd8' +charcoal: '#2f4858' + +#PURPLES +bright lilac: '#bf99f2' +rhythm: '#7e7f9a' +orchid crayola: '#e899dc' +violet web: '#e086d3' +maximum blue purple: '#a09be7' +plum web: '#eda2f2' +dark orchid: '#af2bbf' +dark purple: '#4b1d3f' +old mauve: '#5d2e46' +razzmic berry: '#9b5094' + +#PINKS +dogwood rose: '#d90368' +quinacridone magenta: '#993955' +super pink: '#dc6bad' +ultra red: '#ef798a' +pastel pink: '#f7a9a8' +cinnamon satin: '#ce6d8b' +vivid burgundy: '#990033' +claret: '#5f021f' +light coral: '#f28482' +fuzzy wuzzy: '#cd5d67' + +#GRAYS +gray 11: '#bdbdbd' +davys gray: '#525252' \ No newline at end of file diff --git a/report/observed_mut_counts.txt b/report/observed_mut_counts.txt new file mode 100644 index 0000000..ff8602a --- /dev/null +++ b/report/observed_mut_counts.txt @@ -0,0 +1,2899 @@ +chr20 63400208 11 +chr20 63400233 12 +chr20 63400258 10 +chr20 63400283 11 +chr20 63400308 10 +chr20 63400333 12 +chr20 63400358 10 +chr20 63400383 10 +chr20 63400408 9 +chr20 63400433 8 +chr20 63400458 7 +chr20 63400483 10 +chr20 63400508 10 +chr20 63400533 9 +chr20 63400558 11 +chr20 63400583 12 +chr20 63400608 10 +chr20 63400633 10 +chr20 63400658 15 +chr20 63400683 17 +chr20 63400708 14 +chr20 63400733 10 +chr20 63400758 9 +chr20 63400783 10 +chr20 63400808 13 +chr20 63400833 15 +chr20 63400858 13 +chr20 63400883 13 +chr20 63400908 14 +chr20 63400933 13 +chr20 63400958 15 +chr20 63400983 15 +chr20 63401008 12 +chr20 63401033 12 +chr20 63401058 15 +chr20 63401083 12 +chr20 63401108 10 +chr20 63401133 7 +chr20 63401158 6 +chr20 63401183 4 +chr20 63401208 7 +chr20 63401233 8 +chr20 63401258 6 +chr20 63401283 8 +chr20 63401308 7 +chr20 63401333 6 +chr20 63401358 4 +chr20 63401383 5 +chr20 63401408 8 +chr20 63401433 11 +chr20 63401458 11 +chr20 63401483 11 +chr20 63401508 10 +chr20 63401533 10 +chr20 63401558 8 +chr20 63401583 8 +chr20 63401608 15 +chr20 63401633 18 +chr20 63401658 11 +chr20 63401683 8 +chr20 63401708 8 +chr20 63401733 11 +chr20 63401758 10 +chr20 63401783 5 +chr20 63401808 2 +chr20 63401833 2 +chr20 63401858 6 +chr20 63401883 7 +chr20 63401908 4 +chr20 63401933 6 +chr20 63401958 6 +chr20 63401983 3 +chr20 63402008 3 +chr20 63402033 4 +chr20 63402058 6 +chr20 63402083 5 +chr20 63402108 6 +chr20 63402133 10 +chr20 63402158 9 +chr20 63402183 6 +chr20 63402208 7 +chr20 63402233 9 +chr20 63402258 10 +chr20 63402283 14 +chr20 63402308 11 +chr20 63402333 10 +chr20 63402358 12 +chr20 63402383 12 +chr20 63402408 8 +chr20 63402433 10 +chr20 63402458 11 +chr20 63402483 9 +chr20 63402508 10 +chr20 63402533 8 +chr20 63402558 9 +chr20 63402583 8 +chr20 63402608 8 +chr20 63402633 9 +chr20 63402658 12 +chr20 63402683 9 +chr20 63402708 8 +chr20 63402733 10 +chr20 63402758 10 +chr20 63402783 14 +chr20 63402808 12 +chr20 63402833 14 +chr20 63402858 13 +chr20 63402883 11 +chr20 63402908 11 +chr20 63402933 10 +chr20 63402958 9 +chr20 63402983 7 +chr20 63403008 9 +chr20 63403033 10 +chr20 63403058 9 +chr20 63403083 12 +chr20 63403108 12 +chr20 63403133 8 +chr20 63403158 10 +chr20 63403183 13 +chr20 63403208 16 +chr20 63403233 16 +chr20 63403258 10 +chr20 63403283 9 +chr20 63403308 10 +chr20 63403333 9 +chr20 63403358 9 +chr20 63403383 10 +chr20 63403408 8 +chr20 63403433 6 +chr20 63403458 8 +chr20 63403483 7 +chr20 63403508 9 +chr20 63403533 11 +chr20 63403558 10 +chr20 63403583 11 +chr20 63403608 12 +chr20 63403633 13 +chr20 63403658 12 +chr20 63403683 9 +chr20 63403708 12 +chr20 63403733 11 +chr20 63403758 13 +chr20 63403783 13 +chr20 63403808 14 +chr20 63403833 15 +chr20 63403858 12 +chr20 63403883 15 +chr20 63403908 14 +chr20 63403933 10 +chr20 63403958 11 +chr20 63403983 8 +chr20 63404008 15 +chr20 63404033 16 +chr20 63404058 13 +chr20 63404083 12 +chr20 63404108 12 +chr20 63404133 14 +chr20 63404158 13 +chr20 63404183 10 +chr20 63404208 8 +chr20 63404233 9 +chr20 63404258 11 +chr20 63404283 8 +chr20 63404308 5 +chr20 63404333 3 +chr20 63404358 3 +chr20 63404383 5 +chr20 63404408 6 +chr20 63404433 6 +chr20 63404458 7 +chr20 63404483 9 +chr20 63404508 8 +chr20 63404533 8 +chr20 63404558 11 +chr20 63404583 13 +chr20 63404608 13 +chr20 63404633 9 +chr20 63404658 7 +chr20 63404683 10 +chr20 63404708 15 +chr20 63404733 11 +chr20 63404758 13 +chr20 63404783 12 +chr20 63404808 10 +chr20 63404833 10 +chr20 63404858 10 +chr20 63404883 9 +chr20 63404908 3 +chr20 63404933 7 +chr20 63404958 7 +chr20 63404983 10 +chr20 63405008 13 +chr20 63405033 11 +chr20 63405058 12 +chr20 63405083 10 +chr20 63405108 9 +chr20 63405133 10 +chr20 63405158 6 +chr20 63405183 8 +chr20 63405208 10 +chr20 63405233 8 +chr20 63405258 9 +chr20 63405283 7 +chr20 63405308 7 +chr20 63405333 9 +chr20 63405358 12 +chr20 63405383 11 +chr20 63405408 14 +chr20 63405433 15 +chr20 63405458 8 +chr20 63405483 7 +chr20 63405508 8 +chr20 63405533 9 +chr20 63405558 13 +chr20 63405583 11 +chr20 63405608 6 +chr20 63405633 6 +chr20 63405658 8 +chr20 63405683 9 +chr20 63405708 6 +chr20 63405733 5 +chr20 63405758 11 +chr20 63405783 14 +chr20 63405808 11 +chr20 63405833 9 +chr20 63405858 10 +chr20 63405883 11 +chr20 63405908 7 +chr20 63405933 3 +chr20 63405958 6 +chr20 63405983 14 +chr20 63406008 16 +chr20 63406033 12 +chr20 63406058 11 +chr20 63406083 14 +chr20 63406108 17 +chr20 63406133 13 +chr20 63406158 12 +chr20 63406183 10 +chr20 63406208 13 +chr20 63406233 10 +chr20 63406258 10 +chr20 63406283 10 +chr20 63406308 13 +chr20 63406333 14 +chr20 63406358 12 +chr20 63406383 13 +chr20 63406408 10 +chr20 63406433 7 +chr20 63406458 8 +chr20 63406483 11 +chr20 63406508 9 +chr20 63406533 6 +chr20 63406558 10 +chr20 63406583 13 +chr20 63406608 11 +chr20 63406633 14 +chr20 63406658 9 +chr20 63406683 14 +chr20 63406708 17 +chr20 63406733 11 +chr20 63406758 6 +chr20 63406783 8 +chr20 63406808 7 +chr20 63406833 5 +chr20 63406858 6 +chr20 63406883 5 +chr20 63406908 11 +chr20 63406933 14 +chr20 63406958 8 +chr20 63406983 7 +chr20 63407008 7 +chr20 63407033 6 +chr20 63407058 9 +chr20 63407083 9 +chr20 63407108 10 +chr20 63407133 15 +chr20 63407158 16 +chr20 63407183 13 +chr20 63407208 14 +chr20 63407233 10 +chr20 63407258 11 +chr20 63407283 15 +chr20 63407308 11 +chr20 63407333 6 +chr20 63407358 7 +chr20 63407383 9 +chr20 63407408 7 +chr20 63407433 8 +chr20 63407458 10 +chr20 63407483 8 +chr20 63407508 7 +chr20 63407533 8 +chr20 63407558 6 +chr20 63407583 9 +chr20 63407608 11 +chr20 63407633 10 +chr20 63407658 7 +chr20 63407683 5 +chr20 63407708 7 +chr20 63407733 6 +chr20 63407758 5 +chr20 63407783 8 +chr20 63407808 12 +chr20 63407833 14 +chr20 63407858 11 +chr20 63407883 4 +chr20 63407908 4 +chr20 63407933 6 +chr20 63407958 7 +chr20 63407983 6 +chr20 63408008 14 +chr20 63408033 13 +chr20 63408058 10 +chr20 63408083 11 +chr20 63408108 14 +chr20 63408133 17 +chr20 63408158 10 +chr20 63408183 6 +chr20 63408208 10 +chr20 63408233 11 +chr20 63408258 8 +chr20 63408283 8 +chr20 63408308 9 +chr20 63408333 8 +chr20 63408358 8 +chr20 63408383 10 +chr20 63408408 7 +chr20 63408433 3 +chr20 63408458 6 +chr20 63408483 11 +chr20 63408508 7 +chr20 63408533 6 +chr20 63408558 11 +chr20 63408583 11 +chr20 63408608 8 +chr20 63408633 4 +chr20 63408658 5 +chr20 63408683 8 +chr20 63408708 13 +chr20 63408733 10 +chr20 63408758 7 +chr20 63408783 11 +chr20 63408808 16 +chr20 63408833 20 +chr20 63408858 12 +chr20 63408883 5 +chr20 63408908 10 +chr20 63408933 8 +chr20 63408958 7 +chr20 63408983 7 +chr20 63409008 7 +chr20 63409033 12 +chr20 63409058 13 +chr20 63409083 8 +chr20 63409108 7 +chr20 63409133 4 +chr20 63409158 5 +chr20 63409183 7 +chr20 63409208 7 +chr20 63409233 7 +chr20 63409258 10 +chr20 63409283 15 +chr20 63409308 15 +chr20 63409333 10 +chr20 63409358 9 +chr20 63409383 14 +chr20 63409408 13 +chr20 63409433 8 +chr20 63409458 9 +chr20 63409483 7 +chr20 63409508 7 +chr20 63409533 4 +chr20 63409558 5 +chr20 63409583 10 +chr20 63409608 12 +chr20 63409633 10 +chr20 63409658 8 +chr20 63409683 10 +chr20 63409708 8 +chr20 63409733 6 +chr20 63409758 8 +chr20 63409783 6 +chr20 63409808 4 +chr20 63409833 6 +chr20 63409858 7 +chr20 63409883 5 +chr20 63409908 5 +chr20 63409933 4 +chr20 63409958 6 +chr20 63409983 10 +chr20 63410008 14 +chr20 63410033 12 +chr20 63410058 11 +chr20 63410083 7 +chr20 63410108 5 +chr20 63410133 8 +chr20 63410158 7 +chr20 63410183 9 +chr20 63410208 9 +chr20 63410233 7 +chr20 63410258 7 +chr20 63410283 5 +chr20 63410308 9 +chr20 63410333 10 +chr20 63410358 7 +chr20 63410383 9 +chr20 63410408 10 +chr20 63410433 8 +chr20 63410458 11 +chr20 63410483 10 +chr20 63410508 13 +chr20 63410533 13 +chr20 63410558 5 +chr20 63410583 8 +chr20 63410608 9 +chr20 63410633 9 +chr20 63410658 15 +chr20 63410683 10 +chr20 63410708 5 +chr20 63410733 6 +chr20 63410758 11 +chr20 63410783 10 +chr20 63410808 5 +chr20 63410833 5 +chr20 63410858 7 +chr20 63410883 10 +chr20 63410908 12 +chr20 63410933 12 +chr20 63410958 11 +chr20 63410983 9 +chr20 63411008 7 +chr20 63411033 7 +chr20 63411058 9 +chr20 63411083 8 +chr20 63411108 9 +chr20 63411133 11 +chr20 63411158 15 +chr20 63411183 13 +chr20 63411208 11 +chr20 63411233 8 +chr20 63411258 7 +chr20 63411283 8 +chr20 63411308 9 +chr20 63411333 10 +chr20 63411358 10 +chr20 63411383 8 +chr20 63411408 12 +chr20 63411433 11 +chr20 63411458 10 +chr20 63411483 9 +chr20 63411508 9 +chr20 63411533 13 +chr20 63411558 9 +chr20 63411583 8 +chr20 63411608 8 +chr20 63411633 4 +chr20 63411658 6 +chr20 63411683 7 +chr20 63411708 11 +chr20 63411733 14 +chr20 63411758 13 +chr20 63411783 10 +chr20 63411808 9 +chr20 63411833 11 +chr20 63411858 8 +chr20 63411883 5 +chr20 63411908 10 +chr20 63411933 13 +chr20 63411958 8 +chr20 63411983 9 +chr20 63412008 15 +chr20 63412033 11 +chr20 63412058 4 +chr20 63412083 8 +chr20 63412108 13 +chr20 63412133 13 +chr20 63412158 13 +chr20 63412183 13 +chr20 63412208 15 +chr20 63412233 12 +chr20 63412258 5 +chr20 63412283 6 +chr20 63412308 6 +chr20 63412333 7 +chr20 63412358 11 +chr20 63412383 10 +chr20 63412408 11 +chr20 63412433 10 +chr20 63412458 5 +chr20 63412483 6 +chr20 63412508 8 +chr20 63412533 8 +chr20 63412558 6 +chr20 63412583 7 +chr20 63412608 9 +chr20 63412633 13 +chr20 63412658 12 +chr20 63412683 7 +chr20 63412708 8 +chr20 63412733 9 +chr20 63412758 9 +chr20 63412783 9 +chr20 63412808 7 +chr20 63412833 7 +chr20 63412858 9 +chr20 63412883 11 +chr20 63412908 9 +chr20 63412933 9 +chr20 63412958 10 +chr20 63412983 9 +chr20 63413008 8 +chr20 63413033 5 +chr20 63413058 10 +chr20 63413083 10 +chr20 63413108 9 +chr20 63413133 10 +chr20 63413158 7 +chr20 63413183 8 +chr20 63413208 11 +chr20 63413233 9 +chr20 63413258 4 +chr20 63413283 3 +chr20 63413308 7 +chr20 63413333 9 +chr20 63413358 7 +chr20 63413383 9 +chr20 63413408 12 +chr20 63413433 8 +chr20 63413458 5 +chr20 63413483 4 +chr20 63413508 6 +chr20 63413533 6 +chr20 63413558 4 +chr20 63413583 7 +chr20 63413608 12 +chr20 63413633 12 +chr20 63413658 9 +chr20 63413683 6 +chr20 63413708 5 +chr20 63413733 7 +chr20 63413758 8 +chr20 63413783 9 +chr20 63413808 9 +chr20 63413833 11 +chr20 63413858 7 +chr20 63413883 4 +chr20 63413908 5 +chr20 63413933 8 +chr20 63413958 9 +chr20 63413983 12 +chr20 63414008 16 +chr20 63414033 11 +chr20 63414058 8 +chr20 63414083 8 +chr20 63414108 7 +chr20 63414133 10 +chr20 63414158 10 +chr20 63414183 7 +chr20 63414208 13 +chr20 63414233 16 +chr20 63414258 12 +chr20 63414283 12 +chr20 63414308 11 +chr20 63414333 8 +chr20 63414358 6 +chr20 63414383 10 +chr20 63414408 14 +chr20 63414433 14 +chr20 63414458 14 +chr20 63414483 15 +chr20 63414508 11 +chr20 63414533 11 +chr20 63414558 14 +chr20 63414583 14 +chr20 63414608 8 +chr20 63414633 3 +chr20 63414658 5 +chr20 63414683 8 +chr20 63414708 8 +chr20 63414733 5 +chr20 63414758 5 +chr20 63414783 7 +chr20 63414808 12 +chr20 63414833 13 +chr20 63414858 10 +chr20 63414883 9 +chr20 63414908 11 +chr20 63414933 10 +chr20 63414958 7 +chr20 63414983 7 +chr20 63415008 8 +chr20 63415033 11 +chr20 63415058 7 +chr20 63415083 5 +chr20 63415108 5 +chr20 63415133 5 +chr20 63415158 6 +chr20 63415183 8 +chr20 63415208 14 +chr20 63415233 12 +chr20 63415258 10 +chr20 63415283 11 +chr20 63415308 8 +chr20 63415333 6 +chr20 63415358 4 +chr20 63415383 3 +chr20 63415408 3 +chr20 63415433 1 +chr20 63415458 3 +chr20 63415483 5 +chr20 63415508 5 +chr20 63415533 5 +chr20 63415558 8 +chr20 63415583 10 +chr20 63415608 9 +chr20 63415633 6 +chr20 63415658 6 +chr20 63415683 8 +chr20 63415708 10 +chr20 63415733 10 +chr20 63415758 11 +chr20 63415783 14 +chr20 63415808 9 +chr20 63415833 10 +chr20 63415858 8 +chr20 63415883 6 +chr20 63415908 5 +chr20 63415933 9 +chr20 63415958 11 +chr20 63415983 10 +chr20 63416008 9 +chr20 63416033 6 +chr20 63416058 11 +chr20 63416083 12 +chr20 63416108 8 +chr20 63416133 6 +chr20 63416158 4 +chr20 63416183 11 +chr20 63416208 14 +chr20 63416233 9 +chr20 63416258 9 +chr20 63416283 12 +chr20 63416308 12 +chr20 63416333 11 +chr20 63416358 16 +chr20 63416383 12 +chr20 63416408 8 +chr20 63416433 7 +chr20 63416458 8 +chr20 63416483 13 +chr20 63416508 13 +chr20 63416533 10 +chr20 63416558 6 +chr20 63416583 8 +chr20 63416608 10 +chr20 63416633 14 +chr20 63416658 13 +chr20 63416683 9 +chr20 63416708 10 +chr20 63416733 8 +chr20 63416758 9 +chr20 63416783 11 +chr20 63416808 11 +chr20 63416833 14 +chr20 63416858 10 +chr20 63416883 8 +chr20 63416908 8 +chr20 63416933 7 +chr20 63416958 9 +chr20 63416983 11 +chr20 63417008 15 +chr20 63417033 14 +chr20 63417058 10 +chr20 63417083 7 +chr20 63417108 5 +chr20 63417133 5 +chr20 63417158 6 +chr20 63417183 6 +chr20 63417208 5 +chr20 63417233 10 +chr20 63417258 10 +chr20 63417283 11 +chr20 63417308 10 +chr20 63417333 8 +chr20 63417358 7 +chr20 63417383 4 +chr20 63417408 12 +chr20 63417433 13 +chr20 63417458 12 +chr20 63417483 15 +chr20 63417508 10 +chr20 63417533 5 +chr20 63417558 5 +chr20 63417583 9 +chr20 63417608 10 +chr20 63417633 11 +chr20 63417658 10 +chr20 63417683 10 +chr20 63417708 9 +chr20 63417733 12 +chr20 63417758 12 +chr20 63417783 13 +chr20 63417808 15 +chr20 63417833 11 +chr20 63417858 11 +chr20 63417883 16 +chr20 63417908 19 +chr20 63417933 22 +chr20 63417958 15 +chr20 63417983 11 +chr20 63418008 12 +chr20 63418033 10 +chr20 63418058 11 +chr20 63418083 12 +chr20 63418108 11 +chr20 63418133 13 +chr20 63418158 15 +chr20 63418183 13 +chr20 63418208 12 +chr20 63418233 10 +chr20 63418258 10 +chr20 63418283 9 +chr20 63418308 6 +chr20 63418333 6 +chr20 63418358 10 +chr20 63418383 11 +chr20 63418408 10 +chr20 63418433 12 +chr20 63418458 10 +chr20 63418483 7 +chr20 63418508 8 +chr20 63418533 7 +chr20 63418558 8 +chr20 63418583 6 +chr20 63418608 4 +chr20 63418633 10 +chr20 63418658 11 +chr20 63418683 13 +chr20 63418708 10 +chr20 63418733 11 +chr20 63418758 12 +chr20 63418783 11 +chr20 63418808 9 +chr20 63418833 7 +chr20 63418858 7 +chr20 63418883 13 +chr20 63418908 14 +chr20 63418933 9 +chr20 63418958 8 +chr20 63418983 9 +chr20 63419008 14 +chr20 63419033 13 +chr20 63419058 8 +chr20 63419083 8 +chr20 63419108 5 +chr20 63419133 4 +chr20 63419158 7 +chr20 63419183 6 +chr20 63419208 10 +chr20 63419233 13 +chr20 63419258 7 +chr20 63419283 6 +chr20 63419308 8 +chr20 63419333 11 +chr20 63419358 11 +chr20 63419383 7 +chr20 63419408 7 +chr20 63419433 9 +chr20 63419458 14 +chr20 63419483 11 +chr20 63419508 8 +chr20 63419533 7 +chr20 63419558 4 +chr20 63419583 7 +chr20 63419608 11 +chr20 63419633 10 +chr20 63419658 5 +chr20 63419683 10 +chr20 63419708 12 +chr20 63419733 7 +chr20 63419758 4 +chr20 63419783 4 +chr20 63419808 10 +chr20 63419833 14 +chr20 63419858 9 +chr20 63419883 6 +chr20 63419908 5 +chr20 63419933 6 +chr20 63419958 9 +chr20 63419983 10 +chr20 63420008 7 +chr20 63420033 7 +chr20 63420058 8 +chr20 63420083 9 +chr20 63420108 11 +chr20 63420133 8 +chr20 63420158 8 +chr20 63420183 13 +chr20 63420208 9 +chr20 63420233 3 +chr20 63420258 6 +chr20 63420283 14 +chr20 63420308 11 +chr20 63420333 5 +chr20 63420358 8 +chr20 63420383 8 +chr20 63420408 5 +chr20 63420433 3 +chr20 63420458 1 +chr20 63420483 1 +chr20 63420508 5 +chr20 63420533 8 +chr20 63420558 11 +chr20 63420583 18 +chr20 63420608 14 +chr20 63420633 10 +chr20 63420658 10 +chr20 63420683 8 +chr20 63420708 6 +chr20 63420733 7 +chr20 63420758 13 +chr20 63420783 13 +chr20 63420808 10 +chr20 63420833 8 +chr20 63420858 5 +chr20 63420883 10 +chr20 63420908 16 +chr20 63420933 13 +chr20 63420958 10 +chr20 63420983 9 +chr20 63421008 7 +chr20 63421033 7 +chr20 63421058 11 +chr20 63421083 9 +chr20 63421108 10 +chr20 63421133 10 +chr20 63421158 6 +chr20 63421183 11 +chr20 63421208 11 +chr20 63421233 10 +chr20 63421258 11 +chr20 63421283 11 +chr20 63421308 8 +chr20 63421333 8 +chr20 63421358 10 +chr20 63421383 11 +chr20 63421408 12 +chr20 63421433 16 +chr20 63421458 11 +chr20 63421483 8 +chr20 63421508 11 +chr20 63421533 9 +chr20 63421558 11 +chr20 63421583 8 +chr20 63421608 11 +chr20 63421633 14 +chr20 63421658 11 +chr20 63421683 10 +chr20 63421708 10 +chr20 63421733 12 +chr20 63421758 13 +chr20 63421783 11 +chr20 63421808 12 +chr20 63421833 16 +chr20 63421858 16 +chr20 63421883 16 +chr20 63421908 15 +chr20 63421933 18 +chr20 63421958 16 +chr20 63421983 11 +chr20 63422008 8 +chr20 63422033 5 +chr20 63422058 9 +chr20 63422083 13 +chr20 63422108 11 +chr20 63422133 9 +chr20 63422158 8 +chr20 63422183 6 +chr20 63422208 6 +chr20 63422233 8 +chr20 63422258 10 +chr20 63422283 10 +chr20 63422308 15 +chr20 63422333 12 +chr20 63422358 8 +chr20 63422383 7 +chr20 63422408 6 +chr20 63422433 5 +chr20 63422458 8 +chr20 63422483 13 +chr20 63422508 15 +chr20 63422533 13 +chr20 63422558 11 +chr20 63422583 11 +chr20 63422608 8 +chr20 63422633 7 +chr20 63422658 13 +chr20 63422683 13 +chr20 63422708 9 +chr20 63422733 11 +chr20 63422758 9 +chr20 63422783 8 +chr20 63422808 9 +chr20 63422833 16 +chr20 63422858 14 +chr20 63422883 11 +chr20 63422908 10 +chr20 63422933 11 +chr20 63422958 11 +chr20 63422983 9 +chr20 63423008 4 +chr20 63423033 6 +chr20 63423058 10 +chr20 63423083 14 +chr20 63423108 13 +chr20 63423133 8 +chr20 63423158 11 +chr20 63423183 10 +chr20 63423208 10 +chr20 63423233 11 +chr20 63423258 8 +chr20 63423283 10 +chr20 63423308 15 +chr20 63423333 11 +chr20 63423358 6 +chr20 63423383 10 +chr20 63423408 12 +chr20 63423433 12 +chr20 63423458 13 +chr20 63423483 7 +chr20 63423508 5 +chr20 63423533 5 +chr20 63423558 5 +chr20 63423583 4 +chr20 63423608 4 +chr20 63423633 5 +chr20 63423658 11 +chr20 63423683 14 +chr20 63423708 7 +chr20 63423733 4 +chr20 63423758 8 +chr20 63423783 11 +chr20 63423808 8 +chr20 63423833 3 +chr20 63423858 5 +chr20 63423883 10 +chr20 63423908 12 +chr20 63423933 11 +chr20 63423958 9 +chr20 63423983 11 +chr20 63424008 11 +chr20 63424033 7 +chr20 63424058 8 +chr20 63424083 9 +chr20 63424108 8 +chr20 63424133 11 +chr20 63424158 10 +chr20 63424183 7 +chr20 63424208 7 +chr20 63424233 7 +chr20 63424258 6 +chr20 63424283 4 +chr20 63424308 4 +chr20 63424333 5 +chr20 63424358 10 +chr20 63424383 13 +chr20 63424408 10 +chr20 63424433 9 +chr20 63424458 8 +chr20 63424483 5 +chr20 63424508 1 +chr20 63424533 5 +chr20 63424558 6 +chr20 63424583 1 +chr20 63424608 5 +chr20 63424633 8 +chr20 63424658 9 +chr20 63424683 11 +chr20 63424708 7 +chr20 63424733 7 +chr20 63424758 14 +chr20 63424783 15 +chr20 63424808 13 +chr20 63424833 12 +chr20 63424858 12 +chr20 63424883 14 +chr20 63424908 13 +chr20 63424933 11 +chr20 63424958 8 +chr20 63424983 7 +chr20 63425008 8 +chr20 63425033 7 +chr20 63425058 6 +chr20 63425083 8 +chr20 63425108 10 +chr20 63425133 9 +chr20 63425158 9 +chr20 63425183 9 +chr20 63425208 8 +chr20 63425233 4 +chr20 63425258 3 +chr20 63425283 3 +chr20 63425308 4 +chr20 63425333 9 +chr20 63425358 7 +chr20 63425383 2 +chr20 63425408 5 +chr20 63425433 8 +chr20 63425458 9 +chr20 63425483 11 +chr20 63425508 9 +chr20 63425533 2 +chr20 63425558 2 +chr20 63425583 4 +chr20 63425608 3 +chr20 63425633 4 +chr20 63425658 9 +chr20 63425683 6 +chr20 63425708 4 +chr20 63425733 8 +chr20 63425758 9 +chr20 63425783 6 +chr20 63425808 8 +chr20 63425833 14 +chr20 63425858 12 +chr20 63425883 8 +chr20 63425908 6 +chr20 63425933 8 +chr20 63425958 15 +chr20 63425983 16 +chr20 63426008 16 +chr20 63426033 14 +chr20 63426058 12 +chr20 63426083 14 +chr20 63426108 11 +chr20 63426133 11 +chr20 63426158 10 +chr20 63426183 10 +chr20 63426208 9 +chr20 63426233 9 +chr20 63426258 12 +chr20 63426283 7 +chr20 63426308 6 +chr20 63426333 10 +chr20 63426358 11 +chr20 63426383 9 +chr20 63426408 9 +chr20 63426433 9 +chr20 63426458 5 +chr20 63426483 6 +chr20 63426508 5 +chr20 63426533 5 +chr20 63426558 7 +chr20 63426583 5 +chr20 63426608 6 +chr20 63426633 6 +chr20 63426658 3 +chr20 63426683 5 +chr20 63426708 6 +chr20 63426733 4 +chr20 63426758 5 +chr20 63426783 6 +chr20 63426808 7 +chr20 63426833 8 +chr20 63426858 8 +chr20 63426883 5 +chr20 63426908 3 +chr20 63426933 8 +chr20 63426958 11 +chr20 63426983 12 +chr20 63427008 8 +chr20 63427033 5 +chr20 63427058 10 +chr20 63427083 13 +chr20 63427108 8 +chr20 63427133 4 +chr20 63427158 11 +chr20 63427183 13 +chr20 63427208 6 +chr20 63427233 5 +chr20 63427258 6 +chr20 63427283 7 +chr20 63427308 4 +chr20 63427333 5 +chr20 63427358 11 +chr20 63427383 16 +chr20 63427408 16 +chr20 63427433 16 +chr20 63427458 13 +chr20 63427483 7 +chr20 63427508 8 +chr20 63427533 12 +chr20 63427558 7 +chr20 63427583 4 +chr20 63427608 9 +chr20 63427633 7 +chr20 63427658 3 +chr20 63427683 2 +chr20 63427708 7 +chr20 63427733 7 +chr20 63427758 6 +chr20 63427783 6 +chr20 63427808 5 +chr20 63427833 8 +chr20 63427858 8 +chr20 63427883 8 +chr20 63427908 8 +chr20 63427933 8 +chr20 63427958 10 +chr20 63427983 11 +chr20 63428008 9 +chr20 63428033 10 +chr20 63428058 15 +chr20 63428083 14 +chr20 63428108 10 +chr20 63428133 10 +chr20 63428158 9 +chr20 63428183 9 +chr20 63428208 9 +chr20 63428233 14 +chr20 63428258 12 +chr20 63428283 12 +chr20 63428308 17 +chr20 63428333 14 +chr20 63428358 12 +chr20 63428383 9 +chr20 63428408 7 +chr20 63428433 7 +chr20 63428458 10 +chr20 63428483 13 +chr20 63428508 11 +chr20 63428533 11 +chr20 63428558 12 +chr20 63428583 7 +chr20 63428608 4 +chr20 63428633 8 +chr20 63428658 12 +chr20 63428683 9 +chr20 63428708 14 +chr20 63428733 13 +chr20 63428758 10 +chr20 63428783 10 +chr20 63428808 9 +chr20 63428833 10 +chr20 63428858 12 +chr20 63428883 12 +chr20 63428908 12 +chr20 63428933 9 +chr20 63428958 6 +chr20 63428983 5 +chr20 63429008 11 +chr20 63429033 10 +chr20 63429058 5 +chr20 63429083 8 +chr20 63429108 11 +chr20 63429133 8 +chr20 63429158 4 +chr20 63429183 4 +chr20 63429208 6 +chr20 63429233 6 +chr20 63429258 4 +chr20 63429283 6 +chr20 63429308 7 +chr20 63429333 8 +chr20 63429358 9 +chr20 63429383 11 +chr20 63429408 13 +chr20 63429433 10 +chr20 63429458 9 +chr20 63429483 7 +chr20 63429508 8 +chr20 63429533 10 +chr20 63429558 10 +chr20 63429583 7 +chr20 63429608 6 +chr20 63429633 6 +chr20 63429658 9 +chr20 63429683 9 +chr20 63429708 8 +chr20 63429733 10 +chr20 63429758 10 +chr20 63429783 6 +chr20 63429808 7 +chr20 63429833 7 +chr20 63429858 8 +chr20 63429883 7 +chr20 63429908 8 +chr20 63429933 13 +chr20 63429958 12 +chr20 63429983 8 +chr20 63430008 7 +chr20 63430033 7 +chr20 63430058 8 +chr20 63430083 11 +chr20 63430108 12 +chr20 63430133 11 +chr20 63430158 16 +chr20 63430183 15 +chr20 63430208 14 +chr20 63430233 14 +chr20 63430258 8 +chr20 63430283 7 +chr20 63430308 13 +chr20 63430333 15 +chr20 63430358 12 +chr20 63430383 9 +chr20 63430408 8 +chr20 63430433 8 +chr20 63430458 10 +chr20 63430483 11 +chr20 63430508 10 +chr20 63430533 9 +chr20 63430558 8 +chr20 63430583 7 +chr20 63430608 7 +chr20 63430633 5 +chr20 63430658 7 +chr20 63430683 7 +chr20 63430708 5 +chr20 63430733 8 +chr20 63430758 8 +chr20 63430783 6 +chr20 63430808 5 +chr20 63430833 10 +chr20 63430858 11 +chr20 63430883 7 +chr20 63430908 7 +chr20 63430933 6 +chr20 63430958 9 +chr20 63430983 11 +chr20 63431008 10 +chr20 63431033 10 +chr20 63431058 13 +chr20 63431083 10 +chr20 63431108 10 +chr20 63431133 11 +chr20 63431158 10 +chr20 63431183 9 +chr20 63431208 7 +chr20 63431233 12 +chr20 63431258 10 +chr20 63431283 5 +chr20 63431308 5 +chr20 63431333 6 +chr20 63431358 8 +chr20 63431383 8 +chr20 63431408 9 +chr20 63431433 9 +chr20 63431458 9 +chr20 63431483 6 +chr20 63431508 3 +chr20 63431533 5 +chr20 63431558 6 +chr20 63431583 5 +chr20 63431608 9 +chr20 63431633 12 +chr20 63431658 11 +chr20 63431683 11 +chr20 63431708 9 +chr20 63431733 6 +chr20 63431758 11 +chr20 63431783 15 +chr20 63431808 13 +chr20 63431833 6 +chr20 63431858 2 +chr20 63431883 2 +chr20 63431908 1 +chr20 63431933 0 +chr20 63431958 1 +chr20 63431983 4 +chr20 63432008 4 +chr20 63432033 1 +chr20 63432058 0 +chr20 63432083 1 +chr20 63432108 1 +chr20 63432133 1 +chr20 63432158 3 +chr20 63432183 2 +chr20 63432208 0 +chr20 63432233 1 +chr20 63432258 4 +chr20 63432283 5 +chr20 63432308 7 +chr20 63432333 4 +chr20 63432358 3 +chr20 63432383 6 +chr20 63432408 7 +chr20 63432433 5 +chr20 63432458 4 +chr20 63432483 4 +chr20 63432508 3 +chr20 63432533 3 +chr20 63432558 3 +chr20 63432583 2 +chr20 63432608 2 +chr20 63432633 4 +chr20 63432658 5 +chr20 63432683 3 +chr20 63432708 1 +chr20 63432733 2 +chr20 63432758 3 +chr20 63432783 4 +chr20 63432808 2 +chr20 63432833 2 +chr20 63432858 5 +chr20 63432883 6 +chr20 63432908 9 +chr20 63432933 12 +chr20 63432958 12 +chr20 63432983 11 +chr20 63433008 13 +chr20 63433033 13 +chr20 63433058 9 +chr20 63433083 8 +chr20 63433108 11 +chr20 63433133 8 +chr20 63433158 10 +chr20 63433183 12 +chr20 63433208 8 +chr20 63433233 9 +chr20 63433258 6 +chr20 63433283 5 +chr20 63433308 6 +chr20 63433333 7 +chr20 63433358 8 +chr20 63433383 6 +chr20 63433408 5 +chr20 63433433 4 +chr20 63433458 7 +chr20 63433483 9 +chr20 63433508 4 +chr20 63433533 5 +chr20 63433558 7 +chr20 63433583 6 +chr20 63433608 6 +chr20 63433633 9 +chr20 63433658 9 +chr20 63433683 6 +chr20 63433708 4 +chr20 63433733 3 +chr20 63433758 4 +chr20 63433783 3 +chr20 63433808 9 +chr20 63433833 12 +chr20 63433858 7 +chr20 63433883 6 +chr20 63433908 6 +chr20 63433933 9 +chr20 63433958 14 +chr20 63433983 14 +chr20 63434008 8 +chr20 63434033 6 +chr20 63434058 9 +chr20 63434083 9 +chr20 63434108 9 +chr20 63434133 10 +chr20 63434158 12 +chr20 63434183 13 +chr20 63434208 12 +chr20 63434233 10 +chr20 63434258 8 +chr20 63434283 6 +chr20 63434308 4 +chr20 63434333 11 +chr20 63434358 15 +chr20 63434383 11 +chr20 63434408 7 +chr20 63434433 8 +chr20 63434458 7 +chr20 63434483 7 +chr20 63434508 11 +chr20 63434533 14 +chr20 63434558 9 +chr20 63434583 6 +chr20 63434608 6 +chr20 63434633 5 +chr20 63434658 9 +chr20 63434683 10 +chr20 63434708 6 +chr20 63434733 9 +chr20 63434758 12 +chr20 63434783 7 +chr20 63434808 7 +chr20 63434833 12 +chr20 63434858 8 +chr20 63434883 3 +chr20 63434908 6 +chr20 63434933 12 +chr20 63434958 17 +chr20 63434983 15 +chr20 63435008 10 +chr20 63435033 7 +chr20 63435058 5 +chr20 63435083 8 +chr20 63435108 9 +chr20 63435133 10 +chr20 63435158 11 +chr20 63435183 9 +chr20 63435208 7 +chr20 63435233 6 +chr20 63435258 5 +chr20 63435283 4 +chr20 63435308 4 +chr20 63435333 1 +chr20 63435358 1 +chr20 63435383 2 +chr20 63435408 3 +chr20 63435433 4 +chr20 63435458 6 +chr20 63435483 7 +chr20 63435508 8 +chr20 63435533 8 +chr20 63435558 5 +chr20 63435583 9 +chr20 63435608 11 +chr20 63435633 4 +chr20 63435658 2 +chr20 63435683 3 +chr20 63435708 5 +chr20 63435733 8 +chr20 63435758 9 +chr20 63435783 9 +chr20 63435808 7 +chr20 63435833 9 +chr20 63435858 9 +chr20 63435883 8 +chr20 63435908 7 +chr20 63435933 8 +chr20 63435958 4 +chr20 63435983 1 +chr20 63436008 1 +chr20 63436033 1 +chr20 63436058 3 +chr20 63436083 5 +chr20 63436108 10 +chr20 63436133 10 +chr20 63436158 13 +chr20 63436183 17 +chr20 63436208 9 +chr20 63436233 6 +chr20 63436258 11 +chr20 63436283 18 +chr20 63436308 16 +chr20 63436333 19 +chr20 63436358 14 +chr20 63436383 12 +chr20 63436408 10 +chr20 63436433 7 +chr20 63436458 12 +chr20 63436483 9 +chr20 63436508 3 +chr20 63436533 2 +chr20 63436558 4 +chr20 63436583 8 +chr20 63436608 10 +chr20 63436633 8 +chr20 63436658 10 +chr20 63436683 12 +chr20 63436708 9 +chr20 63436733 5 +chr20 63436758 6 +chr20 63436783 3 +chr20 63436808 2 +chr20 63436833 7 +chr20 63436858 9 +chr20 63436883 7 +chr20 63436908 9 +chr20 63436933 9 +chr20 63436958 11 +chr20 63436983 13 +chr20 63437008 12 +chr20 63437033 8 +chr20 63437058 4 +chr20 63437083 4 +chr20 63437108 8 +chr20 63437133 12 +chr20 63437158 13 +chr20 63437183 13 +chr20 63437208 8 +chr20 63437233 4 +chr20 63437258 9 +chr20 63437283 10 +chr20 63437308 9 +chr20 63437333 8 +chr20 63437358 5 +chr20 63437383 4 +chr20 63437408 5 +chr20 63437433 7 +chr20 63437458 10 +chr20 63437483 8 +chr20 63437508 5 +chr20 63437533 9 +chr20 63437558 7 +chr20 63437583 10 +chr20 63437608 11 +chr20 63437633 5 +chr20 63437658 3 +chr20 63437683 9 +chr20 63437708 14 +chr20 63437733 10 +chr20 63437758 5 +chr20 63437783 6 +chr20 63437808 9 +chr20 63437833 10 +chr20 63437858 10 +chr20 63437883 10 +chr20 63437908 7 +chr20 63437933 10 +chr20 63437958 9 +chr20 63437983 12 +chr20 63438008 8 +chr20 63438033 5 +chr20 63438058 10 +chr20 63438083 12 +chr20 63438108 9 +chr20 63438133 7 +chr20 63438158 8 +chr20 63438183 12 +chr20 63438208 12 +chr20 63438233 7 +chr20 63438258 5 +chr20 63438283 9 +chr20 63438308 7 +chr20 63438333 7 +chr20 63438358 7 +chr20 63438383 8 +chr20 63438408 11 +chr20 63438433 10 +chr20 63438458 10 +chr20 63438483 7 +chr20 63438508 7 +chr20 63438533 9 +chr20 63438558 8 +chr20 63438583 7 +chr20 63438608 9 +chr20 63438633 7 +chr20 63438658 0 +chr20 63438683 1 +chr20 63438708 1 +chr20 63438733 3 +chr20 63438758 9 +chr20 63438783 8 +chr20 63438808 8 +chr20 63438833 10 +chr20 63438858 7 +chr20 63438883 9 +chr20 63438908 10 +chr20 63438933 6 +chr20 63438958 5 +chr20 63438983 4 +chr20 63439008 9 +chr20 63439033 8 +chr20 63439058 6 +chr20 63439083 11 +chr20 63439108 12 +chr20 63439133 11 +chr20 63439158 11 +chr20 63439183 7 +chr20 63439208 6 +chr20 63439233 7 +chr20 63439258 10 +chr20 63439283 12 +chr20 63439308 13 +chr20 63439333 8 +chr20 63439358 9 +chr20 63439383 13 +chr20 63439408 12 +chr20 63439433 9 +chr20 63439458 8 +chr20 63439483 10 +chr20 63439508 11 +chr20 63439533 13 +chr20 63439558 13 +chr20 63439583 9 +chr20 63439608 8 +chr20 63439633 8 +chr20 63439658 8 +chr20 63439683 8 +chr20 63439708 5 +chr20 63439733 3 +chr20 63439758 6 +chr20 63439783 10 +chr20 63439808 12 +chr20 63439833 10 +chr20 63439858 9 +chr20 63439883 13 +chr20 63439908 12 +chr20 63439933 11 +chr20 63439958 15 +chr20 63439983 16 +chr20 63440008 10 +chr20 63440033 15 +chr20 63440058 15 +chr20 63440083 12 +chr20 63440108 9 +chr20 63440133 9 +chr20 63440158 10 +chr20 63440183 9 +chr20 63440208 8 +chr20 63440233 12 +chr20 63440258 10 +chr20 63440283 7 +chr20 63440308 13 +chr20 63440333 15 +chr20 63440358 10 +chr20 63440383 12 +chr20 63440408 12 +chr20 63440433 12 +chr20 63440458 11 +chr20 63440483 10 +chr20 63440508 9 +chr20 63440533 8 +chr20 63440558 7 +chr20 63440583 9 +chr20 63440608 8 +chr20 63440633 11 +chr20 63440658 11 +chr20 63440683 9 +chr20 63440708 12 +chr20 63440733 11 +chr20 63440758 9 +chr20 63440783 6 +chr20 63440808 12 +chr20 63440833 13 +chr20 63440858 9 +chr20 63440883 8 +chr20 63440908 7 +chr20 63440933 9 +chr20 63440958 7 +chr20 63440983 4 +chr20 63441008 5 +chr20 63441033 8 +chr20 63441058 8 +chr20 63441083 2 +chr20 63441108 0 +chr20 63441133 0 +chr20 63441158 0 +chr20 63441183 3 +chr20 63441208 6 +chr20 63441233 10 +chr20 63441258 8 +chr20 63441283 8 +chr20 63441308 8 +chr20 63441333 13 +chr20 63441358 12 +chr20 63441383 9 +chr20 63441408 11 +chr20 63441433 10 +chr20 63441458 7 +chr20 63441483 7 +chr20 63441508 10 +chr20 63441533 11 +chr20 63441558 8 +chr20 63441583 9 +chr20 63441608 10 +chr20 63441633 8 +chr20 63441658 6 +chr20 63441683 7 +chr20 63441708 5 +chr20 63441733 4 +chr20 63441758 7 +chr20 63441783 13 +chr20 63441808 14 +chr20 63441833 11 +chr20 63441858 16 +chr20 63441883 11 +chr20 63441908 3 +chr20 63441933 5 +chr20 63441958 9 +chr20 63441983 14 +chr20 63442008 10 +chr20 63442033 4 +chr20 63442058 6 +chr20 63442083 13 +chr20 63442108 14 +chr20 63442133 14 +chr20 63442158 14 +chr20 63442183 10 +chr20 63442208 5 +chr20 63442233 4 +chr20 63442258 12 +chr20 63442283 13 +chr20 63442308 8 +chr20 63442333 6 +chr20 63442358 8 +chr20 63442383 9 +chr20 63442408 6 +chr20 63442433 6 +chr20 63442458 8 +chr20 63442483 7 +chr20 63442508 3 +chr20 63442533 4 +chr20 63442558 6 +chr20 63442583 2 +chr20 63442608 0 +chr20 63442633 0 +chr20 63442658 0 +chr20 63442683 0 +chr20 63442708 0 +chr20 63442733 0 +chr20 63442758 0 +chr20 63442783 0 +chr20 63442808 0 +chr20 63442833 0 +chr20 63442858 0 +chr20 63442883 0 +chr20 63442908 0 +chr20 63442933 0 +chr20 63442958 0 +chr20 63442983 0 +chr20 63443008 0 +chr20 63443033 0 +chr20 63443058 0 +chr20 63443083 0 +chr20 63443108 0 +chr20 63443133 0 +chr20 63443158 0 +chr20 63443183 0 +chr20 63443208 0 +chr20 63443233 0 +chr20 63443258 0 +chr20 63443283 0 +chr20 63443308 0 +chr20 63443333 0 +chr20 63443358 0 +chr20 63443383 0 +chr20 63443408 0 +chr20 63443433 0 +chr20 63443458 0 +chr20 63443483 1 +chr20 63443508 2 +chr20 63443533 1 +chr20 63443558 0 +chr20 63443583 1 +chr20 63443608 7 +chr20 63443633 9 +chr20 63443658 6 +chr20 63443683 10 +chr20 63443708 15 +chr20 63443733 13 +chr20 63443758 14 +chr20 63443783 13 +chr20 63443808 9 +chr20 63443833 5 +chr20 63443858 9 +chr20 63443883 10 +chr20 63443908 6 +chr20 63443933 5 +chr20 63443958 9 +chr20 63443983 13 +chr20 63444008 13 +chr20 63444033 10 +chr20 63444058 5 +chr20 63444083 4 +chr20 63444108 6 +chr20 63444133 6 +chr20 63444158 10 +chr20 63444183 9 +chr20 63444208 5 +chr20 63444233 9 +chr20 63444258 12 +chr20 63444283 11 +chr20 63444308 8 +chr20 63444333 6 +chr20 63444358 8 +chr20 63444383 8 +chr20 63444408 7 +chr20 63444433 8 +chr20 63444458 10 +chr20 63444483 8 +chr20 63444508 5 +chr20 63444533 3 +chr20 63444558 4 +chr20 63444583 6 +chr20 63444608 7 +chr20 63444633 8 +chr20 63444658 6 +chr20 63444683 5 +chr20 63444708 3 +chr20 63444733 1 +chr20 63444758 3 +chr20 63444783 2 +chr20 63444808 5 +chr20 63444833 11 +chr20 63444858 14 +chr20 63444883 10 +chr20 63444908 7 +chr20 63444933 11 +chr20 63444958 9 +chr20 63444983 8 +chr20 63445008 10 +chr20 63445033 11 +chr20 63445058 14 +chr20 63445083 11 +chr20 63445108 8 +chr20 63445133 9 +chr20 63445158 10 +chr20 63445183 6 +chr20 63445208 5 +chr20 63445233 5 +chr20 63445258 5 +chr20 63445283 5 +chr20 63445308 6 +chr20 63445333 9 +chr20 63445358 5 +chr20 63445383 6 +chr20 63445408 9 +chr20 63445433 6 +chr20 63445458 4 +chr20 63445483 3 +chr20 63445508 4 +chr20 63445533 4 +chr20 63445558 3 +chr20 63445583 5 +chr20 63445608 4 +chr20 63445633 2 +chr20 63445658 2 +chr20 63445683 2 +chr20 63445708 4 +chr20 63445733 6 +chr20 63445758 8 +chr20 63445783 7 +chr20 63445808 5 +chr20 63445833 3 +chr20 63445858 0 +chr20 63445883 0 +chr20 63445908 2 +chr20 63445933 4 +chr20 63445958 4 +chr20 63445983 3 +chr20 63446008 2 +chr20 63446033 4 +chr20 63446058 3 +chr20 63446083 3 +chr20 63446108 6 +chr20 63446133 8 +chr20 63446158 7 +chr20 63446183 5 +chr20 63446208 6 +chr20 63446233 7 +chr20 63446258 4 +chr20 63446283 6 +chr20 63446308 11 +chr20 63446333 8 +chr20 63446358 6 +chr20 63446383 12 +chr20 63446408 12 +chr20 63446433 9 +chr20 63446458 13 +chr20 63446483 11 +chr20 63446508 9 +chr20 63446533 11 +chr20 63446558 10 +chr20 63446583 6 +chr20 63446608 3 +chr20 63446633 12 +chr20 63446658 16 +chr20 63446683 6 +chr20 63446708 6 +chr20 63446733 7 +chr20 63446758 6 +chr20 63446783 4 +chr20 63446808 7 +chr20 63446833 11 +chr20 63446858 9 +chr20 63446883 5 +chr20 63446908 10 +chr20 63446933 10 +chr20 63446958 7 +chr20 63446983 5 +chr20 63447008 4 +chr20 63447033 5 +chr20 63447058 6 +chr20 63447083 7 +chr20 63447108 12 +chr20 63447133 11 +chr20 63447158 9 +chr20 63447183 8 +chr20 63447208 8 +chr20 63447233 10 +chr20 63447258 6 +chr20 63447283 6 +chr20 63447308 6 +chr20 63447333 7 +chr20 63447358 10 +chr20 63447383 9 +chr20 63447408 6 +chr20 63447433 7 +chr20 63447458 8 +chr20 63447483 7 +chr20 63447508 7 +chr20 63447533 6 +chr20 63447558 10 +chr20 63447583 7 +chr20 63447608 3 +chr20 63447633 9 +chr20 63447658 13 +chr20 63447683 12 +chr20 63447708 8 +chr20 63447733 8 +chr20 63447758 7 +chr20 63447783 4 +chr20 63447808 6 +chr20 63447833 11 +chr20 63447858 9 +chr20 63447883 5 +chr20 63447908 8 +chr20 63447933 12 +chr20 63447958 10 +chr20 63447983 8 +chr20 63448008 10 +chr20 63448033 10 +chr20 63448058 11 +chr20 63448083 7 +chr20 63448108 4 +chr20 63448133 5 +chr20 63448158 7 +chr20 63448183 8 +chr20 63448208 10 +chr20 63448233 12 +chr20 63448258 16 +chr20 63448283 15 +chr20 63448308 10 +chr20 63448333 7 +chr20 63448358 6 +chr20 63448383 13 +chr20 63448408 15 +chr20 63448433 12 +chr20 63448458 12 +chr20 63448483 9 +chr20 63448508 9 +chr20 63448533 8 +chr20 63448558 6 +chr20 63448583 10 +chr20 63448608 10 +chr20 63448633 13 +chr20 63448658 14 +chr20 63448683 5 +chr20 63448708 6 +chr20 63448733 12 +chr20 63448758 13 +chr20 63448783 11 +chr20 63448808 9 +chr20 63448833 6 +chr20 63448858 8 +chr20 63448883 10 +chr20 63448908 6 +chr20 63448933 3 +chr20 63448958 7 +chr20 63448983 13 +chr20 63449008 8 +chr20 63449033 6 +chr20 63449058 6 +chr20 63449083 4 +chr20 63449108 6 +chr20 63449133 6 +chr20 63449158 7 +chr20 63449183 9 +chr20 63449208 8 +chr20 63449233 8 +chr20 63449258 11 +chr20 63449283 9 +chr20 63449308 11 +chr20 63449333 10 +chr20 63449358 6 +chr20 63449383 4 +chr20 63449408 5 +chr20 63449433 5 +chr20 63449458 8 +chr20 63449483 11 +chr20 63449508 14 +chr20 63449533 13 +chr20 63449558 12 +chr20 63449583 7 +chr20 63449608 6 +chr20 63449633 9 +chr20 63449658 9 +chr20 63449683 7 +chr20 63449708 9 +chr20 63449733 10 +chr20 63449758 9 +chr20 63449783 9 +chr20 63449808 8 +chr20 63449833 9 +chr20 63449858 7 +chr20 63449883 8 +chr20 63449908 10 +chr20 63449933 11 +chr20 63449958 12 +chr20 63449983 11 +chr20 63450008 14 +chr20 63450033 12 +chr20 63450058 5 +chr20 63450083 1 +chr20 63450108 3 +chr20 63450133 4 +chr20 63450158 7 +chr20 63450183 12 +chr20 63450208 13 +chr20 63450233 11 +chr20 63450258 7 +chr20 63450283 10 +chr20 63450308 9 +chr20 63450333 3 +chr20 63450358 2 +chr20 63450383 6 +chr20 63450408 10 +chr20 63450433 9 +chr20 63450458 6 +chr20 63450483 2 +chr20 63450508 2 +chr20 63450533 1 +chr20 63450558 0 +chr20 63450583 0 +chr20 63450608 1 +chr20 63450633 2 +chr20 63450658 5 +chr20 63450683 10 +chr20 63450708 8 +chr20 63450733 5 +chr20 63450758 7 +chr20 63450783 9 +chr20 63450808 8 +chr20 63450833 6 +chr20 63450858 15 +chr20 63450883 18 +chr20 63450908 11 +chr20 63450933 4 +chr20 63450958 2 +chr20 63450983 8 +chr20 63451008 7 +chr20 63451033 6 +chr20 63451058 6 +chr20 63451083 3 +chr20 63451108 5 +chr20 63451133 5 +chr20 63451158 2 +chr20 63451183 2 +chr20 63451208 7 +chr20 63451233 13 +chr20 63451258 13 +chr20 63451283 9 +chr20 63451308 12 +chr20 63451333 12 +chr20 63451358 8 +chr20 63451383 8 +chr20 63451408 8 +chr20 63451433 8 +chr20 63451458 9 +chr20 63451483 14 +chr20 63451508 16 +chr20 63451533 15 +chr20 63451558 14 +chr20 63451583 13 +chr20 63451608 12 +chr20 63451633 11 +chr20 63451658 11 +chr20 63451683 13 +chr20 63451708 14 +chr20 63451733 12 +chr20 63451758 12 +chr20 63451783 13 +chr20 63451808 10 +chr20 63451833 15 +chr20 63451858 17 +chr20 63451883 12 +chr20 63451908 9 +chr20 63451933 6 +chr20 63451958 6 +chr20 63451983 11 +chr20 63452008 15 +chr20 63452033 11 +chr20 63452058 10 +chr20 63452083 9 +chr20 63452108 7 +chr20 63452133 7 +chr20 63452158 9 +chr20 63452183 12 +chr20 63452208 9 +chr20 63452233 9 +chr20 63452258 14 +chr20 63452283 14 +chr20 63452308 9 +chr20 63452333 8 +chr20 63452358 8 +chr20 63452383 6 +chr20 63452408 13 +chr20 63452433 20 +chr20 63452458 14 +chr20 63452483 9 +chr20 63452508 13 +chr20 63452533 16 +chr20 63452558 11 +chr20 63452583 7 +chr20 63452608 13 +chr20 63452633 14 +chr20 63452658 6 +chr20 63452683 6 +chr20 63452708 13 +chr20 63452733 11 +chr20 63452758 9 +chr20 63452783 7 +chr20 63452808 3 +chr20 63452833 4 +chr20 63452858 7 +chr20 63452883 11 +chr20 63452908 10 +chr20 63452933 9 +chr20 63452958 12 +chr20 63452983 10 +chr20 63453008 5 +chr20 63453033 3 +chr20 63453058 4 +chr20 63453083 4 +chr20 63453108 13 +chr20 63453133 10 +chr20 63453158 6 +chr20 63453183 13 +chr20 63453208 12 +chr20 63453233 11 +chr20 63453258 18 +chr20 63453283 18 +chr20 63453308 12 +chr20 63453333 10 +chr20 63453358 11 +chr20 63453383 13 +chr20 63453408 13 +chr20 63453433 13 +chr20 63453458 12 +chr20 63453483 11 +chr20 63453508 10 +chr20 63453533 12 +chr20 63453558 12 +chr20 63453583 15 +chr20 63453608 13 +chr20 63453633 7 +chr20 63453658 7 +chr20 63453683 9 +chr20 63453708 8 +chr20 63453733 7 +chr20 63453758 6 +chr20 63453783 11 +chr20 63453808 11 +chr20 63453833 7 +chr20 63453858 11 +chr20 63453883 10 +chr20 63453908 9 +chr20 63453933 14 +chr20 63453958 14 +chr20 63453983 11 +chr20 63454008 7 +chr20 63454033 6 +chr20 63454058 5 +chr20 63454083 7 +chr20 63454108 8 +chr20 63454133 7 +chr20 63454158 8 +chr20 63454183 7 +chr20 63454208 9 +chr20 63454233 10 +chr20 63454258 13 +chr20 63454283 12 +chr20 63454308 5 +chr20 63454333 6 +chr20 63454358 11 +chr20 63454383 13 +chr20 63454408 14 +chr20 63454433 15 +chr20 63454458 10 +chr20 63454483 10 +chr20 63454508 14 +chr20 63454533 11 +chr20 63454558 10 +chr20 63454583 14 +chr20 63454608 14 +chr20 63454633 9 +chr20 63454658 10 +chr20 63454683 11 +chr20 63454708 8 +chr20 63454733 7 +chr20 63454758 12 +chr20 63454783 12 +chr20 63454808 6 +chr20 63454833 5 +chr20 63454858 8 +chr20 63454883 9 +chr20 63454908 9 +chr20 63454933 8 +chr20 63454958 9 +chr20 63454983 13 +chr20 63455008 13 +chr20 63455033 10 +chr20 63455058 8 +chr20 63455083 8 +chr20 63455108 13 +chr20 63455133 13 +chr20 63455158 13 +chr20 63455183 10 +chr20 63455208 6 +chr20 63455233 9 +chr20 63455258 9 +chr20 63455283 11 +chr20 63455308 11 +chr20 63455333 5 +chr20 63455358 6 +chr20 63455383 10 +chr20 63455408 14 +chr20 63455433 13 +chr20 63455458 10 +chr20 63455483 6 +chr20 63455508 6 +chr20 63455533 6 +chr20 63455558 7 +chr20 63455583 7 +chr20 63455608 4 +chr20 63455633 7 +chr20 63455658 9 +chr20 63455683 6 +chr20 63455708 9 +chr20 63455733 9 +chr20 63455758 5 +chr20 63455783 2 +chr20 63455808 3 +chr20 63455833 5 +chr20 63455858 6 +chr20 63455883 9 +chr20 63455908 9 +chr20 63455933 4 +chr20 63455958 1 +chr20 63455983 1 +chr20 63456008 2 +chr20 63456033 2 +chr20 63456058 1 +chr20 63456083 3 +chr20 63456108 7 +chr20 63456133 7 +chr20 63456158 6 +chr20 63456183 6 +chr20 63456208 9 +chr20 63456233 7 +chr20 63456258 8 +chr20 63456283 12 +chr20 63456308 13 +chr20 63456333 12 +chr20 63456358 11 +chr20 63456383 12 +chr20 63456408 10 +chr20 63456433 9 +chr20 63456458 9 +chr20 63456483 9 +chr20 63456508 10 +chr20 63456533 11 +chr20 63456558 11 +chr20 63456583 8 +chr20 63456608 12 +chr20 63456633 13 +chr20 63456658 10 +chr20 63456683 14 +chr20 63456708 11 +chr20 63456733 5 +chr20 63456758 10 +chr20 63456783 13 +chr20 63456808 10 +chr20 63456833 9 +chr20 63456858 9 +chr20 63456883 10 +chr20 63456908 7 +chr20 63456933 11 +chr20 63456958 15 +chr20 63456983 12 +chr20 63457008 8 +chr20 63457033 9 +chr20 63457058 11 +chr20 63457083 17 +chr20 63457108 18 +chr20 63457133 14 +chr20 63457158 14 +chr20 63457183 13 +chr20 63457208 12 +chr20 63457233 11 +chr20 63457258 6 +chr20 63457283 7 +chr20 63457308 9 +chr20 63457333 9 +chr20 63457358 12 +chr20 63457383 10 +chr20 63457408 7 +chr20 63457433 5 +chr20 63457458 8 +chr20 63457483 11 +chr20 63457508 9 +chr20 63457533 5 +chr20 63457558 6 +chr20 63457583 7 +chr20 63457608 6 +chr20 63457633 12 +chr20 63457658 14 +chr20 63457683 9 +chr20 63457708 9 +chr20 63457733 7 +chr20 63457758 12 +chr20 63457783 14 +chr20 63457808 9 +chr20 63457833 7 +chr20 63457858 9 +chr20 63457883 10 +chr20 63457908 9 +chr20 63457933 12 +chr20 63457958 10 +chr20 63457983 6 +chr20 63458008 6 +chr20 63458033 3 +chr20 63458058 6 +chr20 63458083 6 +chr20 63458108 5 +chr20 63458133 7 +chr20 63458158 11 +chr20 63458183 14 +chr20 63458208 9 +chr20 63458233 5 +chr20 63458258 5 +chr20 63458283 10 +chr20 63458308 14 +chr20 63458333 13 +chr20 63458358 15 +chr20 63458383 14 +chr20 63458408 14 +chr20 63458433 8 +chr20 63458458 7 +chr20 63458483 8 +chr20 63458508 3 +chr20 63458533 6 +chr20 63458558 12 +chr20 63458583 11 +chr20 63458608 14 +chr20 63458633 18 +chr20 63458658 15 +chr20 63458683 10 +chr20 63458708 7 +chr20 63458733 10 +chr20 63458758 10 +chr20 63458783 8 +chr20 63458808 10 +chr20 63458833 12 +chr20 63458858 14 +chr20 63458883 13 +chr20 63458908 11 +chr20 63458933 10 +chr20 63458958 12 +chr20 63458983 12 +chr20 63459008 9 +chr20 63459033 7 +chr20 63459058 7 +chr20 63459083 13 +chr20 63459108 14 +chr20 63459133 13 +chr20 63459158 7 +chr20 63459183 5 +chr20 63459208 10 +chr20 63459233 10 +chr20 63459258 9 +chr20 63459283 7 +chr20 63459308 8 +chr20 63459333 6 +chr20 63459358 4 +chr20 63459383 10 +chr20 63459408 12 +chr20 63459433 13 +chr20 63459458 13 +chr20 63459483 7 +chr20 63459508 11 +chr20 63459533 14 +chr20 63459558 14 +chr20 63459583 12 +chr20 63459608 8 +chr20 63459633 12 +chr20 63459658 9 +chr20 63459683 7 +chr20 63459708 10 +chr20 63459733 9 +chr20 63459758 9 +chr20 63459783 10 +chr20 63459808 7 +chr20 63459833 2 +chr20 63459858 5 +chr20 63459883 6 +chr20 63459908 6 +chr20 63459933 7 +chr20 63459958 10 +chr20 63459983 12 +chr20 63460008 11 +chr20 63460033 8 +chr20 63460058 10 +chr20 63460083 11 +chr20 63460108 11 +chr20 63460133 10 +chr20 63460158 9 +chr20 63460183 12 +chr20 63460208 11 +chr20 63460233 10 +chr20 63460258 10 +chr20 63460283 8 +chr20 63460308 7 +chr20 63460333 6 +chr20 63460358 8 +chr20 63460383 8 +chr20 63460408 5 +chr20 63460433 5 +chr20 63460458 4 +chr20 63460483 3 +chr20 63460508 8 +chr20 63460533 15 +chr20 63460558 14 +chr20 63460583 12 +chr20 63460608 9 +chr20 63460633 3 +chr20 63460658 3 +chr20 63460683 7 +chr20 63460708 9 +chr20 63460733 7 +chr20 63460758 5 +chr20 63460783 5 +chr20 63460808 10 +chr20 63460833 14 +chr20 63460858 10 +chr20 63460883 12 +chr20 63460908 13 +chr20 63460933 10 +chr20 63460958 11 +chr20 63460983 12 +chr20 63461008 13 +chr20 63461033 15 +chr20 63461058 14 +chr20 63461083 13 +chr20 63461108 14 +chr20 63461133 10 +chr20 63461158 10 +chr20 63461183 9 +chr20 63461208 9 +chr20 63461233 12 +chr20 63461258 12 +chr20 63461283 12 +chr20 63461308 7 +chr20 63461333 4 +chr20 63461358 13 +chr20 63461383 17 +chr20 63461408 11 +chr20 63461433 11 +chr20 63461458 12 +chr20 63461483 11 +chr20 63461508 12 +chr20 63461533 11 +chr20 63461558 12 +chr20 63461583 13 +chr20 63461608 9 +chr20 63461633 4 +chr20 63461658 4 +chr20 63461683 4 +chr20 63461708 3 +chr20 63461733 3 +chr20 63461758 4 +chr20 63461783 4 +chr20 63461808 4 +chr20 63461833 6 +chr20 63461858 5 +chr20 63461883 3 +chr20 63461908 6 +chr20 63461933 5 +chr20 63461958 3 +chr20 63461983 3 +chr20 63462008 5 +chr20 63462033 4 +chr20 63462058 2 +chr20 63462083 6 +chr20 63462108 4 +chr20 63462133 4 +chr20 63462158 4 +chr20 63462183 2 +chr20 63462208 1 +chr20 63462233 1 +chr20 63462258 1 +chr20 63462283 1 +chr20 63462308 3 +chr20 63462333 3 +chr20 63462358 2 +chr20 63462383 4 +chr20 63462408 6 +chr20 63462433 10 +chr20 63462458 11 +chr20 63462483 8 +chr20 63462508 8 +chr20 63462533 9 +chr20 63462558 7 +chr20 63462583 9 +chr20 63462608 9 +chr20 63462633 6 +chr20 63462658 8 +chr20 63462683 10 +chr20 63462708 11 +chr20 63462733 11 +chr20 63462758 9 +chr20 63462783 12 +chr20 63462808 10 +chr20 63462833 9 +chr20 63462858 8 +chr20 63462883 8 +chr20 63462908 14 +chr20 63462933 14 +chr20 63462958 11 +chr20 63462983 13 +chr20 63463008 11 +chr20 63463033 13 +chr20 63463058 9 +chr20 63463083 4 +chr20 63463108 7 +chr20 63463133 13 +chr20 63463158 12 +chr20 63463183 13 +chr20 63463208 12 +chr20 63463233 12 +chr20 63463258 8 +chr20 63463283 4 +chr20 63463308 8 +chr20 63463333 10 +chr20 63463358 10 +chr20 63463383 7 +chr20 63463408 12 +chr20 63463433 15 +chr20 63463458 9 +chr20 63463483 7 +chr20 63463508 12 +chr20 63463533 7 +chr20 63463558 8 +chr20 63463583 8 +chr20 63463608 5 +chr20 63463633 7 +chr20 63463658 10 +chr20 63463683 7 +chr20 63463708 6 +chr20 63463733 7 +chr20 63463758 9 +chr20 63463783 8 +chr20 63463808 8 +chr20 63463833 9 +chr20 63463858 9 +chr20 63463883 7 +chr20 63463908 6 +chr20 63463933 10 +chr20 63463958 12 +chr20 63463983 11 +chr20 63464008 11 +chr20 63464033 14 +chr20 63464058 12 +chr20 63464083 8 +chr20 63464108 8 +chr20 63464133 5 +chr20 63464158 4 +chr20 63464183 9 +chr20 63464208 8 +chr20 63464233 6 +chr20 63464258 8 +chr20 63464283 5 +chr20 63464308 3 +chr20 63464333 4 +chr20 63464358 7 +chr20 63464383 10 +chr20 63464408 7 +chr20 63464433 6 +chr20 63464458 5 +chr20 63464483 7 +chr20 63464508 9 +chr20 63464533 7 +chr20 63464558 9 +chr20 63464583 10 +chr20 63464608 8 +chr20 63464633 10 +chr20 63464658 15 +chr20 63464683 14 +chr20 63464708 12 +chr20 63464733 10 +chr20 63464758 14 +chr20 63464783 12 +chr20 63464808 7 +chr20 63464833 8 +chr20 63464858 11 +chr20 63464883 12 +chr20 63464908 6 +chr20 63464933 5 +chr20 63464958 11 +chr20 63464983 10 +chr20 63465008 6 +chr20 63465033 5 +chr20 63465058 8 +chr20 63465083 11 +chr20 63465108 7 +chr20 63465133 7 +chr20 63465158 8 +chr20 63465183 7 +chr20 63465208 8 +chr20 63465233 9 +chr20 63465258 8 +chr20 63465283 7 +chr20 63465308 4 +chr20 63465333 5 +chr20 63465358 14 +chr20 63465383 12 +chr20 63465408 5 +chr20 63465433 4 +chr20 63465458 11 +chr20 63465483 10 +chr20 63465508 9 +chr20 63465533 9 +chr20 63465558 6 +chr20 63465583 12 +chr20 63465608 12 +chr20 63465633 6 +chr20 63465658 7 +chr20 63465683 11 +chr20 63465708 12 +chr20 63465733 7 +chr20 63465758 3 +chr20 63465783 5 +chr20 63465808 4 +chr20 63465833 6 +chr20 63465858 10 +chr20 63465883 14 +chr20 63465908 18 +chr20 63465933 14 +chr20 63465958 11 +chr20 63465983 14 +chr20 63466008 11 +chr20 63466033 5 +chr20 63466058 5 +chr20 63466083 6 +chr20 63466108 9 +chr20 63466133 9 +chr20 63466158 6 +chr20 63466183 10 +chr20 63466208 11 +chr20 63466233 10 +chr20 63466258 9 +chr20 63466283 12 +chr20 63466308 12 +chr20 63466333 14 +chr20 63466358 15 +chr20 63466383 14 +chr20 63466408 10 +chr20 63466433 10 +chr20 63466458 13 +chr20 63466483 12 +chr20 63466508 11 +chr20 63466533 11 +chr20 63466558 11 +chr20 63466583 10 +chr20 63466608 9 +chr20 63466633 13 +chr20 63466658 10 +chr20 63466683 11 +chr20 63466708 11 +chr20 63466733 9 +chr20 63466758 10 +chr20 63466783 10 +chr20 63466808 11 +chr20 63466833 12 +chr20 63466858 15 +chr20 63466883 11 +chr20 63466908 8 +chr20 63466933 10 +chr20 63466958 11 +chr20 63466983 6 +chr20 63467008 6 +chr20 63467033 7 +chr20 63467058 7 +chr20 63467083 10 +chr20 63467108 14 +chr20 63467133 13 +chr20 63467158 9 +chr20 63467183 12 +chr20 63467208 13 +chr20 63467233 10 +chr20 63467258 7 +chr20 63467283 10 +chr20 63467308 11 +chr20 63467333 9 +chr20 63467358 8 +chr20 63467383 8 +chr20 63467408 5 +chr20 63467433 8 +chr20 63467458 10 +chr20 63467483 9 +chr20 63467508 8 +chr20 63467533 9 +chr20 63467558 10 +chr20 63467583 9 +chr20 63467608 10 +chr20 63467633 12 +chr20 63467658 8 +chr20 63467683 5 +chr20 63467708 6 +chr20 63467733 6 +chr20 63467758 7 +chr20 63467783 11 +chr20 63467808 8 +chr20 63467833 5 +chr20 63467858 5 +chr20 63467883 4 +chr20 63467908 7 +chr20 63467933 7 +chr20 63467958 7 +chr20 63467983 12 +chr20 63468008 16 +chr20 63468033 12 +chr20 63468058 6 +chr20 63468083 8 +chr20 63468108 10 +chr20 63468133 9 +chr20 63468158 8 +chr20 63468183 9 +chr20 63468208 9 +chr20 63468233 11 +chr20 63468258 11 +chr20 63468283 9 +chr20 63468308 11 +chr20 63468333 12 +chr20 63468358 9 +chr20 63468383 6 +chr20 63468408 4 +chr20 63468433 5 +chr20 63468458 10 +chr20 63468483 11 +chr20 63468508 8 +chr20 63468533 9 +chr20 63468558 14 +chr20 63468583 14 +chr20 63468608 9 +chr20 63468633 8 +chr20 63468658 13 +chr20 63468683 13 +chr20 63468708 9 +chr20 63468733 11 +chr20 63468758 13 +chr20 63468783 9 +chr20 63468808 6 +chr20 63468833 6 +chr20 63468858 8 +chr20 63468883 6 +chr20 63468908 4 +chr20 63468933 7 +chr20 63468958 11 +chr20 63468983 10 +chr20 63469008 8 +chr20 63469033 8 +chr20 63469058 8 +chr20 63469083 10 +chr20 63469108 10 +chr20 63469133 8 +chr20 63469158 9 +chr20 63469183 10 +chr20 63469208 11 +chr20 63469233 7 +chr20 63469258 7 +chr20 63469283 10 +chr20 63469308 8 +chr20 63469333 11 +chr20 63469358 10 +chr20 63469383 9 +chr20 63469408 10 +chr20 63469433 11 +chr20 63469458 7 +chr20 63469483 6 +chr20 63469508 11 +chr20 63469533 12 +chr20 63469558 9 +chr20 63469583 9 +chr20 63469608 6 +chr20 63469633 6 +chr20 63469658 10 +chr20 63469683 10 +chr20 63469708 9 +chr20 63469733 8 +chr20 63469758 5 +chr20 63469783 11 +chr20 63469808 12 +chr20 63469833 6 +chr20 63469858 6 +chr20 63469883 6 +chr20 63469908 3 +chr20 63469933 4 +chr20 63469958 8 +chr20 63469983 7 +chr20 63470008 6 +chr20 63470033 11 +chr20 63470058 11 +chr20 63470083 8 +chr20 63470108 9 +chr20 63470133 10 +chr20 63470158 12 +chr20 63470183 12 +chr20 63470208 7 +chr20 63470233 6 +chr20 63470258 9 +chr20 63470283 12 +chr20 63470308 11 +chr20 63470333 11 +chr20 63470358 12 +chr20 63470383 13 +chr20 63470408 11 +chr20 63470433 11 +chr20 63470458 11 +chr20 63470483 13 +chr20 63470508 12 +chr20 63470533 9 +chr20 63470558 8 +chr20 63470583 6 +chr20 63470608 10 +chr20 63470633 12 +chr20 63470658 9 +chr20 63470683 7 +chr20 63470708 7 +chr20 63470733 7 +chr20 63470758 4 +chr20 63470783 2 +chr20 63470808 6 +chr20 63470833 8 +chr20 63470858 5 +chr20 63470883 6 +chr20 63470908 8 +chr20 63470933 9 +chr20 63470958 9 +chr20 63470983 11 +chr20 63471008 12 +chr20 63471033 11 +chr20 63471058 7 +chr20 63471083 10 +chr20 63471108 11 +chr20 63471133 6 +chr20 63471158 2 +chr20 63471183 7 +chr20 63471208 7 +chr20 63471233 7 +chr20 63471258 8 +chr20 63471283 5 +chr20 63471308 5 +chr20 63471333 6 +chr20 63471358 8 +chr20 63471383 10 +chr20 63471408 9 +chr20 63471433 8 +chr20 63471458 5 +chr20 63471483 2 +chr20 63471508 3 +chr20 63471533 7 +chr20 63471558 9 +chr20 63471583 8 +chr20 63471608 8 +chr20 63471633 5 +chr20 63471658 5 +chr20 63471683 8 +chr20 63471708 10 +chr20 63471733 10 +chr20 63471758 12 +chr20 63471783 11 +chr20 63471808 9 +chr20 63471833 10 +chr20 63471858 10 +chr20 63471883 10 +chr20 63471908 9 +chr20 63471933 8 +chr20 63471958 9 +chr20 63471983 6 +chr20 63472008 12 +chr20 63472033 17 +chr20 63472058 16 +chr20 63472083 10 +chr20 63472108 5 +chr20 63472133 6 +chr20 63472158 5 +chr20 63472183 7 +chr20 63472208 9 +chr20 63472233 9 +chr20 63472258 8 +chr20 63472283 8 +chr20 63472308 7 +chr20 63472333 5 +chr20 63472358 7 +chr20 63472383 10 +chr20 63472408 7 +chr20 63472433 5 +chr20 63472458 6 +chr20 63472483 6 +chr20 63472508 9 +chr20 63472533 12 +chr20 63472558 9 +chr20 63472583 7 +chr20 63472608 6 +chr20 63472633 10 +chr20 63472658 8 diff --git a/report/palettes.yaml b/report/palettes.yaml new file mode 100755 index 0000000..11ae093 --- /dev/null +++ b/report/palettes.yaml @@ -0,0 +1,8 @@ +#colors can be RGB (#xxxxxx or xxxxxx), or named colors from named_colors.yaml +reds: [ + 'red salsa', 'orange red', 'maroon', 'irresistible', 'big dip oruby', 'rust', 'rose madder', 'carmine', 'vermillion', 'burgundy', +] + +blues: [ + 'zomp', 'queen blue', 'medium slate blue', 'purple navy', 'ocean blue', 'indigo dye', 'wild blue yonder', 'oxford blue', 'dark sky blue', 'charcoal', +] \ No newline at end of file diff --git a/report/plot.html b/report/plot.html new file mode 100644 index 0000000..f93bc43 --- /dev/null +++ b/report/plot.html @@ -0,0 +1,86 @@ + + + + + + + + + + + Bokeh Plot + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/report/process_gene_gff.py b/report/process_gene_gff.py new file mode 100644 index 0000000..8d2cfcf --- /dev/null +++ b/report/process_gene_gff.py @@ -0,0 +1,62 @@ +import gffutils +import project_coords + +def gff_to_db(gff_path,output_name): + try: + db = gffutils.FeatureDB(gff_path, keep_order=True) + except: + gffutils.create_db(gff_path, dbfn=output_name, force=True, keep_order=True, merge_strategy='merge', sort_attribute_values=True) + db = gffutils.FeatureDB(gff_path, keep_order=True) + return db + +def get_gene_feature(gff_db, gene_name): + #get ID from name + for f in gff_db.all_features(featuretype='gene'): + try: + if gene_name in f['Name'][0]: return f + except: continue + raise ValueError('No gene with name {}'.format(gene_name)) + +def get_transcript_dict(plot_params, gff_db, gene_feature, transcript_IDs): + chr_num = gene_feature.seqid + transcript_dict = {} + + #get all exons and flatten + if 'flattened-exons' in transcript_IDs or transcript_IDs=='all': + exons_all = gff_db.children(gene_feature, featuretype='exon') + exons_all = [{'start': e.start, 'end': e.end} for e in exons_all] + exons_all = project_coords.flatten_exons(exons_all) + transcript_dict['flattened-exons'] = dict(ID='flattened_exons', chr_num=chr_num, exons=exons_all, + direction='', UTRs=[]) + + def get_UTRs(transcript): + if not plot_params['plot_UTRs']: return [] + UTRs = [] + for f in ['five_prime_UTR', 'three_prime_UTR']: + try: + UTR = list(gff_db.children(transcript, featuretype=f)) + if len(UTR) > 1: + print('Warning: transcript {} has {} {} annotations; using first annotation.'.format(tname, len(UTR), featuretype)) + UTR_dict = {'featuretype': f, 'start': UTR[0].start, 'end': UTR[0].end} + UTRs.append(UTR_dict) + except: continue + return UTRs + + #indiv mRNAs + transcripts = list(gff_db.children(gene_feature, featuretype='mRNA')) + if transcript_IDs != 'all': + for ID in transcript_IDs: + if ID not in [t['Name'][0] for t in transcripts]: print('No such transcript {}; skipping'.format(ID)) + transcripts = [t for t in transcripts if t['Name'][0] in transcript_IDs] + #print([t['ID'] for t in transcripts]) + + for t in transcripts: + exons = list(gff_db.children(t, featuretype='exon')) + exon_coords = [{'start': e.start, 'end': e.end, 'compact_start': -1, 'compact_end': -1} for e in exons] + direction = t.strand if plot_params['plot_direction'] else '' + tname = t['Name'][0] + UTRs = get_UTRs(t) + transcript_dict[tname] = dict(ID=t['ID'], chr_num=chr_num, exons=exon_coords, direction=direction, + UTRs=UTRs) + return transcript_dict + diff --git a/report/project_coords.py b/report/project_coords.py new file mode 100755 index 0000000..a6acab0 --- /dev/null +++ b/report/project_coords.py @@ -0,0 +1,483 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue Aug 24 12:40:23 2021 + +@author: slulla +""" + +def adjust_coordinates(exons, intron_size=10): + + ''' + UNIT TEST 1 - intron at 0 + >>> ec1 = [{'start': 100, 'end': 200}, {'start': 250, 'end': 400}, {'start': 700, 'end': 900}] + >>> adjust_coordinates(ec1) + >>> for exon in ec1: print(exon) + {'start': 100, 'end': 200, 'compact_start': 10, 'compact_end': 110} + {'start': 250, 'end': 400, 'compact_start': 120, 'compact_end': 270} + {'start': 700, 'end': 900, 'compact_start': 280, 'compact_end': 480} + + UNIT TEST 2 - exon at 0 + >>> ec2 = [{'start': 0, 'end': 200}, {'start': 250, 'end': 400}, {'start': 700, 'end': 900}] + >>> adjust_coordinates(ec2) + >>> for exon in ec2: print(exon) + {'start': 0, 'end': 200, 'compact_start': 0, 'compact_end': 200} + {'start': 250, 'end': 400, 'compact_start': 210, 'compact_end': 360} + {'start': 700, 'end': 900, 'compact_start': 370, 'compact_end': 570} + + UNIT TEST 3 - intron at 0, intron_size=20 + >>> ec3 = [{'start': 100, 'end': 200}, {'start': 250, 'end': 400}, {'start': 700, 'end': 900}] + >>> adjust_coordinates(ec3, intron_size=20) + >>> for exon in ec3: print(exon) + {'start': 100, 'end': 200, 'compact_start': 20, 'compact_end': 120} + {'start': 250, 'end': 400, 'compact_start': 140, 'compact_end': 290} + {'start': 700, 'end': 900, 'compact_start': 310, 'compact_end': 510} + + UNIT TEST 4 - exon at 0, intron_size=20 + >>> ec4 = [{'start': 0, 'end': 200}, {'start': 250, 'end': 400}, {'start': 700, 'end': 900}] + >>> adjust_coordinates(ec4, intron_size=20) + >>> for exon in ec4: print(exon) + {'start': 0, 'end': 200, 'compact_start': 0, 'compact_end': 200} + {'start': 250, 'end': 400, 'compact_start': 220, 'compact_end': 370} + {'start': 700, 'end': 900, 'compact_start': 390, 'compact_end': 590} + + UNIT TEST 5 - 1 intron length < intron_size + >>> ec5 = [{'start': 0, 'end': 200}, {'start': 250, 'end': 400}, {'start': 410, 'end': 610}] + >>> adjust_coordinates(ec5, intron_size=20) + >>> for exon in ec5: print(exon) + {'start': 0, 'end': 200, 'compact_start': 0, 'compact_end': 200} + {'start': 250, 'end': 400, 'compact_start': 220, 'compact_end': 370} + {'start': 410, 'end': 610, 'compact_start': 380, 'compact_end': 580} + + UNIT TEST 6 - backwards coordinates + >>> ec6 = [{'start': 900, 'end': 700}, {'start': 400, 'end': 250}, {'start': 200, 'end': 100}] + >>> adjust_coordinates(ec6) + >>> for exon in ec6: print(exon) + {'start': 700, 'end': 900, 'compact_start': 280, 'compact_end': 480} + {'start': 250, 'end': 400, 'compact_start': 120, 'compact_end': 270} + {'start': 100, 'end': 200, 'compact_start': 10, 'compact_end': 110} + + UNIT TEST 7 - empty input + >>> ec7 = [] + >>> adjust_coordinates(ec7) + >>> for exon in ec7: print(exon) + + UNIT TEST 8 - overlapping exon coordinates + >>> ec8 = [{'start': 0, 'end': 200}, {'start': 100, 'end': 300}, {'start': 400, 'end': 500}] + >>> adjust_coordinates(ec8) + Traceback (most recent call last): + ... + ValueError: Exon coordinates overlap + ''' + + def flip_exon_coords(exons): + for exon in exons: + tmp = exon['start'] + exon['start'] = exon['end'] + exon['end'] = tmp + + + if len(exons) == 0: return + + #if exon coordinates are backwards, flip them + if exons[0]['start'] > exons[0]['end']: + flip_exon_coords(exons) + + exons = sorted(exons, key=lambda exon:exon['start']) + + end_last_compact = 0 #end of last exon in compacted coords + end_last_original = 0 #end of last exon in original coords + + for idx,exon in enumerate(exons): + + if end_last_original > exon['start']: raise ValueError('Exon coordinates overlap') + + if exon['start'] == 0: + exon['compact_start'] = exon['start'] + exon['compact_end'] = exon['end'] + + end_last_compact = exon['end'] + end_last_original = exon['end'] + continue + + intron_len = exon['start'] - end_last_original #length of intron between this exon and previous + new_start = end_last_compact+intron_size if intron_len > intron_size else end_last_compact+intron_len + new_end = new_start + exon['end'] - exon['start'] ###1 based or 0 based coordinate system?### + exon['compact_start'] = new_start + exon['compact_end'] = new_end + + end_last_compact = new_end + end_last_original = exon['end'] + +def flatten_exons(exons): + + ''' + UNIT TEST 1 - no overlaps + >>> e1 = [{'start': 150, 'end': 200}, {'start': 0, 'end': 100}, {'start': 300, 'end': 450}, {'start': 500, 'end': 600}] + >>> flatten_exons(e1) + [{'start': 0, 'end': 100}, {'start': 150, 'end': 200}, {'start': 300, 'end': 450}, {'start': 500, 'end': 600}] + + UNIT TEST 2 - all overlaps + >>> e2 = [{'start': 50, 'end': 100}, {'start': 75, 'end': 150}, {'start': 0, 'end': 80}, {'start': 120, 'end': 130}] + >>> flatten_exons(e2) + [{'start': 0, 'end': 150}] + + UNIT TEST 3 - start with overlaps + >>> e3 = [{'start': 10, 'end': 50}, {'start': 40, 'end': 70}, {'start': 60, 'end': 80}, {'start': 100, 'end': 150}, {'start': 160, 'end': 200}, {'start': 300, 'end': 350}] + >>> flatten_exons(e3) + [{'start': 10, 'end': 80}, {'start': 100, 'end': 150}, {'start': 160, 'end': 200}, {'start': 300, 'end': 350}] + + UNIT TEST 4 - end with overlaps + >>> e4 = [{'start': 50, 'end': 100}, {'start': 150, 'end': 200}, {'start': 250, 'end': 350}, {'start': 375, 'end': 390}, {'start': 325, 'end': 400}, {'start': 270, 'end': 320}, {'start': 400, 'end': 450}, {'start': 380, 'end': 450}, {'start': 450, 'end': 500}] + >>> flatten_exons(e4) + [{'start': 50, 'end': 100}, {'start': 150, 'end': 200}, {'start': 250, 'end': 500}] + + UNIT TEST 5 - overlaps only in middle + >>> e5 = [{'start': 200, 'end': 250}, {'start': 275, 'end': 300}, {'start': 350, 'end': 400}, {'start': 310, 'end': 400}, {'start': 360, 'end': 380}, {'start': 400, 'end': 410}, {'start': 450, 'end': 500}] + >>> flatten_exons(e5) + [{'start': 200, 'end': 250}, {'start': 275, 'end': 300}, {'start': 310, 'end': 410}, {'start': 450, 'end': 500}] + + ''' + + exon_coords = [(exon['start'],exon['end']) for exon in exons] + + def largest_range(ls): + min_start = min([start for (start,end) in ls]) + max_end = max([end for (start,end) in ls]) + return (min_start, max_end) + + exon_coords = sorted(exon_coords, key=lambda x:x[0]) #sort by starting coord + + exons_flat = [] #list to return + overlaps = [exon_coords[0]] #list of overlapping exons + max_end = exon_coords[0][1] #end of overlapping region + + for i in range(1, len(exon_coords)): + if exon_coords[i][0] <= max_end: #if start of this exon is before end of overlapping region: + overlaps.append(exon_coords[i]) #add this exon to overlapping region + if exon_coords[i][1] > max_end: max_end = exon_coords[i][1] + else: + if len(overlaps) == 1: exons_flat.append(overlaps[0]) + if len(overlaps) > 1: exons_flat.append(largest_range(overlaps)) + overlaps = [exon_coords[i]] + max_end = exon_coords[i][1] + + exons_flat.append(largest_range(overlaps)) #have to do this one more time at the end + exons_flat = sorted(exons_flat, key=lambda x:x[0]) #sort by starting coord + + exons = [] + for idx,e in enumerate(exons_flat): + exons.append(dict(start=e[0],end=e[1])) + return exons + + + +def map_box(box_coords, exons): + ''' + UNIT TEST 1 - one box inside each exon + >>> ec1 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc1 = [{'start': 150, 'end': 175}, {'start': 300, 'end': 375}, {'start': 800, 'end': 825}] + >>> adjust_coordinates(ec1) + >>> map_box(bc1, ec1) + >>> for coord in bc1: print(coord) + {'start': 150, 'end': 175, 'compact_start': 60, 'compact_end': 85} + {'start': 300, 'end': 375, 'compact_start': 170, 'compact_end': 245} + {'start': 800, 'end': 825, 'compact_start': 380, 'compact_end': 405} + + UNIT TEST 2 - >= 1 box inside each exon + >>> ec2 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc2 = [{'start': 150, 'end': 160}, {'start': 170, 'end': 190}, {'start': 270, 'end': 290}, {'start': 300, 'end': 350}, {'start': 360, 'end': 375}, {'start': 800, 'end': 825}, {'start': 830, 'end': 880}] + >>> adjust_coordinates(ec2) + >>> map_box(bc2, ec2) + >>> for coord in bc2: print(coord) + {'start': 150, 'end': 160, 'compact_start': 60, 'compact_end': 70} + {'start': 170, 'end': 190, 'compact_start': 80, 'compact_end': 100} + {'start': 270, 'end': 290, 'compact_start': 140, 'compact_end': 160} + {'start': 300, 'end': 350, 'compact_start': 170, 'compact_end': 220} + {'start': 360, 'end': 375, 'compact_start': 230, 'compact_end': 245} + {'start': 800, 'end': 825, 'compact_start': 380, 'compact_end': 405} + {'start': 830, 'end': 880, 'compact_start': 410, 'compact_end': 460} + + UNIT TEST 3 - 2 exons without a box + >>> ec3 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc3 = [{'start': 260, 'end': 300}, {'start': 330, 'end': 370}] + >>> adjust_coordinates(ec3) + >>> map_box(bc3, ec3) + >>> for coord in bc3: print(coord) + {'start': 260, 'end': 300, 'compact_start': 130, 'compact_end': 170} + {'start': 330, 'end': 370, 'compact_start': 200, 'compact_end': 240} + + + UNIT TEST 4 - boxes partially in exons + >>> ec4 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc4 = [{'start': 180, 'end': 210}, {'start': 230, 'end': 300}, {'start': 320, 'end': 420}, {'start': 660, 'end': 800}, {'start': 820, 'end': 850}] + >>> adjust_coordinates(ec4) + >>> map_box(bc4, ec4) + >>> for coord in bc4: print(coord) + {'start': 180, 'end': 210, 'compact_start': 90, 'compact_end': 110} + {'start': 230, 'end': 300, 'compact_start': 120, 'compact_end': 170} + {'start': 320, 'end': 420, 'compact_start': 190, 'compact_end': 270} + {'start': 660, 'end': 800, 'compact_start': 280, 'compact_end': 380} + {'start': 820, 'end': 850, 'compact_start': 400, 'compact_end': 430} + + UNIT TEST 5 - boxes on exon boundaries + >>> ec5 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc5 = [{'start': 100, 'end': 200}, {'start': 250, 'end': 300}, {'start': 700, 'end': 725}, {'start': 750, 'end': 900}] + >>> adjust_coordinates(ec5) + >>> map_box(bc5, ec5) + >>> for coord in bc5: print(coord) + {'start': 100, 'end': 200, 'compact_start': 10, 'compact_end': 110} + {'start': 250, 'end': 300, 'compact_start': 120, 'compact_end': 170} + {'start': 700, 'end': 725, 'compact_start': 280, 'compact_end': 305} + {'start': 750, 'end': 900, 'compact_start': 330, 'compact_end': 480} + + UNIT TEST 6 - boxes in introns + >>> ec6 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc6 = [{'start': 0, 'end': 90}, {'start': 210, 'end': 220}, {'start': 230, 'end': 240}, {'start': 1000, 'end': 1100}] + >>> adjust_coordinates(ec6) + >>> map_box(bc6, ec6) + >>> for coord in bc6: print(coord) + {'start': 0, 'end': 90, 'compact_start': -1, 'compact_end': -1} + {'start': 210, 'end': 220, 'compact_start': -1, 'compact_end': -1} + {'start': 230, 'end': 240, 'compact_start': -1, 'compact_end': -1} + {'start': 1000, 'end': 1100, 'compact_start': -1, 'compact_end': -1} + + UNIT TEST 7 - boxes in introns, starting at last base of previous exon and/or ending at last base of next exon + >>> ec7 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc7 = [{'start': 50, 'end': 100}, {'start': 200, 'end': 210}, {'start': 220, 'end': 250}, {'start': 400, 'end': 500}, {'start': 400, 'end': 700}, {'start': 900, 'end': 950}] + >>> adjust_coordinates(ec7) + >>> map_box(bc7, ec7) + >>> for coord in bc7: print(coord) + {'start': 50, 'end': 100, 'compact_start': -1, 'compact_end': -1} + {'start': 200, 'end': 210, 'compact_start': -1, 'compact_end': -1} + {'start': 220, 'end': 250, 'compact_start': -1, 'compact_end': -1} + {'start': 400, 'end': 500, 'compact_start': -1, 'compact_end': -1} + {'start': 400, 'end': 700, 'compact_start': -1, 'compact_end': -1} + {'start': 900, 'end': 950, 'compact_start': -1, 'compact_end': -1} + + UNIT TEST 8 - start and end coordinates reversed + >>> ec8 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc8 = [{'start': 210, 'end': 180}, {'start': 420, 'end': 320}, {'start': 800, 'end': 660}, {'start': 850, 'end': 820}] + >>> adjust_coordinates(ec8) + >>> map_box(bc8, ec8) + >>> for coord in bc8: print(coord) + {'start': 180, 'end': 210, 'compact_start': 90, 'compact_end': 110} + {'start': 320, 'end': 420, 'compact_start': 190, 'compact_end': 270} + {'start': 660, 'end': 800, 'compact_start': 280, 'compact_end': 380} + {'start': 820, 'end': 850, 'compact_start': 400, 'compact_end': 430} + + UNIT TEST 9 - overlapping boxes + >>> ec9 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc9 = [{'start': 125, 'end': 175}, {'start': 140, 'end': 190}, {'start': 200, 'end': 300}, {'start': 270, 'end': 370}, {'start': 700, 'end': 850}, {'start': 820, 'end': 870}, {'start': 800, 'end': 900}] + >>> adjust_coordinates(ec9) + >>> map_box(bc9, ec9) + >>> for coord in bc9: print(coord) + {'start': 125, 'end': 175, 'compact_start': 35, 'compact_end': 85} + {'start': 140, 'end': 190, 'compact_start': 50, 'compact_end': 100} + {'start': 200, 'end': 300, 'compact_start': 120, 'compact_end': 170} + {'start': 270, 'end': 370, 'compact_start': 140, 'compact_end': 240} + {'start': 700, 'end': 850, 'compact_start': 280, 'compact_end': 430} + {'start': 820, 'end': 870, 'compact_start': 400, 'compact_end': 450} + {'start': 800, 'end': 900, 'compact_start': 380, 'compact_end': 480} + + UNIT TEST 10 - boxes out of order + >>> ec10 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc10 = [{'start': 230, 'end': 300}, {'start': 180, 'end': 210}, {'start': 820, 'end': 850}, {'start': 320, 'end': 420}, {'start': 660, 'end': 800}] + >>> adjust_coordinates(ec10) + >>> map_box(bc10, ec10) + >>> for coord in bc10: print(coord) + {'start': 230, 'end': 300, 'compact_start': 120, 'compact_end': 170} + {'start': 180, 'end': 210, 'compact_start': 90, 'compact_end': 110} + {'start': 820, 'end': 850, 'compact_start': 400, 'compact_end': 430} + {'start': 320, 'end': 420, 'compact_start': 190, 'compact_end': 270} + {'start': 660, 'end': 800, 'compact_start': 280, 'compact_end': 380} + + UNIT TEST 11 - empty box list + >>> ec11 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc11 = [] + >>> adjust_coordinates(ec11) + >>> map_box(bc11, ec11) + >>> for coord in bc11: print(coord) + + UNIT TEST 12 - empty exon list + >>> ec12 = [] + >>> bc12 = [{'start': 150, 'end': 175}, {'start': 300, 'end': 375}, {'start': 800, 'end': 825}] + >>> adjust_coordinates(ec12) + >>> map_box(bc12, ec12) + >>> for coord in bc12: print(coord) + {'start': 150, 'end': 175, 'compact_start': -1, 'compact_end': -1} + {'start': 300, 'end': 375, 'compact_start': -1, 'compact_end': -1} + {'start': 800, 'end': 825, 'compact_start': -1, 'compact_end': -1} + + UNIT TEST 13 - >= 1 box inside each exon with intron_size=20 + >>> ec13 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> bc13 = [{'start': 150, 'end': 160}, {'start': 170, 'end': 190}, {'start': 270, 'end': 290}, {'start': 300, 'end': 350}, {'start': 360, 'end': 375}, {'start': 800, 'end': 825}, {'start': 830, 'end': 880}] + >>> adjust_coordinates(ec13, intron_size=20) + >>> map_box(bc13, ec13) + >>> for coord in bc13: print(coord) + {'start': 150, 'end': 160, 'compact_start': 70, 'compact_end': 80} + {'start': 170, 'end': 190, 'compact_start': 90, 'compact_end': 110} + {'start': 270, 'end': 290, 'compact_start': 160, 'compact_end': 180} + {'start': 300, 'end': 350, 'compact_start': 190, 'compact_end': 240} + {'start': 360, 'end': 375, 'compact_start': 250, 'compact_end': 265} + {'start': 800, 'end': 825, 'compact_start': 410, 'compact_end': 435} + {'start': 830, 'end': 880, 'compact_start': 440, 'compact_end': 490} + + + ''' + + for b in box_coords: + if b['start'] > b['end']: + tmp = b['start'] + b['start'] = b['end'] + b['end'] = tmp + b['compact_start'] = -1 + b['compact_end'] = -1 + for exon in exons: + if exon['end'] <= b['start'] or exon['start'] >= b['end']: continue + b_start_compact = exon['compact_start'] if b['start'] < exon['start'] else exon['compact_start'] + b['start'] - exon['start'] + b_end_compact = exon['compact_end'] if b['end'] > exon['end'] else exon['compact_end'] - (exon['end'] - b['end']) + b['compact_start'] = b_start_compact + b['compact_end'] = b_end_compact + break + +def map_point(point_coords, exons): + + ''' + UNIT TEST 1 - 1 point inside each exon + >>> ec1 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc1 = [{'pos': 150}, {'pos': 300}, {'pos': 800},] + >>> adjust_coordinates(ec1) + >>> map_point(pc1, ec1) + >>> for coord in pc1: print(coord) + {'pos': 150, 'compact_pos': 60} + {'pos': 300, 'compact_pos': 170} + {'pos': 800, 'compact_pos': 380} + + UNIT TEST 2 - >=1 point inside each exon + >>> ec2 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc2 = [{'pos': 150}, {'pos': 175}, {'pos': 300}, {'pos': 750}, {'pos': 800}, {'pos': 850}] + >>> adjust_coordinates(ec2) + >>> map_point(pc2, ec2) + >>> for coord in pc2: print(coord) + {'pos': 150, 'compact_pos': 60} + {'pos': 175, 'compact_pos': 85} + {'pos': 300, 'compact_pos': 170} + {'pos': 750, 'compact_pos': 330} + {'pos': 800, 'compact_pos': 380} + {'pos': 850, 'compact_pos': 430} + + UNIT TEST 3 - 2 exons without a point + >>> ec2 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc2 = [{'pos': 300}, {'pos': 350}] + >>> adjust_coordinates(ec2) + >>> map_point(pc2, ec2) + >>> for coord in pc2: print(coord) + {'pos': 300, 'compact_pos': 170} + {'pos': 350, 'compact_pos': 220} + + UNIT TEST 4 - points on exon boundaries + >>> ec4 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc4 = [{'pos': 100}, {'pos': 400}, {'pos': 900},] + >>> adjust_coordinates(ec4) + >>> map_point(pc4, ec4) + >>> for coord in pc4: print(coord) + {'pos': 100, 'compact_pos': 10} + {'pos': 400, 'compact_pos': 270} + {'pos': 900, 'compact_pos': 480} + + UNIT TEST 5 - points in introns + >>> ec5 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc5 = [{'pos': 50}, {'pos': 210}, {'pos': 240}, {'pos': 500}, {'pos': 950},] + >>> adjust_coordinates(ec5) + >>> map_point(pc5, ec5) + >>> for coord in pc5: print(coord) + {'pos': 50, 'compact_pos': -1} + {'pos': 210, 'compact_pos': -1} + {'pos': 240, 'compact_pos': -1} + {'pos': 500, 'compact_pos': -1} + {'pos': 950, 'compact_pos': -1} + + UNIT TEST 6 - overlapping points + >>> ec6 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc6 = [{'pos': 150}, {'pos': 150}, {'pos': 240}, {'pos': 240}, {'pos': 750}, {'pos': 750}] + >>> adjust_coordinates(ec6) + >>> map_point(pc6, ec6) + >>> for coord in pc6: print(coord) + {'pos': 150, 'compact_pos': 60} + {'pos': 150, 'compact_pos': 60} + {'pos': 240, 'compact_pos': -1} + {'pos': 240, 'compact_pos': -1} + {'pos': 750, 'compact_pos': 330} + {'pos': 750, 'compact_pos': 330} + + UNIT TEST 7 - points out of order + >>> ec7 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc7 = [{'pos': 800}, {'pos': 175}, {'pos': 300}, {'pos': 150}, {'pos': 850}, {'pos': 750}] + >>> adjust_coordinates(ec7) + >>> map_point(pc7, ec7) + >>> for coord in pc7: print(coord) + {'pos': 800, 'compact_pos': 380} + {'pos': 175, 'compact_pos': 85} + {'pos': 300, 'compact_pos': 170} + {'pos': 150, 'compact_pos': 60} + {'pos': 850, 'compact_pos': 430} + {'pos': 750, 'compact_pos': 330} + + UNIT TEST 8 - empty point list + >>> ec8 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc8 = [] + >>> adjust_coordinates(ec8) + >>> map_point(pc8, ec8) + >>> for coord in pc8: print(coord) + + UNIT TEST 9 - empty exon list + >>> ec9 = [] + >>> pc9 = [{'pos': 150}, {'pos': 300}, {'pos': 800},] + >>> adjust_coordinates(ec9) + >>> map_point(pc9, ec9) + >>> for coord in pc9: print(coord) + {'pos': 150, 'compact_pos': -1} + {'pos': 300, 'compact_pos': -1} + {'pos': 800, 'compact_pos': -1} + + UNIT TEST 10 - >=1 point inside each exon with intron_size=20 + >>> ec10 = [{'start': 100, 'end': 200},{'start': 250, 'end': 400},{'start': 700, 'end': 900}] + >>> pc10 = [{'pos': 150}, {'pos': 175}, {'pos': 300}, {'pos': 750}, {'pos': 800}, {'pos': 850}] + >>> adjust_coordinates(ec10, intron_size=20) + >>> map_point(pc10, ec10) + >>> for coord in pc10: print(coord) + {'pos': 150, 'compact_pos': 70} + {'pos': 175, 'compact_pos': 95} + {'pos': 300, 'compact_pos': 190} + {'pos': 750, 'compact_pos': 360} + {'pos': 800, 'compact_pos': 410} + {'pos': 850, 'compact_pos': 460} + + ''' + + for coord in point_coords: + coord['compact_pos'] = -1 + for exon in exons: + if coord['pos'] >= exon['start'] and coord['pos'] <= exon['end']: + coord['compact_pos'] = exon['compact_start'] + coord['pos'] - exon['start'] + break + +def get_introns_from_exons(exons): + introns = [] + + flat_exons = [(exon['start'], exon['end']) for exon in exons] + flat_exons = [item for sublist in flat_exons for item in sublist][:-1] + if len(flat_exons) % 2 == 1: flat_exons = [0] + flat_exons + + flat_exons_compact = [(exon['compact_start'], exon['compact_end']) for exon in exons] + flat_exons_compact = [item for sublist in flat_exons_compact for item in sublist][:-1] + if len(flat_exons_compact) % 2 == 1: flat_exons_compact = [0] + flat_exons_compact + for i in range(0, len(flat_exons) - 1, 2): + introns.append({'start': flat_exons[i] + 1, 'end': flat_exons[i + 1] - 1, + 'compact_start': flat_exons_compact[i] + 1, 'compact_end': flat_exons_compact[i + 1] - 1}) + return introns + + +if __name__ == "__main__": + import doctest + doctest.testmod() \ No newline at end of file diff --git a/report/test.py b/report/test.py new file mode 100755 index 0000000..1a7b6d7 --- /dev/null +++ b/report/test.py @@ -0,0 +1,2 @@ +import sys +print(sys.argv[1]) diff --git a/report/test1.html b/report/test1.html new file mode 100644 index 0000000..22f23b0 --- /dev/null +++ b/report/test1.html @@ -0,0 +1,86 @@ + + + + + + + + + + + Bokeh Plot + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/report/widget_callbacks.py b/report/widget_callbacks.py new file mode 100755 index 0000000..3e8bd18 --- /dev/null +++ b/report/widget_callbacks.py @@ -0,0 +1,375 @@ +from bokeh.models import ColumnDataSource,CustomJS,CheckboxGroup,Legend,Slider,Div,RadioGroup +from bokeh.plotting import figure +from axes import format_ticks +import numpy as np + +def add_linear_log_scale(axes, glyph_dict): + div_type = Div(text="""Lollipop height:""", width=200, height=15) + div_scale = Div(text="""Lollipop height scale:""", width=200, height=15) + + variant_type_labels = ['Allele count', 'Allele frequency'] + variant_scale_labels = ['Linear', 'Log'] + mlo_li_ct = [ax.major_label_overrides for ax in axes['count']] + mlo_li_fr = [ax.major_label_overrides for ax in axes['allele_frequency']] + + def log10(f): return np.log10(f) if f > 0 else 0 + #TODO + mlo_lg_ct = [format_ticks({key:str(log10(float(value))) for (key,value) in d.items()}, 2, False) for d in mlo_li_ct] + mlo_lg_fr = [format_ticks({key:str(-log10(float(value))) for (key,value) in d.items()}, 2, False) for d in mlo_li_fr] + + radio_group_type = RadioGroup(labels=variant_type_labels, active=0, width=200) + radio_group_scale = RadioGroup(labels=variant_scale_labels, active=0, width=200) + + radio_group_type.js_on_click(CustomJS(args=dict(radio_group_scale=radio_group_scale,axes=axes, + mlo_li_ct=mlo_li_ct, mlo_lg_ct=mlo_lg_ct, + mlo_li_fr=mlo_li_fr, mlo_lg_fr=mlo_lg_fr, + variant=glyph_dict['Variant']), + code=""" + function setAxis(label, mlo){ + for (let i = 0; i < axes['count'].length; i++){ + axes['count'][i].axis_label = label + axes['count'][i].major_label_overrides = mlo[i] + } + } + + for (let i = 0; i < variant.length; i++){ + if (cb_obj.active == 0) { + if (radio_group_scale.active == 0){ + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_li_ct'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_li_ct'] + setAxis('Allele count', mlo_li_ct) + } else { + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_lg_ct'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_lg_ct'] + setAxis('Log(Allele count)', mlo_lg_ct) + } + } + if (cb_obj.active == 1) { + if (radio_group_scale.active == 0){ + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_li_fr'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_li_fr'] + setAxis('Allele frequency', mlo_li_fr) + } else { + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_lg_fr'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_lg_fr'] + setAxis('-Log(Allele frequency)', mlo_lg_fr) + } + } + variant[i].data_source.change.emit() + } + """)) + + radio_group_scale.js_on_click(CustomJS(args=dict(radio_group_type=radio_group_type,axes=axes, + mlo_li_ct=mlo_li_ct, mlo_lg_ct=mlo_lg_ct, + mlo_li_fr=mlo_li_fr, mlo_lg_fr=mlo_lg_fr, + variant=glyph_dict['Variant']), code=""" + function setAxis(label, mlo){ + for (let i = 0; i < axes['count'].length; i++){ + axes['count'][i].axis_label = label + axes['count'][i].major_label_overrides = mlo[i] + } + } + + for (let i = 0; i < variant.length; i++){ + if (cb_obj.active == 0) { + if (radio_group_type.active == 0){ + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_li_ct'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_li_ct'] + setAxis('Allele count', mlo_li_ct) + + } else { + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_li_fr'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_li_fr'] + setAxis('Allele frequency', mlo_li_fr) + } + } + if (cb_obj.active == 1) { + if (radio_group_type.active == 0){ + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_lg_ct'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_lg_ct'] + setAxis('Log(Allele count)', mlo_lg_ct) + + } else { + variant[i].data_source.data['y1_circle']=variant[i].data_source.data['y1_ci_lg_fr'] + variant[i].data_source.data['y1_segment']=variant[i].data_source.data['y1_sg_lg_fr'] + setAxis('-Log(Allele frequency)', mlo_lg_fr) + + } + } + variant[i].data_source.change.emit() + } + """)) + + return div_type,radio_group_type,div_scale,radio_group_scale + +def add_checkbox(plot_ls, axes, glyph_dict, plot_params, variant_params): + labels = [] + for tup in zip(['UTRs','Direction','Variant'], [plot_params['plot_UTRs'], plot_params['plot_direction'], variant_params['plot_variants']]): + if tup[1]: labels.append(tup[0]) + active = list(range(len(labels))) + checkbox = CheckboxGroup(labels=labels,active=active, width=100) + + glyph_dict_checkbox = {label:glyph_dict[label] for label in labels} + + callback = CustomJS(args=dict(plot_ls=plot_ls, axes=axes, labels=labels, glyph_dict_checkbox=glyph_dict_checkbox, + ), code=''' + function setVis(glyphs, vis){ + for (let i = 0; i < glyphs.length; i++){ + if(glyphs[i] != null){ + glyphs[i].visible = vis + } + } + } + + function setAxisVis(axis_name, vis){ + for (let i = 0; i < axes[axis_name].length; i++){ + axes[axis_name][i].visible = vis + } + } + + for (let i = 0; i < labels.length; i++){ + if (cb_obj.active.includes(i)) {setVis(glyph_dict_checkbox[labels[i]], true)} + else {setVis(glyph_dict_checkbox[labels[i]], false)} + } + ''') + + checkbox.js_on_change('active', callback) + + return checkbox + +def add_user_tracks_checkbox(plot_ls,axes,user_track_glyphs,direction_glyphs,plot_params): + labels = list(user_track_glyphs.keys()) + active = list(range(len(labels))) + user_tracks_checkbox = CheckboxGroup(labels=labels,active=active, width=100) + axis_names = [ls[0].axis_label for ls in list(axes.values()) if len(ls)>0] + user_track_names = list(user_track_glyphs.keys()) + + ori_y_coords = [user_track_glyphs[track_name][0].data_source.data['y'][0] for track_name in user_track_glyphs] + + direction_glyphs = [glyph for glyph in direction_glyphs if glyph] + s0_arrow = [glyph_ls.data_source for glyph_ls in direction_glyphs] + callback = CustomJS(args=dict(plot_ls=plot_ls, plot_params=plot_params, axis_names=axis_names,axes=axes, + user_track_glyphs=user_track_glyphs, user_track_names=user_track_names, + ori_y_coords=ori_y_coords, s0_arrow=s0_arrow + ), code=''' + const transcript_h = plot_params['transcript_height'] + const exon_h = plot_params['exon_height'] + const track_h = plot_params['track_height'] + + function setVis(glyphs, vis){ + for (let i = 0; i < glyphs.length; i++){ + if(glyphs[i] != null){ + glyphs[i].visible = vis + } + } + } + + function setAxesStart(start){ + for (let i = 0; i < axis_names.length; i++){ + for (let j = 0; j < plot_ls.length; j++){ + plot_ls[j].y_range.start = start + plot_ls[j].extra_y_ranges[axis_names[i]].start = start + } + } + } + + //in LabelSet source is called source whereas in GlyphRenderer source is called data_source for no apparent reason + function get_source(glyph){ + try {glyph.data_source.data; return glyph.data_source} + catch (err) {return glyph.source} + } + + function setY(track_name,y){ + console.log(y) + for (let i = 0; i < user_track_glyphs[track_name].length; i++){ + for (let j = 0; j < get_source(user_track_glyphs[track_name][i]).data['y'].length; j++){ + if (i%2==0) {get_source(user_track_glyphs[track_name][i]).data['y'][j] = y} + else {get_source(user_track_glyphs[track_name][i]).data['y'][j] = y-track_h} + } + console.log(user_track_glyphs[track_name][i]) + get_source(user_track_glyphs[track_name][i]).change.emit() + } + } + + function adjust_arrow(s0_arrow,start){ + + for (let i = 0; i < s0_arrow.length; i++){ + for (let j = 0; j < s0_arrow[i].data['y'].length/2; j++){ + //triangle + s0_arrow[i].data['y'][j*2+1][0][0][0] = transcript_h-exon_h/2 + start/(track_h*1.5) //start 57 + s0_arrow[i].data['y'][j*2+1][0][0][1] = transcript_h+exon_h/2 - start/(track_h*1.5) + //rectangle + s0_arrow[i].data['y'][j*2][0][0][0] = transcript_h-exon_h/5 + start/(track_h*1.5*3) + s0_arrow[i].data['y'][j*2][0][0][1] = transcript_h+exon_h/5 - start/(track_h*1.5*3) + s0_arrow[i].data['y'][j*2][0][0][2] = transcript_h+exon_h/5 - start/(track_h*1.5*3) + s0_arrow[i].data['y'][j*2][0][0][3] = transcript_h-exon_h/5 + start/(track_h*1.5*3) + } + s0_arrow[i].change.emit() + } + } + + var temp = 0 + var y_co = 0 + + for (let i = 0; i < user_track_names.length; i++){ + if (cb_obj.active.includes(i)) { + setVis(user_track_glyphs[user_track_names[i]],true) + setY(user_track_names[i], ori_y_coords[temp]) + y_co = ori_y_coords[temp] + temp++ + } + else {setVis(user_track_glyphs[user_track_names[i]],false)} + } + var start = 0 + if (y_co==0){start = plot_params['transcript_height']-plot_params['exon_height']/2} + else {start = y_co-ori_y_coords[ori_y_coords.length-1]} + setAxesStart(start) + adjust_arrow(s0_arrow,start) + ''') + + user_tracks_checkbox.js_on_change('active', callback) + return user_tracks_checkbox + +def add_user_lines_checkbox(plot_ls,axis,user_line_glyphs,label): + user_lines_checkbox = CheckboxGroup(labels=[label],active=[0], width=100, align=('start','center')) + callback = CustomJS(args=dict(plot_ls=plot_ls, axes=axis, + user_line_glyphs=user_line_glyphs + ), code=''' + function setVis(glyphs, vis){ + for (let i = 0; i < glyphs.length; i++){ + if(glyphs[i] != null) { glyphs[i].visible = vis } + } + } + + function setAxisVis(vis){ + for (let i = 0; i < axes.length; i++){ + axes[i].visible = vis + } + } + + if (cb_obj.active.includes(0)) { + setVis(user_line_glyphs,true) + setAxisVis(true) + } + else { + setVis(user_line_glyphs,false) + setAxisVis(false) + } + ''') + + user_lines_checkbox.js_on_change('active', callback) + return user_lines_checkbox + +def add_smoothing_slider(glyph_ls, fill_area_ls, title=''): + slider = Slider(start=1, end=100, value=25, step=1, title=title, width=250) + slider = Slider(start=1, end=100, value=1, step=1, title=title, width=250) + slider.js_on_change("value", CustomJS(args=dict(glyph_ls=glyph_ls, fill_area_ls=fill_area_ls),code=""" + function smooth(y,k,fill_area) { + //console.log(fill_area) + var smoothed_ls = [ ... y] + if (smoothed_ls.length <= 2) {return smoothed_ls} + if (fill_area) {smoothed_ls = smoothed_ls.slice(1,smoothed_ls.length-1)} + + for (let i = 0; i < smoothed_ls.length; i += k){ + const window_avg = mean(smoothed_ls.slice(i, i+k)) + for (let j = i; j < i + k; j++){ + if (j < smoothed_ls.length-1) { smoothed_ls[j] = window_avg } + } + } + if (fill_area) {return [y[0], ...smoothed_ls, y[y.length-1]]} + + else {return smoothed_ls} + } + + function mean(y) { return y.reduce((i, j) => i + j) / y.length } + + console.log(glyph_ls) + for (let i = 0; i < glyph_ls.length; i++){ + //console.log(fill_area_ls[i]) + for (let j = 0; j < glyph_ls[i].data_source.data['y'].length; j++){ + glyph_ls[i].data_source.data['y'][j] = smooth(glyph_ls[i].data_source.data['y_unsmoothed'][j], cb_obj.value, fill_area_ls[i]) + } + glyph_ls[i].data_source.change.emit() + } + + """)) + return slider + + +def add_legend(user_line_params, height=70, width=270): + num_lines = sum([len(user_line_params[axis_name]['lines']) for axis_name in user_line_params]) + #legend_plot = figure(plot_height=height,plot_width=width,toolbar_location=None) + legend_plot = figure(plot_height=30*num_lines,plot_width=width,toolbar_location=None) + legend_plot.yaxis.visible = legend_plot.xaxis.visible = legend_plot.grid.visible = False + + legend_items = [] + for axis_name in user_line_params: + for line in user_line_params[axis_name]['lines']: + #TODO add alpha? + legend_glyph = legend_plot.line(x=[0,1],y=[0,1],line_color=user_line_params[axis_name]['lines'][line]['color']) + legend_items.append((line, [legend_glyph])) + legend_glyph.visible = False + + legend = Legend(items=legend_items, location=(0,0)) + legend_plot.add_layout(legend, 'center') + legend_plot.legend.label_text_font_size = '12px' + + return legend_plot + +def add_exon_zoom(plot_ls,glyph_dict): + for (plot,exon_glyph,arrow_glyph) in zip(plot_ls,glyph_dict['exon'], glyph_dict['Direction']): + s0_exon = exon_glyph.data_source + s1_exon = ColumnDataSource(data=exon_glyph.data_source.data) #deep copy is not working in CustomJS so I'm doing it here + try: + s0_arrow = arrow_glyph.data_source + s1_arrow = ColumnDataSource(data=arrow_glyph.data_source.data) + except: s0_arrow = s1_arrow = None + + callback = CustomJS(args=dict(plot=plot, s0_exon=s0_exon, s1_exon=s1_exon, + s0_arrow=s0_arrow, s1_arrow=s1_arrow, + ),code=""" + cb_obj.active = !cb_obj.active + const N_exon = s1_exon.data['x'].length + const idx = cb_obj.indices[0] + const active_exon_start = s1_exon.data['adj_start'][idx] + const active_exon_end = s1_exon.data['adj_end'][idx] + const active_exon_len = s1_exon.data['true_len'][idx] + const plot_len = plot.x_range.end + + function adjust_arrow(s0_arrow, s1_arrow){ + const N_arrow = s1_arrow.data['x'].length/2 + var direc_int = 1 + if (s1_arrow.data['direction'][idx*2] == '-') {direc_int = -1} + const plot_mdpt = active_exon_start + active_exon_len/2 + s0_arrow.data['x'][idx*2][0][0] = [-3, -3, 0, 0].map(function(x) { return x * direc_int * active_exon_len / 200 + plot_mdpt; }) + s0_arrow.data['x'][idx*2+1][0][0] = [0,0,3].map(function(x) { return x * direc_int * active_exon_len / 200 + plot_mdpt; }) + } + + function reset_arrow(s0_arrow, s1_arrow){ + const N_arrow = s1_arrow.data['x'].length + for (let i = 0; i < N_arrow; i++){ + s0_arrow.data['x'][i][0][0] = s1_arrow.data['x'][i][0][0] + } + } + + function adjust_x_axis() { + plot.x_range.start = active_exon_start + plot.x_range.end = active_exon_end + } + + function reset_x_axis() { + plot.x_range.start = 0 + plot.x_range.end = s1_exon.data['adj_end'][N_exon-1] + } + + if(cb_obj.active){ + adjust_x_axis() + if (s1_arrow != null) {adjust_arrow(s0_arrow, s1_arrow)} + } else{ + reset_x_axis() + if (s1_arrow != null) {reset_arrow(s0_arrow, s1_arrow)} + } + if (s1_arrow != null) {s0_arrow.change.emit()} + """) + + s0_exon.selected.js_on_change('indices', callback) diff --git a/tests/compute-mutation-counts.sh b/tests/compute-mutation-counts.sh index 88f691c..ca402eb 100644 --- a/tests/compute-mutation-counts.sh +++ b/tests/compute-mutation-counts.sh @@ -15,7 +15,7 @@ export PYTHONPATH="${CONSTRAINT_TOOLS}/utilities:${CONSTRAINT_TOOLS}/predict-con PATH="${CONSTRAINT_TOOLS}/bin:$PATH" model="/scratch/ucgd/lustre-work/quinlan/data-shared/constraint-tools/model.ptm.json" -region="chr1:100,000-100,200" +region="chr1:100,000-100,600" window_size="51" window_stride="25" diff --git a/utilities/fetch_SNVs.py b/utilities/fetch_SNVs.py index d5180e6..de0019b 100644 --- a/utilities/fetch_SNVs.py +++ b/utilities/fetch_SNVs.py @@ -105,5 +105,4 @@ def fetch_SNVs(mutations, genome, region, meta): mutation['ALT'] = mutation.pop('alt') SNVs.append(mutation) - return SNVs - + return SNVs \ No newline at end of file