changeset 2:50f204c82159 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/taxonomy_krona_chart commit 70d4a2d1563e834d8394dce8017a1f0b7ad74f23
author iuc
date Wed, 02 Mar 2016 04:49:06 -0500
parents 09552faff9c0
children f11a04ed443b
files taxonomy_krona_chart.xml test-data/krona_test1.html
diffstat 2 files changed, 105 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/taxonomy_krona_chart.xml	Mon Aug 17 11:36:09 2015 -0400
+++ b/taxonomy_krona_chart.xml	Wed Mar 02 04:49:06 2016 -0500
@@ -1,7 +1,7 @@
-<tool id="taxonomy_krona_chart" name="Krona pie chart" version="2.0.0">
+<tool id="taxonomy_krona_chart" name="Krona pie chart" version="2.6.0">
   <description>from taxonomic profile</description>
   <requirements>
-    <requirement type="package" version="2.5">krona</requirement>
+    <requirement type="package" version="2.6">krona</requirement>
   </requirements>
   <version_command>ktImportText | sed -n 's/.*\(KronaTools [[:digit:].]\{1,\}\).*/\1/p'</version_command>
   <command>
@@ -10,10 +10,9 @@
   #if $type_of_data.input[0].is_of_type('taxonomy'):
 
         ktImportGalaxy
-        -a
         -d "${type_of_data.max_rank}"
         -n "${root_name}"
-        -o ${output}
+        -o "${output}"
         ${combine_inputs}
         #for $input_count, $input_dataset in enumerate( $type_of_data.input ):
             "${input_dataset},${input_count}"
@@ -22,9 +21,8 @@
   #else:
 
         ktImportText
-        -a
         -n "${root_name}"
-        -o ${output}
+        -o "${output}"
         ${combine_inputs}
         #for $input_count, $input_dataset in enumerate( $type_of_data.input ):
             "${input_dataset},${input_count}"
@@ -32,6 +30,7 @@
 
   #end if
 
+&& [ -d "${output}.files" ] && ( mkdir "${output.extra_files_path}" && mv "${output}.files" "${output.extra_files_path}/" )
   ]]>
 
   </command>
@@ -72,7 +71,7 @@
         <param name="input" type="data" format="tabular" multiple="True" label="Input file" help="Select a MetaPhlAn dataset" />
       </when>
     </conditional>
-    <param name="root_name" type="text" size="20" value="Root" label="Provide a name for the basal rank" help="-n; Otherwise it will simply be called &quot;Root&quot;"/>
+    <param name="root_name" type="text" value="Root" label="Provide a name for the basal rank" help="-n; Otherwise it will simply be called &quot;Root&quot;"/>
     <param name="combine_inputs" type="boolean" truevalue="-c" falsevalue="" selected="False" label="Combine data from multiple datasets?" help="-c; Combine data from each dataset, rather than creating separate datasets within the chart"/>
   </inputs>
   <outputs>
@@ -94,7 +93,7 @@
 This tool renders results of a metagenomic profiling as a zoomable pie chart using Krona_. 
 
 
-.. _Krona: http://sourceforge.net/p/krona/home/krona/
+.. _Krona: https://github.com/marbl/Krona/wiki
 
 ------
 
--- a/test-data/krona_test1.html	Mon Aug 17 11:36:09 2015 -0400
+++ b/test-data/krona_test1.html	Wed Mar 02 04:49:06 2016 -0500
@@ -76,7 +76,7 @@
 // 
 // FOR MORE INFORMATION VISIT
 // 
-// http://krona.sourceforge.net
+// https://github.com/marbl/Krona/wiki/
 // 
 //-----------------------------------------------------------------------------
 }
@@ -496,7 +496,77 @@
 			}
 		}
 		
-		if ( this != selectedNode && ! this.getCollapse() )
+		if ( this.radial )
+		{
+			var angleText = (angleStartCurrent + angleEndCurrent) / 2;
+			var radiusText = (gRadius + radiusInner) / 2;
+			
+			context.rotate(angleText);
+			context.beginPath();
+			context.moveTo(radiusText, -fontSize);
+			context.lineTo(radiusText, fontSize);
+			context.lineTo(radiusText + centerX, fontSize);
+			context.lineTo(radiusText + centerX, -fontSize);
+			context.closePath();
+			context.rotate(-angleText);
+			
+			if ( context.isPointInPath(mouseX - centerX, mouseY - centerY) )
+			{
+				var label = String(this.getPercentage()) + '%' + '   ' + this.name;
+				
+				if ( this.searchResultChildren() )
+			    {
+					label += searchResultString(this.searchResultChildren());
+				}
+				
+				if
+				(
+					Math.sqrt((mouseX - centerX) * (mouseX - centerX) + (mouseY - centerY) * (mouseY - centerY)) <
+					radiusText + measureText(label)
+				)
+				{
+					highlighted = true;
+				}
+			}
+		}
+		else
+		{
+		    for ( var i = 0; i < this.hiddenLabels.length; i++ )
+		    {
+		        var hiddenLabel = this.hiddenLabels[i];
+		        
+				context.rotate(hiddenLabel.angle);
+				context.beginPath();
+				context.moveTo(gRadius, -fontSize);
+				context.lineTo(gRadius, fontSize);
+				context.lineTo(gRadius + centerX, fontSize);
+				context.lineTo(gRadius + centerX, -fontSize);
+				context.closePath();
+				context.rotate(-hiddenLabel.angle);
+				
+				if ( context.isPointInPath(mouseX - centerX, mouseY - centerY) )
+				{
+					var label = String(hiddenLabel.value) + ' more';
+					
+					if ( hiddenLabel.search )
+				    {
+						label += searchResultString(hiddenLabel.search);
+					}
+					
+					if
+					(
+						Math.sqrt((mouseX - centerX) * (mouseX - centerX) + (mouseY - centerY) * (mouseY - centerY)) <
+						gRadius + fontSize + measureText(label)
+					)
+					{
+						highlighted = true;
+						break;
+					}
+				}
+			}
+		}
+		
+		if ( ! highlighted && this != selectedNode && ! this.getCollapse() )
 		{
 			context.beginPath();
 			context.arc(0, 0, radiusInner, angleStartCurrent, angleEndCurrent, false);
@@ -972,6 +1042,8 @@
 			}
 		}
 		
+		this.hiddenLabels = Array();
+		
 		if ( drawChildren )
 		{
 			// draw children
@@ -1122,6 +1194,14 @@
 		var textAngle = (angleStart + angleEnd) / 2;
 		var labelRadius = gRadius + fontSize;//(radiusInner + radius) / 2;
 		
+		var hiddenLabel = Array();
+		
+		hiddenLabel.value = value;
+		hiddenLabel.angle = textAngle;
+		hiddenLabel.search = hiddenSearchResults;
+		
+		this.hiddenLabels.push(hiddenLabel);
+		
 		drawTick(gRadius - fontSize * .75, fontSize * 1.5, textAngle);
 		drawTextPolar
 		(
@@ -2172,7 +2252,7 @@
 	{
 		var nameWidthOld = this.nameWidth;
 		
-		if ( ! this.radial )//&& fontSize != fontSizeLast )
+		if ( true || ! this.radial )//&& fontSize != fontSizeLast )
 		{
 			var dim = context.measureText(this.name);
 			this.nameWidth = dim.width;
@@ -3459,14 +3539,14 @@
 	}
 	else
 	{
-		logoImage = 'http://krona.sourceforge.net/img/logo.png';
+		logoImage = 'http://marbl.github.io/Krona/img/logo-small.png';
 	}
 	
 //	document.getElementById('options').style.fontSize = '9pt';
 	position = addOptionElement
 	(
 		position,
-'<a style="margin:2px" target="_blank" href="http://krona.sourceforge.net"><div style="display:inline-block;vertical-align:middle;background-color:#EEEEEE;border:1px solid gray;padding:2px;font-size:18px"><img style="vertical-align:middle;" src="' + logoImage + '"/><span style="vertical-align:middle;color:#555555">Krona</span></div></a><input type="button" id="back" value="&larr;" title="Go back (Shortcut: &larr;)"/>\
+'<a style="margin:2px" target="_blank" href="https://github.com/marbl/Krona/wiki"><img style="vertical-align:middle;" src="' + logoImage + '"/></a><input type="button" id="back" value="&larr;" title="Go back (Shortcut: &larr;)"/>\
 <input type="button" id="forward" value="&rarr;" title="Go forward (Shortcut: &rarr;)"/> \
 &nbsp;Search: <input type="text" id="search"/>\
 <input id="searchClear" type="button" value="x" onclick="clearSearch()"/> \
@@ -3586,7 +3666,7 @@
 	(
 		position + 5,
 '<input type="button" id="help" value="?"\
-onclick="window.open(\'https://sourceforge.net/p/krona/wiki/Browsing%20Krona%20charts/\', \'help\')"/>',
+onclick="window.open(\'https://github.com/marbl/Krona/wiki/Browsing%20Krona%20charts\', \'help\')"/>',
 'Help'
 	);
 }
@@ -4753,7 +4833,7 @@
 	{
 		document.body.innerHTML = '\
 <br/>This browser does not support HTML5 (see \
-<a href="http://sourceforge.net/p/krona/wiki/Browser%20support/">Browser support</a>).\
+<a href="https://github.com/marbl/Krona/wiki/Browser%20support">Browser support</a>).\
 	';
 		return;
 	}
@@ -4762,7 +4842,7 @@
 	{
 		document.body.innerHTML = '\
 <br/>This browser does not support HTML5 canvas text (see \
-<a href="http://sourceforge.net/p/krona/wiki/Browser%20support/">Browser support</a>).\
+<a href="https://github.com/marbl/Krona/wiki/Browser%20support">Browser support</a>).\
 	';
 		return;
 	}
@@ -6507,7 +6587,7 @@
  <body>
   <img id="hiddenImage" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oLCBQhNQwWVnsAAAAidEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOHqHdDAAABE0lEQVQYGQEIAff+AwAAABkAAAAAAAAA+gAAAAAAAAAAAAAAAAAAAAAAAAAMAwAAAAAAAAANAAAAAAAAAPoAAAAAAAAADAAAAAYAAAD0AwAAAPoAAAAAAAAAAAAAAPoAAAAMAAAADQAAAPoAAAD6AAAAAAAAAAAAAAAAAAAAAAwAAAAZAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABkAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGQAAAAwAAAAAAAAADAAAAAwAAAAABAAAAAAAAAAAAAAA8wAAAPQAAAAAAAAAAAAAAA0AAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZRssKC5OpXwYAAAAASUVORK5CYII=" style="display:none"/>
   <img id="loadingImage" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" style="display:none"/>
-  <img id="logo" src="data:image/png;base64,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" style="display:none"/>
+  <img id="logo" src="data:image/png;base64,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" style="display:none"/>
   <noscript>Javascript must be enabled to view this page.</noscript>
   <div style="display:none">
   <krona collapse="true" key="true">
@@ -6532,47 +6612,23 @@
     <rank><val>phylum</val></rank>
     <count><val>94</val></count>
     <node name="Craniata">
+     <rank><val>subphylum</val></rank>
      <count><val>94</val></count>
-     <rank><val>subphylum</val></rank>
      <node name="Gnathostomata">
       <count><val>94</val></count>
       <rank><val>superclass</val></rank>
       <node name="Mammalia">
+       <count><val>94</val></count>
        <rank><val>class</val></rank>
-       <count><val>94</val></count>
        <node name="Euarchontoglires">
+        <rank><val>superorder</val></rank>
         <count><val>94</val></count>
-        <rank><val>superorder</val></rank>
         <node name="Rodentia">
-         <count><val>94</val></count>
+         <members>
+          <vals><val>IA_1-144417</val><val>IA_1-278966</val><val>IA_1-314709</val><val>IA_1-324951</val><val>IA_1-27817</val><val>IA_1-95255</val><val>IA_1-104173</val><val>IA_1-135979</val><val>IA_1-139090</val><val>IA_1-139090</val><val>IA_1-139090</val><val>IA_1-144996</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-161439</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-216231</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-237681</val><val>IA_1-250166</val><val>IA_1-254274</val><val>IA_1-254274</val><val>IA_1-27817</val><val>IA_1-29000</val><val>IA_1-291427</val><val>IA_1-291427</val><val>IA_1-293054</val><val>IA_1-293054</val><val>IA_1-296315</val><val>IA_1-296315</val><val>IA_1-310974</val><val>IA_1-310974</val><val>IA_1-311282</val><val>IA_1-311282</val><val>IA_1-322295</val><val>IA_1-42600</val><val>IA_1-45102</val><val>IA_1-45102</val><val>IA_1-48105</val><val>IA_1-48105</val><val>IA_1-57254</val><val>IA_1-61975</val><val>IA_1-61975</val><val>IA_1-66943</val><val>IA_1-68288</val><val>IA_1-82334</val><val>IA_1-95526</val></vals>
+         </members>
          <rank><val>order</val></rank>
-         <node name="Sciurognathi">
-          <count><val>94</val></count>
-          <rank><val>suborder</val></rank>
-          <node name="Muridae">
-           <count><val>94</val></count>
-           <rank><val>family</val></rank>
-           <node name="Murinae">
-            <rank><val>subfamily</val></rank>
-            <count><val>94</val></count>
-            <node name="Rattus">
-             <rank><val>genus</val></rank>
-             <count><val>94</val></count>
-             <members>
-              <vals><val>IA_1-296315</val><val>IA_1-322295</val></vals>
-             </members>
-             <unassigned><val>2</val></unassigned>
-             <node name="Rattus norvegicus">
-              <rank><val>species</val></rank>
-              <count><val>92</val></count>
-              <members>
-               <vals><val>IA_1-144417</val><val>IA_1-278966</val><val>IA_1-314709</val><val>IA_1-324951</val><val>IA_1-27817</val><val>IA_1-95255</val><val>IA_1-104173</val><val>IA_1-135979</val><val>IA_1-139090</val><val>IA_1-139090</val><val>IA_1-139090</val><val>IA_1-144996</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-160446</val><val>IA_1-161439</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-190855</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-205154</val><val>IA_1-216231</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-236286</val><val>IA_1-237681</val><val>IA_1-250166</val><val>IA_1-254274</val><val>IA_1-254274</val><val>IA_1-27817</val><val>IA_1-29000</val><val>IA_1-291427</val><val>IA_1-291427</val><val>IA_1-293054</val><val>IA_1-293054</val><val>IA_1-296315</val><val>IA_1-310974</val><val>IA_1-310974</val><val>IA_1-311282</val><val>IA_1-311282</val><val>IA_1-42600</val><val>IA_1-45102</val><val>IA_1-45102</val><val>IA_1-48105</val><val>IA_1-48105</val><val>IA_1-57254</val><val>IA_1-61975</val><val>IA_1-61975</val><val>IA_1-66943</val><val>IA_1-68288</val><val>IA_1-82334</val><val>IA_1-95526</val></vals>
-              </members>
-             </node>
-            </node>
-           </node>
-          </node>
-         </node>
+         <count><val>94</val></count>
         </node>
        </node>
       </node>
@@ -6582,8 +6638,8 @@
   </node>
  </node>
  <node name="Bacteria">
+  <count><val>6</val></count>
   <rank><val>superkingdom</val></rank>
-  <count><val>6</val></count>
   <node name="Proteobacteria">
    <count><val>6</val></count>
    <rank><val>phylum</val></rank>
@@ -6597,8 +6653,8 @@
       <count><val>6</val></count>
       <rank><val>family</val></rank>
       <node name="Shigella">
+       <count><val>6</val></count>
        <rank><val>genus</val></rank>
-       <count><val>6</val></count>
        <node name="Shigella flexneri">
         <count><val>6</val></count>
         <rank><val>species</val></rank>