galaxy-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 15302 discussions
galaxy-dist commit 8ffcaf3d9a0c: Patch from Brad Chapman: Handle URLs for uploading in the case where Galaxy is served under a prefix and nginx is used to handle the uploads.
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Nate Coraor <nate(a)bx.psu.edu>
# Date 1279659120 14400
# Node ID 8ffcaf3d9a0c16d080801f3f81104e829403da41
# Parent 7e63649e96b5788bdd72e3d639fca1e8153c2775
Patch from Brad Chapman: Handle URLs for uploading in the case where Galaxy is served under a prefix and nginx is used to handle the uploads.
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -437,10 +437,16 @@ class Tool:
self.check_values = util.string_as_bool( input_elem.get("check_values", "true") )
self.nginx_upload = util.string_as_bool( input_elem.get( "nginx_upload", "false" ) )
self.action = input_elem.get( 'action', '/tool_runner/index' )
+ # If we have an nginx upload, save the action as a tuple instead of
+ # a string. The actual action needs to get url_for run to add any
+ # prefixes, and we want to avoid adding the prefix to the
+ # nginx_upload_path. This logic is handled in the tool_form.mako
+ # template.
if self.nginx_upload and self.app.config.nginx_upload_path:
if '?' in urllib.unquote_plus( self.action ):
raise Exception( 'URL parameters in a non-default tool action can not be used in conjunction with nginx upload. Please convert them to hidden POST parameters' )
- self.action = self.app.config.nginx_upload_path + '?nginx_redir=' + urllib.unquote_plus( self.action )
+ self.action = (self.app.config.nginx_upload_path + '?nginx_redir=',
+ urllib.unquote_plus(self.action))
self.target = input_elem.get( "target", "galaxy_main" )
self.method = input_elem.get( "method", "post" )
# Parse the actual parameters
--- a/templates/tool_form.mako
+++ b/templates/tool_form.mako
@@ -200,14 +200,22 @@ function checkUncheckAll( name, check )
<br/>
%endif
- <div class="toolForm" id="${tool.id}">
+ ## handle calculating the redict url for the special case where we have nginx proxy
+ ## upload and need to do url_for on the redirect portion of the tool action
+ <%
+ try:
+ tool_url = h.url_for(tool.action)
+ except AttributeError:
+ assert len(tool.action) == 2
+ tool_url = tool.action[0] + h.url_for(tool.action[1])
+ %><div class="toolForm" id="${tool.id}">
%if tool.has_multiple_pages:
<div class="toolFormTitle">${tool.name} (step ${tool_state.page+1} of ${tool.npages})</div>
%else:
<div class="toolFormTitle">${tool.name}</div>
%endif
<div class="toolFormBody">
- <form id="tool_form" name="tool_form" action="${h.url_for( tool.action )}" enctype="${tool.enctype}" target="${tool.target}" method="${tool.method}">
+ <form id="tool_form" name="tool_form" action="${tool_url}" enctype="${tool.enctype}" target="${tool.target}" method="${tool.method}"><input type="hidden" name="tool_id" value="${tool.id}"><input type="hidden" name="tool_state" value="${util.object_to_string( tool_state.encode( tool, app ) )}"><input type="hidden" name="tool_id" value="${tool.id}"><input type="hidden" name="tool_state" value="${util.object_to_string( tool_state.encode( tool, app ) )}">
%if tool.display_by_page[tool_state.page]:
1
0
galaxy-dist commit 7e63649e96b5: trackster: remove mousewheel zoom (since scrolling window is more important), fix overview drag bug
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Kanwei Li <kanwei(a)gmail.com>
# Date 1279651656 14400
# Node ID 7e63649e96b5788bdd72e3d639fca1e8153c2775
# Parent 84671d8f46845b7a5bcfcc8028e68eaf241a5058
trackster: remove mousewheel zoom (since scrolling window is more important), fix overview drag bug
--- a/static/scripts/trackster.js
+++ b/static/scripts/trackster.js
@@ -91,9 +91,8 @@ var View = function( container, chrom, t
// Create DOM elements
var parent_element = this.container,
view = this;
-
+ this.top_labeltrack = $("<div/>").addClass("top-labeltrack").appendTo(parent_element);
this.content_div = $("<div/>").addClass("content").css("position", "relative").appendTo(parent_element);
- this.top_labeltrack = $("<div/>").addClass("top-labeltrack").appendTo(this.content_div);
this.viewport_container = $("<div/>").addClass("viewport-container").addClass("viewport-container").appendTo(this.content_div);
this.viewport = $("<div/>").addClass("viewport").appendTo(this.viewport_container);
@@ -136,7 +135,7 @@ var View = function( container, chrom, t
var found = $.grep(view.chrom_data, function(v, i) {
return v.chrom === view.chrom;
})[0];
- view.max_high = found.len;
+ view.max_high = (found.len !== undefined ? found.len : 0);
view.reset();
view.redraw(true);
@@ -154,6 +153,7 @@ var View = function( container, chrom, t
}
});
+ /*
this.content_div.bind("mousewheel", function( e, delta ) {
if (Math.abs(delta) < 0.5) {
return;
@@ -165,6 +165,7 @@ var View = function( container, chrom, t
}
e.preventDefault();
});
+ */
this.content_div.bind("dblclick", function( e ) {
view.zoom_in(e.pageX, this.viewport_container);
@@ -177,8 +178,8 @@ var View = function( container, chrom, t
var delta = e.offsetX - this.current_x;
this.current_x = e.offsetX;
- var delta_chrom = Math.round(delta / view.viewport_container.width() * (view.high - view.low) );
- view.move_delta(-2*delta_chrom);
+ var delta_chrom = Math.round(delta / view.viewport_container.width() * (view.max_high - view.max_low) );
+ view.move_delta(-delta_chrom);
});
this.viewport_container.bind( "dragstart", function( e ) {
--- a/static/scripts/packed/trackster.js
+++ b/static/scripts/packed/trackster.js
@@ -1,1 +1,1 @@
-var DENSITY=200,FEATURE_LEVELS=10,DATA_ERROR="There was an error in indexing this dataset. ",DATA_NOCONVERTER="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",DATA_NONE="No data for this chrom/contig.",DATA_PENDING="Currently indexing... please wait",DATA_LOADING="Loading data...",CACHED_TILES_FEATURE=10,CACHED_TILES_LINE=30,CACHED_DATA=5,CONTEXT=$("<canvas></canvas>").get(0).getContext("2d"),PX_PER_CHAR=CONTEXT.measureText("A").width,RIGHT_STRAND,LEFT_STRAND;var right_img=new Image();right_img.src=image_path+"/visualization/strand_right.png";right_img.onload=function(){RIGHT_STRAND=CONTEXT.createPattern(right_img,"repeat")};var left_img=new Image();left_img.src=image_path+"/visualization/strand_left.png";left_img.onload=function(){LEFT_STRAND=CONTEXT.createPattern(left_img,"repeat")};var right_img_inv=new Image();right_img_inv.src=image_path+"/visualization/strand_right_inv.png";right_img_inv.onload=function(){RIGHT_STRAND_INV=CONT
EXT.createPattern(right_img_inv,"repeat")};var left_img_inv=new Image();left_img_inv.src=image_path+"/visualization/strand_left_inv.png";left_img_inv.onload=function(){LEFT_STRAND_INV=CONTEXT.createPattern(left_img_inv,"repeat")};var Cache=function(a){this.num_elements=a;this.clear()};$.extend(Cache.prototype,{get:function(b){var a=this.key_ary.indexOf(b);if(a!=-1){this.key_ary.splice(a,1);this.key_ary.push(b)}return this.obj_cache[b]},set:function(b,c){if(!this.obj_cache[b]){if(this.key_ary.length>=this.num_elements){var a=this.key_ary.shift();delete this.obj_cache[a]}this.key_ary.push(b)}this.obj_cache[b]=c;return c},clear:function(){this.obj_cache={};this.key_ary=[]}});var View=function(a,c,e,d,b){this.container=a;this.vis_id=d;this.dbkey=b;this.title=e;this.chrom=c;this.tracks=[];this.label_tracks=[];this.max_low=0;this.max_high=0;this.track_id_counter=0;this.zoom_factor=3;this.min_separation=30;this.has_changes=false;this.init();this.reset()};$.extend(View.prototype,{in
it:function(){var b=this.container,a=this;this.content_div=$("<div/>").addClass("content").css("position","relative").appendTo(b);this.top_labeltrack=$("<div/>").addClass("top-labeltrack").appendTo(this.content_div);this.viewport_container=$("<div/>").addClass("viewport-container").addClass("viewport-container").appendTo(this.content_div);this.viewport=$("<div/>").addClass("viewport").appendTo(this.viewport_container);this.nav_container=$("<div/>").addClass("nav-container").appendTo(b);this.nav_labeltrack=$("<div/>").addClass("nav-labeltrack").appendTo(this.nav_container);this.nav=$("<div/>").addClass("nav").appendTo(this.nav_container);this.overview=$("<div/>").addClass("overview").appendTo(this.nav);this.overview_viewport=$("<div/>").addClass("overview-viewport").appendTo(this.overview);this.overview_box=$("<div/>").addClass("overview-box").appendTo(this.overview_viewport);this.nav_controls=$("<div/>").addClass("nav-controls").appendTo(this.nav);this.chrom_form=$("<form/>"
).attr("action",function(){void (0)}).appendTo(this.nav_controls);this.chrom_select=$("<select/>").attr({name:"chrom"}).css("width","15em").addClass("no-autocomplete").append("<option value=''>Loading</option>").appendTo(this.chrom_form);this.low_input=$("<input/>").addClass("low").css("width","10em").appendTo(this.chrom_form);$("<span/>").text(" - ").appendTo(this.chrom_form);this.high_input=$("<input/>").addClass("high").css("width","10em").appendTo(this.chrom_form);if(this.vis_id!==undefined){this.hidden_input=$("<input/>").attr("type","hidden").val(this.vis_id).appendTo(this.chrom_form)}this.zi_link=$("<a/>").click(function(){a.zoom_in();a.redraw()}).html('<img src="'+image_path+'/fugue/magnifier-zoom.png" />').appendTo(this.chrom_form);this.zo_link=$("<a/>").click(function(){a.zoom_out();a.redraw()}).html('<img src="'+image_path+'/fugue/magnifier-zoom-out.png" />').appendTo(this.chrom_form);$.ajax({url:chrom_url,data:(this.vis_id!==undefined?{vis_id:this.vis_id}:{dbkey:
this.dbkey}),dataType:"json",success:function(c){if(c.reference){a.add_label_track(new ReferenceTrack(a))}a.chrom_data=c.chrom_info;var e='<option value="">Select Chrom/Contig</option>';for(i in a.chrom_data){var d=a.chrom_data[i]["chrom"];e+='<option value="'+d+'">'+d+"</option>"}a.chrom_select.html(e);a.chrom_select.bind("change",function(){a.chrom=a.chrom_select.val();var g=$.grep(a.chrom_data,function(j,k){return j.chrom===a.chrom})[0];a.max_high=g.len;a.reset();a.redraw(true);for(var h in a.tracks){var f=a.tracks[h];if(f.init){f.init()}}a.redraw()})},error:function(){alert("Could not load chroms for this dbkey:",a.dbkey)}});this.content_div.bind("mousewheel",function(c,d){if(Math.abs(d)<0.5){return}if(d>0){a.zoom_in(c.pageX,this.viewport_container)}else{a.zoom_out()}c.preventDefault()});this.content_div.bind("dblclick",function(c){a.zoom_in(c.pageX,this.viewport_container)});this.overview_box.bind("dragstart",function(c){this.current_x=c.offsetX}).bind("drag",function(c
){var f=c.offsetX-this.current_x;this.current_x=c.offsetX;var d=Math.round(f/a.viewport_container.width()*(a.high-a.low));a.move_delta(-2*d)});this.viewport_container.bind("dragstart",function(c){this.original_low=a.low;this.current_height=c.clientY;this.current_x=c.offsetX}).bind("drag",function(f){var c=$(this);var h=f.offsetX-this.current_x;var d=c.scrollTop()-(f.clientY-this.current_height);if(d<c.get(0).scrollHeight-c.height()){c.scrollTop(d)}this.current_height=f.clientY;this.current_x=f.offsetX;var g=Math.round(h/a.viewport_container.width()*(a.high-a.low));a.move_delta(g)});this.top_labeltrack.bind("dragstart",function(c){this.drag_origin_x=c.clientX;this.drag_origin_pos=c.clientX/a.viewport_container.width()*(a.high-a.low)+a.low;this.drag_div=$("<div />").css({height:a.content_div.height(),top:"0px",position:"absolute","background-color":"#cfc",border:"1px solid #6a6",opacity:0.5}).appendTo($(this))}).bind("drag",function(h){var d=Math.min(h.clientX,this.drag_origin
_x),c=Math.max(h.clientX,this.drag_origin_x),g=(a.high-a.low),f=a.viewport_container.width();a.low_input.val(commatize(Math.round(d/f*g)+a.low));a.high_input.val(commatize(Math.round(c/f*g)+a.low));this.drag_div.css({left:d+"px",width:(c-d)+"px"})}).bind("dragend",function(j){var d=Math.min(j.clientX,this.drag_origin_x),c=Math.max(j.clientX,this.drag_origin_x),g=(a.high-a.low),f=a.viewport_container.width(),h=a.low;a.low=Math.round(d/f*g)+h;a.high=Math.round(c/f*g)+h;this.drag_div.remove();a.redraw()});this.add_label_track(new LabelTrack(this,this.top_labeltrack));this.add_label_track(new LabelTrack(this,this.nav_labeltrack))},move_delta:function(c){var a=this;var b=a.high-a.low;if(a.low-c<a.max_low){a.low=a.max_low;a.high=a.max_low+b}else{if(a.high-c>a.max_high){a.high=a.max_high;a.low=a.max_high-b}else{a.high-=c;a.low-=c}}a.redraw()},add_track:function(a){a.view=this;a.track_id=this.track_id_counter;this.tracks.push(a);if(a.init){a.init()}a.container_div.attr("id","track_"
+a.track_id);this.track_id_counter+=1},add_label_track:function(a){a.view=this;this.label_tracks.push(a)},remove_track:function(a){this.has_changes=true;a.container_div.fadeOut("slow",function(){$(this).remove()});delete this.tracks[this.tracks.indexOf(a)]},update_options:function(){this.has_changes=true;var b=$("ul#sortable-ul").sortable("toArray");for(var c in b){var e=b[c].split("_li")[0].split("track_")[1];this.viewport.append($("#track_"+e))}for(var d in view.tracks){var a=view.tracks[d];if(a&&a.update_options){a.update_options(d)}}},reset:function(){this.low=this.max_low;this.high=this.max_high;this.viewport_container.find(".yaxislabel").remove()},redraw:function(f){var d=this.high-this.low,b=this.low,e=this.high;if(b<this.max_low){b=this.max_low}if(e>this.max_high){e=this.max_high}if(this.high!==0&&d<this.min_separation){e=b+this.min_separation}this.low=Math.floor(b);this.high=Math.ceil(e);this.resolution=Math.pow(10,Math.ceil(Math.log((this.high-this.low)/200)/Math.L
N10));this.zoom_res=Math.pow(FEATURE_LEVELS,Math.max(0,Math.ceil(Math.log(this.resolution,FEATURE_LEVELS)/Math.log(FEATURE_LEVELS))));this.overview_box.css({left:(this.low/(this.max_high-this.max_low))*this.overview_viewport.width(),width:Math.max(12,(this.high-this.low)/(this.max_high-this.max_low)*this.overview_viewport.width())}).show();this.low_input.val(commatize(this.low));this.high_input.val(commatize(this.high));if(!f){for(var c=0,a=this.tracks.length;c<a;c++){if(this.tracks[c]&&this.tracks[c].enabled){this.tracks[c].draw()}}for(var c=0,a=this.label_tracks.length;c<a;c++){this.label_tracks[c].draw()}}},zoom_in:function(b,c){if(this.max_high===0||this.high-this.low<this.min_separation){return}var d=this.high-this.low,e=d/2+this.low,a=(d/this.zoom_factor)/2;if(b){e=b/this.viewport_container.width()*(this.high-this.low)+this.low}this.low=Math.round(e-a);this.high=Math.round(e+a);this.redraw()},zoom_out:function(){if(this.max_high===0){return}var b=this.high-this.low,c=b
/2+this.low,a=(b*this.zoom_factor)/2;this.low=Math.round(c-a);this.high=Math.round(c+a);this.redraw()}});var Track=function(b,a,c){this.name=b;this.parent_element=c;this.view=a;this.init_global()};$.extend(Track.prototype,{init_global:function(){this.header_div=$("<div class='track-header'>").text(this.name);this.content_div=$("<div class='track-content'>");this.container_div=$("<div />").addClass("track").append(this.header_div).append(this.content_div);this.parent_element.append(this.container_div)},init_each:function(c,b){var a=this;a.enabled=false;a.data_queue={};a.tile_cache.clear();a.data_cache.clear();if(!a.content_div.text()){a.content_div.text(DATA_LOADING)}a.container_div.removeClass("nodata error pending");if(a.view.chrom){$.getJSON(data_url,c,function(d){if(!d||d==="error"||d.kind==="error"){a.container_div.addClass("error");a.content_div.text(DATA_ERROR);if(d.message){var f=a.view.tracks.indexOf(a);var e=$("<a href='javascript:void(0);'></a>").attr("id",f+"_erro
r");e.text("Click to view error");$("#"+f+"_error").live("click",function(){show_modal("Trackster Error","<pre>"+d.message+"</pre>",{Close:hide_modal})});a.content_div.append(e)}}else{if(d==="no converter"){a.container_div.addClass("error");a.content_div.text(DATA_NOCONVERTER)}else{if(d.data!==undefined&&(d.data===null||d.data.length===0)){a.container_div.addClass("nodata");a.content_div.text(DATA_NONE)}else{if(d==="pending"){a.container_div.addClass("pending");a.content_div.text(DATA_PENDING);setTimeout(function(){a.init()},5000)}else{a.content_div.text("");a.content_div.css("height",a.height_px+"px");a.enabled=true;b(d);a.draw()}}}}})}else{a.container_div.addClass("nodata");a.content_div.text(DATA_NONE)}}});var TiledTrack=function(){this.left_offset=200};$.extend(TiledTrack.prototype,Track.prototype,{draw:function(){var j=this.view.low,e=this.view.high,f=e-j,d=this.view.resolution;var l=$("<div style='position: relative;'></div>"),m=this.content_div.width()/f,h;this.conten
t_div.children(":first").remove();this.content_div.append(l),this.max_height=0;var a=Math.floor(j/d/DENSITY);while((a*DENSITY*d)<e){var k=this.content_div.width()+"_"+m+"_"+a;var c=this.tile_cache.get(k);if(c){var g=a*DENSITY*d;var b=(g-j)*m;if(this.left_offset){b-=this.left_offset}c.css({left:b});l.append(c);this.max_height=Math.max(this.max_height,c.height());this.content_div.css("height",this.max_height+"px")}else{this.delayed_draw(this,k,j,e,a,d,l,m)}a+=1}},delayed_draw:function(c,e,a,f,b,d,g,h){setTimeout(function(){if(!(a>c.view.high||f<c.view.low)){tile_element=c.draw_tile(d,b,g,h);if(tile_element){c.tile_cache.set(e,tile_element);c.max_height=Math.max(c.max_height,tile_element.height());c.content_div.css("height",c.max_height+"px")}}},50)}});var LabelTrack=function(a,b){Track.call(this,null,a,b);this.track_type="LabelTrack";this.hidden=true;this.container_div.addClass("label-track")};$.extend(LabelTrack.prototype,Track.prototype,{draw:function(){var c=this.view,d=c.h
igh-c.low,g=Math.floor(Math.pow(10,Math.floor(Math.log(d)/Math.log(10)))),a=Math.floor(c.low/g)*g,e=this.content_div.width(),b=$("<div style='position: relative; height: 1.3em;'></div>");while(a<c.high){var f=(a-c.low)/d*e;b.append($("<div class='label'>"+commatize(a)+"</div>").css({position:"absolute",left:f-1}));a+=g}this.content_div.children(":first").remove();this.content_div.append(b)}});var ReferenceTrack=function(a){this.track_type="ReferenceTrack";Track.call(this,null,a,a.nav_labeltrack);TiledTrack.call(this);this.hidden=true;this.height_px=12;this.container_div.addClass("reference-track");this.dummy_canvas=$("<canvas></canvas>").get(0).getContext("2d");this.data_queue={};this.data_cache=new Cache(CACHED_DATA);this.tile_cache=new Cache(CACHED_TILES_LINE)};$.extend(ReferenceTrack.prototype,TiledTrack.prototype,{get_data:function(d,b){var c=this,a=b*DENSITY*d,f=(b+1)*DENSITY*d,e=d+"_"+b;if(!c.data_queue[e]){c.data_queue[e]=true;$.ajax({url:reference_url,dataType:"json"
,data:{chrom:this.view.chrom,low:a,high:f,dbkey:this.view.dbkey},success:function(g){c.data_cache.set(e,g);delete c.data_queue[e];c.draw()},error:function(h,g,j){console.log(h,g,j)}})}},draw_tile:function(f,b,k,o){var g=b*DENSITY*f,d=DENSITY*f,e=$("<canvas class='tile'></canvas>"),n=e.get(0).getContext("2d"),j=f+"_"+b;if(o>PX_PER_CHAR){if(this.data_cache.get(j)===undefined){this.get_data(f,b);return}var m=this.data_cache.get(j);if(m===null){return}e.get(0).width=Math.ceil(d*o+this.left_offset);e.get(0).height=this.height_px;e.css({position:"absolute",top:0,left:(g-this.view.low)*o+this.left_offset});for(var h=0,l=m.length;h<l;h++){var a=Math.round(h*o);n.fillText(m[h],a+this.left_offset,10)}k.append(e);return e}}});var LineTrack=function(d,b,a,c){this.track_type="LineTrack";Track.call(this,d,b,b.viewport_container);TiledTrack.call(this);this.height_px=100;this.dataset_id=a;this.data_cache=new Cache(CACHED_DATA);this.tile_cache=new Cache(CACHED_TILES_LINE);this.prefs={min_val
ue:undefined,max_value:undefined,mode:"Line"};if(c.min_value!==undefined){this.prefs.min_value=c.min_value}if(c.max_value!==undefined){this.prefs.max_value=c.max_value}if(c.mode!==undefined){this.prefs.mode=c.mode}};$.extend(LineTrack.prototype,TiledTrack.prototype,{init:function(){var a=this,b=a.view.tracks.indexOf(a);a.vertical_range=undefined;this.init_each({stats:true,chrom:a.view.chrom,low:null,high:null,dataset_id:a.dataset_id},function(c){a.container_div.addClass("line-track");data=c.data;if(isNaN(parseFloat(a.prefs.min_value))||isNaN(parseFloat(a.prefs.max_value))){a.prefs.min_value=data.min;a.prefs.max_value=data.max;$("#track_"+b+"_minval").val(a.prefs.min_value);$("#track_"+b+"_maxval").val(a.prefs.max_value)}a.vertical_range=a.prefs.max_value-a.prefs.min_value;a.total_frequency=data.total_frequency;$("#linetrack_"+b+"_minval").remove();$("#linetrack_"+b+"_maxval").remove();var e=$("<div />").addClass("yaxislabel").attr("id","linetrack_"+b+"_minval").text(a.prefs.
min_value);var d=$("<div />").addClass("yaxislabel").attr("id","linetrack_"+b+"_maxval").text(a.prefs.max_value);d.css({position:"relative",top:"25px",left:"10px"});d.prependTo(a.container_div);e.css({position:"relative",top:a.height_px+55+"px",left:"10px"});e.prependTo(a.container_div)})},get_data:function(d,b){var c=this,a=b*DENSITY*d,f=(b+1)*DENSITY*d,e=d+"_"+b;if(!c.data_queue[e]){c.data_queue[e]=true;$.ajax({url:data_url,dataType:"json",data:{chrom:this.view.chrom,low:a,high:f,dataset_id:this.dataset_id,resolution:this.view.resolution},success:function(g){data=g.data;c.data_cache.set(e,data);delete c.data_queue[e];c.draw()},error:function(h,g,j){console.log(h,g,j)}})}},draw_tile:function(p,r,c,e){if(this.vertical_range===undefined){return}var s=r*DENSITY*p,a=DENSITY*p,b=$("<canvas class='tile'></canvas>"),v=p+"_"+r;if(this.data_cache.get(v)===undefined){this.get_data(p,r);return}var j=this.data_cache.get(v);if(j===null){return}b.css({position:"absolute",top:0,left:(s-th
is.view.low)*e});b.get(0).width=Math.ceil(a*e+this.left_offset);b.get(0).height=this.height_px;var o=b.get(0).getContext("2d"),k=false,l=this.prefs.min_value,g=this.prefs.max_value,n=this.vertical_range,t=this.total_frequency,d=this.height_px,m=this.prefs.mode;o.beginPath();if(data.length>1){var f=Math.ceil((data[1][0]-data[0][0])*e)}else{var f=10}var u,h;for(var q=0;q<data.length;q++){u=(data[q][0]-s)*e;h=data[q][1];if(m=="Intensity"){if(h===null){continue}if(h<=l){h=l}else{if(h>=g){h=g}}h=255-Math.floor((h-l)/n*255);o.fillStyle="rgb("+h+","+h+","+h+")";o.fillRect(u,0,f,this.height_px)}else{if(h===null){if(k&&m==="Filled"){o.lineTo(u,d)}k=false;continue}else{if(h<=l){h=l}else{if(h>=g){h=g}}h=Math.round(d-(h-l)/n*d);if(k){o.lineTo(u,h)}else{k=true;if(m==="Filled"){o.moveTo(u,d);o.lineTo(u,h)}else{o.moveTo(u,h)}}}}}if(m==="Filled"){if(k){o.lineTo(u,d)}o.fill()}else{o.stroke()}c.append(b);return b},gen_options:function(o){var a=$("<div />").addClass("form-row");var h="track_"+
o+"_minval",m=$("<label></label>").attr("for",h).text("Min value:"),b=(this.prefs.min_value===undefined?"":this.prefs.min_value),n=$("<input></input>").attr("id",h).val(b),l="track_"+o+"_maxval",g=$("<label></label>").attr("for",l).text("Max value:"),k=(this.prefs.max_value===undefined?"":this.prefs.max_value),f=$("<input></input>").attr("id",l).val(k),e="track_"+o+"_mode",d=$("<label></label>").attr("for",e).text("Display mode:"),j=(this.prefs.mode===undefined?"Line":this.prefs.mode),c=$('<select id="'+e+'"><option value="Line" id="mode_Line">Line</option><option value="Filled" id="mode_Filled">Filled</option><option value="Intensity" id="mode_Intensity">Intensity</option></select>');c.children("#mode_"+j).attr("selected","selected");return a.append(m).append(n).append(g).append(f).append(d).append(c)},update_options:function(d){var a=$("#track_"+d+"_minval").val(),c=$("#track_"+d+"_maxval").val(),b=$("#track_"+d+"_mode option:selected").val();if(a!==this.prefs.min_value||c
!==this.prefs.max_value||b!==this.prefs.mode){this.prefs.min_value=parseFloat(a);this.prefs.max_value=parseFloat(c);this.prefs.mode=b;this.vertical_range=this.prefs.max_value-this.prefs.min_value;$("#linetrack_"+d+"_minval").text(this.prefs.min_value);$("#linetrack_"+d+"_maxval").text(this.prefs.max_value);this.tile_cache.clear();this.draw()}}});var FeatureTrack=function(d,b,a,c){this.track_type="FeatureTrack";Track.call(this,d,b,b.viewport_container);TiledTrack.call(this);this.height_px=0;this.container_div.addClass("feature-track");this.dataset_id=a;this.zo_slots={};this.show_labels_scale=0.001;this.showing_details=false;this.vertical_detail_px=10;this.vertical_nodetail_px=3;this.default_font="9px Monaco, Lucida Console, monospace";this.inc_slots={};this.data_queue={};this.s_e_by_tile={};this.tile_cache=new Cache(CACHED_TILES_FEATURE);this.data_cache=new Cache(20);this.prefs={block_color:"black",label_color:"black",show_counts:false};if(c.block_color!==undefined){this.pref
s.block_color=c.block_color}if(c.label_color!==undefined){this.prefs.label_color=c.label_color}if(c.show_counts!==undefined){this.prefs.show_counts=c.show_counts}};$.extend(FeatureTrack.prototype,TiledTrack.prototype,{init:function(){var a=this,b=a.view.max_low+"_"+a.view.max_high;a.mode="Auto";if(a.mode_div){a.mode_div.remove()}this.init_each({low:a.view.max_low,high:a.view.max_high,dataset_id:a.dataset_id,chrom:a.view.chrom,resolution:this.view.resolution},function(d){a.mode_div=$("<div class='right-float menubutton popup' />").text("Display Mode");a.header_div.append(a.mode_div);a.mode="Auto";var c=function(e){a.mode_div.text(e);a.mode=e;a.tile_cache.clear();a.draw()};make_popupmenu(a.mode_div,{Auto:function(){c("Auto")},Dense:function(){c("Dense")},Squish:function(){c("Squish")},Pack:function(){c("Pack")}});a.data_cache.set(b,d);a.draw()})},get_data:function(a,d){var b=this,c=a+"_"+d;if(!b.data_queue[c]){b.data_queue[c]=true;$.getJSON(data_url,{chrom:b.view.chrom,low:a,h
igh:d,dataset_id:b.dataset_id,resolution:this.view.resolution,mode:this.mode},function(e){b.data_cache.set(c,e);delete b.data_queue[c];b.draw()})}},incremental_slots:function(a,h,c,r){if(!this.inc_slots[a]){this.inc_slots[a]={};this.inc_slots[a].w_scale=1/a;this.inc_slots[a].mode=r;this.s_e_by_tile[a]={}}var n=this.inc_slots[a].w_scale,z=[],l=0,b=$("<canvas></canvas>").get(0).getContext("2d"),o=this.view.max_low;var B=[];if(this.inc_slots[a].mode!==r){delete this.inc_slots[a];this.inc_slots[a]={mode:r,w_scale:n};delete this.s_e_by_tile[a];this.s_e_by_tile[a]={}}for(var w=0,x=h.length;w<x;w++){var g=h[w],m=g[0];if(this.inc_slots[a][m]!==undefined){l=Math.max(l,this.inc_slots[a][m]);B.push(this.inc_slots[a][m])}else{z.push(w)}}for(var w=0,x=z.length;w<x;w++){var g=h[z[w]],m=g[0],s=g[1],d=g[2],q=g[3],e=Math.floor((s-o)*n),f=Math.ceil((d-o)*n);if(q!==undefined&&!c){var t=b.measureText(q).width;if(e-t<0){f+=t}else{e-=t}}var v=0;while(true){var p=true;if(this.s_e_by_tile[a][v]!==u
ndefined){for(var u=0,A=this.s_e_by_tile[a][v].length;u<A;u++){var y=this.s_e_by_tile[a][v][u];if(f>y[0]&&e<y[1]){p=false;break}}}if(p){if(this.s_e_by_tile[a][v]===undefined){this.s_e_by_tile[a][v]=[]}this.s_e_by_tile[a][v].push([e,f]);this.inc_slots[a][m]=v;l=Math.max(l,v);break}v++}}return l},rect_or_text:function(n,o,f,m,b,d,k,e,h){n.textAlign="center";var j=Math.round(o/2);if((this.mode==="Pack"||this.mode==="Auto")&&d!==undefined&&o>PX_PER_CHAR){n.fillStyle=this.prefs.block_color;n.fillRect(k,h+1,e,9);n.fillStyle="#eee";for(var g=0,l=d.length;g<l;g++){if(b+g>=f&&b+g<=m){var a=Math.floor(Math.max(0,(b+g-f)*o));n.fillText(d[g],a+this.left_offset+j,h+9)}}}else{n.fillStyle=this.prefs.block_color;n.fillRect(k,h+4,e,3)}},draw_tile:function(X,h,n,ak){var E=h*DENSITY*X,ad=(h+1)*DENSITY*X,D=DENSITY*X;var ae=E+"_"+ad;var z=this.data_cache.get(ae);if(z===undefined){this.data_queue[[E,ad]]=true;this.get_data(E,ad);return}var a=Math.ceil(D*ak),L=$("<canvas class='tile'></canvas>"),Z
=this.prefs.label_color,f=this.prefs.block_color,m=this.mode,V=(m==="Squish")||(m==="Dense")&&(m!=="Pack")||(m==="Auto"&&(z.extra_info==="no_detail")),P=this.left_offset,aj,s,al;if(z.dataset_type==="summary_tree"){s=30}else{if(m==="Dense"){s=15;al=10}else{al=(V?this.vertical_nodetail_px:this.vertical_detail_px);s=this.incremental_slots(this.view.zoom_res,z.data,V,m)*al+15;aj=this.inc_slots[this.view.zoom_res]}}L.css({position:"absolute",top:0,left:(E-this.view.low)*ak-P});L.get(0).width=a+P;L.get(0).height=s;n.parent().css("height",Math.max(this.height_px,s)+"px");var A=L.get(0).getContext("2d");A.fillStyle=f;A.font=this.default_font;A.textAlign="right";if(z.dataset_type=="summary_tree"){var K,H=55,ac=255-H,g=ac*2/3,R=z.data,C=z.max,l=z.avg;if(R.length>2){var b=Math.ceil((R[1][0]-R[0][0])*ak)}else{var b=50}for(var ag=0,w=R.length;ag<w;ag++){var T=Math.ceil((R[ag][0]-E)*ak);var S=R[ag][1];if(!S){continue}K=Math.floor(ac-(S/C)*ac);A.fillStyle="rgb("+K+","+K+","+K+")";A.fillRec
t(T+P,0,b,20);if(this.prefs.show_counts){if(K>g){A.fillStyle="black"}else{A.fillStyle="#ddd"}A.textAlign="center";A.fillText(R[ag][1],T+P+(b/2),12)}}n.append(L);return L}var ai=z.data;var af=0;for(var ag=0,w=ai.length;ag<w;ag++){var M=ai[ag],J=M[0],ah=M[1],U=M[2],F=M[3];if(ah<=ad&&U>=E){var W=Math.floor(Math.max(0,(ah-E)*ak)),B=Math.ceil(Math.min(a,Math.max(0,(U-E)*ak))),Q=(m==="Dense"?0:aj[J]*al);if(z.dataset_type==="bai"){A.fillStyle=f;if(M[4] instanceof Array){var t=Math.floor(Math.max(0,(M[4][0]-E)*ak)),I=Math.ceil(Math.min(a,Math.max(0,(M[4][1]-E)*ak))),r=Math.floor(Math.max(0,(M[5][0]-E)*ak)),p=Math.ceil(Math.min(a,Math.max(0,(M[5][1]-E)*ak)));if(M[4][1]>=E&&M[4][0]<=ad){this.rect_or_text(A,ak,E,ad,M[4][0],M[4][2],t+P,I-t,Q)}if(M[5][1]>=E&&M[5][0]<=ad){this.rect_or_text(A,ak,E,ad,M[5][0],M[5][2],r+P,p-r,Q)}if(r>I){A.fillStyle="#999";A.fillRect(I+P,Q+5,r-I,1)}}else{A.fillStyle=f;this.rect_or_text(A,ak,E,ad,ah,F,W+P,B-W,Q)}if(m!=="Dense"&&!V&&ah>E){A.fillStyle=this.prefs
.label_color;if(h===0&&W-A.measureText(F).width<0){A.textAlign="left";A.fillText(J,B+2+P,Q+8)}else{A.textAlign="right";A.fillText(J,W-2+P,Q+8)}A.fillStyle=f}}else{if(z.dataset_type==="interval_index"){if(V){A.fillRect(W+P,Q+5,B-W,1)}else{var v=M[4],O=M[5],Y=M[6],e=M[7];var u,aa,G=null,am=null;if(O&&Y){G=Math.floor(Math.max(0,(O-E)*ak));am=Math.ceil(Math.min(a,Math.max(0,(Y-E)*ak)))}if(m!=="Dense"&&F!==undefined&&ah>E){A.fillStyle=Z;if(h===0&&W-A.measureText(F).width<0){A.textAlign="left";A.fillText(F,B+2+P,Q+8)}else{A.textAlign="right";A.fillText(F,W-2+P,Q+8)}A.fillStyle=f}if(e){if(v){if(v=="+"){A.fillStyle=RIGHT_STRAND}else{if(v=="-"){A.fillStyle=LEFT_STRAND}}A.fillRect(W+P,Q,B-W,10);A.fillStyle=f}for(var ae=0,d=e.length;ae<d;ae++){var o=e[ae],c=Math.floor(Math.max(0,(o[0]-E)*ak)),N=Math.ceil(Math.min(a,Math.max((o[1]-E)*ak)));if(c>N){continue}u=5;aa=3;A.fillRect(c+P,Q+aa,N-c,u);if(G!==undefined&&!(c>am||N<G)){u=9;aa=1;var ab=Math.max(c,G),q=Math.min(N,am);A.fillRect(ab+P,Q
+aa,q-ab,u)}}}else{u=9;aa=1;A.fillRect(W+P,Q+aa,B-W,u);if(M.strand){if(M.strand=="+"){A.fillStyle=RIGHT_STRAND_INV}else{if(M.strand=="-"){A.fillStyle=LEFT_STRAND_INV}}A.fillRect(W+P,Q,B-W,10);A.fillStyle=prefs.block_color}}}}}af++}}n.append(L);return L},gen_options:function(j){var a=$("<div />").addClass("form-row");var e="track_"+j+"_block_color",l=$("<label />").attr("for",e).text("Block color:"),m=$("<input />").attr("id",e).attr("name",e).val(this.prefs.block_color),k="track_"+j+"_label_color",g=$("<label />").attr("for",k).text("Text color:"),h=$("<input />").attr("id",k).attr("name",k).val(this.prefs.label_color),f="track_"+j+"_show_count",c=$("<label />").attr("for",f).text("Show summary counts"),b=$('<input type="checkbox" style="float:left;"></input>').attr("id",f).attr("name",f).attr("checked",this.prefs.show_counts),d=$("<div />").append(b).append(c);return a.append(l).append(m).append(g).append(h).append(d)},update_options:function(e){var b=$("#track_"+e+"_block_
color").val(),d=$("#track_"+e+"_label_color").val(),c=$("#track_"+e+"_mode option:selected").val(),a=$("#track_"+e+"_show_count").attr("checked");if(b!==this.prefs.block_color||d!==this.prefs.label_color||a!==this.prefs.show_counts){this.prefs.block_color=b;this.prefs.label_color=d;this.prefs.show_counts=a;this.tile_cache.clear();this.draw()}}});var ReadTrack=function(d,b,a,c){FeatureTrack.call(this,d,b,a,c);this.track_type="ReadTrack";this.vertical_detail_px=10;this.vertical_nodetail_px=5};$.extend(ReadTrack.prototype,TiledTrack.prototype,FeatureTrack.prototype,{});
+var DENSITY=200,FEATURE_LEVELS=10,DATA_ERROR="There was an error in indexing this dataset. ",DATA_NOCONVERTER="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",DATA_NONE="No data for this chrom/contig.",DATA_PENDING="Currently indexing... please wait",DATA_LOADING="Loading data...",CACHED_TILES_FEATURE=10,CACHED_TILES_LINE=30,CACHED_DATA=5,CONTEXT=$("<canvas></canvas>").get(0).getContext("2d"),PX_PER_CHAR=CONTEXT.measureText("A").width,RIGHT_STRAND,LEFT_STRAND;var right_img=new Image();right_img.src=image_path+"/visualization/strand_right.png";right_img.onload=function(){RIGHT_STRAND=CONTEXT.createPattern(right_img,"repeat")};var left_img=new Image();left_img.src=image_path+"/visualization/strand_left.png";left_img.onload=function(){LEFT_STRAND=CONTEXT.createPattern(left_img,"repeat")};var right_img_inv=new Image();right_img_inv.src=image_path+"/visualization/strand_right_inv.png";right_img_inv.onload=function(){RIGHT_STRAND_INV=CONT
EXT.createPattern(right_img_inv,"repeat")};var left_img_inv=new Image();left_img_inv.src=image_path+"/visualization/strand_left_inv.png";left_img_inv.onload=function(){LEFT_STRAND_INV=CONTEXT.createPattern(left_img_inv,"repeat")};var Cache=function(a){this.num_elements=a;this.clear()};$.extend(Cache.prototype,{get:function(b){var a=this.key_ary.indexOf(b);if(a!=-1){this.key_ary.splice(a,1);this.key_ary.push(b)}return this.obj_cache[b]},set:function(b,c){if(!this.obj_cache[b]){if(this.key_ary.length>=this.num_elements){var a=this.key_ary.shift();delete this.obj_cache[a]}this.key_ary.push(b)}this.obj_cache[b]=c;return c},clear:function(){this.obj_cache={};this.key_ary=[]}});var View=function(a,c,e,d,b){this.container=a;this.vis_id=d;this.dbkey=b;this.title=e;this.chrom=c;this.tracks=[];this.label_tracks=[];this.max_low=0;this.max_high=0;this.track_id_counter=0;this.zoom_factor=3;this.min_separation=30;this.has_changes=false;this.init();this.reset()};$.extend(View.prototype,{in
it:function(){var b=this.container,a=this;this.top_labeltrack=$("<div/>").addClass("top-labeltrack").appendTo(b);this.content_div=$("<div/>").addClass("content").css("position","relative").appendTo(b);this.viewport_container=$("<div/>").addClass("viewport-container").addClass("viewport-container").appendTo(this.content_div);this.viewport=$("<div/>").addClass("viewport").appendTo(this.viewport_container);this.nav_container=$("<div/>").addClass("nav-container").appendTo(b);this.nav_labeltrack=$("<div/>").addClass("nav-labeltrack").appendTo(this.nav_container);this.nav=$("<div/>").addClass("nav").appendTo(this.nav_container);this.overview=$("<div/>").addClass("overview").appendTo(this.nav);this.overview_viewport=$("<div/>").addClass("overview-viewport").appendTo(this.overview);this.overview_box=$("<div/>").addClass("overview-box").appendTo(this.overview_viewport);this.nav_controls=$("<div/>").addClass("nav-controls").appendTo(this.nav);this.chrom_form=$("<form/>").attr("action"
,function(){void (0)}).appendTo(this.nav_controls);this.chrom_select=$("<select/>").attr({name:"chrom"}).css("width","15em").addClass("no-autocomplete").append("<option value=''>Loading</option>").appendTo(this.chrom_form);this.low_input=$("<input/>").addClass("low").css("width","10em").appendTo(this.chrom_form);$("<span/>").text(" - ").appendTo(this.chrom_form);this.high_input=$("<input/>").addClass("high").css("width","10em").appendTo(this.chrom_form);if(this.vis_id!==undefined){this.hidden_input=$("<input/>").attr("type","hidden").val(this.vis_id).appendTo(this.chrom_form)}this.zi_link=$("<a/>").click(function(){a.zoom_in();a.redraw()}).html('<img src="'+image_path+'/fugue/magnifier-zoom.png" />').appendTo(this.chrom_form);this.zo_link=$("<a/>").click(function(){a.zoom_out();a.redraw()}).html('<img src="'+image_path+'/fugue/magnifier-zoom-out.png" />').appendTo(this.chrom_form);$.ajax({url:chrom_url,data:(this.vis_id!==undefined?{vis_id:this.vis_id}:{dbkey:this.dbkey}),da
taType:"json",success:function(c){if(c.reference){a.add_label_track(new ReferenceTrack(a))}a.chrom_data=c.chrom_info;var e='<option value="">Select Chrom/Contig</option>';for(i in a.chrom_data){var d=a.chrom_data[i]["chrom"];e+='<option value="'+d+'">'+d+"</option>"}a.chrom_select.html(e);a.chrom_select.bind("change",function(){a.chrom=a.chrom_select.val();var g=$.grep(a.chrom_data,function(j,k){return j.chrom===a.chrom})[0];a.max_high=(g.len!==undefined?g.len:0);a.reset();a.redraw(true);for(var h in a.tracks){var f=a.tracks[h];if(f.init){f.init()}}a.redraw()})},error:function(){alert("Could not load chroms for this dbkey:",a.dbkey)}});this.content_div.bind("dblclick",function(c){a.zoom_in(c.pageX,this.viewport_container)});this.overview_box.bind("dragstart",function(c){this.current_x=c.offsetX}).bind("drag",function(c){var f=c.offsetX-this.current_x;this.current_x=c.offsetX;var d=Math.round(f/a.viewport_container.width()*(a.max_high-a.max_low));a.move_delta(-d)});this.viewp
ort_container.bind("dragstart",function(c){this.original_low=a.low;this.current_height=c.clientY;this.current_x=c.offsetX}).bind("drag",function(f){var c=$(this);var h=f.offsetX-this.current_x;var d=c.scrollTop()-(f.clientY-this.current_height);if(d<c.get(0).scrollHeight-c.height()){c.scrollTop(d)}this.current_height=f.clientY;this.current_x=f.offsetX;var g=Math.round(h/a.viewport_container.width()*(a.high-a.low));a.move_delta(g)});this.top_labeltrack.bind("dragstart",function(c){this.drag_origin_x=c.clientX;this.drag_origin_pos=c.clientX/a.viewport_container.width()*(a.high-a.low)+a.low;this.drag_div=$("<div />").css({height:a.content_div.height(),top:"0px",position:"absolute","background-color":"#cfc",border:"1px solid #6a6",opacity:0.5}).appendTo($(this))}).bind("drag",function(h){var d=Math.min(h.clientX,this.drag_origin_x),c=Math.max(h.clientX,this.drag_origin_x),g=(a.high-a.low),f=a.viewport_container.width();a.low_input.val(commatize(Math.round(d/f*g)+a.low));a.high_i
nput.val(commatize(Math.round(c/f*g)+a.low));this.drag_div.css({left:d+"px",width:(c-d)+"px"})}).bind("dragend",function(j){var d=Math.min(j.clientX,this.drag_origin_x),c=Math.max(j.clientX,this.drag_origin_x),g=(a.high-a.low),f=a.viewport_container.width(),h=a.low;a.low=Math.round(d/f*g)+h;a.high=Math.round(c/f*g)+h;this.drag_div.remove();a.redraw()});this.add_label_track(new LabelTrack(this,this.top_labeltrack));this.add_label_track(new LabelTrack(this,this.nav_labeltrack))},move_delta:function(c){var a=this;var b=a.high-a.low;if(a.low-c<a.max_low){a.low=a.max_low;a.high=a.max_low+b}else{if(a.high-c>a.max_high){a.high=a.max_high;a.low=a.max_high-b}else{a.high-=c;a.low-=c}}a.redraw()},add_track:function(a){a.view=this;a.track_id=this.track_id_counter;this.tracks.push(a);if(a.init){a.init()}a.container_div.attr("id","track_"+a.track_id);this.track_id_counter+=1},add_label_track:function(a){a.view=this;this.label_tracks.push(a)},remove_track:function(a){this.has_changes=true;
a.container_div.fadeOut("slow",function(){$(this).remove()});delete this.tracks[this.tracks.indexOf(a)]},update_options:function(){this.has_changes=true;var b=$("ul#sortable-ul").sortable("toArray");for(var c in b){var e=b[c].split("_li")[0].split("track_")[1];this.viewport.append($("#track_"+e))}for(var d in view.tracks){var a=view.tracks[d];if(a&&a.update_options){a.update_options(d)}}},reset:function(){this.low=this.max_low;this.high=this.max_high;this.viewport_container.find(".yaxislabel").remove()},redraw:function(f){var d=this.high-this.low,b=this.low,e=this.high;if(b<this.max_low){b=this.max_low}if(e>this.max_high){e=this.max_high}if(this.high!==0&&d<this.min_separation){e=b+this.min_separation}this.low=Math.floor(b);this.high=Math.ceil(e);this.resolution=Math.pow(10,Math.ceil(Math.log((this.high-this.low)/200)/Math.LN10));this.zoom_res=Math.pow(FEATURE_LEVELS,Math.max(0,Math.ceil(Math.log(this.resolution,FEATURE_LEVELS)/Math.log(FEATURE_LEVELS))));this.overview_box.c
ss({left:(this.low/(this.max_high-this.max_low))*this.overview_viewport.width(),width:Math.max(12,(this.high-this.low)/(this.max_high-this.max_low)*this.overview_viewport.width())}).show();this.low_input.val(commatize(this.low));this.high_input.val(commatize(this.high));if(!f){for(var c=0,a=this.tracks.length;c<a;c++){if(this.tracks[c]&&this.tracks[c].enabled){this.tracks[c].draw()}}for(var c=0,a=this.label_tracks.length;c<a;c++){this.label_tracks[c].draw()}}},zoom_in:function(b,c){if(this.max_high===0||this.high-this.low<this.min_separation){return}var d=this.high-this.low,e=d/2+this.low,a=(d/this.zoom_factor)/2;if(b){e=b/this.viewport_container.width()*(this.high-this.low)+this.low}this.low=Math.round(e-a);this.high=Math.round(e+a);this.redraw()},zoom_out:function(){if(this.max_high===0){return}var b=this.high-this.low,c=b/2+this.low,a=(b*this.zoom_factor)/2;this.low=Math.round(c-a);this.high=Math.round(c+a);this.redraw()}});var Track=function(b,a,c){this.name=b;this.paren
t_element=c;this.view=a;this.init_global()};$.extend(Track.prototype,{init_global:function(){this.header_div=$("<div class='track-header'>").text(this.name);this.content_div=$("<div class='track-content'>");this.container_div=$("<div />").addClass("track").append(this.header_div).append(this.content_div);this.parent_element.append(this.container_div)},init_each:function(c,b){var a=this;a.enabled=false;a.data_queue={};a.tile_cache.clear();a.data_cache.clear();if(!a.content_div.text()){a.content_div.text(DATA_LOADING)}a.container_div.removeClass("nodata error pending");if(a.view.chrom){$.getJSON(data_url,c,function(d){if(!d||d==="error"||d.kind==="error"){a.container_div.addClass("error");a.content_div.text(DATA_ERROR);if(d.message){var f=a.view.tracks.indexOf(a);var e=$("<a href='javascript:void(0);'></a>").attr("id",f+"_error");e.text("Click to view error");$("#"+f+"_error").live("click",function(){show_modal("Trackster Error","<pre>"+d.message+"</pre>",{Close:hide_modal})})
;a.content_div.append(e)}}else{if(d==="no converter"){a.container_div.addClass("error");a.content_div.text(DATA_NOCONVERTER)}else{if(d.data!==undefined&&(d.data===null||d.data.length===0)){a.container_div.addClass("nodata");a.content_div.text(DATA_NONE)}else{if(d==="pending"){a.container_div.addClass("pending");a.content_div.text(DATA_PENDING);setTimeout(function(){a.init()},5000)}else{a.content_div.text("");a.content_div.css("height",a.height_px+"px");a.enabled=true;b(d);a.draw()}}}}})}else{a.container_div.addClass("nodata");a.content_div.text(DATA_NONE)}}});var TiledTrack=function(){this.left_offset=200};$.extend(TiledTrack.prototype,Track.prototype,{draw:function(){var j=this.view.low,e=this.view.high,f=e-j,d=this.view.resolution;var l=$("<div style='position: relative;'></div>"),m=this.content_div.width()/f,h;this.content_div.children(":first").remove();this.content_div.append(l),this.max_height=0;var a=Math.floor(j/d/DENSITY);while((a*DENSITY*d)<e){var k=this.content_di
v.width()+"_"+m+"_"+a;var c=this.tile_cache.get(k);if(c){var g=a*DENSITY*d;var b=(g-j)*m;if(this.left_offset){b-=this.left_offset}c.css({left:b});l.append(c);this.max_height=Math.max(this.max_height,c.height());this.content_div.css("height",this.max_height+"px")}else{this.delayed_draw(this,k,j,e,a,d,l,m)}a+=1}},delayed_draw:function(c,e,a,f,b,d,g,h){setTimeout(function(){if(!(a>c.view.high||f<c.view.low)){tile_element=c.draw_tile(d,b,g,h);if(tile_element){c.tile_cache.set(e,tile_element);c.max_height=Math.max(c.max_height,tile_element.height());c.content_div.css("height",c.max_height+"px")}}},50)}});var LabelTrack=function(a,b){Track.call(this,null,a,b);this.track_type="LabelTrack";this.hidden=true;this.container_div.addClass("label-track")};$.extend(LabelTrack.prototype,Track.prototype,{draw:function(){var c=this.view,d=c.high-c.low,g=Math.floor(Math.pow(10,Math.floor(Math.log(d)/Math.log(10)))),a=Math.floor(c.low/g)*g,e=this.content_div.width(),b=$("<div style='position: r
elative; height: 1.3em;'></div>");while(a<c.high){var f=(a-c.low)/d*e;b.append($("<div class='label'>"+commatize(a)+"</div>").css({position:"absolute",left:f-1}));a+=g}this.content_div.children(":first").remove();this.content_div.append(b)}});var ReferenceTrack=function(a){this.track_type="ReferenceTrack";Track.call(this,null,a,a.nav_labeltrack);TiledTrack.call(this);this.hidden=true;this.height_px=12;this.container_div.addClass("reference-track");this.dummy_canvas=$("<canvas></canvas>").get(0).getContext("2d");this.data_queue={};this.data_cache=new Cache(CACHED_DATA);this.tile_cache=new Cache(CACHED_TILES_LINE)};$.extend(ReferenceTrack.prototype,TiledTrack.prototype,{get_data:function(d,b){var c=this,a=b*DENSITY*d,f=(b+1)*DENSITY*d,e=d+"_"+b;if(!c.data_queue[e]){c.data_queue[e]=true;$.ajax({url:reference_url,dataType:"json",data:{chrom:this.view.chrom,low:a,high:f,dbkey:this.view.dbkey},success:function(g){c.data_cache.set(e,g);delete c.data_queue[e];c.draw()},error:functio
n(h,g,j){console.log(h,g,j)}})}},draw_tile:function(f,b,k,o){var g=b*DENSITY*f,d=DENSITY*f,e=$("<canvas class='tile'></canvas>"),n=e.get(0).getContext("2d"),j=f+"_"+b;if(o>PX_PER_CHAR){if(this.data_cache.get(j)===undefined){this.get_data(f,b);return}var m=this.data_cache.get(j);if(m===null){return}e.get(0).width=Math.ceil(d*o+this.left_offset);e.get(0).height=this.height_px;e.css({position:"absolute",top:0,left:(g-this.view.low)*o+this.left_offset});for(var h=0,l=m.length;h<l;h++){var a=Math.round(h*o);n.fillText(m[h],a+this.left_offset,10)}k.append(e);return e}}});var LineTrack=function(d,b,a,c){this.track_type="LineTrack";Track.call(this,d,b,b.viewport_container);TiledTrack.call(this);this.height_px=100;this.dataset_id=a;this.data_cache=new Cache(CACHED_DATA);this.tile_cache=new Cache(CACHED_TILES_LINE);this.prefs={min_value:undefined,max_value:undefined,mode:"Line"};if(c.min_value!==undefined){this.prefs.min_value=c.min_value}if(c.max_value!==undefined){this.prefs.max_val
ue=c.max_value}if(c.mode!==undefined){this.prefs.mode=c.mode}};$.extend(LineTrack.prototype,TiledTrack.prototype,{init:function(){var a=this,b=a.view.tracks.indexOf(a);a.vertical_range=undefined;this.init_each({stats:true,chrom:a.view.chrom,low:null,high:null,dataset_id:a.dataset_id},function(c){a.container_div.addClass("line-track");data=c.data;if(isNaN(parseFloat(a.prefs.min_value))||isNaN(parseFloat(a.prefs.max_value))){a.prefs.min_value=data.min;a.prefs.max_value=data.max;$("#track_"+b+"_minval").val(a.prefs.min_value);$("#track_"+b+"_maxval").val(a.prefs.max_value)}a.vertical_range=a.prefs.max_value-a.prefs.min_value;a.total_frequency=data.total_frequency;$("#linetrack_"+b+"_minval").remove();$("#linetrack_"+b+"_maxval").remove();var e=$("<div />").addClass("yaxislabel").attr("id","linetrack_"+b+"_minval").text(a.prefs.min_value);var d=$("<div />").addClass("yaxislabel").attr("id","linetrack_"+b+"_maxval").text(a.prefs.max_value);d.css({position:"relative",top:"25px",le
ft:"10px"});d.prependTo(a.container_div);e.css({position:"relative",top:a.height_px+55+"px",left:"10px"});e.prependTo(a.container_div)})},get_data:function(d,b){var c=this,a=b*DENSITY*d,f=(b+1)*DENSITY*d,e=d+"_"+b;if(!c.data_queue[e]){c.data_queue[e]=true;$.ajax({url:data_url,dataType:"json",data:{chrom:this.view.chrom,low:a,high:f,dataset_id:this.dataset_id,resolution:this.view.resolution},success:function(g){data=g.data;c.data_cache.set(e,data);delete c.data_queue[e];c.draw()},error:function(h,g,j){console.log(h,g,j)}})}},draw_tile:function(p,r,c,e){if(this.vertical_range===undefined){return}var s=r*DENSITY*p,a=DENSITY*p,b=$("<canvas class='tile'></canvas>"),v=p+"_"+r;if(this.data_cache.get(v)===undefined){this.get_data(p,r);return}var j=this.data_cache.get(v);if(j===null){return}b.css({position:"absolute",top:0,left:(s-this.view.low)*e});b.get(0).width=Math.ceil(a*e+this.left_offset);b.get(0).height=this.height_px;var o=b.get(0).getContext("2d"),k=false,l=this.prefs.min_v
alue,g=this.prefs.max_value,n=this.vertical_range,t=this.total_frequency,d=this.height_px,m=this.prefs.mode;o.beginPath();if(data.length>1){var f=Math.ceil((data[1][0]-data[0][0])*e)}else{var f=10}var u,h;for(var q=0;q<data.length;q++){u=(data[q][0]-s)*e;h=data[q][1];if(m=="Intensity"){if(h===null){continue}if(h<=l){h=l}else{if(h>=g){h=g}}h=255-Math.floor((h-l)/n*255);o.fillStyle="rgb("+h+","+h+","+h+")";o.fillRect(u,0,f,this.height_px)}else{if(h===null){if(k&&m==="Filled"){o.lineTo(u,d)}k=false;continue}else{if(h<=l){h=l}else{if(h>=g){h=g}}h=Math.round(d-(h-l)/n*d);if(k){o.lineTo(u,h)}else{k=true;if(m==="Filled"){o.moveTo(u,d);o.lineTo(u,h)}else{o.moveTo(u,h)}}}}}if(m==="Filled"){if(k){o.lineTo(u,d)}o.fill()}else{o.stroke()}c.append(b);return b},gen_options:function(o){var a=$("<div />").addClass("form-row");var h="track_"+o+"_minval",m=$("<label></label>").attr("for",h).text("Min value:"),b=(this.prefs.min_value===undefined?"":this.prefs.min_value),n=$("<input></input>").a
ttr("id",h).val(b),l="track_"+o+"_maxval",g=$("<label></label>").attr("for",l).text("Max value:"),k=(this.prefs.max_value===undefined?"":this.prefs.max_value),f=$("<input></input>").attr("id",l).val(k),e="track_"+o+"_mode",d=$("<label></label>").attr("for",e).text("Display mode:"),j=(this.prefs.mode===undefined?"Line":this.prefs.mode),c=$('<select id="'+e+'"><option value="Line" id="mode_Line">Line</option><option value="Filled" id="mode_Filled">Filled</option><option value="Intensity" id="mode_Intensity">Intensity</option></select>');c.children("#mode_"+j).attr("selected","selected");return a.append(m).append(n).append(g).append(f).append(d).append(c)},update_options:function(d){var a=$("#track_"+d+"_minval").val(),c=$("#track_"+d+"_maxval").val(),b=$("#track_"+d+"_mode option:selected").val();if(a!==this.prefs.min_value||c!==this.prefs.max_value||b!==this.prefs.mode){this.prefs.min_value=parseFloat(a);this.prefs.max_value=parseFloat(c);this.prefs.mode=b;this.vertical_range
=this.prefs.max_value-this.prefs.min_value;$("#linetrack_"+d+"_minval").text(this.prefs.min_value);$("#linetrack_"+d+"_maxval").text(this.prefs.max_value);this.tile_cache.clear();this.draw()}}});var FeatureTrack=function(d,b,a,c){this.track_type="FeatureTrack";Track.call(this,d,b,b.viewport_container);TiledTrack.call(this);this.height_px=0;this.container_div.addClass("feature-track");this.dataset_id=a;this.zo_slots={};this.show_labels_scale=0.001;this.showing_details=false;this.vertical_detail_px=10;this.vertical_nodetail_px=3;this.default_font="9px Monaco, Lucida Console, monospace";this.inc_slots={};this.data_queue={};this.s_e_by_tile={};this.tile_cache=new Cache(CACHED_TILES_FEATURE);this.data_cache=new Cache(20);this.prefs={block_color:"black",label_color:"black",show_counts:false};if(c.block_color!==undefined){this.prefs.block_color=c.block_color}if(c.label_color!==undefined){this.prefs.label_color=c.label_color}if(c.show_counts!==undefined){this.prefs.show_counts=c.sho
w_counts}};$.extend(FeatureTrack.prototype,TiledTrack.prototype,{init:function(){var a=this,b=a.view.max_low+"_"+a.view.max_high;a.mode="Auto";if(a.mode_div){a.mode_div.remove()}this.init_each({low:a.view.max_low,high:a.view.max_high,dataset_id:a.dataset_id,chrom:a.view.chrom,resolution:this.view.resolution},function(d){a.mode_div=$("<div class='right-float menubutton popup' />").text("Display Mode");a.header_div.append(a.mode_div);a.mode="Auto";var c=function(e){a.mode_div.text(e);a.mode=e;a.tile_cache.clear();a.draw()};make_popupmenu(a.mode_div,{Auto:function(){c("Auto")},Dense:function(){c("Dense")},Squish:function(){c("Squish")},Pack:function(){c("Pack")}});a.data_cache.set(b,d);a.draw()})},get_data:function(a,d){var b=this,c=a+"_"+d;if(!b.data_queue[c]){b.data_queue[c]=true;$.getJSON(data_url,{chrom:b.view.chrom,low:a,high:d,dataset_id:b.dataset_id,resolution:this.view.resolution,mode:this.mode},function(e){b.data_cache.set(c,e);delete b.data_queue[c];b.draw()})}},incre
mental_slots:function(a,h,c,r){if(!this.inc_slots[a]){this.inc_slots[a]={};this.inc_slots[a].w_scale=1/a;this.inc_slots[a].mode=r;this.s_e_by_tile[a]={}}var n=this.inc_slots[a].w_scale,z=[],l=0,b=$("<canvas></canvas>").get(0).getContext("2d"),o=this.view.max_low;var B=[];if(this.inc_slots[a].mode!==r){delete this.inc_slots[a];this.inc_slots[a]={mode:r,w_scale:n};delete this.s_e_by_tile[a];this.s_e_by_tile[a]={}}for(var w=0,x=h.length;w<x;w++){var g=h[w],m=g[0];if(this.inc_slots[a][m]!==undefined){l=Math.max(l,this.inc_slots[a][m]);B.push(this.inc_slots[a][m])}else{z.push(w)}}for(var w=0,x=z.length;w<x;w++){var g=h[z[w]],m=g[0],s=g[1],d=g[2],q=g[3],e=Math.floor((s-o)*n),f=Math.ceil((d-o)*n);if(q!==undefined&&!c){var t=b.measureText(q).width;if(e-t<0){f+=t}else{e-=t}}var v=0;while(true){var p=true;if(this.s_e_by_tile[a][v]!==undefined){for(var u=0,A=this.s_e_by_tile[a][v].length;u<A;u++){var y=this.s_e_by_tile[a][v][u];if(f>y[0]&&e<y[1]){p=false;break}}}if(p){if(this.s_e_by_ti
le[a][v]===undefined){this.s_e_by_tile[a][v]=[]}this.s_e_by_tile[a][v].push([e,f]);this.inc_slots[a][m]=v;l=Math.max(l,v);break}v++}}return l},rect_or_text:function(n,o,f,m,b,d,k,e,h){n.textAlign="center";var j=Math.round(o/2);if((this.mode==="Pack"||this.mode==="Auto")&&d!==undefined&&o>PX_PER_CHAR){n.fillStyle=this.prefs.block_color;n.fillRect(k,h+1,e,9);n.fillStyle="#eee";for(var g=0,l=d.length;g<l;g++){if(b+g>=f&&b+g<=m){var a=Math.floor(Math.max(0,(b+g-f)*o));n.fillText(d[g],a+this.left_offset+j,h+9)}}}else{n.fillStyle=this.prefs.block_color;n.fillRect(k,h+4,e,3)}},draw_tile:function(X,h,n,ak){var E=h*DENSITY*X,ad=(h+1)*DENSITY*X,D=DENSITY*X;var ae=E+"_"+ad;var z=this.data_cache.get(ae);if(z===undefined){this.data_queue[[E,ad]]=true;this.get_data(E,ad);return}var a=Math.ceil(D*ak),L=$("<canvas class='tile'></canvas>"),Z=this.prefs.label_color,f=this.prefs.block_color,m=this.mode,V=(m==="Squish")||(m==="Dense")&&(m!=="Pack")||(m==="Auto"&&(z.extra_info==="no_detail")),P=
this.left_offset,aj,s,al;if(z.dataset_type==="summary_tree"){s=30}else{if(m==="Dense"){s=15;al=10}else{al=(V?this.vertical_nodetail_px:this.vertical_detail_px);s=this.incremental_slots(this.view.zoom_res,z.data,V,m)*al+15;aj=this.inc_slots[this.view.zoom_res]}}L.css({position:"absolute",top:0,left:(E-this.view.low)*ak-P});L.get(0).width=a+P;L.get(0).height=s;n.parent().css("height",Math.max(this.height_px,s)+"px");var A=L.get(0).getContext("2d");A.fillStyle=f;A.font=this.default_font;A.textAlign="right";if(z.dataset_type=="summary_tree"){var K,H=55,ac=255-H,g=ac*2/3,R=z.data,C=z.max,l=z.avg;if(R.length>2){var b=Math.ceil((R[1][0]-R[0][0])*ak)}else{var b=50}for(var ag=0,w=R.length;ag<w;ag++){var T=Math.ceil((R[ag][0]-E)*ak);var S=R[ag][1];if(!S){continue}K=Math.floor(ac-(S/C)*ac);A.fillStyle="rgb("+K+","+K+","+K+")";A.fillRect(T+P,0,b,20);if(this.prefs.show_counts){if(K>g){A.fillStyle="black"}else{A.fillStyle="#ddd"}A.textAlign="center";A.fillText(R[ag][1],T+P+(b/2),12)}}n.ap
pend(L);return L}var ai=z.data;var af=0;for(var ag=0,w=ai.length;ag<w;ag++){var M=ai[ag],J=M[0],ah=M[1],U=M[2],F=M[3];if(ah<=ad&&U>=E){var W=Math.floor(Math.max(0,(ah-E)*ak)),B=Math.ceil(Math.min(a,Math.max(0,(U-E)*ak))),Q=(m==="Dense"?0:aj[J]*al);if(z.dataset_type==="bai"){A.fillStyle=f;if(M[4] instanceof Array){var t=Math.floor(Math.max(0,(M[4][0]-E)*ak)),I=Math.ceil(Math.min(a,Math.max(0,(M[4][1]-E)*ak))),r=Math.floor(Math.max(0,(M[5][0]-E)*ak)),p=Math.ceil(Math.min(a,Math.max(0,(M[5][1]-E)*ak)));if(M[4][1]>=E&&M[4][0]<=ad){this.rect_or_text(A,ak,E,ad,M[4][0],M[4][2],t+P,I-t,Q)}if(M[5][1]>=E&&M[5][0]<=ad){this.rect_or_text(A,ak,E,ad,M[5][0],M[5][2],r+P,p-r,Q)}if(r>I){A.fillStyle="#999";A.fillRect(I+P,Q+5,r-I,1)}}else{A.fillStyle=f;this.rect_or_text(A,ak,E,ad,ah,F,W+P,B-W,Q)}if(m!=="Dense"&&!V&&ah>E){A.fillStyle=this.prefs.label_color;if(h===0&&W-A.measureText(F).width<0){A.textAlign="left";A.fillText(J,B+2+P,Q+8)}else{A.textAlign="right";A.fillText(J,W-2+P,Q+8)}A.fillStyl
e=f}}else{if(z.dataset_type==="interval_index"){if(V){A.fillRect(W+P,Q+5,B-W,1)}else{var v=M[4],O=M[5],Y=M[6],e=M[7];var u,aa,G=null,am=null;if(O&&Y){G=Math.floor(Math.max(0,(O-E)*ak));am=Math.ceil(Math.min(a,Math.max(0,(Y-E)*ak)))}if(m!=="Dense"&&F!==undefined&&ah>E){A.fillStyle=Z;if(h===0&&W-A.measureText(F).width<0){A.textAlign="left";A.fillText(F,B+2+P,Q+8)}else{A.textAlign="right";A.fillText(F,W-2+P,Q+8)}A.fillStyle=f}if(e){if(v){if(v=="+"){A.fillStyle=RIGHT_STRAND}else{if(v=="-"){A.fillStyle=LEFT_STRAND}}A.fillRect(W+P,Q,B-W,10);A.fillStyle=f}for(var ae=0,d=e.length;ae<d;ae++){var o=e[ae],c=Math.floor(Math.max(0,(o[0]-E)*ak)),N=Math.ceil(Math.min(a,Math.max((o[1]-E)*ak)));if(c>N){continue}u=5;aa=3;A.fillRect(c+P,Q+aa,N-c,u);if(G!==undefined&&!(c>am||N<G)){u=9;aa=1;var ab=Math.max(c,G),q=Math.min(N,am);A.fillRect(ab+P,Q+aa,q-ab,u)}}}else{u=9;aa=1;A.fillRect(W+P,Q+aa,B-W,u);if(M.strand){if(M.strand=="+"){A.fillStyle=RIGHT_STRAND_INV}else{if(M.strand=="-"){A.fillStyle=LEF
T_STRAND_INV}}A.fillRect(W+P,Q,B-W,10);A.fillStyle=prefs.block_color}}}}}af++}}n.append(L);return L},gen_options:function(j){var a=$("<div />").addClass("form-row");var e="track_"+j+"_block_color",l=$("<label />").attr("for",e).text("Block color:"),m=$("<input />").attr("id",e).attr("name",e).val(this.prefs.block_color),k="track_"+j+"_label_color",g=$("<label />").attr("for",k).text("Text color:"),h=$("<input />").attr("id",k).attr("name",k).val(this.prefs.label_color),f="track_"+j+"_show_count",c=$("<label />").attr("for",f).text("Show summary counts"),b=$('<input type="checkbox" style="float:left;"></input>').attr("id",f).attr("name",f).attr("checked",this.prefs.show_counts),d=$("<div />").append(b).append(c);return a.append(l).append(m).append(g).append(h).append(d)},update_options:function(e){var b=$("#track_"+e+"_block_color").val(),d=$("#track_"+e+"_label_color").val(),c=$("#track_"+e+"_mode option:selected").val(),a=$("#track_"+e+"_show_count").attr("checked");if(b!==
this.prefs.block_color||d!==this.prefs.label_color||a!==this.prefs.show_counts){this.prefs.block_color=b;this.prefs.label_color=d;this.prefs.show_counts=a;this.tile_cache.clear();this.draw()}}});var ReadTrack=function(d,b,a,c){FeatureTrack.call(this,d,b,a,c);this.track_type="ReadTrack";this.vertical_detail_px=10;this.vertical_nodetail_px=5};$.extend(ReadTrack.prototype,TiledTrack.prototype,FeatureTrack.prototype,{});
1
0
galaxy-dist commit 95491a8e9e1b: lims: fixed lims documentation link
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User rc
# Date 1279735164 14400
# Node ID 95491a8e9e1bca9267ec5830ac5df2a6d30ed915
# Parent a37b8a979f7d0d040527413695c5828d22ca5e54
lims: fixed lims documentation link
--- a/templates/webapps/galaxy/base_panels.mako
+++ b/templates/webapps/galaxy/base_panels.mako
@@ -42,7 +42,7 @@
<div class="submenu"><ul><li><a href="${h.url_for( controller='/requests', action='index' )}">Sequencing Requests</a></li>
- <li><a target="_blank" href="${app.config.get( "lims_doc_url", "http://main.g2.bx.psu.edu/u/rc/p/sts" )}">Help</a></li>
+ <li><a target="_blank" href="${app.config.get( "lims_doc_url", "http://main.g2.bx.psu.edu/u/rkchak/p/sts" )}">Help</a></li></ul></div></td>
1
0
galaxy-dist commit 84671d8f4684: Fix for sqlalchemy-migrate scripts so they will function across webapps - galaxy is the default, so no command line changes necessary when migrating the db.
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Greg Von Kuster <greg(a)bx.psu.edu>
# Date 1279632434 14400
# Node ID 84671d8f46845b7a5bcfcc8028e68eaf241a5058
# Parent 28e629ad59490af90a28bc45073a7cfc10ed646c
Fix for sqlalchemy-migrate scripts so they will function across webapps - galaxy is the default, so no command line changes necessary when migrating the db.
--- a/manage_db.sh
+++ b/manage_db.sh
@@ -2,7 +2,7 @@
#######
# NOTE: To downgrade to a specific version, use something like:
-# sh manage_db.sh downgrade --version=3
+# sh manage_db.sh downgrade --version=3 <community if using that webapp - galaxy is the default>
#######
cd `dirname $0`
--- a/scripts/manage_db.py
+++ b/scripts/manage_db.py
@@ -12,11 +12,20 @@ pkg_resources.require( "sqlalchemy-migra
from migrate.versioning.shell import main
from ConfigParser import SafeConfigParser
-
log = logging.getLogger( __name__ )
+if sys.argv[-1] in [ 'community' ]:
+ # Need to pop the last arg so the command line args will be correct
+ # for sqlalchemy-migrate
+ webapp = sys.argv.pop()
+ config_file = 'community_wsgi.ini'
+ repo = 'lib/galaxy/webapps/community/model/migrate'
+else:
+ config_file = 'universe_wsgi.ini'
+ repo = 'lib/galaxy/model/migrate'
+
cp = SafeConfigParser()
-cp.read( "universe_wsgi.ini" )
+cp.read( config_file )
if cp.has_option( "app:main", "database_connection" ):
db_url = cp.get( "app:main", "database_connection" )
@@ -43,4 +52,4 @@ except KeyError:
# Let this go, it could possibly work with db's we don't support
log.error( "database_connection contains an unknown SQLAlchemy database dialect: %s" % dialect )
-main( repository='lib/galaxy/model/migrate', url=db_url )
+main( repository=repo, url=db_url )
1
0
galaxy-dist commit 0f5eb93a7d61: lims: look and feel improvements.
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User rc
# Date 1279307355 14400
# Node ID 0f5eb93a7d61478565d63563bddcbffc6b6a59d9
# Parent a27244147802bd74be35ae24665cc3fc57580f23
lims: look and feel improvements.
Removed borders from the request page and added +/- icons for expand/collapse
--- a/templates/requests/common/get_data.mako
+++ b/templates/requests/common/get_data.mako
@@ -128,82 +128,77 @@
</li></ul>
-<div class="toolForm">
- %if len(dataset_files):
+
+%if len(dataset_files):
+ <h3>Sample Dataset(s)</h3>
+ %if sample.untransferred_dataset_files() and cntrller == 'requests_admin':
<div class="form-row">
- <h4>Sample Dataset(s)</h4>
- %if sample.untransferred_dataset_files() and cntrller == 'requests_admin':
+ <ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='get_data', start_transfer_button=True, sample_id=sample.id )}">
+ <span>Start transfer</span></a>
+ </li>
+ </ul>
+ </div>
+ %endif
+ <div class="form-row">
+ <table class="grid">
+ <thead>
+ <tr>
+ <th>Dataset File</th>
+ <th>Transfer Status</th>
+ <th></th>
+ </tr>
+ <thead>
+ <tbody>
+ %for dataset_index, dataset_file in enumerate(dataset_files):
+ ${sample_dataset_files( dataset_index, dataset_file['name'], dataset_file['status'] )}
+ %endfor
+ </tbody>
+ </table>
+ </div>
+%else:
+ <div class="form-row">
+ There are no dataset files associated with this sample.
+ </div>
+%endif
+
+<br/>
+<br/>
+
+%if cntrller == 'requests_admin' and trans.user_is_admin():
+ <form name="get_data" id="get_data" action="${h.url_for( controller='requests_admin', cntrller=cntrller, action='get_data', sample_id=sample.id)}" method="post" >
+ <div class="toolFormTitle">Select files for transfer</div>
+ ##<h4>Select files for transfer</h4>
+ <div class="toolForm"><div class="form-row">
- <ul class="manage-table-actions">
- <li>
- <a class="action-button" href="${h.url_for( controller='requests_admin', action='get_data', start_transfer_button=True, sample_id=sample.id )}">
- <span>Start transfer</span></a>
- </li>
- </ul>
- </div>
- %endif
- <div class="form-row">
- <table class="grid">
- <thead>
- <tr>
- <th>Dataset File</th>
- <th>Transfer Status</th>
- <th></th>
- </tr>
- <thead>
- <tbody>
- %for dataset_index, dataset_file in enumerate(dataset_files):
- ${sample_dataset_files( dataset_index, dataset_file['name'], dataset_file['status'] )}
+ <label>Folder path on the sequencer:</label>
+ <input type="text" name="folder_path" value="${folder_path}" size="100"/>
+ <input type="submit" name="browse_button" value="List contents"/>
+ ##<input type="submit" name="open_folder" value="Open folder"/>
+ <input type="submit" name="folder_up" value="Up"/>
+ </div>
+ <div class="form-row">
+ <select name="files_list" id="files_list" style="max-width: 60%; width: 98%; height: 150px; font-size: 100%;" ondblclick="open_folder1(${sample.id}, '${folder_path}')" onChange="display_file_details(${sample.id}, '${folder_path}')" multiple>
+ %for index, f in enumerate(files):
+ <option value="${f}">${f}</option>
%endfor
- </tbody>
- </table>
- </div>
- </div>
- %else:
- <div class="form-row">
- There are no dataset files associated with this sample.
- </div>
- %endif
-
- <br/>
- <br/>
-
- %if cntrller == 'requests_admin' and trans.user_is_admin():
- <form name="get_data" id="get_data" action="${h.url_for( controller='requests_admin', cntrller=cntrller, action='get_data', sample_id=sample.id)}" method="post" >
- <div class="form-row">
- ##<div class="toolFormTitle">Select files for transfer</div>
- <h4>Select files for transfer</h4>
- <div style="width: 60%;">
- <div class="form-row">
- <label>Folder path on the sequencer:</label>
- <input type="text" name="folder_path" value="${folder_path}" size="100"/>
- <input type="submit" name="browse_button" value="List contents"/>
- ##<input type="submit" name="open_folder" value="Open folder"/>
- <input type="submit" name="folder_up" value="Up"/>
- </div>
- <div class="form-row">
- <select name="files_list" id="files_list" style="max-width: 98%; width: 98%; height: 150px; font-size: 100%;" ondblclick="open_folder1(${sample.id}, '${folder_path}')" onChange="display_file_details(${sample.id}, '${folder_path}')" multiple>
- %for index, f in enumerate(files):
- <option value="${f}">${f}</option>
- %endfor
- </select>
- <br/>
- <div id="file_details" class="toolParamHelp" style="clear: both;">
-
- </div>
- </div>
- <div class="form-row">
- <div class="toolParamHelp" style="clear: both;">
- After selecting dataset(s), be sure to click on the <b>Start transfer</b> button.
- Once the transfer is complete the dataset(s) will show up on this page.
- </div>
- <input type="submit" name="select_files_button" value="Select"/>
+ </select>
+ <br/>
+ <div id="file_details" class="toolParamHelp" style="clear: both;">
+
</div></div>
+ <div class="form-row">
+ <div class="toolParamHelp" style="clear: both;">
+ After selecting dataset(s), be sure to click on the <b>Start transfer</b> button.
+ Once the transfer is complete the dataset(s) will show up on this page.
+ </div>
+ <input type="submit" name="select_files_button" value="Select"/>
+ </div></div>
- </form>
- %endif
-</div>
+ </form>
+%endif
--- a/templates/requests/common/edit_request.mako
+++ b/templates/requests/common/edit_request.mako
@@ -34,8 +34,8 @@
<br/><ul class="manage-table-actions"><li>
- <a class="action-button" href="${h.url_for( controller=cntrller, cntrller=cntrller, action='list')}">
- <span>Browse requests</span></a>
+ <a class="action-button" href="${h.url_for( controller=cntrller, action='list', operation='show', id=trans.security.encode_id(request.id))}">
+ <span>Browse this request</span></a></li></ul>
--- a/templates/requests/common/show_request.mako
+++ b/templates/requests/common/show_request.mako
@@ -30,6 +30,31 @@
});
</script>
+<script type="text/javascript">
+function showContent(vThis)
+{
+ // http://www.javascriptjunkie.com
+ // alert(vSibling.className + " " + vDef_Key);
+ vParent = vThis.parentNode;
+ vSibling = vParent.nextSibling;
+ while (vSibling.nodeType==3) {
+ // Fix for Mozilla/FireFox Empty Space becomes a TextNode or Something
+ vSibling = vSibling.nextSibling;
+ };
+ if(vSibling.style.display == "none")
+ {
+ vThis.src="/static/images/fugue/toggle.png";
+ vThis.alt = "Hide";
+ vSibling.style.display = "block";
+ } else {
+ vSibling.style.display = "none";
+ vThis.src="/static/images/fugue/toggle-expand.png";
+ vThis.alt = "Show";
+ }
+ return;
+}
+</script>
+
<script type="text/javascript">
$(document).ready(function(){
@@ -37,7 +62,7 @@
$(".msg_body").hide();
//toggle the componenet with class msg_body
$(".msg_head").click(function(){
- $(this).next(".msg_body").slideToggle(450);
+ $(this).next(".msg_body").slideToggle(0);
});
});
</script>
@@ -153,47 +178,43 @@
${render_msg( message, status )}
%endif
-
-
-
-<div class="toolForm">
+<div>
+<h3><img src="/static/images/fugue/toggle-expand.png" alt="Show" onclick="showContent(this);" style="cursor:pointer;"/> Request Information</h3>
+<div style="display:none;" >
+ %for index, rd in enumerate(request_details):
+ <div class="form-row">
+ <label>${rd['label']}</label>
+ %if not rd['value']:
+ <i>None</i>
+ %else:
+ %if rd['label'] == 'State':
+ <a href="${h.url_for( controller=cntrller, action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
+ %else:
+ ${rd['value']}
+ %endif
+ %endif
+ </div>
+ <div style="clear: both"></div>
+ %endfor
<div class="form-row">
- <div class="msg_list">
- <h4 class="msg_head"><u>Request Information</u></h4>
- <div class="msg_body">
- %for index, rd in enumerate(request_details):
- <div class="form-row">
- <label>${rd['label']}</label>
- %if not rd['value']:
- <i>None</i>
- %else:
- %if rd['label'] == 'State':
- <a href="${h.url_for( controller=cntrller, action='list', operation='events', id=trans.security.encode_id(request.id) )}">${rd['value']}</a>
- %else:
- ${rd['value']}
- %endif
- %endif
- </div>
- <div style="clear: both"></div>
- %endfor
- <div class="form-row">
- <ul class="manage-table-actions">
- <li>
- <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='Edit', id=trans.security.encode_id(request.id))}">
- <span>Edit request details</span></a>
- </li>
- </ul>
- </div>
- </div>
- </div>
+ <ul class="manage-table-actions">
+ <li>
+ <a class="action-button" href="${h.url_for( controller=cntrller, action='list', operation='Edit', id=trans.security.encode_id(request.id))}">
+ <span>Edit request details</span></a>
+ </li>
+ </ul></div></div>
+</div>
+
+
+
<br/>
-<div class="toolForm">
+##<div class="toolForm"><form id="show_request" name="show_request" action="${h.url_for( controller='requests_common', cntrller=cntrller, action='request_page', edit_mode=edit_mode )}" method="post" >
- <div class="form-row">
+ ##<div class="form-row">
%if current_samples:
## first render the basic info grid
${render_basic_info_grid()}
@@ -201,12 +222,11 @@
<% trans.sa_session.refresh( request.type.sample_form ) %>
%for grid_index, grid_name in enumerate(request.type.sample_form.layout):
${render_grid( grid_index, grid_name, request.type.sample_form.fields_of_grid( grid_index ) )}
- <br/>
%endfor
%else:
<label>There are no samples.</label>
%endif
- </div>
+ ##</div>
%if request.samples and request.submitted():
<script type="text/javascript">
// Updater
@@ -253,97 +273,94 @@
<input type="submit" name="save_samples_button" value="Save"/><input type="submit" name="cancel_changes_button" value="Cancel"/></div>
- %elif request.unsubmitted():
+ %elif edit_mode == 'True' or len(current_samples) > len(request.samples):
<div class="form-row"><input type="submit" name="save_samples_button" value="Save"/>
+ <input type="submit" name="cancel_changes_button" value="Cancel"/></div>
%endif
%endif
<input type="hidden" name="id" value="${trans.security.encode_id(request.id)}" /></form>
-</div>
+##</div><br/>
%if request.unsubmitted():
-<div class="toolForm"><form id="import" name="import" action="${h.url_for( controller='requests_common', action='request_page', edit_mode=edit_mode, request_id=trans.security.encode_id(request.id) )}" enctype="multipart/form-data" method="post" >
- <div class="form-row">
- <div class="msg_list">
- <h4 class="msg_head"><u>Import samples from csv file</u></h4>
- <div class="msg_body">
- <input type="file" name="file_data" />
- <input type="submit" name="import_samples_button" value="Import samples"/>
- <br/>
- <div class="toolParamHelp" style="clear: both;">
- The csv file must be in the following format:<br/>
- SampleName,DataLibrary,DataLibraryFolder,FieldValue1,FieldValue2...
- </div>
- </div>
+ <h4><img src="/static/images/fugue/toggle-expand.png" alt="Show" onclick="showContent(this);" style="cursor:pointer;"/> Import samples</h4>
+ <div style="display:none;">
+ <input type="file" name="file_data" />
+ <input type="submit" name="import_samples_button" value="Import samples"/>
+ <br/>
+ <div class="toolParamHelp" style="clear: both;">
+ The csv file must be in the following format:<br/>
+ SampleName,DataLibrary,DataLibraryFolder,FieldValue1,FieldValue2...
</div></div>
-## <input type="hidden" name="request_id" value="${request.id}" /></form>
-</div>
+##</div>
%endif
+
+
<%def name="render_grid( grid_index, grid_name, fields_dict )"><br/>
- <div class="msg_list">
- %if grid_name:
- <h4 class="msg_head"><u>${grid_name}</u></h4>
- %else:
- <h4>Grid ${grid_index}</h4>
- %endif
- %if edit_mode == 'False' or len(current_samples) <= len(request.samples):
- <div class="msg_body">
- %else:
- <div class="msg_body2">
- %endif
- <table class="grid">
- <thead>
- <tr>
- <th>Name</th>
- %for index, field in fields_dict.items():
- <th>
- ${field['label']}
- <div class="toolParamHelp" style="clear: both;">
- <i>${field['helptext']}</i>
- </div>
- </th>
- %endfor
- <th></th>
- </tr>
- <thead>
- <tbody>
- <%
- trans.sa_session.refresh( request )
- %>
- %for sample_index, sample in enumerate(current_samples):
- %if edit_mode == 'True':
+ <% if not grid_name:
+ grid_name = "Grid "+ grid_index
+ %>
+ <div>
+ %if edit_mode == 'True' or len(current_samples) > len(request.samples):
+ <h4><img src="/static/images/fugue/toggle.png" alt="Show" onclick="showContent(this);" style="cursor:pointer;"/> ${grid_name}</h4>
+ <div>
+ %else:
+ <h4><img src="/static/images/fugue/toggle-expand.png" alt="Hide" onclick="showContent(this);" style="cursor:pointer;"/> ${grid_name}</h4>
+ <div style="display:none;">
+ %endif
+ <table class="grid">
+ <thead><tr>
- ${render_sample_form( sample_index, sample['name'], sample['field_values'], fields_dict)}
- </tr>
- %else:
- <tr>
- %if sample_index in range(len(request.samples)):
- ${render_sample( sample_index, sample['name'], sample['field_values'], fields_dict )}
- %else:
- ${render_sample_form( sample_index, sample['name'], sample['field_values'], fields_dict)}
+ <th>Name</th>
+ %for index, field in fields_dict.items():
+ <th>
+ ${field['label']}
+ <div class="toolParamHelp" style="clear: both;">
+ <i>${field['helptext']}</i>
+ </div>
+ </th>
+ %endfor
+ <th></th>
+ </tr>
+ <thead>
+ <tbody>
+ <%
+ trans.sa_session.refresh( request )
+ %>
+ %for sample_index, sample in enumerate(current_samples):
+ %if edit_mode == 'True':
+ <tr>
+ ${render_sample_form( sample_index, sample['name'], sample['field_values'], fields_dict)}
+ </tr>
+ %else:
+ <tr>
+ %if sample_index in range(len(request.samples)):
+ ${render_sample( sample_index, sample['name'], sample['field_values'], fields_dict )}
+ %else:
+ ${render_sample_form( sample_index, sample['name'], sample['field_values'], fields_dict)}
+ %endif
+ </tr>
%endif
- </tr>
- %endif
- %endfor
- </tbody>
- </table>
- </div>
+ %endfor
+ </tbody>
+ </table>
+ </div></div></%def>
## This function displays the "Basic Information" grid
<%def name="render_basic_info_grid()">
- <h4>Sample Information</h4>
+ <h3>Sample Information</h3><table class="grid"><thead><tr>
@@ -408,7 +425,7 @@
%if sample:
%if sample.request.unsubmitted():
<a class="action-button" href="${h.url_for( controller='requests_common', cntrller=cntrller, action='delete_sample', request_id=request.id, sample_id=sample_index )}">
- <img src="${h.url_for('/static/images/delete_icon.png')}" />
+ <img src="${h.url_for('/static/images/delete_icon.png')}" style="cursor:pointer;"/><span></span></a>
%endif
%endif
1
0
galaxy-dist commit a27244147802: Modify tools contributed by Chungoo Park (cxp440@psu.edu) for Linear Discriminant Analysis, and drawing Receiver Operating Characteristic plots; add a new tool to 'Generate A Matrix for using PC and LDA'; remove redundant 'Principal Component Analysis' tool.
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Dan Blankenberg <dan(a)bx.psu.edu>
# Date 1279306372 14400
# Node ID a27244147802bd74be35ae24665cc3fc57580f23
# Parent 11fb3bb5b25058b55d927d4dfb39dab1112f290b
Modify tools contributed by Chungoo Park (cxp440(a)psu.edu) for Linear Discriminant Analysis, and drawing Receiver Operating Characteristic plots; add a new tool to 'Generate A Matrix for using PC and LDA'; remove redundant 'Principal Component Analysis' tool.
--- a/test-data/pca_for_lda_output.txt.re_match
+++ /dev/null
@@ -1,87 +0,0 @@
-\"21\.91439361\d*\"
-\"28\.33335569\d*\"
-\"33\.54383183\d*\"
-\"38\.39279966\d*\"
-\"42\.95792886\d*\"
-\"47\.09815550\d*\"
-\"50\.94487376\d*\"
-\"54\.58512629\d*\"
-\"58\.11752456\d*\"
-\"61\.36666878\d*\"
-\"64\.43815007\d*\"
-\"67\.37442210\d*\"
-\"70\.19430653\d*\"
-\"72\.98844264\d*\"
-\"75\.67923231\d*\"
-\"78\.07658354\d*\"
-\"80\.38195983\d*\"
-\"82\.59937656\d*\"
-\"84\.57494344\d*\"
-\"86\.46924307\d*\"
-\"88\.07774382\d*\"
-\"89\.63410862\d*\"
-\"91\.04016474\d*\"
-\"92\.37409738\d*\"
-\"93\.48214466\d*\"
-\"94\.55735875\d*\"
-\"95\.53454224\d*\"
-\"96\.40615879\d*\"
-\"97\.19612900\d*\"
-\"97\.88859479\d*\"
-\"98\.51598802\d*\"
-\"99\.11847048\d*\"
-\"99\.57772251\d*\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
-\"100\"
--- a/test-data/pca_for_lda_output.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-"21.9143936160079"
-"28.3333556968471"
-"33.5438318357343"
-"38.3927996693607"
-"42.9579288624902"
-"47.0981555066747"
-"50.9448737656701"
-"54.5851262912127"
-"58.117524563425"
-"61.3666687874078"
-"64.4381500783847"
-"67.3744221025279"
-"70.1943065338356"
-"72.9884426407974"
-"75.6792323125723"
-"78.0765835478277"
-"80.381959836786"
-"82.5993765654159"
-"84.5749434452634"
-"86.4692430753353"
-"88.0777438285547"
-"89.6341086298525"
-"91.0401647492736"
-"92.3740973813576"
-"93.4821446651001"
-"94.5573587555456"
-"95.534542246934"
-"96.4061587978985"
-"97.1961290046054"
-"97.888594796593"
-"98.5159880218074"
-"99.11847048736"
-"99.5777225170877"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
-"100"
--- a/tools/stats/plot_from_lda.xml
+++ b/tools/stats/plot_from_lda.xml
@@ -1,24 +1,24 @@
-<tool id="plot_for_lda_output1" name="Draw ROC">
+<tool id="plot_for_lda_output1" name="Draw ROC" version="1.0.1"><description>Receiver Operating Characteristic plot</description><command interpreter="sh">r_wrapper.sh $script_file</command><inputs>
- <param format="text" name="input" type="data" label="Source file"/>
- <param name="my_title" size="30" type="text" value="ROC" label="Title of your plot" help="See syntax below">
- </param>
-
+ <param format="text" name="input" type="data" label="Source file"></param>
+ <param name="my_title" size="30" type="text" value="My Figure" label="Title of your plot" help="See syntax below"></param>
+ <param name="X_axis" size="30" type="text" value="Text for X axis" label="Legend of X axis in your plot" help="See syntax below"></param>
+ <param name="Y_axis" size="30" type="text" value="Text for Y axis" label="Legend of Y axis in your plot" help="See syntax below"></param></inputs><outputs><data format="pdf" name="pdf_output" />
- <data format="txt" name="desc_output" /></outputs><tests><test><param name="input" value="lda_analy_output.txt"/>
- <param name="my_title" value="Test Plot"/>
+ <param name="my_title" value="Test Plot1"/>
+ <param name="X_axis" value="Test Plot2"/>
+ <param name="Y_axis" value="Test Plot3"/><output name="pdf_output" file="plot_for_lda_output.pdf"/>
- <output name="desc_output" file="empty_file.dat"/></test></tests>
@@ -203,7 +203,7 @@
for (i in 1:nfiles) {
r<-rez_ext[[i]]
#tr
- rate<-rbind(rate, c(files_alias[i]," "," "," ") )
+ # rate<-rbind(rate, c(files_alias[i]," "," "," ") )
mm<-which((r[3,])==max(r[3,]))
m_tr[i]<-mm[1]
@@ -213,9 +213,9 @@
pdf(file= paste("${pdf_output}"))
- plot(rez_ext[[i]][2,]~rez_ext[[i]][3,], xlim=c(0,100), ylim=c(0,100), xlab="X", ylab="Y", type="l", lty=1, col="blue", xaxt='n', yaxt='n')
+ plot(rez_ext[[i]][2,]~rez_ext[[i]][3,], xlim=c(0,100), ylim=c(0,100), xlab="${X_axis} [1-FP(False Positive)]", ylab="${Y_axis} [1-FP(False Positive)]", type="l", lty=1, col="blue", xaxt='n', yaxt='n')
for (i in 1:nfiles) {
- lines(rez_ext[[i]][2,]~rez_ext[[i]][3,], xlab="X", ylab="Y", type="l", lty=1, col=i)
+ lines(rez_ext[[i]][2,]~rez_ext[[i]][3,], xlab="${X_axis} [1-FP(False Positive)]", ylab="${Y_axis} [1-FP(False Positive)]", type="l", lty=1, col=i)
# pt=c(r,)
points(x=rez_ext[[i]][3,m_tr[i]],y=rez_ext[[i]][2,m_tr[i]], pch=16, col=i)
}
@@ -236,27 +236,6 @@
<help>
-.. class:: infomark
-
-**What it does**
-
-This tool consists of the module to perform the Linear Discriminant Analysis as described in Carrel et al., 2006 (PMID: 17009873)
-
-*Carrel L, Park C, Tyekucheva S, Dunn J, Chiaromonte F, et al. (2006) Genomic Environment Predicts Expression Patterns on the Human Inactive X Chromosome. PLoS Genet 2(9): e151. doi:10.1371/journal.pgen.0020151*
-
------
-
-**Example**
-
-- Input file
-
- A output file from "LDA" tool is used to perform it.
-
-- Output file
-
- There are two files produced:
- (1) A summary file for LDA classification success rates with optimal tau
- (2) An image file for plot
</help>
Binary file static/images/tools/lda/second_matrix_generator_example_file.png has changed
--- a/test-data/lda_analy_output.txt
+++ b/test-data/lda_analy_output.txt
@@ -1,119 +1,134 @@
-structure(c(56.1728395061728, 59.5890410958904, 25, 56.1728395061728,
-59.5890410958904, 25, 56.1728395061728, 59.5890410958904, 25,
-56.1728395061728, 59.5890410958904, 25, 56.1728395061728, 59.5890410958904,
-25, 56.1728395061728, 59.5890410958904, 25, 56.1728395061728,
-59.5890410958904, 25, 56.1728395061728, 59.5890410958904, 25,
-56.1728395061728, 59.5890410958904, 25, 56.1728395061728, 59.5890410958904,
-25, 56.1728395061728, 59.5890410958904, 25, 56.1728395061728,
-59.5890410958904, 25, 56.1728395061728, 59.5890410958904, 25,
-56.1728395061728, 59.5890410958904, 25, 56.1728395061728, 59.5890410958904,
-25, 56.1728395061728, 59.5890410958904, 25, 56.1728395061728,
-59.5890410958904, 25, 56.1728395061728, 59.5890410958904, 25,
-55.5555555555556, 58.9041095890411, 25, 55.5555555555556, 58.9041095890411,
-25, 55.5555555555556, 58.9041095890411, 25, 55.5555555555556,
-58.9041095890411, 25, 55.5555555555556, 58.9041095890411, 25,
-55.5555555555556, 58.9041095890411, 25, 55.5555555555556, 58.9041095890411,
-25, 55.5555555555556, 58.9041095890411, 25, 55.5555555555556,
-58.9041095890411, 25, 55.5555555555556, 58.9041095890411, 25,
-55.5555555555556, 58.9041095890411, 25, 54.9382716049383, 58.2191780821918,
-25, 54.9382716049383, 58.2191780821918, 25, 54.9382716049383,
-58.2191780821918, 25, 54.9382716049383, 58.2191780821918, 25,
-54.9382716049383, 58.2191780821918, 25, 54.9382716049383, 58.2191780821918,
-25, 54.9382716049383, 58.2191780821918, 25, 54.9382716049383,
-58.2191780821918, 25, 54.9382716049383, 58.2191780821918, 25,
-54.9382716049383, 58.2191780821918, 25, 54.320987654321, 57.5342465753425,
-25, 53.7037037037037, 56.8493150684932, 25, 53.7037037037037,
-56.8493150684932, 25, 53.7037037037037, 56.8493150684932, 25,
-53.7037037037037, 56.8493150684932, 25, 53.7037037037037, 56.8493150684932,
-25, 53.7037037037037, 56.8493150684932, 25, 53.7037037037037,
-56.8493150684932, 25, 53.7037037037037, 56.8493150684932, 25,
-53.7037037037037, 56.8493150684932, 25, 53.7037037037037, 56.8493150684932,
-25, 53.7037037037037, 56.8493150684932, 25, 53.7037037037037,
-56.8493150684932, 25, 53.7037037037037, 56.8493150684932, 25,
-53.7037037037037, 56.8493150684932, 25, 53.7037037037037, 56.8493150684932,
-25, 53.0864197530864, 56.1643835616438, 25, 53.0864197530864,
-56.1643835616438, 25, 52.4691358024691, 55.4794520547945, 25,
-52.4691358024691, 55.4794520547945, 25, 52.4691358024691, 55.4794520547945,
-25, 52.4691358024691, 55.4794520547945, 25, 52.4691358024691,
-55.4794520547945, 25, 52.4691358024691, 55.4794520547945, 25,
-52.4691358024691, 55.4794520547945, 25, 52.4691358024691, 55.4794520547945,
-25, 51.8518518518519, 54.7945205479452, 25, 51.8518518518519,
-54.7945205479452, 25, 51.8518518518519, 54.7945205479452, 25,
-51.8518518518519, 54.7945205479452, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 51.2345679012346, 54.1095890410959,
-25, 51.2345679012346, 54.1095890410959, 25, 51.2345679012346,
-54.1095890410959, 25, 51.2345679012346, 54.1095890410959, 25,
-51.2345679012346, 54.1095890410959, 25, 50.6172839506173, 53.4246575342466,
-25, 50.6172839506173, 53.4246575342466, 25, 50.6172839506173,
-53.4246575342466, 25, 50.6172839506173, 53.4246575342466, 25,
-50.6172839506173, 53.4246575342466, 25, 50.6172839506173, 53.4246575342466,
-25, 50.6172839506173, 53.4246575342466, 25, 50.6172839506173,
-53.4246575342466, 25, 50.6172839506173, 53.4246575342466, 25,
-50.6172839506173, 53.4246575342466, 25, 51.2345679012346, 53.4246575342466,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 50.6172839506173, 52.7397260273973, 31.25, 50.6172839506173,
-52.7397260273973, 31.25, 50.6172839506173, 52.7397260273973,
-31.25, 49.3827160493827, 51.3698630136986, 31.25, 49.3827160493827,
-51.3698630136986, 31.25, 49.3827160493827, 51.3698630136986,
-31.25, 49.3827160493827, 51.3698630136986, 31.25, 49.3827160493827,
-51.3698630136986, 31.25, 49.3827160493827, 51.3698630136986,
-31.25, 49.3827160493827, 51.3698630136986, 31.25, 48.1481481481482,
-50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50,
-31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25,
-48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482,
-50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50,
-31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25,
-48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482,
-50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50,
-31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25,
-48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482,
-50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50,
-31.25, 48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25,
-48.1481481481482, 50, 31.25, 48.1481481481482, 50, 31.25, 48.1481481481482,
-50, 31.25, 47.5308641975309, 49.3150684931507, 31.25, 46.9135802469136,
-48.6301369863014, 31.25, 46.9135802469136, 48.6301369863014,
-31.25, 46.9135802469136, 48.6301369863014, 31.25, 46.9135802469136,
-48.6301369863014, 31.25, 46.9135802469136, 48.6301369863014,
-31.25, 46.9135802469136, 48.6301369863014, 31.25, 46.9135802469136,
-48.6301369863014, 31.25, 46.9135802469136, 48.6301369863014,
-31.25, 46.9135802469136, 48.6301369863014, 31.25, 46.9135802469136,
-48.6301369863014, 31.25, 46.9135802469136, 48.6301369863014,
-31.25, 46.2962962962963, 47.945205479452, 31.25, 46.2962962962963,
-47.945205479452, 31.25, 46.9135802469136, 47.945205479452, 37.5,
-46.9135802469136, 47.945205479452, 37.5, 46.9135802469136, 47.945205479452,
-37.5, 46.9135802469136, 47.945205479452, 37.5, 46.9135802469136,
-47.945205479452, 37.5, 46.9135802469136, 47.945205479452, 37.5,
-46.9135802469136, 47.945205479452, 37.5, 46.9135802469136, 47.945205479452,
-37.5, 46.2962962962963, 47.2602739726027, 37.5, 46.2962962962963,
-47.2602739726027, 37.5, 46.2962962962963, 47.2602739726027, 37.5,
-46.2962962962963, 47.2602739726027, 37.5, 46.2962962962963, 47.2602739726027,
-37.5, 46.2962962962963, 47.2602739726027, 37.5, 46.2962962962963,
-47.2602739726027, 37.5, 46.2962962962963, 47.2602739726027, 37.5,
-45.679012345679, 46.5753424657534, 37.5, 45.679012345679, 46.5753424657534,
-37.5, 45.679012345679, 46.5753424657534, 37.5, 45.679012345679,
-46.5753424657534, 37.5, 45.679012345679, 46.5753424657534, 37.5,
-45.679012345679, 46.5753424657534, 37.5, 53.7037037037037, 53.4246575342466,
-56.25), .Dim = c(3L, 201L))
+structure(c(37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586,
+23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636, 62.5,
+37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636,
+62.5, 37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586,
+23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636, 62.5,
+37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636,
+62.5, 37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586,
+23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636, 62.5,
+37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636,
+62.5, 37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586,
+23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636, 62.5,
+37.9310344827586, 23.6363636363636, 62.5, 37.9310344827586, 23.6363636363636,
+62.5, 37.9310344827586, 23.6363636363636, 62.5, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 39.0804597701149, 23.6363636363636,
+65.625, 39.0804597701149, 23.6363636363636, 65.625, 39.0804597701149,
+23.6363636363636, 65.625, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 40.2298850574713, 23.6363636363636,
+68.75, 40.2298850574713, 23.6363636363636, 68.75, 40.2298850574713,
+23.6363636363636, 68.75, 39.0804597701149, 21.8181818181818,
+68.75, 39.0804597701149, 21.8181818181818, 68.75, 39.0804597701149,
+21.8181818181818, 68.75, 39.0804597701149, 21.8181818181818,
+68.75, 39.0804597701149, 21.8181818181818, 68.75, 39.0804597701149,
+21.8181818181818, 68.75, 39.0804597701149, 21.8181818181818,
+68.75, 39.0804597701149, 21.8181818181818, 68.75, 39.0804597701149,
+21.8181818181818, 68.75, 40.2298850574713, 21.8181818181818,
+71.875, 40.2298850574713, 21.8181818181818, 71.875, 40.2298850574713,
+21.8181818181818, 71.875, 40.2298850574713, 21.8181818181818,
+71.875, 40.2298850574713, 21.8181818181818, 71.875, 40.2298850574713,
+21.8181818181818, 71.875, 40.2298850574713, 21.8181818181818,
+71.875, 41.3793103448276, 21.8181818181818, 75, 42.5287356321839,
+21.8181818181818, 78.125, 42.5287356321839, 21.8181818181818,
+78.125, 42.5287356321839, 21.8181818181818, 78.125, 42.5287356321839,
+21.8181818181818, 78.125, 42.5287356321839, 21.8181818181818,
+78.125, 42.5287356321839, 21.8181818181818, 78.125, 42.5287356321839,
+21.8181818181818, 78.125, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 43.6781609195402, 21.8181818181818, 81.25, 43.6781609195402,
+21.8181818181818, 81.25, 43.6781609195402, 21.8181818181818,
+81.25, 56.3218390804598, 78.1818181818182, 18.75), .Dim = c(3L,
+201L))
Binary file static/images/tools/lda/first_matrix_generator_example_file.png has changed
Binary file static/images/tools/lda/LDA_Input.png has changed
--- /dev/null
+++ b/tools/stats/generate_matrix_for_pca_lda.xml
@@ -0,0 +1,48 @@
+<tool id="generate_matrix_for_pca_and_lda1" name="Generate A Matrix">
+ <description>for using PC and LDA</description>
+ <command interpreter="perl">generate_matrix_for_pca_lda.pl $input_1 $input_2 $output</command>
+
+ <inputs>
+ <param format="tabular" name="input_1" type="data" label="Source file First: a matrix (samples/observations in rows and variables/features in columns)"></param>
+ <param format="tabular" name="input_2" type="data" label="Source file Second: a table (samples/observations with response/class label)"></param>
+ </inputs>
+
+ <outputs>
+ <data format="tabular" name="output" />
+ </outputs>
+
+ <tests>
+ <test>
+ <param name="input_1" value="matrix_generator_for_pc_and_lda_input_1.tabular"/>
+ <param name="input_2" value="matrix_generator_for_pc_and_lda_input_2.tabular"/>
+ <output name="output" file="matrix_generator_for_pc_and_lda_output.tabular"/>
+ </test>
+ </tests>
+
+ <help>
+
+.. class:: infomark
+
+**What it does**
+
+This tool consists of a module to generate a matrix to be used for running the Linear Discriminant Analysis as described in Carrel et al., 2006 (PMID: 17009873)
+
+*Carrel L, Park C, Tyekucheva S, Dunn J, Chiaromonte F, et al. (2006) Genomic Environment Predicts Expression Patterns on the Human Inactive X Chromosome. PLoS Genet 2(9): e151. doi:10.1371/journal.pgen.0020151*
+
+-----
+
+**Example**
+
+- Input file (Source file First)
+
+.. image:: ../static/images/tools/lda/first_matrix_generator_example_file.png
+
+
+- Input file (Source file Second)
+
+.. image:: ../static/images/tools/lda/second_matrix_generator_example_file.png
+
+
+</help>
+
+</tool>
--- /dev/null
+++ b/tools/stats/generate_matrix_for_pca_lda.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl -w
+
+use strict;
+use warnings;
+
+my $Input_Matrix = $ARGV[0];
+my $Input_Label = $ARGV[1];
+
+my %Hash_X = ();
+my %Hash_Y = ();
+my $My_Num_X = 0;
+my $My_Num_Y = 0;
+
+open (OUT, "> $ARGV[2]");
+
+open (LABEL, "< $Input_Label") ||
+ die "Sorry, I couldn't open the escape.txt for clone: $!\n";
+
+my $Label_Index = 0;
+my $X_Label;
+my $input_Label;
+while (defined($input_Label = <LABEL>)){
+ chomp($input_Label);
+ my @cArray_Label = $input_Label =~ /(\S+)\s*/g;
+ if ($input_Label =~ /\w/){
+ if ($Label_Index == 0){
+ $Hash_X{$cArray_Label[0]} = $cArray_Label[1];
+ $X_Label = $cArray_Label[1];
+ $Label_Index = 1;
+ }else{
+ if ($cArray_Label[1] eq $X_Label){
+ $Hash_X{$cArray_Label[0]} = $cArray_Label[1];
+ }else{
+ $Hash_Y{$cArray_Label[0]} = $cArray_Label[1];
+ }
+ }
+ }
+}
+close(LABEL);
+
+open (MATRIX, "< $Input_Matrix") ||
+ die "Sorry, I couldn't open the escape.txt for clone: $!\n";
+
+my %Hash_Matrix = ();
+my %Hash_Features = ();
+my @cArray_Features = ();
+
+my %Hash_Sum = ();
+my $Matrix_Index = 0;
+my $input_Matrix;
+while (defined($input_Matrix = <MATRIX>)){
+ chomp($input_Matrix);
+ my @cArray_Matrix = $input_Matrix =~ /(\S+)\s*/g;
+ if ($input_Matrix =~ /\w/){
+ if ($Matrix_Index == 0){
+ @cArray_Features = @cArray_Matrix;
+ my $Temp_Num_Array = scalar(@cArray_Matrix);
+ my $Temp_Index = 0;
+ for(;$Temp_Index < $Temp_Num_Array; $Temp_Index++){
+ $Hash_Features{$cArray_Matrix[$Temp_Index]} = "BOL";
+ $Hash_Sum{$cArray_Matrix[$Temp_Index]} = 0;
+ }
+ $Matrix_Index = 1;
+ }else{
+ $Hash_Matrix{$cArray_Matrix[0]} = $input_Matrix;
+ }
+ }
+}
+close(MATRIX);
+
+my $Trace_Key;
+
+foreach $Trace_Key (sort {$a cmp $b} keys %Hash_X){
+ my @cArray_Trace_X = $Hash_Matrix{$Trace_Key} =~ /(\S+)\s*/g;
+ my $Num_Array_Feature_X = scalar(@cArray_Features);
+ my $Index_Feature_X = 0;
+ for(;$Index_Feature_X < $Num_Array_Feature_X; $Index_Feature_X++){
+ if ($Hash_Features{$cArray_Features[$Index_Feature_X]} eq "BOL"){
+ $Hash_Features{$cArray_Features[$Index_Feature_X]} = $cArray_Trace_X[$Index_Feature_X + 1];
+ }else{
+ $Hash_Features{$cArray_Features[$Index_Feature_X]} = $Hash_Features{$cArray_Features[$Index_Feature_X]} . "\t" . $cArray_Trace_X[$Index_Feature_X + 1];
+ }
+
+ $Hash_Sum{$cArray_Features[$Index_Feature_X]} += $cArray_Trace_X[$Index_Feature_X + 1];
+ }
+ $My_Num_X ++;
+}
+
+my $Append_Key;
+foreach $Append_Key (keys %Hash_Features){
+ $Hash_Features{$Append_Key} = $Hash_Features{$Append_Key} . "\t" . $Hash_Sum{$Append_Key};
+ $Hash_Sum{$Append_Key} = 0;
+}
+
+foreach $Trace_Key (sort {$a cmp $b} keys %Hash_Y){
+ my @cArray_Trace_Y = $Hash_Matrix{$Trace_Key} =~ /(\S+)\s*/g;
+ my $Num_Array_Feature_Y = scalar(@cArray_Features);
+ my $Index_Feature_Y = 0;
+ for(;$Index_Feature_Y < $Num_Array_Feature_Y; $Index_Feature_Y++){
+ if ($Hash_Features{$cArray_Features[$Index_Feature_Y]} eq "BOL"){
+ $Hash_Features{$cArray_Features[$Index_Feature_Y]} = $cArray_Trace_Y[$Index_Feature_Y + 1];
+ }else{
+ $Hash_Features{$cArray_Features[$Index_Feature_Y]} = $Hash_Features{$cArray_Features[$Index_Feature_Y]} . "\t" . $cArray_Trace_Y[$Index_Feature_Y + 1];
+ }
+
+ $Hash_Sum{$cArray_Features[$Index_Feature_Y]} += $cArray_Trace_Y[$Index_Feature_Y + 1];
+ }
+ $My_Num_Y ++;
+}
+
+foreach $Append_Key (keys %Hash_Features){
+ $Hash_Features{$Append_Key} = $Hash_Features{$Append_Key} . "\t" . $Hash_Sum{$Append_Key} . "\t" . "EOL";
+}
+
+my $Prt_Key;
+print OUT " \t";
+foreach $Prt_Key (sort {$a cmp $b} keys %Hash_X){
+ print OUT "$Prt_Key \t";
+}
+print OUT "X(SUM) \t";
+
+foreach $Prt_Key (sort {$a cmp $b} keys %Hash_Y){
+ print OUT "$Prt_Key \t";
+}
+print OUT "Y(SUM) \t";
+print OUT "\n";
+
+my $Prt_Index = 0;
+my $Prt_Array_Num = scalar (@cArray_Features);
+for(;$Prt_Index < $Prt_Array_Num; $Prt_Index++){
+ print OUT "$cArray_Features[$Prt_Index] \t$Hash_Features{$cArray_Features[$Prt_Index]}\n";
+}
+
+print OUT " \t";
+my $My_Label_Index = 0;
+for(;$My_Label_Index < $My_Num_X; $My_Label_Index++){
+ print OUT "X \t";
+}
+print OUT " \t";
+
+$My_Label_Index = 0;
+for(;$My_Label_Index < $My_Num_Y; $My_Label_Index++){
+ print OUT "Y \t";
+}
+print OUT " \t\n";
+
+close(OUT);
--- a/tools/stats/pca_for_lda.xml
+++ /dev/null
@@ -1,245 +0,0 @@
-<tool id="pca_for_lda1" name="Calculate PC">
- <description>Principal Component Analysis</description>
- <command interpreter="sh">r_wrapper.sh $script_file</command>
-
- <inputs>
- <param format="tabular" name="input" type="data" label="Source file">
- </param>
- </inputs>
-
- <outputs>
- <data format="txt" name="output" />
- </outputs>
-
- <tests>
- <test>
- <param name="input" value="pca_and_lda_analy_for_lda_input.tabular"/>
- <output name="output" file="pca_for_lda_output.txt.re_match" compare="re_match"/>
- </test>
- </tests>
-
- <configfiles>
- <configfile name="script_file">
-
- rm(list = objects() )
-
- ############# FORMAT X DATA #########################
- format<-function(data) {
- ind=NULL
- for(i in 1 : ncol(data)){
- if (is.na(data[nrow(data),i])) {
- ind<-c(ind,i)
- }
- }
- #print(is.null(ind))
- if (!is.null(ind)) {
- data<-data[,-c(ind)]
- }
-
- data
- }
-
- ########GET RESPONSES ###############################
- get_resp<- function(data) {
- resp1<-as.vector(data[,ncol(data)])
- resp=numeric(length(resp1))
- for (i in 1:length(resp1)) {
- if (resp1[i]=="Control ") {
- resp[i] = 0
- }
- if (resp1[i]=="XLMR ") {
- resp[i] = 1
- }
- }
- return(resp)
- }
-
- ######## CHARS TO NUMBERS ###########################
- f_to_numbers<- function(F) {
- ind<-NULL
- G<-matrix(0,nrow(F), ncol(F))
- for (i in 1:nrow(F)) {
- for (j in 1:ncol(F)) {
- G[i,j]<-as.integer(F[i,j])
- }
- }
- return(G)
- }
-
- ###################NORMALIZING#########################
- norm <- function(M, a=NULL, b=NULL) {
- C<-NULL
- ind<-NULL
-
- for (i in 1: ncol(M)) {
- if (sd(M[,i])!=0) {
- M[,i]<-(M[,i]-mean(M[,i]))/sd(M[,i])
- }
- # else {print(mean(M[,i]))}
- }
- return(M)
- }
-
- ##### LDA DIRECTIONS #################################
- lda_dec <- function(data, k){
- priors=numeric(k)
- grandmean<-numeric(ncol(data)-1)
- means=matrix(0,k,ncol(data)-1)
- B = matrix(0, ncol(data)-1, ncol(data)-1)
- N=nrow(data)
- for (i in 1:k){
- priors[i]=sum(data[,1]==i)/N
- grp=subset(data,data\$group==i)
- means[i,]=mean(grp[,2:ncol(data)])
- #print(means[i,])
- #print(priors[i])
- #print(priors[i]*means[i,])
- grandmean = priors[i]*means[i,] + grandmean
- }
-
- for (i in 1:k) {
- B= B + priors[i]*((means[i,]-grandmean)%*%t(means[i,]-grandmean))
- }
-
- W = var(data[,2:ncol(data)])
- svdW = svd(W)
- inv_sqrtW =solve(svdW\$v %*% diag(sqrt(svdW\$d)) %*% t(svdW\$v))
- B_star= t(inv_sqrtW)%*%B%*%inv_sqrtW
- B_star_decomp = svd(B_star)
- directions = inv_sqrtW%*%B_star_decomp\$v
- return( list(directions, B_star_decomp\$d) )
- }
-
- ################ NAIVE BAYES FOR 1D SIR OR LDA ##############
- naive_bayes_classifier <- function(resp, tr_data, test_data, k=2, tau) {
- tr_data=data.frame(resp=resp, dir=tr_data)
- means=numeric(k)
- #print(k)
- cl=numeric(k)
- predclass=numeric(length(test_data))
- for (i in 1:k) {
- grp = subset(tr_data, resp==i)
- means[i] = mean(grp\$dir)
- #print(i, means[i])
- }
- cutoff = tau*means[1]+(1-tau)*means[2]
- #print(tau)
- #print(means)
- #print(cutoff)
- if (cutoff>means[1]) {
- cl[1]=1
- cl[2]=2
- }
- else {
- cl[1]=2
- cl[2]=1
- }
-
- for (i in 1:length(test_data)) {
-
- if (test_data[i] <= cutoff) {
- predclass[i] = cl[1]
- }
- else {
- predclass[i] = cl[2]
- }
- }
- #print(means)
- #print(mean(means))
- #X11()
- #plot(test_data,pch=predclass, col=resp)
- predclass
- }
-
- ################# EXTENDED ERROR RATES #################
- ext_error_rate <- function(predclass, actualclass,msg=c("you forgot the message"), pr=1) {
- er=sum(predclass != actualclass)/length(predclass)
-
- matr<-data.frame(predclass=predclass,actualclass=actualclass)
- escapes = subset(matr, actualclass==1)
- subjects = subset(matr, actualclass==2)
- er_esc=sum(escapes\$predclass != escapes\$actualclass)/length(escapes\$predclass)
- er_subj=sum(subjects\$predclass != subjects\$actualclass)/length(subjects\$predclass)
-
- if (pr==1) {
- # print(paste(c(msg, 'overall : ', (1-er)*100, "%."),collapse=" "))
- # print(paste(c(msg, 'within escapes : ', (1-er_esc)*100, "%."),collapse=" "))
- # print(paste(c(msg, 'within subjects: ', (1-er_subj)*100, "%."),collapse=" "))
- }
- return(c((1-er)*100, (1-er_esc)*100, (1-er_subj)*100))
- }
-
- ## Main Function ##
-
- files<-matrix("${input}", 1,1, byrow=T)
-
- tau<-seq(0,1, by=0.005)
- #tau<-seq(0,1, by=0.1)
- for_curve=matrix(-10, 3,length(tau))
-
- ##############################################################
-
- test_data_whole_X <-read.delim(files[1,1], row.names=1)
-
- #### FORMAT TRAINING DATA ####################################
- # get only necessary columns
-
- test_data_whole_X<-format(test_data_whole_X)
- oligo_labels<-test_data_whole_X[1:(nrow(test_data_whole_X)-1),ncol(test_data_whole_X)]
- test_data_whole_X<-test_data_whole_X[,1:(ncol(test_data_whole_X)-1)]
-
- X_names<-colnames(test_data_whole_X)[1:ncol(test_data_whole_X)]
- test_data_whole_X<-t(test_data_whole_X)
- resp<-get_resp(test_data_whole_X)
- ldaqda_resp = resp + 1
- a<-sum(resp) # Number of Subject
- b<-length(resp) - a # Number of Escape
- ## FREQUENCIES #################################################
- F<-test_data_whole_X[,1:(ncol(test_data_whole_X)-1)]
- F<-f_to_numbers(F)
- FN<-norm(F, a, b)
- ss<-svd(FN)
- eigvar<-NULL
- eig<-ss\$d^2
-
- print_out <- c(rep('NA', length(ss\$d)))
- for ( i in 1:length(ss\$d)) {
- eigvar[i]<-sum(eig[1:i])/sum(eig)
- # print(paste(c("Variance explained : ", eigvar[i]*100, " %"), collapse=""))
- print_out[i] <- c(eigvar[i]*100)
- }
-
- #My_Names <- c("order of principal components", "accumulated variance explained", "")
- #names(print_out)<-My_Names
-
- write.table(print_out, file = "${output}", col.names = FALSE, row.names = FALSE)
-
- </configfile>
- </configfiles>
-
- <help>
-
-.. class:: infomark
-
-**What it does**
-
-This tool consists of the first module to perform the Principal Component Analysis as described in Carrel et al., 2006 (PMID: 17009873)
-
-*Carrel L, Park C, Tyekucheva S, Dunn J, Chiaromonte F, et al. (2006) Genomic Environment Predicts Expression Patterns on the Human Inactive X Chromosome. PLoS Genet 2(9): e151. doi:10.1371/journal.pgen.0020151*
-
------
-
-**Example**
-
-- Input file
-
-.. image:: ../static/images/tools/lda/LDA_Input.png
-
-- Output file
-
- The values indicate "accumulated variance explained (%)" and were sorted by the order of principal components (i.e., 1st, 2nd, 3rd, 4th...).
-
-
-</help>
-
-</tool>
--- a/tool_conf.xml.sample
+++ b/tool_conf.xml.sample
@@ -129,7 +129,7 @@
<tool file="stats/gsummary.xml" /><tool file="filters/uniq.xml" /><tool file="stats/cor.xml" />
- <tool file="stats/pca_for_lda.xml" />
+ <tool file="stats/generate_matrix_for_pca_lda.xml" /><tool file="stats/lda_analy.xml" /><tool file="stats/plot_from_lda.xml" /><tool file="regVariation/t_test_two_samples.xml" />
--- /dev/null
+++ b/test-data/matrix_generator_for_pc_and_lda_input_1.tabular
@@ -0,0 +1,88 @@
+ CTCAGAAAAAAA CCATCCATCCATCCATCC AGAGGGAGAGGG ATCTGTTGATGG AGGGGTGACAGA ATCCCATTTACA AAGGGTATCAGT ATAATATATACA TATTATATGTATA CATCATCATCATCA CCCCATGATCCA TGATTCCTTAAAGAA AACACTTGGACA TATTAATATAATTTATAAA ATGTTTATTTTA TATCCAGGAGAA CAATTCTCCTGCC ACCATAAAAATGAGAAC CTCAGCCATAAAAA ATGAGTGAGAATAT ACTGTGAGTCAA TAAACTAAAGAGCTTCTGCACAGCA TCCTTTGGGTATAT ATGCTGCTATAAAGACACATGCACAC TGCTGGAGAGGATGTGGAGAAATAGGAACACTTTTACACTG TCCACAATGGTTGAA TTGGCTGCATAAAT CAATGGAACAGAACAGAGCCCTCAGAAATAA GAACTAGAAATACCATTTGACCCAGC TCAAAGATCAGAT GACCCATCTCACACCAGTTAGAATG CAAAGAGAATAAAATACCTAGGTATTTTATTCTTTTT AAAATGGCCATACTGCCCAAG AAATTTTTCCAATTCTGTGAAGAAA TTCACAATAGCAAAGAC TAGGAAGAATCAATA CTGGGTATATACCCAGTAATGG TTGGAAGTTCTGGCCAGGGCAA TGAAGGACCTCTTCAAGGAGAACTACAAACCACTGCTCAA CTCTCACCACTCCTATTCAACATA ACACACACATAT CCATGAGCATGGAATGTTCT AACCCAAATGTCC TTTACAAGAAAAAAACAAACAACCCCA AGTTCTAGATCC CTGGAAGCATTCCCTTT GATCCCATTTGTC GATATGAACAGACA TGGGTTTGTCATA AGTTTCTTTTGC A
ATTACCCAGTCT TCATGTCATCTGCAAACA AAAACTCTCAAT CAACTTCAGCAA ATTGGCTGTGGGTTT AATTAGATCCCA GACCTAAAACCA AGAATCTACAAT AAACCAAACACC GGAGTTCCAGACCAGCCT CCTTGCCCATGCC ATCATACTGAAT AGGAAGTCAAATT AGCAAACCACCA AGCATGATTTATA GAGAGCCAAATCATGAGTG AAAGAGCCAAAT AGCAATTGTGAATGG CACTATTCACAATTGC TCAGGATACAAAATCAATG CAATGAACTCAAACAAATT TCCAACAAAGGACATGAACTCATC AATTGAACAATGAGAACATGTGGTAT AACCACAATGAGAACA GTGTATATATATACAT ACATATATATAT GTCAGATGGATA TCATCTGACAAAGGGCTAATATCCAG TTTGTCAGGTTTGTCAAAG TTCTTAATCCAGTCTATCATT TTTAATCCATCTTGA AAACTACCATCAGAGTGAACAGGCA GCCATCAGAGAAAT ACAGGCAACCTACA GCAACCTACTCA TAGAAAACCCCAT
+ARHGEF9 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 0 0 3 1 0 0 0 0 1 2 2 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
+KIAA2022 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0
+ZDHHC15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+PGK1 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0
+BRWD3 0 1 0 0 1 0 0 1 0 1 1 0 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
+PAK3 0 1 2 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
+AGTR2 0 0 2 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GRIA3 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0
+ZDHHC9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
+GPC3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+PHF6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SOX3 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
+FMR1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+MTM1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0
+SHROOM4 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 2 0 1
+KLF8 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+UXT 1 1 0 1 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 0 0 0 0 2 2 0 3 1 2 2 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 2 0 1 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
+PCSK1N 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+PAGE1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+PAGE4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+CLCN5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+NUDT10 2 0 1 1 0 0 1 0 1 0 0 0 1 1 0 2 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+NUDT11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GSPT2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TMEM29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+GPR173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+HUWE1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TSR2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TRO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+MAGEH1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+USP51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+RRAGB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 1 2 0 0 0 0 2 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
+UBQLN2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SPIN3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SPIN2A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ZXDA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SPIN4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+MTMR8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+KIAA1166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+LAS1L 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+MSN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+HEPH 0 0 1 0 2 0 0 2 0 1 0 0 1 2 0 0 0 1 0 0 0 0 0 1 1 1 0 0 2 0 2 0 0 0 0 0 2 0 0 0 1 2 3 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 3 1 1 1 1 0 0 0 0 0 2 1 1 0
+AR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+STARD8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TMEM28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+EDA 0 1 3 2 1 1 3 0 1 0 1 0 0 0 2 2 1 1 0 2 2 2 4 0 0 0 1 0 4 2 0 1 1 1 1 1 1 0 1 0 0 1 0 0 3 0 2 1 0 1 0 1 4 3 1 1 1 1 0 1 1 2 0 3 2 1 0 0 1 2 2 1 2 0 0 0 1 0 0 1 3 1 0 0 0 0
+SLC7A3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+CXCR3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+NAP1L2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+CHIC1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+FXYD8 0 3 4 0 2 0 3 1 1 0 1 0 0 0 0 2 2 1 0 2 3 3 2 0 0 0 0 0 2 3 0 2 1 4 1 1 1 0 1 1 1 2 1 0 2 0 2 1 2 2 0 2 4 1 2 0 1 2 1 1 1 2 3 4 2 1 1 2 0 1 2 1 1 0 0 1 0 0 0 3 1 1 0 0 0 1
+RNF12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+UPRT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+MAGEE2 1 3 2 0 1 0 2 0 0 0 0 1 0 0 0 2 0 1 0 0 2 0 2 0 0 0 0 0 2 3 0 4 1 0 1 1 1 2 0 0 0 0 2 0 2 0 1 0 1 2 0 1 3 0 0 2 1 1 0 0 0 1 3 1 1 0 0 2 0 2 0 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0
+CXorf26 0 4 3 1 0 0 3 0 1 0 0 0 0 0 0 2 0 1 0 0 3 1 2 0 0 0 0 0 2 2 0 2 1 2 3 1 2 2 1 0 0 0 1 0 1 0 1 1 2 3 0 1 3 3 1 3 1 1 0 2 0 2 2 3 3 0 0 2 0 3 1 1 1 0 0 0 1 1 0 1 3 1 0 0 1 0
+MAGEE1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+FGF16 0 3 3 1 2 0 3 1 1 0 1 0 0 0 0 2 2 1 0 0 3 2 1 0 0 0 1 0 2 3 0 2 1 2 2 0 0 2 0 0 0 1 0 0 1 0 1 0 1 0 0 1 4 2 1 0 1 2 0 0 0 2 1 3 2 1 0 2 1 3 2 1 0 0 0 0 0 1 0 1 0 1 1 0 0 1
+TAF9B 0 1 2 1 1 0 1 0 1 0 1 0 0 0 0 2 0 1 0 2 2 1 3 0 0 0 1 0 2 2 0 2 1 1 1 1 1 1 2 1 0 2 1 0 1 0 1 0 1 1 0 0 3 2 1 1 1 0 0 1 1 2 1 2 1 1 0 0 1 2 1 1 1 0 0 0 1 0 0 1 2 1 1 0 0 1
+CYSLTR1 0 3 3 1 0 0 2 1 0 0 0 0 0 0 0 0 1 1 0 2 2 2 3 0 0 0 1 0 2 1 1 1 1 2 1 1 1 1 1 0 0 1 0 0 1 0 2 0 0 1 0 1 1 2 0 1 0 2 0 1 1 2 1 2 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0
+ZCCHC5 0 3 4 2 1 0 2 0 0 1 1 0 1 0 0 0 1 1 0 3 3 3 2 0 0 0 1 0 4 2 0 1 2 1 1 1 1 4 1 1 1 4 4 1 2 0 2 1 0 2 0 1 1 2 3 2 1 2 1 1 0 0 2 1 1 0 1 2 2 2 2 1 0 0 0 0 1 0 0 3 4 1 1 2 0 2
+GPR23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+P2RY10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ITM2A 0 2 2 1 0 0 2 0 1 0 0 0 1 0 0 2 0 1 0 0 3 0 2 0 0 0 0 0 2 2 0 3 1 0 2 0 0 2 1 1 0 0 2 0 1 0 1 0 1 2 0 0 2 3 2 0 0 1 0 2 1 1 3 5 0 0 1 2 1 3 1 2 0 1 1 0 0 0 0 0 3 0 0 0 2 0
+TBX22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+NSBP1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 1 0 0 1 0 0 3 2 1 1 0 4 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 1 1 2
+RPS6KA6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+HDX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+APOOL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
+ZNF711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+POF1B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+CHM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DACH2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+KLHL4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
+CPXCR1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0
+PABPC5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+DIAPH2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+SYTL4 0 0 1 1 2 0 1 3 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 5 1 0 0 1 0 1 1 0 0 0 0 0 3 2 0 0 0 1 3 0 0 0 0 1 0 0 2 6 0 1 2 1 0 0 0 1 1 1 1 0 0 2 3 1 0 1 0 0 3 1 2 0
+CSTF2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1
+DRP2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TCEAL2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+BEX5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+NXF3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+BEX4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+TCEAL4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ESX1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+IL1RAPL2 0 3 2 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 3 2 3 0 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0
+NRK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
--- a/tools/stats/lda_analy.xml
+++ b/tools/stats/lda_analy.xml
@@ -1,9 +1,9 @@
-<tool id="lda_analy1" name="Perform LDA">
+<tool id="lda_analy1" name="Perform LDA" version="1.0.1"><description>Linear Discriminant Analysis</description><command interpreter="sh">r_wrapper.sh $script_file</command><inputs><param format="tabular" name="input" type="data" label="Source file"/>
- <param name="cond" size="30" type="integer" value="3" label="Number of principal components" help="See syntax below">
+ <param name="cond" size="30" type="integer" value="3" label="Number of principal components" help="See TIP below"><validator type="empty_field" message="Enter a valid number of principal components, see syntax below for examples"/></param>
@@ -14,7 +14,7 @@
<tests><test>
- <param name="input" value="pca_and_lda_analy_for_lda_input.tabular"/>
+ <param name="input" value="matrix_generator_for_pc_and_lda_output.tabular"/><output name="output" file="lda_analy_output.txt"/><param name="cond" value="2"/>
@@ -47,10 +47,10 @@
resp1<-as.vector(data[,ncol(data)])
resp=numeric(length(resp1))
for (i in 1:length(resp1)) {
- if (resp1[i]=="Control ") {
+ if (resp1[i]=="Y ") {
resp[i] = 0
}
- if (resp1[i]=="XLMR ") {
+ if (resp1[i]=="X ") {
resp[i] = 1
}
}
@@ -256,6 +256,12 @@
<help>
+.. class:: infomark
+
+**TIP:** If you want to perform Principal Component Analysis (PCA) on the give numeric input data (which corresponds to the "Source file First in "Generate A Matrix" tool), please use *Multivariate Analysis/Principal Component Analysis*
+
+-----
+
.. class:: infomark
**What it does**
@@ -266,16 +272,13 @@ This tool consists of the module to perf
-----
-**Example**
+.. class:: warningmark
-- Input file
+**Note**
-.. image:: ../static/images/tools/lda/LDA_Input.png
+- Output from "Generate A Matrix" tool is used as input file for this tool
+- Output of this tool contains LDA classification success rates for different values of the turning parameter tau (from 0 to 1 with 0.005 interval). This output file will be used to establish the ROC plot, and you can obtain more detail information from this plot.
-- Output file
-
- LDA classification success rates for different values of the turning parameter tau (from 0 to 1 with 0.005 interval).
- This output file will be used to establish the ROC plot.
</help>
--- /dev/null
+++ b/test-data/matrix_generator_for_pc_and_lda_output.tabular
@@ -0,0 +1,88 @@
+ AGTR2 ARHGEF9 BRWD3 CLCN5 FMR1 GPC3 GPR173 GRIA3 GSPT2 HUWE1 KIAA2022 KLF8 MAGEH1 MTM1 NUDT10 NUDT11 PAGE1 PAGE4 PAK3 PCSK1N PGK1 PHF6 RRAGB SHROOM4 SOX3 TMEM29 TRO TSR2 USP51 UXT ZDHHC15 ZDHHC9 X(SUM) APOOL AR BEX4 BEX5 CHIC1 CHM CPXCR1 CSTF2 CXCR3 CXorf26 CYSLTR1 DACH2 DIAPH2 DRP2 EDA ESX1 FGF16 FXYD8 GPR23 HDX HEPH IL1RAPL2 ITM2A KIAA1166 KLHL4 LAS1L MAGEE1 MAGEE2 MSN MTMR8 NAP1L2 NRK NSBP1 NXF3 P2RY10 PABPC5 POF1B RNF12 RPS6KA6 SLC7A3 SPIN2A SPIN3 SPIN4 STARD8 SYTL4 TAF9B TBX22 TCEAL2 TCEAL4 TMEM28 UBQLN2 UPRT ZCCHC5 ZNF711 ZXDA Y(SUM)
+CTCAGAAAAAAA 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 EOL
+CCATCCATCCATCCATCC 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 0 4 3 0 0 0 1 0 3 3 0 0 0 3 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 26 EOL
+AGAGGGAGAGGG 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 3 3 0 0 0 3 0 3 4 0 0 1 2 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 4 0 0 30 EOL
+ATCTGTTGATGG 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 11 EOL
+AGGGGTGACAGA 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 12 EOL
+ATCCCATTTACA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 EOL
+AAGGGTATCAGT 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 8 0 0 0 0 0 0 0 0 0 3 2 0 0 0 3 0 3 3 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 22 EOL
+ATAATATATACA 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 8 EOL
+TATTATATGTATA 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 6 EOL
+CATCATCATCATCA 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 4 EOL
+CCCCATGATCCA 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 7 EOL
+TGATTCCTTAAAGAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 EOL
+AACACTTGGACA 1 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 5 EOL
+TATTAATATAATTTATAAA 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 EOL
+ATGTTTATTTTA 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 EOL
+TATCCAGGAGAA 1 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 8 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 14 EOL
+CAATTCTCCTGCC 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 11 EOL
+ACCATAAAAATGAGAAC 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 10 EOL
+CTCAGCCATAAAAA 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 EOL
+ATGAGTGAGAATAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 13 EOL
+ACTGTGAGTCAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 3 2 0 0 0 2 0 3 3 0 0 0 3 3 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 26 EOL
+TAAACTAAAGAGCTTCTGCACAGCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 2 0 2 3 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 16 EOL
+TCCTTTGGGTATAT 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 6 0 0 0 0 0 0 0 0 0 2 3 0 0 0 4 0 1 2 0 0 0 3 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 24 EOL
+ATGCTGCTATAAAGACACATGCACAC 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 EOL
+TGCTGGAGAGGATGTGGAGAAATAGGAACACTTTTACACTG 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 EOL
+TCCACAATGGTTGAA 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 EOL
+TTGGCTGCATAAAT 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 6 EOL
+CAATGGAACAGAACAGAGCCCTCAGAAATAA 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EOL
+GAACTAGAAATACCATTTGACCCAGC 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 2 0 0 5 0 0 0 0 0 0 0 0 0 2 2 0 0 0 4 0 2 2 0 0 2 2 2 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 4 0 0 28 EOL
+TCAAAGATCAGAT 1 0 0 0 0 0 0 1 0 0 1 1 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 10 0 0 0 0 0 0 0 0 0 2 1 0 0 0 2 0 3 3 0 0 0 0 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 20 EOL
+GACCCATCTCACACCAGTTAGAATG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 EOL
+CAAAGAGAATAAAATACCTAGGTATTTTATTCTTTTT 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 2 0 1 0 0 0 0 3 0 0 9 0 0 0 0 0 0 0 1 0 2 1 0 0 0 1 0 2 2 0 0 0 1 3 0 0 0 0 4 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 22 EOL
+AAAATGGCCATACTGCCCAAG 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 5 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 12 EOL
+AAATTTTTCCAATTCTGTGAAGAAA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 5 0 0 0 0 0 0 0 1 0 2 2 0 0 0 1 0 2 4 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 0 0 0 0 1 0 0 20 EOL
+TTCACAATAGCAAAGAC 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 2 0 0 6 0 0 0 0 0 0 1 0 0 3 1 0 0 0 1 0 2 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 16 EOL
+TAGGAAGAATCAATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 7 EOL
+CTGGGTATATACCCAGTAATGG 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 0 1 6 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 10 EOL
+TTGGAAGTTCTGGCCAGGGCAA 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 4 0 0 16 EOL
+TGAAGGACCTCTTCAAGGAGAACTACAAACCACTGCTCAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 9 EOL
+CTCTCACCACTCCTATTCAACATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 6 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 7 EOL
+ACACACACATAT 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 4 EOL
+CCATGAGCATGGAATGTTCT 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 2 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 4 0 0 16 EOL
+AACCCAAATGTCC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 3 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 4 0 0 15 EOL
+TTTACAAGAAAAAAACAAACAACCCCA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 EOL
+AGTTCTAGATCC 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 4 0 0 0 0 0 0 1 0 0 1 1 0 0 0 3 0 1 2 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 16 EOL
+CTGGAAGCATTCCCTTT 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EOL
+GATCCCATTTGTC 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 6 0 0 0 0 0 0 0 0 0 1 2 0 0 0 2 0 1 2 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 2 0 0 17 EOL
+GATATGAACAGACA 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 2 1 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 7 EOL
+TGGGTTTGTCATA 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 9 EOL
+AGTTTCTTTTGC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 3 1 0 0 0 1 0 0 2 0 0 0 1 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 16 EOL
+AATTACCCAGTCT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EOL
+TCATGTCATCTGCAAACA 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 11 EOL
+AAAACTCTCAAT 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 1 0 0 6 0 0 0 0 0 0 1 0 0 3 1 0 0 0 4 0 4 4 0 0 0 1 2 0 1 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 1 0 0 31 EOL
+CAACTTCAGCAA 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 6 0 0 0 0 0 0 1 0 0 3 2 0 0 0 3 0 2 1 0 0 0 1 3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 21 EOL
+ATTGGCTGTGGGTTT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 2 0 0 0 0 2 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 15 EOL
+AATTAGATCCCA 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 6 0 0 0 0 0 0 0 0 0 3 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 11 EOL
+GACCTAAAACCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 9 EOL
+AGAATCTACAAT 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 3 1 0 0 0 0 0 1 0 0 1 2 0 0 0 1 0 2 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 15 EOL
+AAACCAAACACC 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 0 0 7 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 EOL
+GGAGTTCCAGACCAGCCT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 1 0 0 0 1 0 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 13 EOL
+CCTTGCCCATGCC 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 9 EOL
+ATCATACTGAAT 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 2 2 0 0 0 2 0 2 2 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 2 0 0 0 0 0 0 0 0 0 21 EOL
+AGGAAGTCAAATT 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 1 3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 21 EOL
+AGCAAACCACCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 1 0 3 2 0 0 0 3 0 3 4 0 0 0 1 5 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 0 0 29 EOL
+AGCATGATTTATA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 1 1 0 3 1 0 0 0 2 0 2 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 19 EOL
+GAGAGCCAAATCATGAGTG 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 7 EOL
+AAAGAGCCAAAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 EOL
+AGCAATTGTGAATGG 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 2 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 4 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 18 EOL
+CACTATTCACAATTGC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 6 EOL
+TCAGGATACAAAATCAATG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 1 2 0 3 1 0 0 0 2 0 3 1 0 0 0 1 3 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 2 0 0 24 EOL
+CAATGAACTCAAACAAATT 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 2 0 2 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 18 EOL
+TCCAACAAAGGACATGAACTCATC 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 12 EOL
+AATTGAACAATGAGAACATGTGGTAT 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 0 1 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 12 EOL
+AACCACAATGAGAACA 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 EOL
+GTGTATATATATACAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 EOL
+ACATATATATAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 5 EOL
+GTCAGATGGATA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 1 0 0 10 EOL
+TCATCTGACAAAGGGCTAATATCCAG 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 EOL
+TTTGTCAGGTTTGTCAAAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EOL
+TTCTTAATCCAGTCTATCATT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 3 0 0 15 EOL
+TTTAATCCATCTTGA 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 3 1 0 0 0 3 0 0 1 0 0 0 0 3 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 4 0 0 20 EOL
+AAACTACCATCAGAGTGAACAGGCA 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 8 EOL
+GCCATCAGAGAAAT 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 1 0 0 8 EOL
+ACAGGCAACCTACA 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 7 EOL
+GCAACCTACTCA 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 7 EOL
+TAGAAAACCCCAT 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 8 EOL
+ X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
--- a/test-data/plot_for_lda_output.pdf
+++ b/test-data/plot_for_lda_output.pdf
@@ -2,8 +2,8 @@
%���ρ�r
1 0 obj
<<
-/CreationDate (D:20100525153422)
-/ModDate (D:20100525153422)
+/CreationDate (D:20100716143839)
+/ModDate (D:20100716143839)
/Title (R Graphics Output)
/Producer (R 2.10.1)
/Creator (R)
@@ -36,205 +36,205 @@ 0.75 w
1 J
1 j
10.00 M
-170.40 292.19 m
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 285.12 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 280.41 l
-170.40 280.41 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-194.40 270.98 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 256.84 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 252.13 l
-194.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
+314.40 168.51 m
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+362.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
S
Q q
0.000 0.000 0.000 RG
@@ -252,10 +252,10 @@ S
Q q
BT
0.000 0.000 0.000 rg
-/F2 1 Tf 12.00 0.00 -0.00 12.00 262.40 18.72 Tm (X) Tj
+/F2 1 Tf 12.00 0.00 -0.00 12.00 176.67 18.72 Tm [(T) 120 (est Plot2 [1-FP\(F) 50 (alse P) 50 (ositiv) 25 (e\)])] TJ
ET
BT
-/F2 1 Tf 0.00 12.00 -12.00 0.00 12.96 255.20 Tm (Y) Tj
+/F2 1 Tf 0.00 12.00 -12.00 0.00 12.96 169.47 Tm [(T) 120 (est Plot3 [1-FP\(F) 50 (alse P) 50 (ositiv) 25 (e\)])] TJ
ET
Q q 59.04 73.44 414.72 371.52 re W n
0.000 0.000 0.000 RG
@@ -264,214 +264,214 @@ 0.75 w
1 J
1 j
10.00 M
-170.40 292.19 m
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 292.19 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 289.83 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 287.47 l
-170.40 285.12 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 282.76 l
-170.40 280.41 l
-170.40 280.41 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 278.05 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 275.69 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 273.34 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-170.40 270.98 l
-194.40 270.98 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 268.62 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 263.91 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 259.20 l
-194.40 256.84 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 254.49 l
-194.40 252.13 l
-194.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 252.13 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 249.78 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
-218.40 247.42 l
+314.40 168.51 m
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+314.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+326.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 168.51 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+338.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+350.40 162.25 l
+362.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+374.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
+386.40 162.25 l
S
0.000 0.000 0.000 rg
BT
-/F1 1 Tf 0 Tr 7.48 0 0 7.48 215.44 249.54 Tm (l) Tj 0 Tr
+/F1 1 Tf 0 Tr 7.48 0 0 7.48 383.44 159.66 Tm (l) Tj 0 Tr
ET
Q q
BT
0.000 0.000 0.000 rg
-/F3 1 Tf 13.00 0.00 -0.00 13.00 59.04 469.81 Tm [(T) 60 (est Plot)] TJ
+/F3 1 Tf 13.00 0.00 -0.00 13.00 59.04 469.81 Tm [(T) 60 (est Plot1)] TJ
ET
Q q
0.000 0.000 0.000 RG
@@ -535,7 +535,7 @@ Q
endstream
endobj
7 0 obj
-8278
+8405
endobj
3 0 obj
<<
@@ -590,15 +590,15 @@ 0 12
0000000000 65535 f
0000000021 00000 n
0000000164 00000 n
-0000008644 00000 n
-0000008727 00000 n
+0000008771 00000 n
+0000008854 00000 n
0000000213 00000 n
0000000293 00000 n
-0000008624 00000 n
-0000008831 00000 n
-0000009088 00000 n
-0000009171 00000 n
-0000009268 00000 n
+0000008751 00000 n
+0000008958 00000 n
+0000009215 00000 n
+0000009298 00000 n
+0000009395 00000 n
trailer
<<
/Size 12
@@ -606,5 +606,5 @@ trailer
/Root 2 0 R
>>
startxref
-9370
+9497
%%EOF
--- /dev/null
+++ b/test-data/matrix_generator_for_pc_and_lda_input_2.tabular
@@ -0,0 +1,87 @@
+ARHGEF9 XLMR
+KIAA2022 XLMR
+ZDHHC15 XLMR
+PGK1 XLMR
+BRWD3 XLMR
+PAK3 XLMR
+AGTR2 XLMR
+GRIA3 XLMR
+ZDHHC9 XLMR
+GPC3 XLMR
+PHF6 XLMR
+SOX3 XLMR
+FMR1 XLMR
+MTM1 XLMR
+SHROOM4 XLMR
+KLF8 XLMR
+UXT XLMR
+PCSK1N XLMR
+PAGE1 XLMR
+PAGE4 XLMR
+CLCN5 XLMR
+NUDT10 XLMR
+NUDT11 XLMR
+GSPT2 XLMR
+TMEM29 XLMR
+GPR173 XLMR
+HUWE1 XLMR
+TSR2 XLMR
+TRO XLMR
+MAGEH1 XLMR
+USP51 XLMR
+RRAGB XLMR
+UBQLN2 CONTROL
+SPIN3 CONTROL
+SPIN2A CONTROL
+ZXDA CONTROL
+SPIN4 CONTROL
+MTMR8 CONTROL
+KIAA1166 CONTROL
+LAS1L CONTROL
+MSN CONTROL
+HEPH CONTROL
+AR CONTROL
+STARD8 CONTROL
+TMEM28 CONTROL
+EDA CONTROL
+SLC7A3 CONTROL
+CXCR3 CONTROL
+NAP1L2 CONTROL
+CHIC1 CONTROL
+FXYD8 CONTROL
+RNF12 CONTROL
+UPRT CONTROL
+MAGEE2 CONTROL
+CXorf26 CONTROL
+MAGEE1 CONTROL
+FGF16 CONTROL
+TAF9B CONTROL
+CYSLTR1 CONTROL
+ZCCHC5 CONTROL
+GPR23 CONTROL
+P2RY10 CONTROL
+ITM2A CONTROL
+TBX22 CONTROL
+NSBP1 CONTROL
+RPS6KA6 CONTROL
+HDX CONTROL
+APOOL CONTROL
+ZNF711 CONTROL
+POF1B CONTROL
+CHM CONTROL
+DACH2 CONTROL
+KLHL4 CONTROL
+CPXCR1 CONTROL
+PABPC5 CONTROL
+DIAPH2 CONTROL
+SYTL4 CONTROL
+CSTF2 CONTROL
+DRP2 CONTROL
+TCEAL2 CONTROL
+BEX5 CONTROL
+NXF3 CONTROL
+BEX4 CONTROL
+TCEAL4 CONTROL
+ESX1 CONTROL
+IL1RAPL2 CONTROL
+NRK CONTROL
--- a/test-data/pca_and_lda_analy_for_lda_input.tabular
+++ /dev/null
@@ -1,89 +0,0 @@
- ARHGEF9 KIAA2022 ZDHHC15 PGK1 BRWD3 PAK3 AGTR2 GRIA3 ZDHHC9 GPC3 PHF6 SOX3 FMR1 MTM1 SHROOM4 KLF8 Sum(XLMR) UXT PCSK1N PAGE1 PAGE4 CLCN5 NUDT10 NUDT11 GSPT2 TMEM29 GPR173 HUWE1 TSR2 TRO MAGEH1 USP51 RRAGB UBQLN2 SPIN3 SPIN2A ZXDA SPIN4 MTMR8 KIAA1166 LAS1L MSN HEPH AR STARD8 TMEM28 EDA SLC7A3 CXCR3 NAP1L2 CHIC1 FXYD8 RNF12 UPRT MAGEE2 CXorf26 MAGEE1 FGF16 TAF9B CYSLTR1 ZCCHC5 GPR23 P2RY10 ITM2A TBX22 NSBP1 RPS6KA6 HDX APOOL ZNF711 POF1B CHM DACH2 KLHL4 CPXCR1 PABPC5 DIAPH2 SYTL4 CSTF2 DRP2 TCEAL2 BEX5 NXF3 BEX4 TCEAL4 ESX1 IL1RAPL2 NRK SERPINA7 MUM1L1 CXorf57 MORC4 VSIG1 NXT2 TMEM164 CHRDL1 PAK3 ZCCHC16 LRCH2 LUZP4 PLS3 AGTR2 CXorf61 KLHL13 WDR44 LONRF3 PGRMC1 SLC25A43 6-Sep NKAP ZBTB33 FAM70A ATP1B4 C1GALT1C1 GLUD2 GRIA3 THOC2 SH2D1A ODZ1 WDR40C ACTRT1 APLN XPNPEP2 UTP14A BCORL1 ENOX2 FLJ30058 MST4 RAP2C MBNL3 HS6ST2 GPC4 PHF6 DDX26B FHL1
BRS3 ZIC3 FGF13 F9 CDR1 SPANXB1 LDOC1 SPANXE MAGEC3 SLITRK4 SPANXN2 SPANXN1 TMEM185A MAGEA8 CXorf40B MAMLD1 GPR50 LOC203547 PASD1 MAGEA4 GABRE MAGEA3 PNMA3 ZNF275 VBP1 TMLHE SPRY3 VAMP7 Sum(Control)
-AGACCAGCTTGG 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 0 4 0 3 1 0 0 0 0 1 2 2 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 1 1 2 1 0 0 0 0 0 4 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 XLMR
-CTCAGAAAAAAA 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 4 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 1 27 XLMR
-CCATCCATCCATCCATCC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 XLMR
-AGAGGGAGAGGG 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 26 XLMR
-ATCTGTTGATGG 0 1 0 0 1 0 0 1 0 1 1 0 2 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 XLMR
-AGGGGTGACAGA 0 1 2 0 0 0 2 0 0 0 0 0 0 0 0 1 6 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 28 XLMR
-ATCCCATTTACA 0 0 2 0 0 1 0 0 0 0 1 0 1 0 0 1 6 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 19 XLMR
-AAGGGTATCAGT 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 27 XLMR
-ATAATATATACA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 XLMR
-TATTATATGTATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 XLMR
-CATCATCATCATCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 XLMR
-CCCCATGATCCA 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 3 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 1 1 0 26 Control
-TGATTCCTTAAAGAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 Control
-AACACTTGGACA 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 4 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 2 1 0 0 1 0 1 1 0 1 38 Control
-TATTAATATAATTTATAAA 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 2 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 2 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 1 0 0 48 Control
-ATGTTTATTTTA 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 12 Control
-TATCCAGGAGAA 1 1 0 1 0 0 2 0 0 0 0 0 0 0 0 2 7 0 0 0 0 2 0 2 0 0 0 0 0 2 2 0 3 1 2 2 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 2 0 1 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 58 Control
-CAATTCTCCTGCC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ACCATAAAAATGAGAAC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CTCAGCCATAAAAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ATGAGTGAGAATAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ACTGTGAGTCAA 2 0 1 1 0 0 1 0 1 0 0 0 1 1 0 2 10 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 26 Control
-TAAACTAAAGAGCTTCTGCACAGCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCCTTTGGGTATAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ATGCTGCTATAAAGACACATGCACAC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TGCTGGAGAGGATGTGGAGAAATAGGAACACTTTTACACTG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCCACAATGGTTGAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTGGCTGCATAAAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CAATGGAACAGAACAGAGCCCTCAGAAATAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GAACTAGAAATACCATTTGACCCAGC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCAAAGATCAGAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GACCCATCTCACACCAGTTAGAATG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 1 2 0 0 0 0 2 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 28 Control
-CAAAGAGAATAAAATACCTAGGTATTTTATTCTTTTT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AAAATGGCCATACTGCCCAAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AAATTTTTCCAATTCTGTGAAGAAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 10 Control
-TTCACAATAGCAAAGAC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TAGGAAGAATCAATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CTGGGTATATACCCAGTAATGG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTGGAAGTTCTGGCCAGGGCAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TGAAGGACCTCTTCAAGGAGAACTACAAACCACTGCTCAA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CTCTCACCACTCCTATTCAACATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ACACACACATAT 0 0 1 0 2 0 0 2 0 1 0 0 1 2 0 0 9 0 1 0 0 0 0 0 1 1 1 0 0 2 0 2 0 0 0 0 0 2 0 0 0 1 2 3 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 3 1 1 1 1 0 0 0 0 0 2 1 1 0 0 1 1 0 3 0 1 1 0 0 0 2 2 2 0 3 0 3 6 2 2 0 1 0 1 1 1 0 2 1 0 0 1 2 0 0 0 0 2 2 0 0 0 0 0 0 1 0 1 3 1 1 0 0 0 6 3 4 0 1 0 0 0 1 0 0 1 2 2 3 0 2 0 1 0 0 107 Control
-CCATGAGCATGGAATGTTCT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AACCCAAATGTCC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTTACAAGAAAAAAACAAACAACCCCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AGTTCTAGATCC 0 1 3 2 1 1 3 0 1 0 1 0 0 0 2 2 17 1 1 0 2 2 2 4 0 0 0 1 0 4 2 0 1 1 1 1 1 1 0 1 0 0 1 0 0 3 0 2 1 0 1 0 1 4 3 1 1 1 1 0 1 1 2 0 3 2 1 0 0 1 2 2 1 2 0 0 0 1 0 0 1 3 1 0 0 0 0 2 2 2 2 2 0 2 0 2 1 0 1 1 0 3 2 0 0 0 0 0 0 3 0 1 1 1 1 0 0 0 0 0 2 1 0 0 0 1 2 2 1 1 1 0 1 0 0 1 0 0 2 0 0 0 1 2 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 2 2 2 1 130 Control
-CTGGAAGCATTCCCTTT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GATCCCATTTGTC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GATATGAACAGACA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TGGGTTTGTCATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AGTTTCTTTTGC 0 3 4 0 2 0 3 1 1 0 1 0 0 0 0 2 17 2 1 0 2 3 3 2 0 0 0 0 0 2 3 0 2 1 4 1 1 1 0 1 1 1 2 1 0 2 0 2 1 2 2 0 2 4 1 2 0 1 2 1 1 1 2 3 4 2 1 1 2 0 1 2 1 1 0 0 1 0 0 0 3 1 1 0 0 0 1 1 3 3 2 0 1 1 1 2 0 1 0 0 0 3 2 0 0 0 0 1 0 2 0 1 1 2 1 1 0 0 0 0 2 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 2 0 0 0 2 3 1 1 0 0 2 0 0 0 0 0 1 1 0 1 1 2 0 1 1 143 Control
-AATTACCCAGTCT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCATGTCATCTGCAAACA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AAAACTCTCAAT 1 3 2 0 1 0 2 0 0 0 0 1 0 0 0 2 12 0 1 0 0 2 0 2 0 0 0 0 0 2 3 0 4 1 0 1 1 1 2 0 0 0 0 2 0 2 0 1 0 1 2 0 1 3 0 0 2 1 1 0 0 0 1 3 1 1 0 0 2 0 2 0 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 1 1 2 0 0 1 0 1 0 1 1 1 0 2 2 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 2 0 0 1 1 2 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 86 Control
-CAACTTCAGCAA 0 4 3 1 0 0 3 0 1 0 0 0 0 0 0 2 14 0 1 0 0 3 1 2 0 0 0 0 0 2 2 0 2 1 2 3 1 2 2 1 0 0 0 1 0 1 0 1 1 2 3 0 1 3 3 1 3 1 1 0 2 0 2 2 3 3 0 0 2 0 3 1 1 1 0 0 0 1 1 0 1 3 1 0 0 1 0 2 2 2 1 0 2 0 1 2 0 1 1 1 0 3 3 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 2 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 116 Control
-ATTGGCTGTGGGTTT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AATTAGATCCCA 0 3 3 1 2 0 3 1 1 0 1 0 0 0 0 2 17 2 1 0 0 3 2 1 0 0 0 1 0 2 3 0 2 1 2 2 0 0 2 0 0 0 1 0 0 1 0 1 0 1 0 0 1 4 2 1 0 1 2 0 0 0 2 1 3 2 1 0 2 1 3 2 1 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 2 0 1 1 1 2 0 1 1 1 0 3 2 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 2 0 0 1 2 3 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 2 1 2 1 113 Control
-GACCTAAAACCA 0 1 2 1 1 0 1 0 1 0 1 0 0 0 0 2 10 0 1 0 2 2 1 3 0 0 0 1 0 2 2 0 2 1 1 1 1 1 1 2 1 0 2 1 0 1 0 1 0 1 1 0 0 3 2 1 1 1 0 0 1 1 2 1 2 1 1 0 0 1 2 1 1 1 0 0 0 1 0 0 1 2 1 1 0 0 1 2 2 2 1 0 0 1 0 1 0 0 1 1 0 1 2 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 2 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 1 1 100 Control
-AGAATCTACAAT 0 3 3 1 0 0 2 1 0 0 0 0 0 0 0 0 10 1 1 0 2 2 2 3 0 0 0 1 0 2 1 1 1 1 2 1 1 1 1 1 0 0 1 0 0 1 0 2 0 0 1 0 1 1 2 0 1 0 2 0 1 1 2 1 2 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 2 2 2 0 1 2 0 2 0 1 1 1 0 2 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 2 0 0 0 1 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 89 Control
-AAACCAAACACC 0 3 4 2 1 0 2 0 0 1 1 0 1 0 0 0 15 1 1 0 3 3 3 2 0 0 0 1 0 4 2 0 1 2 1 1 1 1 4 1 1 1 4 4 1 2 0 2 1 0 2 0 1 1 2 3 2 1 2 1 1 0 0 2 1 1 0 1 2 2 2 2 1 0 0 0 0 1 0 0 3 4 1 1 2 0 2 2 2 2 3 2 1 2 1 2 0 0 1 1 0 2 1 0 0 0 0 0 0 2 0 1 1 0 1 0 1 0 0 0 4 1 0 0 0 1 1 3 0 1 1 0 1 0 0 1 0 0 1 1 0 2 0 1 1 1 0 0 2 1 0 0 1 2 1 0 0 0 0 2 1 2 1 154 Control
-GGAGTTCCAGACCAGCCT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CCTTGCCCATGCC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ATCATACTGAAT 0 2 2 1 0 0 2 0 1 0 0 0 1 0 0 2 11 0 1 0 0 3 0 2 0 0 0 0 0 2 2 0 3 1 0 2 0 0 2 1 1 0 0 2 0 1 0 1 0 1 2 0 0 2 3 2 0 0 1 0 2 1 1 3 5 0 0 1 2 1 3 1 2 0 1 1 0 0 0 0 0 3 0 0 0 2 0 2 3 3 2 0 2 1 0 1 0 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 2 1 0 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 2 1 1 1 104 Control
-AGGAAGTCAAATT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AGCAAACCACCA 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 4 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 1 0 0 1 0 0 3 2 1 1 0 4 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 1 1 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 3 1 1 2 1 0 1 0 0 0 0 2 0 0 1 0 0 0 1 2 2 1 64 Control
-AGCATGATTTATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GAGAGCCAAATCATGAGTG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AAAGAGCCAAAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 9 Control
-AGCAATTGTGAATGG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CACTATTCACAATTGC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCAGGATACAAAATCAATG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-CAATGAACTCAAACAAATT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TCCAACAAAGGACATGAACTCATC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 Control
-AATTGAACAATGAGAACATGTGGTAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 0 1 0 0 0 0 1 29 Control
-AACCACAATGAGAACA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GTGTATATATATACAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ACATATATATAT 0 0 1 1 2 0 1 3 0 1 0 0 1 0 0 0 10 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 5 1 0 0 1 0 1 1 0 0 0 0 0 3 2 0 0 0 1 3 0 0 0 0 1 0 0 2 6 0 1 2 1 0 0 0 1 1 1 1 0 0 2 3 1 0 1 0 0 3 1 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 4 2 0 1 0 1 0 1 1 2 0 3 3 0 0 0 2 0 0 0 1 5 0 3 0 0 0 0 0 1 0 2 2 1 0 1 3 0 4 6 4 3 4 1 0 1 0 4 0 2 0 0 1 0 1 0 1 1 0 125 Control
-GTCAGATGGATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 34 Control
-TCATCTGACAAAGGGCTAATATCCAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTTGTCAGGTTTGTCAAAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTCTTAATCCAGTCTATCATT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-TTTAATCCATCTTGA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-AAACTACCATCAGAGTGAACAGGCA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GCCATCAGAGAAAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-ACAGGCAACCTACA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
-GCAACCTACTCA 0 3 2 1 0 0 0 0 0 0 1 0 0 0 0 0 7 1 0 0 2 3 2 3 0 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 2 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 48 Control
-TAGAAAACCCCAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Control
- XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR XLMR Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control
Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control Control
1
0
galaxy-dist commit 28e629ad5949: Upgrade pbs_python to 4.1.0 and use PBS exit_status (if keep_completed is set) so we can detect PBS failures. This is a reapplication of 3786:48432330228e, which was backed out in a subsequent revision due to crashes experienced in pbs_python 2.9.8.
by commits-noreply@bitbucket.org 23 Jul '10
by commits-noreply@bitbucket.org 23 Jul '10
23 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Nate Coraor <nate(a)bx.psu.edu>
# Date 1279556993 14400
# Node ID 28e629ad59490af90a28bc45073a7cfc10ed646c
# Parent 0f5eb93a7d61478565d63563bddcbffc6b6a59d9
Upgrade pbs_python to 4.1.0 and use PBS exit_status (if keep_completed is set) so we can detect PBS failures. This is a reapplication of 3786:48432330228e, which was backed out in a subsequent revision due to crashes experienced in pbs_python 2.9.8.
--- a/eggs.ini
+++ b/eggs.ini
@@ -17,7 +17,7 @@ Cheetah = 2.2.2
DRMAA_python = 0.2
MySQL_python = 1.2.3c1
numpy = 1.3.0
-pbs_python = 2.9.4
+pbs_python = 4.1.0
psycopg2 = 2.0.13
pycrypto = 2.0.1
pysam = 0.1.1
--- a/lib/galaxy/jobs/runners/pbs.py
+++ b/lib/galaxy/jobs/runners/pbs.py
@@ -50,6 +50,19 @@ cd %s
%s
"""
+# From pbs' job.h
+JOB_EXIT_STATUS = {
+ 0: "job exec successful",
+ -1: "job exec failed, before files, no retry",
+ -2: "job exec failed, after files, no retry",
+ -3: "job execution failed, do retry",
+ -4: "job aborted on MOM initialization",
+ -5: "job aborted on MOM init, chkpt, no migrate",
+ -6: "job aborted on MOM init, chkpt, ok migrate",
+ -7: "job restart failed",
+ -8: "exec() of user command failed",
+}
+
class PBSJobState( object ):
def __init__( self ):
"""
@@ -65,6 +78,7 @@ class PBSJobState( object ):
self.efile = None
self.runner_url = None
self.check_count = 0
+ self.stop_job = False
class PBSJobRunner( object ):
"""
@@ -193,8 +207,9 @@ class PBSJobRunner( object ):
pbs_options = self.determine_pbs_options( runner_url )
c = pbs.pbs_connect( pbs_server_name )
if c <= 0:
+ errno, text = pbs.error()
job_wrapper.fail( "Unable to queue job for execution. Resubmitting the job may succeed." )
- log.error( "Connection to PBS server for submit failed" )
+ log.error( "Connection to PBS server for submit failed: %s: %s" % ( errno, text ) )
return
# define job attributes
@@ -336,58 +351,78 @@ class PBSJobRunner( object ):
log.debug( "(%s/%s) Skipping state check because PBS server connection failed" % ( galaxy_job_id, job_id ) )
new_watched.append( pbs_job_state )
continue
- if statuses.has_key( job_id ):
+ try:
status = statuses[job_id]
- if status.job_state != old_state:
- log.debug("(%s/%s) job state changed from %s to %s" % ( galaxy_job_id, job_id, old_state, status.job_state ) )
- if status.job_state == "R" and not pbs_job_state.running:
- pbs_job_state.running = True
- pbs_job_state.job_wrapper.change_state( model.Job.states.RUNNING )
- if status.job_state == "R" and ( pbs_job_state.check_count % 20 ) == 0:
- # Every 20th time the job status is checked, do limit checks (if configured)
- if self.app.config.output_size_limit > 0:
- # Check the size of the job outputs
- fail = False
- for outfile, size in pbs_job_state.job_wrapper.check_output_sizes():
- if size > self.app.config.output_size_limit:
- pbs_job_state.fail_message = 'Job output grew too large (greater than %s), please try different job parameters or' \
- % nice_size( self.app.config.output_size_limit )
- log.warning( '(%s/%s) Dequeueing job due to output %s growing larger than %s limit' \
- % ( galaxy_job_id, job_id, os.path.basename( outfile ), nice_size( self.app.config.output_size_limit ) ) )
- self.work_queue.put( ( 'fail', pbs_job_state ) )
- fail = True
- break
- if fail:
- continue
- if self.job_walltime is not None:
- # Check the job's execution time
- if status.get( 'resources_used', False ):
- # resources_used may not be in the status for new jobs
- h, m, s = [ int( i ) for i in status.resources_used.walltime.split( ':' ) ]
- time_executing = timedelta( 0, s, 0, 0, m, h )
- if time_executing > self.job_walltime:
- pbs_job_state.fail_message = 'Job ran longer than maximum allowed execution time (%s), please try different job parameters or' \
- % self.app.config.job_walltime
- log.warning( '(%s/%s) Dequeueing job since walltime has been reached' \
- % ( galaxy_job_id, job_id ) )
- self.work_queue.put( ( 'fail', pbs_job_state ) )
- continue
- pbs_job_state.old_state = status.job_state
- new_watched.append( pbs_job_state )
- else:
+ except KeyError:
try:
- # recheck to make sure it wasn't a communication problem
+ # Recheck to make sure it wasn't a communication problem
self.check_single_job( pbs_server_name, job_id )
- log.warning( "(%s/%s) job was not in state check list, but was found with individual state check" % ( galaxy_job_id, job_id ) )
+ log.warning( "(%s/%s) PBS job was not in state check list, but was found with individual state check" % ( galaxy_job_id, job_id ) )
new_watched.append( pbs_job_state )
except:
errno, text = pbs.error()
- if errno != 15001:
- log.info("(%s/%s) state check resulted in error (%d): %s" % (galaxy_job_id, job_id, errno, text) )
+ if errno == 15001:
+ # 15001 == job not in queue
+ log.debug("(%s/%s) PBS job has left queue" % (galaxy_job_id, job_id) )
+ self.work_queue.put( ( 'finish', pbs_job_state ) )
+ else:
+ # Unhandled error, continue to monitor
+ log.info("(%s/%s) PBS state check resulted in error (%d): %s" % (galaxy_job_id, job_id, errno, text) )
new_watched.append( pbs_job_state )
- else:
- log.debug("(%s/%s) job has left queue" % (galaxy_job_id, job_id) )
- self.work_queue.put( ( 'finish', pbs_job_state ) )
+ continue
+ if status.job_state != old_state:
+ log.debug("(%s/%s) PBS job state changed from %s to %s" % ( galaxy_job_id, job_id, old_state, status.job_state ) )
+ if status.job_state == "R" and not pbs_job_state.running:
+ pbs_job_state.running = True
+ pbs_job_state.job_wrapper.change_state( model.Job.states.RUNNING )
+ if status.job_state == "R" and ( pbs_job_state.check_count % 20 ) == 0:
+ # Every 20th time the job status is checked, do limit checks (if configured)
+ if self.app.config.output_size_limit > 0:
+ # Check the size of the job outputs
+ fail = False
+ for outfile, size in pbs_job_state.job_wrapper.check_output_sizes():
+ if size > self.app.config.output_size_limit:
+ pbs_job_state.fail_message = 'Job output grew too large (greater than %s), please try different job parameters or' \
+ % nice_size( self.app.config.output_size_limit )
+ log.warning( '(%s/%s) Dequeueing job due to output %s growing larger than %s limit' \
+ % ( galaxy_job_id, job_id, os.path.basename( outfile ), nice_size( self.app.config.output_size_limit ) ) )
+ pbs_job_state.stop_job = True
+ self.work_queue.put( ( 'fail', pbs_job_state ) )
+ fail = True
+ break
+ if fail:
+ continue
+ if self.job_walltime is not None:
+ # Check the job's execution time
+ if status.get( 'resources_used', False ):
+ # resources_used may not be in the status for new jobs
+ h, m, s = [ int( i ) for i in status.resources_used.walltime.split( ':' ) ]
+ time_executing = timedelta( 0, s, 0, 0, m, h )
+ if time_executing > self.job_walltime:
+ pbs_job_state.fail_message = 'Job ran longer than maximum allowed execution time (%s), please try different job parameters or' \
+ % self.app.config.job_walltime
+ log.warning( '(%s/%s) Dequeueing job since walltime has been reached' \
+ % ( galaxy_job_id, job_id ) )
+ pbs_job_state.stop_job = True
+ self.work_queue.put( ( 'fail', pbs_job_state ) )
+ continue
+ elif status.job_state == "C":
+ # "keep_completed" is enabled in PBS, so try to check exit status
+ try:
+ assert int( status.exit_status ) == 0
+ log.debug("(%s/%s) PBS job has completed successfully" % ( galaxy_job_id, job_id ) )
+ except AssertionError:
+ pbs_job_state.fail_message = 'Job cannot be completed due to a cluster error. Please retry or'
+ log.error( '(%s/%s) PBS job failed: %s' % ( galaxy_job_id, job_id, JOB_EXIT_STATUS.get( int( status.exit_status ), 'Unknown error: %s' % status.exit_status ) ) )
+ self.work_queue.put( ( 'fail', pbs_job_state ) )
+ continue
+ except AttributeError:
+ # No exit_status, can't verify proper completion so we just have to assume success.
+ log.debug("(%s/%s) PBS job has completed" % ( galaxy_job_id, job_id ) )
+ self.work_queue.put( ( 'finish', pbs_job_state ) )
+ continue
+ pbs_job_state.old_state = status.job_state
+ new_watched.append( pbs_job_state )
# Replace the watch list with the updated version
self.watched = new_watched
@@ -411,9 +446,10 @@ class PBSJobRunner( object ):
log.debug("connection to PBS server %s for state check failed" % pbs_server_name )
failures.append( pbs_server_name )
continue
- stat_attrl = pbs.new_attrl(2)
+ stat_attrl = pbs.new_attrl(3)
stat_attrl[0].name = pbs.ATTR_state
stat_attrl[1].name = pbs.ATTR_used
+ stat_attrl[2].name = pbs.ATTR_exitstat
jobs = pbs.pbs_statjob( c, None, stat_attrl, None )
pbs.pbs_disconnect( c )
statuses.update( self.convert_statjob_to_bunches( jobs ) )
@@ -480,7 +516,8 @@ class PBSJobRunner( object ):
"""
Seperated out so we can use the worker threads for it.
"""
- self.stop_job( self.sa_session.query( self.app.model.Job ).get( pbs_job_state.job_wrapper.job_id ) )
+ if pbs_job_state.stop_job:
+ self.stop_job( self.sa_session.query( self.app.model.Job ).get( pbs_job_state.job_wrapper.job_id ) )
pbs_job_state.job_wrapper.fail( pbs_job_state.fail_message )
self.cleanup( ( pbs_job_state.ofile, pbs_job_state.efile, pbs_job_state.job_file ) )
--- a/scripts/scramble/scripts/pbs_python.py
+++ b/scripts/scramble/scripts/pbs_python.py
@@ -29,8 +29,8 @@ if not os.path.exists( 'setup.py.orig' )
i = open( 'setup.py.orig', 'r' )
o = open( 'setup.py', 'w' )
for line in i.readlines():
- if line == " version = '2.9.0',\n":
- line = " version = '2.9.4',\n"
+ if line == " version = '4.0.0',\n":
+ line = " version = '4.1.0',\n"
print >>o, line,
i.close()
o.close()
1
0
galaxy-dist commit e56cc2ed6642: Add checks to get_estimated_display_viewport() methods for tabular data types to ensure datasets are valid before generating display links ( this fix should eliminate some memory problems ) and standardize the returned values from the methods. Also fix several calls to dataset.has_data where the call assumed a property rather than a method.
by commits-noreply@bitbucket.org 16 Jul '10
by commits-noreply@bitbucket.org 16 Jul '10
16 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Greg Von Kuster <greg(a)bx.psu.edu>
# Date 1279226539 14400
# Node ID e56cc2ed66423b51249eb0bf3f5f9f7ccd774bce
# Parent 0bb17e66a56098391e5bbdd34ca227b595ddf082
Add checks to get_estimated_display_viewport() methods for tabular data types to ensure datasets are valid before generating display links ( this fix should eliminate some memory problems ) and standardize the returned values from the methods. Also fix several calls to dataset.has_data where the call assumed a property rather than a method.
--- a/lib/galaxy/datatypes/tabular.py
+++ b/lib/galaxy/datatypes/tabular.py
@@ -210,6 +210,14 @@ class Tabular( data.Text ):
def display_peek( self, dataset ):
"""Returns formatted html of peek"""
return self.make_html_table( dataset )
+ def displayable( self, dataset ):
+ try:
+ return dataset.has_data() \
+ and dataset.state == dataset.states.OK \
+ and dataset.metadata.columns > 0 \
+ and dataset.metadata.data_lines > 0
+ except:
+ return False
def as_gbrowse_display_file( self, dataset, **kwd ):
return open( dataset.file_name )
def as_ucsc_display_file( self, dataset, **kwd ):
--- a/templates/library/common/browse_library.mako
+++ b/templates/library/common/browse_library.mako
@@ -232,7 +232,7 @@
%if not branch_deleted( folder ) and not ldda.library_dataset.deleted and can_modify:
<a class="action-button" href="${h.url_for( controller='library_common', action='upload_library_dataset', cntrller=cntrller, library_id=trans.security.encode_id( library.id ), folder_id=trans.security.encode_id( folder.id ), replace_id=trans.security.encode_id( library_dataset.id ), show_deleted=show_deleted )}">Upload a new version of this dataset</a>
%endif
- %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and ldda.has_data:
+ %if not branch_deleted( folder ) and not ldda.library_dataset.deleted and ldda.has_data():
<a class="action-button" href="${h.url_for( controller='library_common', action='act_on_multiple_datasets', cntrller=cntrller, library_id=trans.security.encode_id( library.id ), ldda_ids=trans.security.encode_id( ldda.id ), do_action='import_to_history', use_panels=use_panels, show_deleted=show_deleted )}">Import this dataset into your current history</a><a class="action-button" href="${h.url_for( controller='library_common', action='download_dataset_from_folder', cntrller=cntrller, id=trans.security.encode_id( ldda.id ), library_id=trans.security.encode_id( library.id ), use_panels=use_panels )}">Download this dataset</a>
%endif
--- a/lib/galaxy/datatypes/genetics.py
+++ b/lib/galaxy/datatypes/genetics.py
@@ -80,7 +80,7 @@ class GenomeGraphs( Tabular ):
ggtail = 'hgGenome_doSubmitUpload=submit'
if not dataset.dbkey:
dataset.dbkey = 'hg18' # punt!
- if dataset.has_data:
+ if dataset.has_data():
for site_name, site_url in util.get_ucsc_by_build(dataset.dbkey):
if site_name in app.config.ucsc_display_sites:
site_url = site_url.replace('/hgTracks?','/hgGenome?') # for genome graphs
--- a/lib/galaxy/datatypes/tracks.py
+++ b/lib/galaxy/datatypes/tracks.py
@@ -20,7 +20,7 @@ class GeneTrack( binary.Binary ):
return binary.Binary.get_display_links( self, dataset, type, app, base_url, target_frame=target_frame, **kwd )
def genetrack_link( self, hda, type, app, base_url ):
ret_val = []
- if hda.has_data:
+ if hda.dataset.has_data():
# Get the disk file name and data id
file_name = hda.dataset.get_file_name()
data_id = quote_plus( str( hda.id ) )
--- a/templates/root/history_common.mako
+++ b/templates/root/history_common.mako
@@ -114,7 +114,7 @@
<div class="info">${_('Info: ')}${data.display_info()}</div><div><% dataset_id=trans.security.encode_id( data.id ) %>
- %if data.has_data:
+ %if data.has_data():
<a href="${h.url_for( controller='dataset', action='display', dataset_id=dataset_id, to_ext=data.ext )}" title="Save" class="icon-button disk tooltip"></a>
%if for_editing:
<a href="${h.url_for( controller='tool_runner', action='rerun', id=data.id )}" target="galaxy_main" title="Run this job again" class="icon-button arrow-circle tooltip"></a>
--- a/lib/galaxy/datatypes/interval.py
+++ b/lib/galaxy/datatypes/interval.py
@@ -54,10 +54,8 @@ class Interval( Tabular ):
"""Initialize interval datatype, by adding UCSC display apps"""
Tabular.__init__(self, **kwd)
self.add_display_app ( 'ucsc', 'display at UCSC', 'as_ucsc_display_file', 'ucsc_links' )
-
def init_meta( self, dataset, copy_from=None ):
Tabular.init_meta( self, dataset, copy_from=copy_from )
-
def set_peek( self, dataset, line_count=None, is_multi_byte=False ):
"""Set the peek and blurb text"""
if not dataset.dataset.purged:
@@ -76,9 +74,8 @@ class Interval( Tabular ):
dataset.peek = 'file does not exist'
dataset.blurb = 'file purged from disk'
def set_meta( self, dataset, overwrite = True, first_line_is_header = False, **kwd ):
+ """Tries to guess from the line the location number of the column for the chromosome, region start-end and strand"""
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = 0 )
-
- """Tries to guess from the line the location number of the column for the chromosome, region start-end and strand"""
if dataset.has_data():
empty_line_count = 0
num_check_lines = 100 # only check up to this many non empty lines
@@ -138,11 +135,20 @@ class Interval( Tabular ):
break # Our metadata is set or we examined 100 non-empty lines, so break out of the outer loop
else:
empty_line_count += 1
-
-
+ def displayable( self, dataset ):
+ try:
+ return dataset.has_data() \
+ and dataset.state == dataset.states.OK \
+ and dataset.metadata.columns > 0 \
+ and dataset.metadata.data_lines > 0 \
+ and dataset.metadata.chromCol \
+ and dataset.metadata.startCol \
+ and dataset.metadata.endCol
+ except:
+ return False
def get_estimated_display_viewport( self, dataset ):
"""Return a chrom, start, stop tuple for viewing a file."""
- if dataset.has_data() and dataset.state == dataset.states.OK:
+ if self.displayable( dataset ):
try:
c, s, e = dataset.metadata.chromCol, dataset.metadata.startCol, dataset.metadata.endCol
c, s, e = int(c)-1, int(s)-1, int(e)-1
@@ -156,20 +162,17 @@ class Interval( Tabular ):
peek.append( line.rstrip( '\n\r' ).split() )
if idx > 100 and idx > skipme: # viewport should have at least 100 features
break
-
chr, start, stop = peek[skipme][c], int( peek[skipme][s] ), int( peek[skipme][e] )
-
for p in peek[(skipme+1):]:
if p[0] == chr:
start = min( start, int( p[s] ) )
stop = max( stop, int( p[e] ) )
except Exception, exc:
- log.error( 'Viewport generation error -> %s ' % str(exc) )
- (chr, start, stop) = 'chr1', 1, 1000
+ log.exception( str(exc) )
+ return ( None, None, None )
return (chr, str( start ), str( stop ))
else:
- return ('', '', '')
-
+ return ( None, None, None )
def as_ucsc_display_file( self, dataset, **kwd ):
"""Returns file contents with only the bed data"""
fd, temp_name = tempfile.mkstemp()
@@ -195,7 +198,6 @@ class Interval( Tabular ):
os.write(fd, '%s\n' % '\t'.join(tmp) )
os.close(fd)
return open(temp_name)
-
def make_html_table( self, dataset, skipchars=[] ):
"""Create HTML table, used for displaying peek"""
out = ['<table cellspacing="0" cellpadding="3">']
@@ -223,30 +225,24 @@ class Interval( Tabular ):
except Exception, exc:
out = "Can't create peek %s" % str( exc )
return out
-
def ucsc_links( self, dataset, type, app, base_url ):
ret_val = []
- if dataset.has_data:
- viewport_tuple = self.get_estimated_display_viewport(dataset)
- if viewport_tuple:
- chrom = viewport_tuple[0]
- start = viewport_tuple[1]
- stop = viewport_tuple[2]
- for site_name, site_url in util.get_ucsc_by_build(dataset.dbkey):
- if site_name in app.config.ucsc_display_sites:
- # HACK: UCSC doesn't support https, so force http even
- # if our URL scheme is https. Making this work
- # requires additional hackery in your upstream proxy.
- # If UCSC ever supports https, remove this hack.
- internal_url = "%s" % url_for( controller='/dataset', dataset_id=dataset.id, action='display_at', filename='ucsc_' + site_name )
- if base_url.startswith( 'https://' ):
- base_url = base_url.replace( 'https', 'http', 1 )
- display_url = urllib.quote_plus( "%s%s/display_as?id=%i&display_app=%s&authz_method=display_at" % (base_url, url_for( controller='root' ), dataset.id, type) )
- redirect_url = urllib.quote_plus( "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" % (site_url, dataset.dbkey, chrom, start, stop ) )
- link = '%s?redirect_url=%s&display_url=%s' % ( internal_url, redirect_url, display_url )
- ret_val.append( (site_name, link) )
+ chrom, start, stop = self.get_estimated_display_viewport( dataset )
+ if chrom is not None:
+ for site_name, site_url in util.get_ucsc_by_build(dataset.dbkey):
+ if site_name in app.config.ucsc_display_sites:
+ # HACK: UCSC doesn't support https, so force http even
+ # if our URL scheme is https. Making this work
+ # requires additional hackery in your upstream proxy.
+ # If UCSC ever supports https, remove this hack.
+ internal_url = "%s" % url_for( controller='/dataset', dataset_id=dataset.id, action='display_at', filename='ucsc_' + site_name )
+ if base_url.startswith( 'https://' ):
+ base_url = base_url.replace( 'https', 'http', 1 )
+ display_url = urllib.quote_plus( "%s%s/display_as?id=%i&display_app=%s&authz_method=display_at" % (base_url, url_for( controller='root' ), dataset.id, type) )
+ redirect_url = urllib.quote_plus( "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" % (site_url, dataset.dbkey, chrom, start, stop ) )
+ link = '%s?redirect_url=%s&display_url=%s' % ( internal_url, redirect_url, display_url )
+ ret_val.append( (site_name, link) )
return ret_val
-
def validate( self, dataset ):
"""Validate an interval file using the bx GenomicIntervalReader"""
errors = list()
@@ -344,7 +340,7 @@ class BedGraph( Interval ):
"""
Set viewport based on dataset's first 100 lines.
"""
- if dataset.has_data() and dataset.state == dataset.states.OK:
+ if self.displayable( dataset ):
try:
# Set seqid, start, stop.
seqid = None
@@ -379,9 +375,10 @@ class BedGraph( Interval ):
if stop == 0:
stop = 1
return ( seqid, str( start ), str( stop ) )
- except:
- return( '', '', '' )
- return( '', '', '' )
+ except Exception, exc:
+ log.exception( str( exc ) )
+ return ( None, None, None )
+ return ( None, None, None )
class Bed( Interval ):
"""Tab delimited data in BED format"""
@@ -647,7 +644,7 @@ class Gff( Tabular, _RemoteCallMixin ):
Return a chrom, start, stop tuple for viewing a file. There are slight differences between gff 2 and gff 3
formats. This function should correctly handle both...
"""
- if dataset.has_data() and dataset.state == dataset.states.OK:
+ if self.displayable( dataset ):
try:
seqid = ''
start = 2147483647 # Maximum value of a signed 32 bit integer ( 2**31 - 1 )
@@ -698,39 +695,33 @@ class Gff( Tabular, _RemoteCallMixin ):
break
except Exception, e:
log.exception( str( e ) )
- seqid, start, stop = ( '', '', '' )
+ return ( None, None, None )
return ( seqid, str( start ), str( stop ) )
else:
- return ( '', '', '' )
+ return ( None, None, None )
def ucsc_links( self, dataset, type, app, base_url ):
ret_val = []
- if dataset.has_data:
- seqid, start, stop = self.get_estimated_display_viewport( dataset )
- if seqid and start and stop:
- for site_name, site_url in util.get_ucsc_by_build( dataset.dbkey ):
- if site_name in app.config.ucsc_display_sites:
- redirect_url = urllib.quote_plus(
- "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" %
- ( site_url, dataset.dbkey, seqid, start, stop ) )
- link = self._get_remote_call_url( redirect_url, site_name, dataset, type, app, base_url )
- ret_val.append( ( site_name, link ) )
+ seqid, start, stop = self.get_estimated_display_viewport( dataset )
+ if seqid is not None:
+ for site_name, site_url in util.get_ucsc_by_build( dataset.dbkey ):
+ if site_name in app.config.ucsc_display_sites:
+ redirect_url = urllib.quote_plus(
+ "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" %
+ ( site_url, dataset.dbkey, seqid, start, stop ) )
+ link = self._get_remote_call_url( redirect_url, site_name, dataset, type, app, base_url )
+ ret_val.append( ( site_name, link ) )
return ret_val
-
def gbrowse_links( self, dataset, type, app, base_url ):
ret_val = []
- if dataset.has_data:
- viewport_tuple = self.get_estimated_display_viewport( dataset )
- seqid = viewport_tuple[0]
- start = viewport_tuple[1]
- stop = viewport_tuple[2]
- if seqid and start and stop:
- for site_name, site_url in util.get_gbrowse_sites_by_build( dataset.dbkey ):
- if site_name in app.config.gbrowse_display_sites:
- # Old method, the one uncommented below now seems to be the way GBrowse wants the request
- # redirect_url = urllib.quote_plus( "%s%s/?ref=%s&start=%s&stop=%s&eurl=%%s" % ( site_url, dataset.dbkey, seqid, start, stop ) )
- redirect_url = urllib.quote_plus( "%s/?q=%s:%s..%s" % ( site_url, seqid, start, stop ) )
- link = self._get_remote_call_url( redirect_url, site_name, dataset, type, app, base_url )
- ret_val.append( ( site_name, link ) )
+ seqid, start, stop = self.get_estimated_display_viewport( dataset )
+ if seqid is not None:
+ for site_name, site_url in util.get_gbrowse_sites_by_build( dataset.dbkey ):
+ if site_name in app.config.gbrowse_display_sites:
+ # Old method, the one uncommented below now seems to be the way GBrowse wants the request
+ # redirect_url = urllib.quote_plus( "%s%s/?ref=%s&start=%s&stop=%s&eurl=%%s" % ( site_url, dataset.dbkey, seqid, start, stop ) )
+ redirect_url = urllib.quote_plus( "%s/?q=%s:%s..%s" % ( site_url, seqid, start, stop ) )
+ link = self._get_remote_call_url( redirect_url, site_name, dataset, type, app, base_url )
+ ret_val.append( ( site_name, link ) )
return ret_val
def sniff( self, filename ):
"""
@@ -974,53 +965,45 @@ class Wiggle( Tabular, _RemoteCallMixin
self.add_display_app( 'gbrowse', 'display in Gbrowse', 'as_gbrowse_display_file', 'gbrowse_links' )
def get_estimated_display_viewport( self, dataset ):
- num_check_lines = 100 # only check up to this many non empty lines
- vstart = None
- vend = 0
- vwig_chr = '?'
- value = None
- for i, line in enumerate( file( dataset.file_name ) ):
- line = line.rstrip( '\r\n' )
- if line:
- if line.startswith( "browser" ):
- chr_info = line.split()[-1]
- wig_chr, coords = chr_info.split( ":" )
- start, end = coords.split( "-" )
- value = ( wig_chr, start, end )
+ if self.displayable( dataset ):
+ num_check_lines = 100 # only check up to this many non empty lines
+ vstart = None
+ vend = 0
+ vwig_chr = '?'
+ value = None
+ for i, line in enumerate( file( dataset.file_name ) ):
+ line = line.rstrip( '\r\n' )
+ if line:
+ if line.startswith( "browser" ):
+ chr_info = line.split()[-1]
+ wig_chr, coords = chr_info.split( ":" )
+ start, end = coords.split( "-" )
+ value = ( wig_chr, start, end )
+ break
+ # variableStep chrom=chr20
+ if line and (line.lower().startswith( "variablestep" ) or line.lower().startswith( "fixedstep" )):
+ c = line.split("chr")[-1]
+ c = c.split()[0]
+ vwig_chr = 'chr%s' % c
+ else:
+ try:
+ offset = line.split()[0]
+ offset = int(offset)
+ vend = max(vend,offset)
+ if not vstart:
+ vstart = offset # first
+ except:
+ pass
+ if i > num_check_lines:
break
- # variableStep chrom=chr20
- if line and (line.lower().startswith( "variablestep" ) or line.lower().startswith( "fixedstep" )):
- c = line.split("chr")[-1]
- c = c.split()[0]
- vwig_chr = 'chr%s' % c
- else:
- try:
- offset = line.split()[0]
- offset = int(offset)
- vend = max(vend,offset)
- if not vstart:
- vstart = offset # first
- except:
- pass
- if i > num_check_lines:
- break
- if value == None:
- value = (vwig_chr, vstart, vend)
- return value
-
- def _get_viewer_range( self, dataset ):
- """Retrieve the chromosome, start, end for an external viewer."""
- if dataset.has_data:
- viewport_tuple = self.get_estimated_display_viewport( dataset )
- if viewport_tuple:
- chrom = viewport_tuple[0]
- start = viewport_tuple[1]
- stop = viewport_tuple[2]
- return ( chrom, start, stop )
- return ( None, None, None )
+ if value == None:
+ value = (vwig_chr, vstart, vend)
+ return value
+ else:
+ return ( None, None, None )
def gbrowse_links( self, dataset, type, app, base_url ):
ret_val = []
- chrom, start, stop = self._get_viewer_range( dataset )
+ chrom, start, stop = self.get_estimated_display_viewport( dataset )
if chrom is not None:
for site_name, site_url in util.get_gbrowse_sites_by_build( dataset.dbkey ):
if site_name in app.config.gbrowse_display_sites:
@@ -1030,7 +1013,7 @@ class Wiggle( Tabular, _RemoteCallMixin
return ret_val
def ucsc_links( self, dataset, type, app, base_url ):
ret_val = []
- chrom, start, stop = self._get_viewer_range( dataset )
+ chrom, start, stop = self.get_estimated_display_viewport( dataset )
if chrom is not None:
for site_name, site_url in util.get_ucsc_by_build( dataset.dbkey ):
if site_name in app.config.ucsc_display_sites:
@@ -1137,59 +1120,56 @@ class CustomTrack ( Tabular ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, skipchars=['track', '#'] )
def get_estimated_display_viewport( self, dataset ):
- try:
- wiggle_format = False
- for line in open(dataset.file_name):
- if (line.startswith("chr") or line.startswith("scaffold")):
- line = line.rstrip( '\n\r' )
- start = line.split("\t")[1].replace(",","")
- end = line.split("\t")[2].replace(",","")
-
- if int(start) < int(end):
- value = ( line.split("\t")[0], start, end )
- else:
- value = ( line.split("\t")[0], end, start )
-
- break
-
- elif (line.startswith('variableStep')):
- # wiggle format
- wiggle_format = True
- wig_chr = line.split()[1].split('=')[1]
- if not wig_chr.startswith("chr"):
- value = ('', '', '')
+ if self.displayable( dataset ):
+ try:
+ wiggle_format = False
+ for line in open(dataset.file_name):
+ if (line.startswith("chr") or line.startswith("scaffold")):
+ line = line.rstrip( '\n\r' )
+ start = line.split("\t")[1].replace(",","")
+ end = line.split("\t")[2].replace(",","")
+
+ if int(start) < int(end):
+ value = ( line.split("\t")[0], start, end )
+ else:
+ value = ( line.split("\t")[0], end, start )
+
break
- elif wiggle_format:
- # wiggle format
- if line.split("\t")[0].isdigit():
- start = line.split("\t")[0]
- end = str(int(start) + 1)
- value = (wig_chr, start, end)
- else:
- value = (wig_chr, '', '')
- break
-
- return value #returns the co-ordinates of the 1st track/dataset
- except:
- #return "."
- return ('', '', '')
+
+ elif (line.startswith('variableStep')):
+ # wiggle format
+ wiggle_format = True
+ wig_chr = line.split()[1].split('=')[1]
+ if not wig_chr.startswith("chr"):
+ value = ('', '', '')
+ break
+ elif wiggle_format:
+ # wiggle format
+ if line.split("\t")[0].isdigit():
+ start = line.split("\t")[0]
+ end = str(int(start) + 1)
+ value = (wig_chr, start, end)
+ else:
+ value = (wig_chr, '', '')
+ break
+ return value #returns the co-ordinates of the 1st track/dataset
+ except:
+ return ( None, None, None )
+ else:
+ return ( None, None, None )
def ucsc_links( self, dataset, type, app, base_url ):
ret_val = []
- if dataset.has_data:
- viewport_tuple = self.get_estimated_display_viewport(dataset)
- if viewport_tuple:
- chrom = viewport_tuple[0]
- start = viewport_tuple[1]
- stop = viewport_tuple[2]
- for site_name, site_url in util.get_ucsc_by_build(dataset.dbkey):
- if site_name in app.config.ucsc_display_sites:
- internal_url = "%s" % url_for( controller='dataset', dataset_id=dataset.id, action='display_at', filename='ucsc_' + site_name )
- if base_url.startswith( 'https://' ):
- base_url = base_url.replace( 'https', 'http', 1 )
- display_url = urllib.quote_plus( "%s%s/display_as?id=%i&display_app=%s&authz_method=display_at" % (base_url, url_for( controller='root' ), dataset.id, type) )
- redirect_url = urllib.quote_plus( "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" % (site_url, dataset.dbkey, chrom, start, stop ) )
- link = '%s?redirect_url=%s&display_url=%s' % ( internal_url, redirect_url, display_url )
- ret_val.append( (site_name, link) )
+ chrom, start, stop = self.get_estimated_display_viewport(dataset)
+ if chrom is not None:
+ for site_name, site_url in util.get_ucsc_by_build(dataset.dbkey):
+ if site_name in app.config.ucsc_display_sites:
+ internal_url = "%s" % url_for( controller='dataset', dataset_id=dataset.id, action='display_at', filename='ucsc_' + site_name )
+ if base_url.startswith( 'https://' ):
+ base_url = base_url.replace( 'https', 'http', 1 )
+ display_url = urllib.quote_plus( "%s%s/display_as?id=%i&display_app=%s&authz_method=display_at" % (base_url, url_for( controller='root' ), dataset.id, type) )
+ redirect_url = urllib.quote_plus( "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" % (site_url, dataset.dbkey, chrom, start, stop ) )
+ link = '%s?redirect_url=%s&display_url=%s' % ( internal_url, redirect_url, display_url )
+ ret_val.append( (site_name, link) )
return ret_val
def sniff( self, filename ):
"""
--- a/templates/library/common/ldda_info.mako
+++ b/templates/library/common/ldda_info.mako
@@ -61,7 +61,7 @@
%if current_version and can_modify:
<a class="action-button" href="${h.url_for( controller='library_common', action='upload_library_dataset', cntrller=cntrller, library_id=trans.security.encode_id( library.id ), folder_id=trans.security.encode_id( ldda.library_dataset.folder.id ), replace_id=trans.security.encode_id( ldda.library_dataset.id ) )}">Upload a new version of this dataset</a>
%endif
- %if cntrller=='library' and ldda.has_data:
+ %if cntrller=='library' and ldda.has_data():
<a class="action-button" href="${h.url_for( controller='library_common', action='act_on_multiple_datasets', cntrller=cntrller, library_id=trans.security.encode_id( library.id ), ldda_ids=trans.security.encode_id( ldda.id ), do_action='import_to_history', use_panels=use_panels, show_deleted=show_deleted )}">Import this dataset into your current history</a><a class="action-button" href="${h.url_for( controller='library_common', action='download_dataset_from_folder', cntrller=cntrller, id=trans.security.encode_id( ldda.id ), library_id=trans.security.encode_id( library.id ), use_panels=use_panels, show_deleted=show_deleted )}">Download this dataset</a>
%endif
1
0
galaxy-dist commit 11fb3bb5b250: Fix bug so that users not logged in can view accessible/published visualizations.
by commits-noreply@bitbucket.org 16 Jul '10
by commits-noreply@bitbucket.org 16 Jul '10
16 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User jeremy goecks <jeremy.goecks(a)emory.edu>
# Date 1279227905 14400
# Node ID 11fb3bb5b25058b55d927d4dfb39dab1112f290b
# Parent 067e34574408d42d18cbf91b78e2ee6046a4ef01
Fix bug so that users not logged in can view accessible/published visualizations.
--- a/lib/galaxy/web/controllers/visualization.py
+++ b/lib/galaxy/web/controllers/visualization.py
@@ -280,12 +280,11 @@ class VisualizationController( BaseContr
return return_dict
@web.expose
- @web.require_login("get item content asynchronously")
def get_item_content_async( self, trans, id ):
""" Returns item content in HTML format. """
# Get visualization, making sure it's accessible.
- visualization = self.get_visualization( trans, id, False, True)
+ visualization = self.get_visualization( trans, id, False, True )
if visualization is None:
raise web.httpexceptions.HTTPNotFound()
1
0
galaxy-dist commit 067e34574408: Fix bug so that fasta identifier produced by 'extract genomic dna' tool for GFF files is consistent with GFF coordinates.
by commits-noreply@bitbucket.org 16 Jul '10
by commits-noreply@bitbucket.org 16 Jul '10
16 Jul '10
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User jeremy goecks <jeremy.goecks(a)emory.edu>
# Date 1279227794 14400
# Node ID 067e34574408d42d18cbf91b78e2ee6046a4ef01
# Parent e56cc2ed66423b51249eb0bf3f5f9f7ccd774bce
Fix bug so that fasta identifier produced by 'extract genomic dna' tool for GFF files is consistent with GFF coordinates.
--- a/tools/extract/extract_genomic_dna.py
+++ b/tools/extract/extract_genomic_dna.py
@@ -158,6 +158,8 @@ def __main__():
if output_format == "fasta" :
l = len( sequence )
c = 0
+ if gff_format:
+ start, end = convert_bed_coords_to_gff( [ start, end ] )
fields = [dbkey, str( chrom ), str( start ), str( end ), strand]
meta_data = "_".join( fields )
fout.write( ">%s\n" % meta_data )
1
0