changeset 0:dd53658a0843 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/tsne commit 62172bde663955b6c3cb86dc22c47739824f014a
author iuc
date Tue, 22 Aug 2017 07:38:53 -0400
parents
children 53cfe6f313b3
files rtsne.xml test-data/Rplot.pdf test-data/mtcars.txt
diffstat 3 files changed, 155 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtsne.xml	Tue Aug 22 07:38:53 2017 -0400
@@ -0,0 +1,122 @@
+<tool id="tsne" name="rtsne" version="0.0.2">
+    <requirements>
+        <requirement type="package">r-getopt</requirement>
+        <requirement type="package">r-rtsne</requirement>
+        <requirement type="package">r-ggplot2</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+cat '$script' &&
+Rscript '$script' &&
+mv output_plot.pdf $output1
+    ]]></command>
+    <configfiles>
+        <configfile name="script"><![CDATA[
+## Setup R error handling to go to stderr
+options(show.error.messages=F, error=function(){cat(geterrmessage(),file=stderr());q("no",1,F)})
+loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+## Import library
+library(Rtsne)
+library(ggplot2)
+
+all <- read.delim('$input1', sep='\t', header=TRUE)
+
+data = $data
+name = $name
+
+#if $transform == "none"
+    log.all <- all[, data:ncol(all)]
+#elif $transform == "log2"
+    log.all <- log2(all[, data:ncol(all)])
+#elsif $transform == "log2plus1"
+    log.all <- log2(1+all[, data:ncol(all)])
+#elif $transform == "log10"
+    log.all <- log(all[, data:ncol(all)])
+#elif $transform == "log10plus1"
+    log.all <- log(1+all[, data:ncol(all)])
+#end if
+
+## Show/hide legend
+#if $legend == "yes"
+    gg_legend = NULL
+#else
+    gg_legend = theme(legend.position="none")
+#end if
+
+set.seed($seed) ## Sets seed for reproducibility
+tsne_out <- Rtsne(as.matrix(log.all[,1:ncol(log.all)]), perplexity=$perp, theta=$theta) ## Run TSNE
+
+embedding <- as.data.frame(tsne_out\$Y)
+embedding\$Class <- as.factor(sub("Class_", "", all[,name]))
+
+ggplot(embedding, aes(x=V1, y=V2, color=Class)) +
+     geom_point(size=1.25) + 
+     gg_legend +
+     xlab("") +
+     ylab("") +
+     ggtitle('$title')
+
+ggsave(file='output_plot.pdf')
+dev.off()
+
+        ]]></configfile>
+    </configfiles>
+
+    <inputs>
+        <param name="input1" type="data" format="tabular"
+            label="Tabular input dataset"
+            help="Input should have column headers with an identifier column followed by consencutive numerical columns used for clustering"/>
+        <param name="title" type="text" format="txt" label="Plot title"/> 
+        <param name="seed" value="42.0" type="float" label="Seed value for reproducibiity" help="Set to 42 as default" />
+        <param name="perp" value="10.0" type="float" label="perplexity"/> 
+        <param name="theta" value="1.0" type="float" label="theta"/> 
+        <param name="name" value="1" type="data_column" data_ref="input1"
+            label="The column with the ID to use in grouping (or just an ID if plotting invdividuals)"/> 
+        <param name="data" value="2" type="data_column" data_ref="input1"
+            label="The column that contains the first numerical data"/> 
+        <param name="transform" type="select" label="Advanced - log transformation">
+            <option value="none">Plot the data as it is</option>
+            <option value="log2">Log2(value) transform my data</option>
+            <option value="log2plus1">Log2(value+1) transform my data</option>
+            <option value="log10">Log10(value) transform my data</option>
+            <option value="log10plus1">Log10(value+1) transform my data</option>
+        </param>
+
+        <param name="legend" type="select" label="Legend options">
+            <option value="yes">Include legend on plot</option>
+            <option value="no">Hide legend</option>
+        </param>
+    </inputs>
+    <outputs>
+        <data name="output1" format="pdf" from_work_dir="Rplot.pdf"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="input1" value="mtcars.txt"/>
+            <param name="transform" value="none"/>
+            <param name="perp" value="10.0"/>
+            <output name="output1" file="Rplot.pdf"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+T-distributed Stochastic Neighbor Embedding implementation by Van der Maaten (see <https://github.com/lvdmaaten/bhtsne/>
+for more information on the original implementation).
+
+Your data should be in tabular format. Objects in rows will be clustered according to the observations in columns.
+Labels for objects can be assigned in the tool form by providing the column number of the identifier you wish to use.
+Additionaly, the first column containing numeric data should be provided to the tool form. 
+
+    ]]></help>
+    <citations>
+        <citation type="bibtex">
+@Manual{,
+    title = {{Rtsne}: T-Distributed Stochastic Neighbor Embedding using
+      Barnes-Hut Implementation},
+    author = {Jesse H. Krijthe},
+    year = {2015},
+    note = {R package version 0.13},
+    url = {https://github.com/jkrijthe/Rtsne},
+  }
+        </citation>
+    </citations>
+</tool>
Binary file test-data/Rplot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mtcars.txt	Tue Aug 22 07:38:53 2017 -0400
@@ -0,0 +1,33 @@
+model	mpg	cyl	disp	hp	drat	wt	qsec	vs	am	gear	carb
+Mazda RX4	21	6	160	110	3.9	2.62	16.46	0	1	4	4
+Mazda RX4 Wag	21	6	160	110	3.9	2.875	17.02	0	1	4	4
+Datsun 710	22.8	4	108	93	3.85	2.32	18.61	1	1	4	1
+Hornet 4 Drive	21.4	6	258	110	3.08	3.215	19.44	1	0	3	1
+Hornet Sportabout	18.7	8	360	175	3.15	3.44	17.02	0	0	3	2
+Valiant	18.1	6	225	105	2.76	3.46	20.22	1	0	3	1
+Duster 360	14.3	8	360	245	3.21	3.57	15.84	0	0	3	4
+Merc 240D	24.4	4	146.7	62	3.69	3.19	20	1	0	4	2
+Merc 230	22.8	4	140.8	95	3.92	3.15	22.9	1	0	4	2
+Merc 280	19.2	6	167.6	123	3.92	3.44	18.3	1	0	4	4
+Merc 280C	17.8	6	167.6	123	3.92	3.44	18.9	1	0	4	4
+Merc 450SE	16.4	8	275.8	180	3.07	4.07	17.4	0	0	3	3
+Merc 450SL	17.3	8	275.8	180	3.07	3.73	17.6	0	0	3	3
+Merc 450SLC	15.2	8	275.8	180	3.07	3.78	18	0	0	3	3
+Cadillac Fleetwood	10.4	8	472	205	2.93	5.25	17.98	0	0	3	4
+Lincoln Continental	10.4	8	460	215	3	5.424	17.82	0	0	3	4
+Chrysler Imperial	14.7	8	440	230	3.23	5.345	17.42	0	0	3	4
+Fiat 128	32.4	4	78.7	66	4.08	2.2	19.47	1	1	4	1
+Honda Civic	30.4	4	75.7	52	4.93	1.615	18.52	1	1	4	2
+Toyota Corolla	33.9	4	71.1	65	4.22	1.835	19.9	1	1	4	1
+Toyota Corona	21.5	4	120.1	97	3.7	2.465	20.01	1	0	3	1
+Dodge Challenger	15.5	8	318	150	2.76	3.52	16.87	0	0	3	2
+AMC Javelin	15.2	8	304	150	3.15	3.435	17.3	0	0	3	2
+Camaro Z28	13.3	8	350	245	3.73	3.84	15.41	0	0	3	4
+Pontiac Firebird	19.2	8	400	175	3.08	3.845	17.05	0	0	3	2
+Fiat X1-9	27.3	4	79	66	4.08	1.935	18.9	1	1	4	1
+Porsche 914-2	26	4	120.3	91	4.43	2.14	16.7	0	1	5	2
+Lotus Europa	30.4	4	95.1	113	3.77	1.513	16.9	1	1	5	2
+Ford Pantera L	15.8	8	351	264	4.22	3.17	14.5	0	1	5	4
+Ferrari Dino	19.7	6	145	175	3.62	2.77	15.5	0	1	5	6
+Maserati Bora	15	8	301	335	3.54	3.57	14.6	0	1	5	8
+Volvo 142E	21.4	4	121	109	4.11	2.78	18.6	1	1	4	2