changeset 4:5d5b14dbd092 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/raceid3 commit 5d7c4cd914295a81d42bf8baaad4981c23a83059"
author iuc
date Mon, 12 Aug 2019 12:59:06 -0400
parents d55e29ac02e3
children 7608d5faee41
files macros.xml macros_cheetah.xml macros_cluster.xml macros_inspectclusters.xml macros_inspecttrajectories.xml macros_trajectory.xml raceid_filtnormconf.xml scripts/cluster.R scripts/clusterinspect.R test-data/matrix.genelist test-data/matrix.pdf test-data/matrix.rdat test-data/out_diffgene_multiple.pdf test-data/out_traject_inspect_fateid.tabular
diffstat 13 files changed, 451 insertions(+), 1393 deletions(-) [+]
line wrap: on
line diff
--- a/macros.xml	Mon Apr 15 17:55:17 2019 -0400
+++ b/macros.xml	Mon Aug 12 12:59:06 2019 -0400
@@ -1,5 +1,4 @@
 <macros>
-    <token name="@GET_VERSION@"><![CDATA[ 2>&1 | head -1 | cut -d' ' -f 2 ]]></token>
     <token name="@STRING2VECTOR@">
 string2numericvector = function(string){
     #' Converts a string to a valid vector
@@ -27,7 +26,25 @@
 }
     </token>
     <token name="@VERSION_RACEID@">3</token>
-    <token name="@VERSION_PACKAGE@">0.2</token>
+    <token name="@VERSION_WRAPPER@">1</token>
+
+    <macro name="version_command_config" token_prog="temp" token_cheetah="temp2" token_out="2&#62; '$outlog'">
+        <version_command><![CDATA[
+Rscript '$__tool_directory__/scripts/@PROG@' 2>&1 | head -1 | cut -d' ' -f 2
+        ]]></version_command>
+        <command detect_errors="exit_code"><![CDATA[
+Rscript '$__tool_directory__/scripts/@PROG@' '$userconf' @OUT@
+]]>
+        </command>
+        <configfiles>
+            <configfile name="userconf" ><![CDATA[
+@STRING2VECTOR@
+
+@@CHEETAH@@
+]]></configfile>
+        </configfiles>
+    </macro>
+
     <macro name="requirements" >
         <requirements>
             <requirement type="package" version="0.1.1">r-raceid</requirement>
@@ -69,36 +86,6 @@
             <citation type="doi">10.1038/nmeth.4662</citation>
         </citations>
     </macro>
-    <macro name="select_cells" token_sectionname="@SECTIONNAME@" token_sectiontitle="@SECTIONTITLE@" >
-        <section name="@SECTIONNAME@" title="@SECTIONTITLE@" expanded="true" >
-            <param name="name_set" type="text" optional="true" label="Name of Set" >
-                <!-- Aname, Bname -->
-                <expand macro="sanitize_title" />
-            </param>
-            <conditional name="meth" >
-                <param name="type" type="select" label="Selection method" >
-                    <option value="cln" selected="true">Cluster Numbers</option>
-                    <option value="regex" >Regular Expression</option>
-                    <option value="manual" >Manual Selection</option>
-                </param>
-                <when value="cln" >
-                    <param name="selector" type="text" value="" label="List of clusters" >
-                        <expand macro="sanitize_numeric_vector" />
-                    </param>
-                </when>
-                <when value="regex" >
-                    <param name="selector" type="text" value="" label="Regular Expression to select gene names" >
-                        <expand macro="sanitize_regex" />
-                    </param>
-                </when>
-                <when value="manual" >
-                    <param name="selector" type="text" value="" label="List of genes" >
-                        <expand macro="sanitize_string_vector" />
-                    </param>
-                </when>
-            </conditional>
-        </section>
-    </macro>
     <!-- Sanitizers -->
     <macro name="sanitize_title">
         <sanitizer invalid_char="">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros_cheetah.xml	Mon Aug 12 12:59:06 2019 -0400
@@ -0,0 +1,377 @@
+<macros>
+    <token name="@FILTNORM_CHEETAH@"><![CDATA[
+## Perform do.filter
+use.filtnormconf = TRUE
+
+## Perform do.cluster, do.outlier, do.clustmap, mkgenelist
+use.cluster = FALSE
+
+in.table = read.table(
+    '${intable}',
+    stringsAsFactors = F,
+    na.strings=c("NA", "-", "?", "."),
+    sep='\t',
+    header=TRUE,
+    row.names=1
+)
+
+## Hidden flag to use test data instead
+## see: test-data/use.intestinal
+
+use.test.data = (names(in.table)[1] == "test")
+
+sc = NULL
+if (use.test.data) {
+  sc = SCseq(intestinalData)
+  message("Loading test data from library")
+} else {
+  sc = SCseq(in.table)
+}
+
+
+filt = formals(filterdata)
+filt.ccc = formals(CCcorrect)
+filt.use.ccorrect = FALSE
+filt.lbatch.regexes = NULL
+
+filt.geqone = as.logical( '$filt.hist_geq_one' )
+filt\$mintotal = as.integer( '$filt.mintotal' )
+filt\$minexpr = as.integer( '$filt.minexpr' )
+filt\$minnumber = as.integer( '$filt.minnumber' )
+#if str($filt.use.def) == "no":
+filt\$knn = as.integer( '$filt.use.knn' )
+filt\$ccor = as.numeric( '$filt.use.ccor' )
+filt\$bmode = as.character( '$filt.use.bmode' )
+    #if $filt.use.LBatch_regexes:
+filt.lbatch.regexes = string2textvector( '$filt.use.LBatch_regexes' )
+    #end if
+    #if $filt.use.CGenes:
+filt\$CGenes = string2textvector( '$filt.use.CGenes' )
+    #end if
+    #if $filt.use.FGenes:
+filt\$FGenes = string2textvector( '$filt.use.FGenes' )
+    #end if
+    #if str($filt.use.ccc.use) == "yes"
+filt.use.ccorrect = TRUE
+        #if $filt.use.ccc.vset:
+filt.ccc\$vset = string2textvector( '$filt.use.ccc.vset' )
+        #end if
+        #if $filt.use.ccc.ncomp:
+filt.ccc\$nComp = as.integer( '$filt.use.ccc.ncomp' )
+        #end if
+filt.ccc\$pvalue = as.numeric( '$filt.use.ccc.pvalue' )
+filt.ccc\$quant = as.numeric( '$filt.use.ccc.quant' )
+filt.ccc\$dimR = as.logical( '$filt.use.ccc.dimr' )
+filt.ccc\$mode = as.character( '$filt.use.ccc.mode.value' )
+filt.ccc\$logscale = as.logical( '$filt.use.ccc.logscale' )
+    #end if
+#end if
+
+out.pdf = '${outpdf}'
+out.rdat = '${outrdat}'
+out.table = '${outtable}'
+
+]]></token>
+    <token name="@CLUSTER_CHEETAH@"><![CDATA[
+
+in.rdat = readRDS('${inputrds}')
+
+sc = in.rdat
+
+## Perform do.filter
+use.filtnormconf = FALSE
+
+## Perform do.cluster, do.outlier, do.clustmap, mkgenelist
+use.cluster = TRUE
+
+
+clust.compdist = formals(compdist)
+clust.clustexp = formals(clustexp)
+clust.compdist\$metric = as.character( '$clust.metric' )
+clust.clustexp\$FUNcluster = as.character( '$clust.funcluster' )
+
+#if str($clust.use.def) == "no":
+
+clust.compdist\$FSelect = as.logical( '$clust.use.fselect' )
+    #if $clust.use.knn:
+clust.compdist\$knn = as.integer( '$clust.use.knn' )
+    #end if
+clust.clustexp\$sat = as.logical( '$clust.use.sat' )
+    #if $clust.use.samp:
+clust.clustexp\$samp = as.integer( '$clust.use.samp' )
+    #end if
+    #if $clust.use.cln:
+clust.clustexp\$cln = as.integer( '$clust.use.cln' )
+clust.clustexp\$clustnr = as.integer( '$clust.use.clustnr' )
+clust.clustexp\$bootnr = as.integer( '$clust.use.bootnr' )
+##clust.clustexp\$rseed = as.integer( '$clust.use.rseed' )
+    #end if
+#end if
+
+outlier.use.randomforest = FALSE
+outlier.findoutliers = formals(findoutliers)
+outlier.clustheatmap = formals(clustheatmap)
+outlier.rfcorrect = formals(rfcorrect)
+
+outlier.findoutliers\$outminc = as.integer( '$outlier.outminc' )
+outlier.findoutliers\$outlg = as.integer( '$outlier.outlg' )
+outlier.rfcorrect\$final = as.logical( '$outlier.final' )
+
+#if str($outlier.use.def) == "no":
+    #if $outlier.use.nbtree:
+outlier.rfcorrect\$nbtree = as.integer( '$outlier.use.nbtree' )
+    #end if
+outlier.findoutliers\$probthr = as.numeric( '$outlier.use.probthr' )
+outlier.findoutliers\$outdistquant = as.numeric( '$outlier.use.outdistquant' )
+##outlier.rfcorrect\$rfseed = as.integer( '$outlier.use.rfseed' )
+outlier.rfcorrect\$nbfactor = as.integer( '$outlier.use.nbfactor' )
+#end if
+
+cluster.comptsne = formals(comptsne)
+cluster.compfr = formals(compfr)
+
+cluster.comptsne\$perplexity = as.integer( '$tsne.perplexity' )
+cluster.compfr\$knn = as.integer( '$tsne.knn' )
+#if str($tsne.use.def) == "no":
+cluster.comptsne\$initial_cmd = as.logical( '$tsne.use.initial_cmd' )
+cluster.comptsne\$rseed = as.integer( '$tsne.use.rseed_tsne' )
+cluster.compfr\$rseed = as.integer( '$tsne.use.rseed_fr' )
+#end if
+
+genelist.tablelim = as.integer( '$extra.tablelim' )
+genelist.plotlim = as.integer( '$extra.plotlim' )
+genelist.foldchange = as.integer( '$extra.foldchange' )
+genelist.pvalue = as.numeric( '$extra.pvalue' )
+
+out.pdf = '${outpdf}'
+out.rdat = '${outrdat}'
+out.genelist = '${outgenelist}'
+out.assignments = '${outassignments}'
+out.log = '${outlog}'
+
+]]>
+    </token>
+    <token name="@INSPECTCLUSTERS_CHEETAH@"><![CDATA[
+in.rdat = readRDS('${inputrds}')
+
+perform.plotting = FALSE
+perform.symbolmap = FALSE
+perform.genesofinterest = FALSE
+perform.diffgene = FALSE
+
+#if str($plotgen.do_opt) == "yes":
+perform.plotting = TRUE
+plotting.cln = string2numericvector( '$plotgen.clusts_plot' )
+#end if
+
+#if str($plotsym.do_opt) == "yes":
+perform.symbolmap = TRUE
+plotsym = formals(plotsymbolsmap)
+plotsym.use.typeremoveregex = NULL
+plotsym.use.typeremoveregex.subselect = NULL
+plotsym.use.typeremoveregex = as.character( '$plotsym.types_regex' )
+    #if str($plotsym.use.def) == "no":
+plotsym\$fr = as.logical( '$plotsym.use.fr' )
+        #if $plotsym.use.subset_regex:
+plotsym.use.typeremoveregex.subselect = as.character( '$plotsym.use.subset_regex' )
+        #end if
+    #end if
+#end if
+
+#if str($gois.do_opt) == "yes":
+perform.genesofinterest = TRUE
+plotexp = formals(plotexpmap)
+plotmarkg = formals(plotmarkergenes)
+
+inspect.goi.use.genes = string2textvector( '$gois.inspect_goi_genes' )
+plotexp\$g = inspect.goi.use.genes
+plotmarkg\$genes = inspect.goi.use.genes
+
+    #if $gois.inspect_goi_cells:
+inspect.goi.use.cells = as.character( '$gois.inspect_goi_cells' )
+plotexp\$cells = inspect.goi.use.cells
+plotmarkg\$cells = inspect.goi.use.cells
+    #end if
+    #if str($gois.use.def) == "no":
+inspect.goi.use.imputed = as.logical( '$gois.use.inspect_goi_imputed' )
+plotexp\$imputed = inspect.goi.use.imputed
+plotmarkg\$imputed = inspect.goi.use.imputed
+        #if $gois.use.plotmarkg_cl
+plotmarkg\$cl = string2numericvector( '$gois.use.plotmarkg_cl' )
+        #end if
+        #if $gois.use.plotmarkg_cap
+plotmarkg\$cap = as.integer( '$gois.use.plotmarkg_cap' )
+        #end if
+        #if $gois.use.plotmarkg_flo
+plotmarkg\$flo = as.integer( '$gois.use.plotmarkg_flo' )
+        #end if
+        #if $gois.use.plotmarkg_samples
+plotmarkg\$samples = as.character( '$gois.use.plotmarkg_samples' )
+        #end if
+        #if $gois.use.plotexp_n
+plotexp\$n = as.character( '$gois.use.plotexp_n' )
+        #end if
+plotmarkg\$cthr = as.integer( '$gois.use.plotmarkg_cthr' )
+plotmarkg\$order.cells = as.logical( '$gois.use.plotmarkg_order_cells' )
+plotmarkg\$aggr = as.logical( '$gois.use.plotmarkg_aggr' )
+plotmarkg\$norm = as.logical( '$gois.use.plotmarkg_norm' )
+plotmarkg\$cluster_cols = as.logical( '$gois.use.plotmarkg_cluster_cols' )
+plotmarkg\$cluster_rows = as.logical( '$gois.use.plotmarkg_cluster_rows' )
+plotmarkg\$cluster_set = as.logical( '$gois.use.plotmarkg_cluster_set' )
+    #end if
+#end if
+
+#if str($diffgtest.do_opt) == "yes":
+plotdiffg = formals(plotdiffgenesnb)
+
+perform.diffgene = TRUE
+plotdiffg\$Aname = '$diffgtest.set_a.name_set'
+plotdiffg\$Bname = '$diffgtest.set_b.name_set'
+
+gfdat.A.use = list()
+gfdat.B.use = list()
+
+gfdat.A.use\$manual = NULL
+gfdat.A.use\$regex = NULL
+gfdat.A.use\$cln = NULL
+gfdat.B.use\$manual = NULL
+gfdat.B.use\$regex = NULL
+gfdat.B.use\$cln = NULL
+
+    #if str($diffgtest.set_a.meth.type) == "cln":
+gfdat.A.use\$cln = string2numericvector( '$diffgtest.set_a.meth.selector' )
+    #else if str($diffgtest.set_a.meth.type) == "regex":
+gfdat.A.use\$regex = as.character( '$diffgtest.set_a.meth.selector' )
+    #else if str($diffgtest.set_a.meth.type) == "manual":
+gfdat.A.use\$manual = string2textvector( '$diffgtest.set_a.meth.selector' )
+    #end if
+
+    #if str($diffgtest.set_b.meth.type) == "cln":
+gfdat.B.use\$cln = string2numericvector( '$diffgtest.set_b.meth.selector' )
+    #else if str($diffgtest.set_b.meth.type) == "regex":
+gfdat.B.use\$regex = as.character( '$diffgtest.set_b.meth.selector' )
+    #else if str($diffgtest.set_b.meth.type) == "manual":
+gfdat.B.use\$manual = string2textvector( '$diffgtest.set_b.meth.selector' )
+    #end if
+
+    #if str($diffgtest.use.def) == "no":
+plotdiffg\$pthr = as.numeric( '$diffgtest.use.plotdiffg_pthr' )
+plotdiffg\$padj = as.logical( '$diffgtest.use.plotdiffg_padj' )
+plotdiffg\$lthr = as.integer( '$diffgtest.use.plotdiffg_lthr' )
+plotdiffg\$show_names = as.logical( '$diffgtest.use.plotdiffg_show_names' )
+        #if $diffgtest.use.plotdiffg_mthr
+plotdiffg\$mthr = as.numeric( '$diffgtest.use.plotdiffg_mthr' )
+        #end if
+    #end if
+#end if
+
+out.pdf='${outpdf}'
+    ]]></token>
+    <token name="@TRAJECTORY_CHEETAH@"><![CDATA[
+
+in.rdat = readRDS('${inputrds}')
+
+pstc.projc = formals(projcells)
+pstc.projc\$knn = as.integer( '$projcell.knn' )
+pstc.projc\$cthr = as.integer( '$projcell.cthr' )
+#if str($projcell.use.def) == "no":
+pstc.projc\$nmode = as.logical( '$projcell.use.nmode' )
+pstc.projc\$fr = as.logical( '$projcell.use.fr' )
+#end if
+
+pstc.projb = formals(projback)
+pstc.projb\$pdishuf = as.integer( '$projback.pdishuf' )
+#if str($projback.use.def) == "no":
+pstc.projb\$fast = as.logical( '$projback.use.fast' )
+pstc.projb\$rseed = as.integer( '$projback.use.rseed' )
+#end if
+
+pstc.comppval = formals(comppvalue)
+pstc.comppval\$pthr = as.numeric( '$comppval.pthr' )
+pstc.comppval\$sensitive = as.logical( '$comppval.sensitive' )
+
+pstc.plotgraph = formals(plotgraph)
+pstc.plotgraph\$showCells = as.logical( '$plotgraph.showcells' )
+pstc.plotgraph\$scthr = as.numeric( '$plotgraph.scthr' )
+#if str($plotgraph.use.def) == "no":
+pstc.plotgraph\$showTsne = as.logical( '$plotgraph.use.showtsne' )
+pstc.plotgraph\$tp = as.numeric( '$plotgraph.use.tp' )
+#end if
+
+pstc.compscore = formals(compscore)
+pstc.compscore\$nn = as.integer( '$compscore.nn' )
+pstc.compscore\$scthr = as.numeric( '$compscore.scthr' )
+
+out.pdf='${outpdf}'
+out.rdat='${outrdat}'
+    ]]></token>
+    <token name="@INSPECTTRAJECTORIES_CHEETAH@"><![CDATA[
+in.rdat = readRDS('${inputrds}')
+
+perform.stemID = FALSE
+perform.fateID = FALSE
+perform.fateID.sominspect = FALSE
+
+#if str($trjsid.basic.doit) == "yes"
+perform.stemID = TRUE
+trjsid.getproj = formals(getproj)
+
+trjsid.numdiffgenes = 10
+trjsid.getproj\$i = as.integer( '$trjsid.basic.i' )
+trjsid.branchcells.ijk = string2numericvector( '$trjsid.basic.br' )
+
+   #if str($trjsid.basic.use.def) == "no":
+
+trjsid.getproj\$zscore = as.logical( '$trjsid.basic.use.zscore' )
+trjsid.numdiffgenes = as.integer( '$trjsid.basic.use.ndiffgenes' )
+
+   #end if
+#end if
+
+#if str($trjfid.basic.doit) == "yes":
+perform.fateID = TRUE
+trjfid.cellsfrom = formals(cellsfromtree)
+trjfid.filterset = formals(filterset)
+trjfid.getsom = formals(getsom)
+trjfid.procsom = formals(procsom)
+trjfid.plotheat = list()
+
+trjfid.cellsfrom\$z = string2numericvector( '$trjfid.basic.cellsfromz' )
+    #if str($trjfid.basic.use.def) == "no":
+
+trjfid.filterset\$minexpr = as.integer( '$trjfid.basic.use.filterset_minexpr' )
+trjfid.filterset\$minnumber = as.integer( '$trjfid.basic.use.filterset_minnumber' )
+trjfid.getsom\$nb = as.numeric( '$trjfid.basic.use.getsom_nb' )
+trjfid.getsom\$alpha = as.numeric( '$trjfid.basic.use.getsom_alpha' )
+trjfid.procsom\$corthr = as.numeric( '$trjfid.basic.use.procsom_corthr' )
+trjfid.procsom\$minsom = as.integer( '$trjfid.basic.use.procsom_minsom' )
+trjfid.plotheat\$xgrid = as.logical( '$trjfid.basic.use.plotheat_xgrid' )
+trjfid.plotheat\$ygrid = as.logical( '$trjfid.basic.use.plotheat_ygrid' )
+trjfid.plotheat\$xlab = as.logical( '$trjfid.basic.use.plotheat_xlab' )
+    #end if
+
+    #if str($trjfid.basic.som.doit) == "yes":
+perform.fateID.sominspect = TRUE
+
+trjfidsomi = list()
+        #if str($trjfid.basic.som.use_genes.typer) == "genelist":
+trjfidsomi.use.genes = string2textvector( '$trjfid.basic.som.use_genes.use_genes' )
+        #else if str($trjfid.basic.som.use_genes.typer) == "cln":
+trjfidsomi.use.genes = as.integer( '$trjfid.basic.som.use_genes.use_genes' )
+        #end if
+
+trjfidsomi.use.types = '$trjfid.basic.som.use_types'
+trjfidsomi\$name = '$trjfid.basic.som.title'
+
+        #if str($trjfid.basic.som.use.def) == "no":
+trjfidsomi\$cluster = as.logical( '$trjfid.basic.som.use.cluster' )
+trjfidsomi\$alpha = as.numeric( '$trjfid.basic.som.use.alpha' )
+        #end if
+    #end if
+#end if
+
+out.pdf = '${outpdf}'
+out.diffgenes = '${outdiffgenes}'
+
+]]></token>
+</macros>
--- a/macros_cluster.xml	Mon Apr 15 17:55:17 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,404 +0,0 @@
-<macros>
-    <macro name="cluster_inputs" >
-        <param name="intable" type="data" format="tabular" label="Count Matrix" />
-        <section name="filt" title="Filtering" expanded="true" >
-            <param name="mintotal" type="integer" min="1" value="3000" label="Min Transcripts" help="The minimum total transcripts required. Cells with less than mintotal transcripts are filtered out." />
-            <param name="minexpr" type="integer" min="1" value="5" label="Min Expression" help="The minimum required transcript counts of a gene in the minimum number of cells (below)" />
-            <param name="minnumber" type="integer" min="1" value="5" label="Min Cells" help="The minumum number of cells for gene expression to be counted"  />
-            <expand macro="use_defaults_no" >
-                <param name="knn" type="integer" min="0" value="10" label="K-nearest-neighbours" help="Number of nearest neighbors used to infer corresponding cell types in different batches" />
-                <param name="CGenes" type="text" optional="true" label="CGenes" help="Filter out genes with correlated expression for cell type inference" >
-                    <expand macro="sanitize_string_vector" />
-                </param>
-                <param name="FGenes" type="text" optional="true" label="FGenes" help="Explicitly filter out genes for cell type inference" >
-                    <expand macro="sanitize_string_vector" />
-                </param>
-                <param name="LBatch_regexes" type="text" optional="true" label="Batch Regex" help="List of regexes to capture experimental batches for batch effect correction" >
-                    <expand macro="sanitize_string_vector" />
-                </param>
-                <param name="ccor" type="float" value="0.4" label="CCor" help="Correlation coefficient used as a threshold for determining correlated genes" />
-                <param name="bmode" type="select" label="Batch Mode" help="Method to regress out batch effects" >
-                    <option value="RaceID" selected="true" >RaceID</option>
-                    <option value="scran">SCRAN</option>
-                </param>
-                <conditional name="ccc" >
-                    <param name="use" type="select" label="Perform Cell-cycle correction?" >
-                        <option value="yes" >Yes</option>
-                        <option value="no" selected="true" >No</option>
-                    </param>
-                    <when value="no" />
-                    <when value="yes" >
-                        <param name="vset" type="text" optional="true" label="List of Gene Sets" >
-                            <expand macro="sanitize_string_vector" />
-                        </param>
-                        <param name="pvalue" type="float" value="0.01" min="0" max="1" label="P-value Cutoff" help="P-value cutoff for determining enriched components" />
-                        <param name="quant" type="float" value="0.01" min="0" max="1" label="Quantification Fraction" help="Upper and lower fraction of gene loadings use for determining enriched components"  />
-                        <param name="ncomp" type="integer" min="0" optional="true" label="Number of components to use" help="If left blank, the maximum number of components are used" /><!-- 0 = NULL -->
-                        <param name="dimr" type="boolean" value="true" label="Derive Components from saturation criterion"  />
-                        <param name="mode" type="select" label="Type of Component Analysis" help="If ICA is selected, ensure that the number of components value above is sufficiently high" >
-                            <option value="pca" selected="true">PCA</option>
-                            <option value="ica">ICA</option>
-                        </param>
-                        <param name="logscale" type="boolean" value="false" label="Log-transform data prior to PCA or ICA" help="" />
-                    </when>
-                </conditional>
-            </expand>
-        </section>
-        <section name="clust" title="Clustering" expanded="true" >
-            <!-- CompDist -->
-            <param name="metric" type="select" label="Distance Metric" >
-                <option value="pearson" selected="true" >Pearson</option>
-                <option value="spearman">Spearman</option>
-                <option value="logpearson">Log Pearson</option>
-                <option value="euclidean">Euclidean</option>
-            </param>
-            <!-- ClustExp -->
-            <param name="funcluster" type="select" label="Clustering method" >
-                <option value="kmedoids" selected="true" >K-medoids</option>
-                <option value="kmeans">K-means</option>
-                <option value="hclust">H-Clust</option>
-            </param>
-            <expand macro="use_defaults_no" >
-                <!-- CompDist -->
-                <param name="fselect" type="boolean" value="true" label="Perform feature selection" />
-                <param name="knn" type="integer" min="0" optional="true" label="KNN" help="Number of nearest neighbours for imputing gene expression" /><!-- 0: NULL -->
-                <!-- ClustExp -->
-                <param name="sat" type="boolean" checked="true" label="Saturation-based clustering?" help="Determine number of clusters on saturation point of the mean within-cluster dispersion as a function of the cluster number." />
-                <param name="clustnr" type="integer" min="0" value="30" label="Max number of clusters using Saturation-by-mean" help="Max number of clusters for the derivation of the cluster number by the saturation of mean within-cluster-dispersion." />
-                <param name="samp" type="integer" min="0" optional="true" label="Sample random number of cells" help="Number of random sample of cells used for the inference of cluster number and Jaccard similarity" /><!-- 0:NULL -->
-                <param name="cln" type="integer" min="0" optional="true" label="Number of clusters" /><!-- 0:Null -->
-                <param name="bootnr" type="integer" min="0" value="50" label="Number of booststrapping runs" />
-                <param name="rseed" type="integer" value="17000" label="Random seed" />
-            </expand>
-        </section>
-        <section name="outlier" title="Outliers" expanded="true" >
-            <!-- Find Outliers -->
-            <param name="outminc" type="integer" min="0" value="5" label="Minimum Transcripts" help="minimal transcript count of a gene in a clusters to be tested for being an outlier gene" />
-            <param name="outlg" type="integer" min="1" value="2" label="Minimum Genes" help="Minimum number of outlier genes required for being an outlier cell" />
-            <!-- RFCorrect -->
-            <param name="final" type="boolean" value="true" label="Plot Final Clusters?" help="Reclassification of cell types using out-of-bag analysis is performed based on the final clusters after outlier identification. If 'FALSE', then the cluster partition prior to outlier identification is used for reclassification." />
-            <expand macro="use_defaults_no" >
-                <!-- Find Outliers -->
-                <param name="probthr" type="float" min="0" value="0.001" label="Outlier Probability Threshold" help="Probability threshold for the above specified minimum number of genes to be an outlier cell. This probability is computed from a negative binomial background model of expression in a cluster" />
-                <param name="outdistquant" type="float" min="0" max="1" value="0.95" label="Outlier Distance Quantile" help="Outlier cells are merged to outlier clusters if their distance smaller than the outdistquant-quantile of the distance distribution of pairs of cells in the orginal clusters after outlier removal" />
-                <!-- RFCorrect -->
-                <param name="nbtree" type="integer" optional="true" label="Number of trees to be built" /><!-- 0:Null -->
-                <param name="nbfactor" type="integer" min="0" value="5" label="Tree Factor" help="Number of trees based on the number of cells multiplied by this factor. Effective only if the number of trees parameter is set to 0" />
-                <param name="rfseed" type="integer" value="12345" label="Random Seed" />
-            </expand>
-        </section>
-        <section name="tsne" title="tSNE and FR" expanded="true" >
-            <!-- CompTSNE -->
-            <param name="perplexity" type="integer" min="0" value="30" label="Perplexity" help="Perplexity of the t-SNE map" />
-            <!-- CompFR -->
-            <param name="knn" type="integer" min="0" value="10" label="KNN" help="Number of nearest neighbours used for the inference of the Fruchterman-Rheingold layout" />
-            <expand macro="use_defaults_no" >
-                <!-- CompTSNE -->
-                <param name="initial_cmd" type="boolean" checked="true" label="tSNE map initialised by classical multidimensional scaling" />
-                <param name="rseed_tsne" type="integer" value="15555" label="Random Seed (tSNE)" />
-                <!-- CompFR -->
-                <param name="rseed_fr" type="integer" min="0" value="15555" label="Random Seed (FR)" />
-            </expand>
-        </section>
-        <section name="extra" title="Extra Parameters" expanded="false" >
-            <param name="tablelim" type="integer" min="1" value="25" label="Table Limit" help="Top N genes to print per cluster" />
-            <param name="plotlim" type="integer" min="1" value="10" label="Plot Limit" help="Top N genes to plot. Must be less than or equal to the Table Limit" />
-            <param name="foldchange" type="float" min="0" value="1" label="Fold change" />
-            <param name="pvalue" type="float" min="0" max="1" value="0.01" label="P-value Cutoff" help="P-value cutoff for the inference of differential gene expression" />
-        </section>
-    </macro>
-    <macro name="cluster_tests" >
-        <test>
-            <!-- default test -->
-            <conditional name="tool" >
-                <param name="mode" value="cluster" />
-                <!-- This is a file with a single word 'test', which prompts the scripts to use the test intestinalData in the library -->
-                <param name="intable" value="use.intestinal" />
-            </conditional>
-            <output name="outgenelist" value="intestinal.genelist" />
-            <output name="outpdf" value="intestinal.pdf" compare="sim_size" delta="50" />
-        </test>
-        <test>
-            <!-- defaults, feeding in a matrix with reduced filtering -->
-            <conditional name="tool" >
-                <param name="mode" value="cluster" />
-                <param name="intable" value="matrix.tabular" />
-                <section name="filt" >
-                    <param name="mintotal" value="1000" />
-                    <param name="minexpr" value="1" />
-                    <param name="minnumber" value="3" />
-                </section>
-                <param name="use_log" value="true" />
-                <output name="outgenelist" value="matrix.genelist" />
-                <output name="outrdat" value="matrix.rdat" compare="sim_size" delta="15" />
-                <output name="outpdf" value="matrix.pdf" compare="sim_size" delta="10" />
-                <output name="outlog" value="matrix.log" />
-            </conditional>
-        </test>
-        <test>
-            <!-- defaults, but manually specified. No opts, no CC. Generates identical to above -->
-            <conditional name="tool" >
-                <param name="mode" value="cluster" />
-                <param name="intable" value="use.intestinal" />
-                <section name="filt" >
-                    <param name="mintotal" value="3000" />
-                    <param name="minexpr" value="5" />
-                    <param name="minnumber" value="5" />
-                    <expand macro="test_nondef" >
-                        <param name="knn" value="10" />
-                        <param name="ccor" value="0.4" />
-                        <param name="bmode" value="RaceID" />
-                    </expand>
-                </section>
-                <section name="clust" >
-                    <param name="metric" value="pearson" />
-                    <param name="funcluster" value="kmedoids" />
-                    <expand macro="test_nondef" >
-                        <param name="fselect" value="true" />
-                        <param name="sat" value="true" />
-                        <param name="clustnr" value="30" />
-                        <param name="bootnr" value="50" />
-                        <param name="rseed" value="17000" />
-                    </expand>
-                </section>
-                <section name="outlier" >
-                    <param name="outminc" value="5" />
-                    <param name="outlg" value="2" />
-                    <param name="final" value="false" />
-                    <expand macro="test_nondef" section_name="outlier" >
-                        <param name="probthr" value="0.001" />
-                        <param name="outdistquant" value="0.95" />
-                        <param name="rfseed" value="12345" />
-                        <param name="nbfactor" value="5" />
-                    </expand>
-                </section>
-                <section name="tsne" >
-                    <param name="perplexity" value="30" />
-                    <param name="knn" value="10" />
-                    <expand macro="test_nondef" section_name="tsne" >
-                        <param name="initial_cmd" value="true" />
-                        <param name="rseed_tsne" value="15555" />
-                        <param name="rfseed_fr" value="15555" />
-                    </expand>
-                </section>
-            </conditional>
-            <output name="outgenelist" value="intestinal.genelist" />
-            <output name="outpdf" value="intestinal.pdf" compare="sim_size" delta="50" />
-        </test>
-        <test>
-            <!-- Advanced. Opts, CC used  -->
-            <conditional name="tool" >
-                <param name="mode" value="cluster" />
-                <param name="intable" value="use.intestinal" />
-                <section name="filt" >
-                    <param name="mintotal" value="2000" />
-                    <param name="minexpr" value="3" />
-                    <param name="minnumber" value="2" />
-                    <expand macro="test_nondef" >
-                        <param name="knn" value="5" />
-                        <param name="ccor" value="0.5" />
-                        <param name="CGenes" value="Gga3,Ggact,Ggct" />
-                        <param name="FGenes" value="Zxdc,Zyg11a,Zyg11b,Zyx" />
-                        <param name="LBatch_regexes" value="^I5,^II5,^III5,^IV5d,^V5d" />
-                        <param name="bmode" value="scran" />
-                        <conditional name="ccc" >
-                            <param name="use" value="yes" />
-                            <param name="pvalue" value="0.05" />
-                            <param name="quant" value="0.05" />
-                            <param name="ncomp" value="3" />
-                            <param name="dimr" value="true" />
-                            <param name="mode" value="pca" />
-                            <param name="logscale" value="true" />
-                        </conditional>
-                    </expand>
-                </section>
-                <section name="clust" >
-                    <param name="metric" value="euclidean" />
-                    <param name="funcluster" value="hclust" />
-                    <expand macro="test_nondef" >
-                        <param name="fselect" value="false" />
-                        <param name="knn" value="5" />
-                        <param name="sat" value="false" />
-                        <param name="samp" value="10" />
-                        <param name="cln" value="10" />
-                        <param name="clustnr" value="10" />
-                        <param name="bootnr" value="30" />
-                        <param name="rseed" value="17000" />
-                    </expand>
-                </section>
-                <section name="outlier" >
-                    <param name="outminc" value="3" />
-                    <param name="outlg" value="5" />
-                    <param name="final" value="true" />
-                    <expand macro="test_nondef" >
-                        <param name="probthr" value="0.01" />
-                        <param name="outdistquant" value="0.5" />
-                        <param name="rfseed" value="12345" />
-                        <param name="nbfactor" value="5" />
-                        <param name="nbtree" value="10" />
-                    </expand>
-                </section>
-                <section name="tsne" >
-                    <param name="perplexity" value="20" />
-                    <param name="knn" value="6" />
-                    <expand macro="test_nondef" >
-                        <param name="initial_cmd" value="false" />
-                        <param name="rseed_tsne" value="15555" />
-                        <param name="rfseed_fr" value="15555" />
-                    </expand>
-                </section>
-            </conditional>
-            <output name="outgenelist" value="intestinal_advanced.genelist" />
-            <output name="outpdf" value="intestinal_advanced.pdf" compare="sim_size" delta="150" />
-        </test>
-    </macro>
-    <token name="@FILTNORM_CHEETAH@"><![CDATA[
-## Perform do.filter
-use.filtnormconf = TRUE
-
-## Perform do.cluster, do.outlier, do.clustmap, mkgenelist
-use.cluster = FALSE
-
-in.table = read.table(
-    '${intable}',
-    stringsAsFactors = F,
-    na.strings=c("NA", "-", "?", "."),
-    sep='\t',
-    header=TRUE,
-    row.names=1
-)
-
-## Hidden flag to use test data instead
-## see: test-data/use.intestinal
-
-use.test.data = (names(in.table)[1] == "test")
-
-sc = NULL
-if (use.test.data) {
-  sc = SCseq(intestinalData)
-  message("Loading test data from library")
-} else {
-  sc = SCseq(in.table)
-}
-
-
-filt = formals(filterdata)
-filt.ccc = formals(CCcorrect)
-filt.use.ccorrect = FALSE
-filt.lbatch.regexes = NULL
-
-filt.geqone = as.logical( '$filt.hist_geq_one' )
-filt\$mintotal = as.integer( '$filt.mintotal' )
-filt\$minexpr = as.integer( '$filt.minexpr' )
-filt\$minnumber = as.integer( '$filt.minnumber' )
-#if str($filt.use.def) == "no":
-filt\$knn = as.integer( '$filt.use.knn' )
-filt\$ccor = as.numeric( '$filt.use.ccor' )
-filt\$bmode = as.character( '$filt.use.bmode' )
-    #if $filt.use.LBatch_regexes:
-filt.lbatch.regexes = string2textvector( '$filt.use.LBatch_regexes' )
-    #end if
-    #if $filt.use.CGenes:
-filt\$CGenes = string2textvector( '$filt.use.CGenes' )
-    #end if
-    #if $filt.use.FGenes:
-filt\$FGenes = string2textvector( '$filt.use.FGenes' )
-    #end if
-    #if str($filt.use.ccc.use) == "yes"
-filt.use.ccorrect = TRUE
-        #if $filt.use.ccc.vset:
-filt.ccc\$vset = string2textvector( '$filt.use.ccc.vset' )
-        #end if
-        #if $filt.use.ccc.ncomp:
-filt.ccc\$nComp = as.integer( '$filt.use.ccc.ncomp' )
-        #end if
-filt.ccc\$pvalue = as.numeric( '$filt.use.ccc.pvalue' )
-filt.ccc\$quant = as.numeric( '$filt.use.ccc.quant' )
-filt.ccc\$dimR = as.logical( '$filt.use.ccc.dimr' )
-filt.ccc\$mode = as.character( '$filt.use.ccc.mode.value' )
-filt.ccc\$logscale = as.logical( '$filt.use.ccc.logscale' )
-    #end if
-#end if
-
-out.pdf = '${outpdf}'
-out.rdat = '${outrdat}'
-
-]]></token>
-    <token name="@CLUSTER_CHEETAH@"><![CDATA[
-
-in.rdat = readRDS('${inputrds}')
-
-sc = in.rdat
-
-## Perform do.filter
-use.filtnormconf = FALSE
-
-## Perform do.cluster, do.outlier, do.clustmap, mkgenelist
-use.cluster = TRUE
-
-
-clust.compdist = formals(compdist)
-clust.clustexp = formals(clustexp)
-clust.compdist\$metric = as.character( '$clust.metric' )
-clust.clustexp\$FUNcluster = as.character( '$clust.funcluster' )
-
-#if str($clust.use.def) == "no":
-
-clust.compdist\$FSelect = as.logical( '$clust.use.fselect' )
-    #if $clust.use.knn:
-clust.compdist\$knn = as.integer( '$clust.use.knn' )
-    #end if
-clust.clustexp\$sat = as.logical( '$clust.use.sat' )
-    #if $clust.use.samp:
-clust.clustexp\$samp = as.integer( '$clust.use.samp' )
-    #end if
-    #if $clust.use.cln:
-clust.clustexp\$cln = as.integer( '$clust.use.cln' )
-clust.clustexp\$clustnr = as.integer( '$clust.use.clustnr' )
-clust.clustexp\$bootnr = as.integer( '$clust.use.bootnr' )
-##clust.clustexp\$rseed = as.integer( '$clust.use.rseed' )
-    #end if
-#end if
-
-outlier.use.randomforest = FALSE
-outlier.findoutliers = formals(findoutliers)
-outlier.clustheatmap = formals(clustheatmap)
-outlier.rfcorrect = formals(rfcorrect)
-
-outlier.findoutliers\$outminc = as.integer( '$outlier.outminc' )
-outlier.findoutliers\$outlg = as.integer( '$outlier.outlg' )
-outlier.rfcorrect\$final = as.logical( '$outlier.final' )
-
-#if str($outlier.use.def) == "no":
-    #if $outlier.use.nbtree:
-outlier.rfcorrect\$nbtree = as.integer( '$outlier.use.nbtree' )
-    #end if
-outlier.findoutliers\$probthr = as.numeric( '$outlier.use.probthr' )
-outlier.findoutliers\$outdistquant = as.numeric( '$outlier.use.outdistquant' )
-##outlier.rfcorrect\$rfseed = as.integer( '$outlier.use.rfseed' )
-outlier.rfcorrect\$nbfactor = as.integer( '$outlier.use.nbfactor' )
-#end if
-
-cluster.comptsne = formals(comptsne)
-cluster.compfr = formals(compfr)
-
-cluster.comptsne\$perplexity = as.integer( '$tsne.perplexity' )
-cluster.compfr\$knn = as.integer( '$tsne.knn' )
-#if str($tsne.use.def) == "no":
-cluster.comptsne\$initial_cmd = as.logical( '$tsne.use.initial_cmd' )
-cluster.comptsne\$rseed = as.integer( '$tsne.use.rseed_tsne' )
-cluster.compfr\$rseed = as.integer( '$tsne.use.rseed_fr' )
-#end if
-
-genelist.tablelim = as.integer( '$extra.tablelim' )
-genelist.plotlim = as.integer( '$extra.plotlim' )
-genelist.foldchange = as.integer( '$extra.foldchange' )
-genelist.pvalue = as.numeric( '$extra.pvalue' )
-
-out.pdf = '${outpdf}'
-out.rdat = '${outrdat}'
-out.genelist = '${outgenelist}'
-
-]]>
-    </token>
-</macros>
--- a/macros_inspectclusters.xml	Mon Apr 15 17:55:17 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-<macros>
-    <macro name="inspectclusters_inputs" >
-        <param name="inputrds" type="data" format="rdata" label="Input RaceID RDS" help="Requires the RDS output from the cluster analysis" />
-        <conditional name="plotgen">
-            <param name="do_opt" type="select" label="Plot All Clusters?" help="Generates tSNE and F-R plots" >
-                <option value="yes" selected="true" >Yes</option>
-                <option value="no" >No</option>
-            </param>
-            <when value="no" />
-            <when value="yes" />
-        </conditional>
-        <conditional name="plotsym" >
-            <param name="do_opt" type="select" label="Perform Subset Analysis?" >
-                <expand macro="yesno_checkedno" />
-            </param>
-            <when value="no" />
-            <when value="yes">
-                <param name="types_regex" type="text" optional="true" label="Types Regex (removal)" help="Regular expression to be used to remove portions of the cell names, in order to indicate cell type. e.g. if your cells are labelled as 'cdk5_1, cdk5_2, glow_1, glow_2', then a regex of '_\\d$' would trim off the ends and set the cell types to 'cdk5, cdk5, glow, glow'. " >
-                    <expand macro="sanitize_regex" />
-                </param>
-                <expand macro="use_defaults_no" >
-                    <param name="subset_regex" type="text" optional="true" label="Subset of Types: Regex (select)" help="Regular expression to be used to select for cell types of interest. e.g. if we are only interested in 'cdk5' positive cells, then we would simply put 'cdk5' here. ">
-                        <expand macro="sanitize_regex" />
-                    </param>
-                    <param name="fr" type="boolean" checked="false" label="Output FR map instead of tSNE" help="Performs a Fruchterman-Rheingold projection instead of tSNE" />
-                </expand>
-            </when>
-        </conditional>
-        <conditional name="gois" >
-            <param name="do_opt" type="select" label="Examine Genes of Interest" >
-                <expand macro="yesno_checkedno" />
-            </param>
-            <when value="no" />
-            <when value="yes">
-                <param name="inspect_goi_genes" type="text" value="" label="Genes to Examine" >
-                    <expand macro="sanitize_string_vector" />
-                </param>
-                <param name="inspect_goi_cells" type="text" optional="true" label="Cells to Examine" help="Leave blank to examine all" ><!-- "":NULL -->
-                    <expand macro="sanitize_string_vector" />
-                </param>
-                <expand macro="use_defaults_no" >
-                    <!-- Yes, examine genes of interest, but no do not use defaults... -->
-                    <param name="inspect_goi_imputed" type="boolean" checked="false" label="Impute Genes" help="Only works if k-nearest neighbours was used in the clustering" />
-                    <param name="plotexp_n" type="text" optional="true" label="Title of plot" help="If blank, the list of genes are used" >
-                        <expand macro="sanitize_title" />
-                    </param>
-                    <param name="plotmarkg_cthr" type="integer" min="0" value="0" label="Cluster Threshold" help="Include only clusters with cells greater than this" />
-                    <param name="plotmarkg_cl" type="text" optional="true" label="Cluster List" help="List of cluster numbers to include. Leave blank to include all" >
-                        <expand macro="sanitize_numeric_vector" />
-                    </param><!-- "":NULL -->
-                    <param name="plotmarkg_order_cells" type="boolean" checked="false" label="Order Cells" help="Order heatmap by cell names, not by cluster" />
-                    <param name="plotmarkg_aggr" type="boolean" checked="false" label="Average Expression" help="Show only average expression for each cluster" />
-                    <param name="plotmarkg_norm" type="boolean" checked="false" label="Normalise Gene Expression " help="Normalise gene expression to 1 to depict genes on the same scale" />
-                    <param name="plotmarkg_flo" type="integer" max="-5" optional="true" label="Lower-bound for Gene Expression" /><!-- negative or null vals only for this seem to work-->
-                    <param name="plotmarkg_cap" type="integer" min="1" optional="true" label="Upper-bound for Gene Expression" />
-                    <param name="plotmarkg_samples" type="text" optional="true" label="Regex to Select Sample Names For Each cell" >
-                        <expand macro="sanitize_regex" />
-                    </param>
-                    <param name="plotmarkg_cluster_cols" type="boolean" checked="false" label="Cluster columns" />
-                    <param name="plotmarkg_cluster_rows" type="boolean" checked="true" label="Cluster rows" />
-                    <param name="plotmarkg_cluster_set" type="boolean" checked="false" label="Order Clusters by Heirarchal Clustering of Cluster Medoids." />
-                </expand>
-            </when>
-        </conditional>
-        <conditional name="diffgtest" >
-            <param name="do_opt" type="select" label="Differential Gene Testing" >
-                <expand macro="yesno_checkedno" />
-            </param>
-            <when value="no" />
-            <when value="yes" >
-                <expand macro="select_cells" sectionname="set_a" sectiontitle="Cells in Set A" />
-                <expand macro="select_cells" sectionname="set_b" sectiontitle="Cells in Set B" />
-                <expand macro="use_defaults_no" >
-                    <param name="plotdiffg_pthr" type="float" min="0" max="1" value="0.05" label="P-value cutoff" help="Cutoff for displaying differentially expressed genes" />
-                    <param name="plotdiffg_padj" type="boolean" checked="true" label="Apply B-H Correction" help="Display genes with a Benjamini-Hochberg corrected false discovery rate lower than the above P-value threshold" />
-                    <param name="plotdiffg_lthr" type="float" min="0" value="0" label="Log2-Fold Threshold" help="Differentially expressed genes are displayed only for log2 fold-changes higher than this" />
-                    <param name="plotdiffg_mthr" type="float" optional="true" label="Log2 Mean Threshold" help="Differentially expressed genes are displayed only for log2 mean expression greater than this" /><!-- opt:-Inf -->
-                    <param name="plotdiffg_show_names" type="boolean" checked="false" label="Display Gene Names" />
-                </expand>
-            </when>
-        </conditional>
-    </macro>
-    <macro name="inspectclusters_tests" >
-        <test><!-- general plots, plotgen -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <conditional name="plotgen" >
-                <param name="do_opt" value="yes" />
-            </conditional>
-            <output name="outpdf" value="out_cluster_general_default.pdf" />
-        </test>
-        <test><!-- default test, plotsym -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <conditional name="plotsym" >
-                <param name="do_opt" value="yes" />
-                <param name="types_regex" value="\\_\\d+" />
-                <expand macro="test_nondef" >
-                    <param name="subset_regex" value="IV|V" />
-                </expand>
-            </conditional>
-            <conditional name="gois" >
-                <param name="do_opt" value="yes" />
-                <param name="inspect_goi_genes" value="Apoa1,Apoa1bp,Apoa2,Apoa4,Apoa5" />
-            </conditional>
-            <output name="outpdf" value="out_cluster_inspect_default.pdf" />
-        </test>
-        <test><!-- Advanced 1 -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <conditional name="plotsym" >
-                <param name="do_opt" value="yes" />
-                <param name="types_regex" value="\\_\\d+" />
-                <expand macro="test_nondef" >
-                    <param name="subset_regex" value="IV|V" />
-                    <param name="fr" value="true" />
-                </expand>
-            </conditional>
-            <conditional name="gois" >
-                <param name="do_opt" value="yes" />
-                <param name="inspect_goi_genes" value="Apoa1,Apoa1bp,Apoa2,Apoa4,Apoa5" />
-                <expand macro="test_nondef" >
-                    <param name="inspect_goi_imputed" value="false" />
-                    <param name="plotexp_n" value="Test Title" />
-                    <param name="plotmarkg_order_cells" value="true" />
-                    <param name="plotmarkg_aggr" value="true" />
-                    <param name="plotmarkg_norm" value="true" />
-                    <param name="plotmarkg_flo" value="-10" />
-                    <param name="plotmarkg_cap" value="100" />
-                    <param name="plotmarkg_samples" value="(\\_\\d+)$" />
-                    <param name="plotmarkg_cluster_cols" value="true" />
-                    <param name="plotmarkg_cluster_rows" value="false" />
-                    <param name="plotmarkg_cluster_set" value="true" />
-                </expand>
-            </conditional>
-            <conditional name="diffgtest" >
-                <param name="do_opt" value="yes" />
-                <section name="set_a" >
-                    <param name="name_set" value="Test set A" />
-                    <conditional name="meth" >
-                        <param name="type" value="regex" />
-                        <param name="selector" value="^V5.*" />
-                    </conditional>
-                </section>
-                <section name="set_b" >
-                    <param name="name_set" value="Test set B" />
-                    <conditional name="meth" >
-                        <param name="type" value="manual" />
-                        <param name="selector" value="I5d_3,I5d_4,I5d_6,I5d_8,I5d_9,I5d_10,I5d_11,I5d_12,I5d_13,I5d_14" />
-                    </conditional>
-                </section>
-                <expand macro="test_nondef" >
-                    <param name="plotdiffg_pthr" value="0.1" />
-                    <param name="plotdiffg_padj" value="false" />
-                    <param name="plotdiffg_lthr" value="0.2" />
-                    <param name="plotdiffg_mthr" value="0.2" />
-                    <param name="plotdiffg_show_names" value="true" />
-                </expand>
-            </conditional>
-            <output name="outpdf" value="out_cluster_inspect_advanced1.pdf" />
-        </test>
-        <test><!-- Advanced 2 -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <conditional name="plotsym" >
-                <param name="do_opt" value="yes" />
-                <expand macro="test_nondef" >
-                    <param name="fr" value="false" />
-                </expand>
-            </conditional>
-            <conditional name="gois" >
-                <param name="do_opt" value="yes" />
-                <param name="inspect_goi_genes" value="Sp1,Spc24,Spcs1,Spcs2,Spcs3" />
-                <expand macro="test_nondef" >
-                    <param name="plotexp_n" value="Test Title 2" />
-                    <param name="plotmarkg_order_cells" value="true" />
-                    <param name="plotmarkg_aggr" value="true" />
-                    <param name="plotmarkg_norm" value="false" />
-                    <param name="plotmarkg_flo" value="-10" />
-                    <param name="plotmarkg_cap" value="10" />
-                    <param name="plotmarkg_cluster_cols" value="true" />
-                    <param name="plotmarkg_cluster_rows" value="true" />
-                    <param name="plotmarkg_cluster_set" value="true" />
-                </expand>
-            </conditional>
-            <conditional name="diffgtest" >
-                <param name="do_opt" value="yes" />
-                <section name="set_a" >
-                    <param name="name_set" value="Test set A" />
-                    <conditional name="meth" >
-                        <param name="type" value="regex" />
-                        <param name="selector" value="^IV.*" />
-                    </conditional>
-                </section>
-                <section name="set_b" >
-                    <param name="name_set" value="Test set B" />
-                    <conditional name="meth" >
-                        <param name="type" value="cln" />
-                        <param name="selector" value="3" />
-                    </conditional>
-                </section>
-                <expand macro="test_nondef" >
-                    <param name="plotdiffg_pthr" value="0.8" />
-                    <param name="plotdiffg_padj" value="true" />
-                    <param name="plotdiffg_lthr" value="0.8" />
-                    <param name="plotdiffg_mthr" value="0.8" />
-                    <param name="plotdiffg_show_names" value="false" />
-                </expand>
-            </conditional>
-            <output name="outpdf" value="out_cluster_inspect_advanced2.pdf" />
-        </test>
-    </macro>
-    <token name="@INSPECTCLUSTERS_CHEETAH@"><![CDATA[
-
-in.rdat = readRDS('${inputrds}')
-
-perform.plotting = FALSE
-perform.symbolmap = FALSE
-perform.genesofinterest = FALSE
-perform.diffgene = FALSE
-
-#if str($plotgen.do_opt) == "yes":
-perform.plotting = TRUE
-#end if
-
-#if str($plotsym.do_opt) == "yes":
-perform.symbolmap = TRUE
-plotsym = formals(plotsymbolsmap)
-plotsym.use.typeremoveregex = NULL
-plotsym.use.typeremoveregex.subselect = NULL
-plotsym.use.typeremoveregex = as.character( '$plotsym.types_regex' )
-    #if str($plotsym.use.def) == "no":
-plotsym\$fr = as.logical( '$plotsym.use.fr' )
-        #if $plotsym.use.subset_regex:
-plotsym.use.typeremoveregex.subselect = as.character( '$plotsym.use.subset_regex' )
-        #end if
-    #end if
-#end if
-
-#if str($gois.do_opt) == "yes":
-perform.genesofinterest = TRUE
-plotexp = formals(plotexpmap)
-plotmarkg = formals(plotmarkergenes)
-
-inspect.goi.use.genes = string2textvector( '$gois.inspect_goi_genes' )
-plotexp\$g = inspect.goi.use.genes
-plotmarkg\$genes = inspect.goi.use.genes
-
-    #if $gois.inspect_goi_cells:
-inspect.goi.use.cells = as.character( '$gois.inspect_goi_cells' )
-plotexp\$cells = inspect.goi.use.cells
-plotmarkg\$cells = inspect.goi.use.cells
-    #end if
-    #if str($gois.use.def) == "no":
-inspect.goi.use.imputed = as.logical( '$gois.use.inspect_goi_imputed' )
-plotexp\$imputed = inspect.goi.use.imputed
-plotmarkg\$imputed = inspect.goi.use.imputed
-        #if $gois.use.plotmarkg_cl
-plotmarkg\$cl = string2numericvector( '$gois.use.plotmarkg_cl' )
-        #end if
-        #if $gois.use.plotmarkg_cap
-plotmarkg\$cap = as.integer( '$gois.use.plotmarkg_cap' )
-        #end if
-        #if $gois.use.plotmarkg_flo
-plotmarkg\$flo = as.integer( '$gois.use.plotmarkg_flo' )
-        #end if
-        #if $gois.use.plotmarkg_samples
-plotmarkg\$samples = as.character( '$gois.use.plotmarkg_samples' )
-        #end if
-        #if $gois.use.plotexp_n
-plotexp\$n = as.character( '$gois.use.plotexp_n' )
-        #end if
-plotmarkg\$cthr = as.integer( '$gois.use.plotmarkg_cthr' )
-plotmarkg\$order.cells = as.logical( '$gois.use.plotmarkg_order_cells' )
-plotmarkg\$aggr = as.logical( '$gois.use.plotmarkg_aggr' )
-plotmarkg\$norm = as.logical( '$gois.use.plotmarkg_norm' )
-plotmarkg\$cluster_cols = as.logical( '$gois.use.plotmarkg_cluster_cols' )
-plotmarkg\$cluster_rows = as.logical( '$gois.use.plotmarkg_cluster_rows' )
-plotmarkg\$cluster_set = as.logical( '$gois.use.plotmarkg_cluster_set' )
-    #end if
-#end if
-
-#if str($diffgtest.do_opt) == "yes":
-plotdiffg = formals(plotdiffgenesnb)
-
-perform.diffgene = TRUE
-plotdiffg\$Aname = '$diffgtest.set_a.name_set'
-plotdiffg\$Bname = '$diffgtest.set_b.name_set'
-
-gfdat.A.use = list()
-gfdat.B.use = list()
-
-gfdat.A.use\$manual = NULL
-gfdat.A.use\$regex = NULL
-gfdat.A.use\$cln = NULL
-gfdat.B.use\$manual = NULL
-gfdat.B.use\$regex = NULL
-gfdat.B.use\$cln = NULL
-
-    #if str($diffgtest.set_a.meth.type) == "cln":
-gfdat.A.use\$cln = c( '$diffgtest.set_a.meth.selector' )
-    #else if str($diffgtest.set_a.meth.type) == "regex":
-gfdat.A.use\$regex = as.character( '$diffgtest.set_a.meth.selector' )
-    #else if str($diffgtest.set_a.meth.type) == "manual":
-gfdat.A.use\$manual = string2textvector( '$diffgtest.set_a.meth.selector' )
-    #end if
-
-    #if str($diffgtest.set_b.meth.type) == "cln":
-gfdat.B.use\$cln = c( '$diffgtest.set_b.meth.selector' )
-    #else if str($diffgtest.set_b.meth.type) == "regex":
-gfdat.B.use\$regex = as.character( '$diffgtest.set_b.meth.selector' )
-    #else if str($diffgtest.set_b.meth.type) == "manual":
-gfdat.B.use\$manual = string2textvector( '$diffgtest.set_b.meth.selector' )
-    #end if
-
-    #if str($diffgtest.use.def) == "no":
-plotdiffg\$pthr = as.numeric( '$diffgtest.use.plotdiffg_pthr' )
-plotdiffg\$padj = as.logical( '$diffgtest.use.plotdiffg_padj' )
-plotdiffg\$lthr = as.integer( '$diffgtest.use.plotdiffg_lthr' )
-plotdiffg\$show_names = as.logical( '$diffgtest.use.plotdiffg_show_names' )
-        #if $diffgtest.use.plotdiffg_mthr
-plotdiffg\$mthr = as.numeric( '$diffgtest.use.plotdiffg_mthr' )
-        #end if
-    #end if
-#end if
-
-out.pdf='${outpdf}'
-    ]]>
-    </token>
-</macros>
--- a/macros_inspecttrajectories.xml	Mon Apr 15 17:55:17 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-<macros>
-    <macro name="inspecttrajectories_inputs" >
-        <param name="inputrds" type="data" format="rdata" label="Input RDS" help="Requires the RDS output from the trajectory analysis" />
-        <section name="trjsid" title="StemID Branch Link Examine" expanded="true" help="StemID derives cell lineage trees and predicts multipotent cell identities">
-            <conditional name="basic" >
-                <param name="doit" type="select" label="Perform StemID?" >
-                    <expand macro="yesno_checkedno" />
-                </param>
-                <when value="no" />
-                <when value="yes" >
-                    <param name="i" type="integer" min="1" value="1" label="Cluster Number" />
-                    <param name="br" type="text" label="Trajectory Path i, j, k" help="A path of three clusters starting at i, passing through j, and ending at k." >
-                        <expand macro="sanitize_numeric_vector" />
-                    </param>
-                    <expand macro="use_defaults_no">
-                        <param name="zscore" type="boolean" checked="false" label="Plot Z-score Transformed Projections" />
-                        <param name="ndiffgenes" type="integer" min="1" value="10" label="Number of DE Genes" help="Number of differentially expressed genes to output per cluster" />
-                    </expand>
-                </when>
-            </conditional>
-        </section>
-        <section name="trjfid" title="FateID Branch Link Examine" expanded="true" help="FateID infers cell fate bias in multipotent progenitor cells" >
-            <conditional name="basic" >
-                <param name="doit" type="select" label="Perform FateID?" >
-                    <expand macro="yesno_checkedno" />
-                </param>
-                <when value="no" />
-                <when value="yes" >
-                    <param name="cellsfromz" type="text" value="" label="Cells from Clusters" help="Vector of valid cluster numbers ordered along the trajectory" >
-                        <expand macro="sanitize_numeric_vector" />
-                    </param>
-                    <expand macro="use_defaults_no">
-                        <param name="filterset_minexpr" type="integer" min="0" value="2" label="Min Expression" help="Minimum expression required for at least minnumber cells" />
-                        <param name="filterset_minnumber" type="integer" min="0" value="1" label="Min Number of Cells" help="Minimum number of cells in which a gene needs to be expressed at least a level of minexpr."/>
-                        <param name="getsom_nb" type="integer" min="1" value="1000" label="SOM Nodes" help="Number of nodes of the self-organizing map." />
-                        <param name="getsom_alpha" type="float" min="0" value="0.5" label="Smoothing parameter" help="Pseudo-temporal expression profiles are derived by a local regression of expression values across the ordered cells using the function 'loess' from the package 'stats'. This is the parameter, which controls the degree of smoothing. Larger values return smoother profiles." />
-                        <param name="procsom_corthr" type="float" min="0" max="1" value="0.85" label="Correlation threshold" help="The z-score of the average normalized pseudo-temporal expression profiles within each node of the self-organizing map is computed, and the correlation of these z-scores between neighbouring nodes is computed. If the correlation is greater than 'corthr', neighbouring nodes are merged" />
-                        <param name="procsom_minsom" type="integer" min="0" value="3" label="Min SOM" help="Nodes of the self-organizing map with less than this number of transcripts are discarded" />
-                        <param name="plotheat_xgrid" type="boolean" checked="false" label="Partitioning along the x-axis" />
-                        <param name="plotheat_ygrid" type="boolean" checked="false" label="Partitioning along the y-axis" />
-                        <param name="plotheat_xlab" type="boolean" checked="false" label="Average position is given for each partition along the x-axis" />
-                    </expand>
-                    <conditional name="som" >
-                        <param name="doit" type="select" label="Perform Additional FateID Analysis with Self-Organised Map?" >
-                            <expand macro="yesno_checkedno" />
-                        </param>
-                        <when value="no" />
-                        <when value="yes" >
-                            <conditional name="use_genes" >
-                                <param name="typer" type="select" label="Genes to Inspect" >
-                                    <option value="genelist">List of Genes</option>
-                                    <option value="cln">Cluster</option>
-                                </param>
-                                <when value="genelist">
-                                    <param name="use_genes" type="text" value="" label="Gene List" >
-                                        <expand macro="sanitize_string_vector" />
-                                    </param>
-                                </when>
-                                <when value="cln" >
-                                    <param name="use_genes" type="integer" min="1" value="1" label="Cluster Number" />
-                                </when>
-                            </conditional>
-                            <param name="use_types" type="text" value="\\_\\d+" label="Types Regex (select)" help="Regex to select types across cell names" >
-                                <expand macro="sanitize_regex" />
-                            </param>
-                            <param name="title" type="text" value="Title" label="Plot title" />
-                            <expand macro="use_defaults_no">
-                                <param name="cluster" type="boolean" checked="false" label="Partitioning along the x-axis" />
-                                <param name="alpha" type="float" min="0" max="1" value="0.5" label="Smoothing parameter" />
-                            </expand>
-                        </when>
-                    </conditional>
-                </when>
-            </conditional>
-        </section>
-    </macro>
-    <macro name="inspecttrajectories_tests" >
-        <test>
-            <!-- default, generates a blank report -->
-            <param name="inputrds" value="out_traject_default.ltree.rdat" />
-            <output name="outpdf" value="out_traject_inspect_default.ltree.blank.pdf" compare="sim_size" delta="15" />
-        </test>
-        <test>
-            <!-- stemID branch inspection: vignette search "getproj" -->
-            <param name="inputrds" value="out_traject_default.ltree.rdat" />
-            <section name="trjsid" >
-                <conditional name="basic" >
-                    <param name="doit" value="yes" />
-                    <param name="i" value="3" />
-                    <param name="br" value="1,3,8" />
-                </conditional>
-            </section>
-            <output name="outpdf" value="out_traject_inspect_stemid.pdf" compare="sim_size" delta="15" />
-            <output name="outdiffgenes" value="out_traject_inspect_stemid.tabular" />
-        </test>
-        <test>
-            <!-- fateID trajectory inspection: vignette search "cellsfromtree" -->
-            <param name="inputrds" value="out_traject_default.ltree.rdat" />
-            <section name="trjfid" >
-                <conditional name="basic" >
-                    <param name="doit" value="yes" />
-                    <param name="cellsfromz" value="2,1,4" />
-                    <expand macro="test_nondef" >
-                        <param name="filterset_minexpr" value="2" />
-                        <param name="getsom_nb" value="1000" />
-                        <param name="getsom_alpha" value="0.5" />
-                        <param name="plotheat_xlab" value="true" />
-                    </expand>
-                </conditional>
-            </section>
-            <output name="outpdf" value="out_traject_inspect_fateid.pdf" compare="sim_size" delta="15" />
-        </test>
-        <test>
-            <!-- fateID trajectory inspection with som: vignette search "SOM" -->
-            <param name="inputrds" value="out_traject_default.ltree.rdat" />
-            <section name="trjfid" >
-                <conditional name="basic" >
-                    <param name="doit" value="yes" />
-                    <param name="cellsfromz" value="2,1,4" />
-                    <conditional name="som" >
-                        <param name="doit" value="yes" />
-                        <expand macro="test_nondef" >
-                            <param name="typer" value="cln" />
-                            <param name="use_genes" value="12" />
-                        </expand>
-                    </conditional>
-                </conditional>
-            </section>
-            <output name="outpdf" value="out_traject_inspect_fateid_som.pdf" compare="sim_size" delta="15" />
-        </test>
-        <test>
-            <!-- uses all 3 sections with additional non-default params -->
-            <param name="inputrds" value="out_traject_default.ltree.rdat" />
-            <section name="trjsid" >
-                <conditional name="basic" >
-                    <param name="doit" value="yes" />
-                    <param name="i" value="5" />
-                    <param name="br" value="6,5,3" />
-                    <expand macro="test_nondef" >
-                        <param name="zscore" value="true" />
-                        <param name="ndiffgenes" value="14" />
-                    </expand>
-                </conditional>
-            </section>
-            <section name="trjfid" >
-                <conditional name="basic" >
-                    <param name="doit" value="yes" />
-                    <param name="cellsfromz" value="3,9,2" />
-                    <expand macro="test_nondef" >
-                        <param name="filterset_minexpr" value="1" />
-                        <param name="filterset_minnumber" value="2" />
-                        <param name="procsom_minsom" value="5" />
-                        <param name="procsom_corthr" value="0.5" />
-                        <param name="plotheat_ygrid" value="true" />
-                    </expand>
-                    <conditional name="som" >
-                        <param name="doit" value="yes" />
-                        <conditional name="use_genes" >
-                            <param name="typer" value="genelist" />
-                            <param name="use_genes" value="Clca4,Mki67,Defa24,Ybx1,Vasp,Apoa1" />
-                            <expand macro="test_nondef" >
-                                <param name="cluster" value="true" />
-                                <param name="alpha" value="0.1" />
-                            </expand>
-                        </conditional>
-                    </conditional>
-                </conditional>
-            </section>
-            <output name="outdiffgenes" value="out_traject_inspect_allthree.tabular" />
-            <output name="outpdf" value="out_traject_inspect_allthree.pdf" compare="sim_size" delta="15" />
-        </test>
-    </macro>
-    <token name="@INSPECTTRAJECTORIES_CHEETAH@"><![CDATA[
-in.rdat = readRDS('${inputrds}')
-
-perform.stemID = FALSE
-perform.fateID = FALSE
-perform.fateID.sominspect = FALSE
-
-#if str($trjsid.basic.doit) == "yes"
-perform.stemID = TRUE
-trjsid.getproj = formals(getproj)
-
-trjsid.numdiffgenes = 10
-trjsid.getproj\$i = as.integer( '$trjsid.basic.i' )
-trjsid.branchcells.ijk = string2numericvector( '$trjsid.basic.br' )
-
-   #if str($trjsid.basic.use.def) == "no":
-
-trjsid.getproj\$zscore = as.logical( '$trjsid.basic.use.zscore' )
-trjsid.numdiffgenes = as.integer( '$trjsid.basic.use.ndiffgenes' )
-
-   #end if
-#end if
-
-#if str($trjfid.basic.doit) == "yes":
-perform.fateID = TRUE
-trjfid.cellsfrom = formals(cellsfromtree)
-trjfid.filterset = formals(filterset)
-trjfid.getsom = formals(getsom)
-trjfid.procsom = formals(procsom)
-trjfid.plotheat = list()
-
-trjfid.cellsfrom\$z = string2numericvector( '$trjfid.basic.cellsfromz' )
-    #if str($trjfid.basic.use.def) == "no":
-
-trjfid.filterset\$minexpr = as.integer( '$trjfid.basic.use.filterset_minexpr' )
-trjfid.filterset\$minnumber = as.integer( '$trjfid.basic.use.filterset_minnumber' )
-trjfid.getsom\$nb = as.numeric( '$trjfid.basic.use.getsom_nb' )
-trjfid.getsom\$alpha = as.numeric( '$trjfid.basic.use.getsom_alpha' )
-trjfid.procsom\$corthr = as.numeric( '$trjfid.basic.use.procsom_corthr' )
-trjfid.procsom\$minsom = as.integer( '$trjfid.basic.use.procsom_minsom' )
-trjfid.plotheat\$xgrid = as.logical( '$trjfid.basic.use.plotheat_xgrid' )
-trjfid.plotheat\$ygrid = as.logical( '$trjfid.basic.use.plotheat_ygrid' )
-trjfid.plotheat\$xlab = as.logical( '$trjfid.basic.use.plotheat_xlab' )
-    #end if
-
-    #if str($trjfid.basic.som.doit) == "yes":
-perform.fateID.sominspect = TRUE
-
-trjfidsomi = list()
-        #if str($trjfid.basic.som.use_genes.typer) == "genelist":
-trjfidsomi.use.genes = string2textvector( '$trjfid.basic.som.use_genes.use_genes' )
-        #else if str($trjfid.basic.som.use_genes.typer) == "cln":
-trjfidsomi.use.genes = as.integer( '$trjfid.basic.som.use_genes.use_genes' )
-        #end if
-
-trjfidsomi.use.types = '$trjfid.basic.som.use_types'
-trjfidsomi\$name = '$trjfid.basic.som.title'
-
-        #if str($trjfid.basic.som.use.def) == "no":
-trjfidsomi\$cluster = as.logical( '$trjfid.basic.som.use.cluster' )
-trjfidsomi\$alpha = as.numeric( '$trjfid.basic.som.use.alpha' )
-        #end if
-    #end if
-#end if
-
-out.pdf = '${outpdf}'
-out.diffgenes = '${outdiffgenes}'
-
-]]>
-    </token>
-</macros>
--- a/macros_trajectory.xml	Mon Apr 15 17:55:17 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-<macros>
-    <macro name="trajectory_inputs" >
-        <param name="inputrds" type="data" format="rdata" label="Input RDS" help="This is the output RData file given by the Cluster stage" />
-        <section name="projcell" title="Compute transcriptome entropy of each cell" expanded="true" >
-            <param name="knn" type="integer" min="0" value="3" label="KNN" help="Number of nearest neighbours to consider." />
-            <param name="cthr" type="integer" min="0" value="5" label="Cluster Threshold" help="Clusters to be included in the StemID analysis must have more than this number of cells" />
-            <expand macro="use_defaults_no" >
-                <param name="nmode" type="boolean" checked="true" label="Neighbour Mode" help="Assign a cell of a given cluster to the cluster with the smallest average distance of the knn nearest neighbours within this cluster." />
-                <param name="fr" type="boolean" checked="false" label="F-R layout?" help="Use Fruchterman-Rheigold layout instead of t-SNE" />
-            </expand>
-        </section>
-        <section name="projback" title="Compute Cell Projections for Randomized Background Distribution" expanded="true" >
-            <param name="pdishuf" type="integer" min="100" value="2000" label="Shuffle Projections" help="Number of randomizations of cell positions for which to compute projections of cells on inter-cluster links" />
-            <expand macro="use_defaults_no" >
-                <param name="fast" type="boolean" checked="false" label="Use a fast approximate background model to infer links" />
-                <param name="rseed" type="integer" value="17000" label="Random seed" />
-            </expand>
-        </section>
-        <section name="comppval" title="Computing P-values for Link Significance" expanded="true" >
-            <param name="pthr" type="float" value="0.01" label="P-value cutoff" help="Cutoff for link significance. This threshold is applied for the calculation of link scores reflecting how uniformly a link is occupied by cells." />
-            <param name="sensitive" type="boolean" checked="false" label="Sensitivity" help="All cells on the most highly significant link are and the link itself are disregard to test significance of the remaining links with a binomial p-value" />
-        </section>
-        <section name="plotgraph" title="StemID2 Lineage Graph" expanded="true" >
-            <param name="showcells" type="boolean" checked="false" label="Show Cells" help="Projections of cells are shown in the plot" />
-            <param name="scthr" type="float" min="0" max="1" value="0" label="Score Threshold" help="Score threshold for links to be shown in the graph" />
-            <expand macro="use_defaults_no">
-                <param name="showtsne" type="boolean" checked="true" label="Show tSNE" help="Show transparent t-SNE map of cells in the background" />
-                <param name="tp" type="float" min="0" max="1" value="0.5" label="Transparency" help="Level of transparency of t-SNE map" />
-            </expand>
-        </section>
-        <section name="compscore" title="Compute StemID2 score" expanded="true" >
-            <param name="nn" type="integer" min="0" value="1" label="Number of Neighbours" help="Number of higher order neighbours to be included for the determination of links" />
-            <param name="scthr" type="float" min="0" max="1" value="0" label="Score Threshold" help="Score threshold for links to be included in the calculation" />
-        </section>
-    </macro>
-    <macro name="trajectory_tests" >
-        <test>
-            <!-- All defaults -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <output name="outpdf" value="out_traject_default.pdf" compare="sim_size" delta="15" />
-            <output name="outrdat" value="out_traject_default.ltree.rdat" compare="sim_size" delta="15" />
-        </test>
-        <test>
-            <!-- Manually specify the defaults: should ideally give same output as above test -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <section name="projcell" >
-                <param name="knn" value="3" />
-                <param name="cthr" value="5" />
-                <expand macro="test_nondef" >
-                    <param name="nmode" value="true" />
-                    <param name="fr" value="false" />
-                </expand>
-            </section>
-            <section name="projback" >
-                <param name="pdishuf" value="2000" />
-                <expand macro="test_nondef" >
-                    <param name="fast" value="false" />
-                    <param name="rseed" value="17000" />
-                </expand>
-            </section>
-            <section name="comppval" >
-                <param name="pthr" value="0.01" />
-                <param name="sensitive" value="false" />
-            </section>
-            <section name="plotgraph" >
-                <param name="showcells" value="false" />
-                <param name="scthr" value="0" />
-                <expand macro="test_nondef" >
-                    <param name="showtsne" value="true" />
-                    <param name="tp" value="0.5" />
-                </expand>
-            </section>
-            <section name="compscore" >
-                <param name="nn" value="1" />
-                <param name="scthr" value="0" />
-            </section>
-            <output name="outpdf" value="out_traject_default.pdf" compare="sim_size" delta="15" />
-            <output name="outrdat" value="out_traject_default.ltree.rdat" compare="sim_size" delta="15" />
-        </test>
-        <test>
-            <!-- Non-defaults -->
-            <param name="inputrds" value="out_cluster_default.rdat" />
-            <section name="projcell">
-                <param name="knn" value="4" />
-                <param name="cthr" value="4" />
-                <expand macro="test_nondef" >
-                    <param name="nmode" value="false" />
-                    <param name="fr" value="true" />
-                </expand>
-            </section>
-            <section name="projback">
-                <param name="pdishuf" value="1500" />
-                <expand macro="test_nondef" >
-                    <param name="fast" value="true" />
-                    <param name="rseed" value="1500" />
-                </expand>
-            </section>
-            <section name="comppval">
-                <param name="pthr" value="0.05" />
-                <param name="sensitive" value="true" />
-            </section>
-            <section name="plotgraph">
-                <param name="showcells" value="true" />
-                <param name="scthr" value="0.5" />
-                <expand macro="test_nondef" >
-                    <param name="showtsne" value="false" />
-                    <param name="tp" value="0.25" />
-                </expand>
-            </section>
-            <section name="compscore">
-                <param name="nn" value="2" />
-                <param name="scthr" value="0.5" />
-            </section>
-            <output name="outpdf" value="out_traject_adv_nondef.pdf" compare="sim_size" delta="15" />
-        </test>
-    </macro>
-    <token name="@TRAJECTORY_CHEETAH@"><![CDATA[
-
-in.rdat = readRDS('${inputrds}')
-
-pstc.projc = formals(projcells)
-pstc.projc\$knn = as.integer( '$projcell.knn' )
-pstc.projc\$cthr = as.integer( '$projcell.cthr' )
-#if str($projcell.use.def) == "no":
-pstc.projc\$nmode = as.logical( '$projcell.use.nmode' )
-pstc.projc\$fr = as.logical( '$projcell.use.fr' )
-#end if
-
-pstc.projb = formals(projback)
-pstc.projb\$pdishuf = as.integer( '$projback.pdishuf' )
-#if str($projback.use.def) == "no":
-pstc.projb\$fast = as.logical( '$projback.use.fast' )
-pstc.projb\$rseed = as.integer( '$projback.use.rseed' )
-#end if
-
-pstc.comppval = formals(comppvalue)
-pstc.comppval\$pthr = as.numeric( '$comppval.pthr' )
-pstc.comppval\$sensitive = as.logical( '$comppval.sensitive' )
-
-pstc.plotgraph = formals(plotgraph)
-pstc.plotgraph\$showCells = as.logical( '$plotgraph.showcells' )
-pstc.plotgraph\$scthr = as.numeric( '$plotgraph.scthr' )
-#if str($plotgraph.use.def) == "no":
-pstc.plotgraph\$showTsne = as.logical( '$plotgraph.use.showtsne' )
-pstc.plotgraph\$tp = as.numeric( '$plotgraph.use.tp' )
-#end if
-
-pstc.compscore = formals(compscore)
-pstc.compscore\$nn = as.integer( '$compscore.nn' )
-pstc.compscore\$scthr = as.numeric( '$compscore.scthr' )
-
-out.pdf='${outpdf}'
-out.rdat='${outrdat}'
-    ]]>
-    </token>
-</macros>
--- a/raceid_filtnormconf.xml	Mon Apr 15 17:55:17 2019 -0400
+++ b/raceid_filtnormconf.xml	Mon Aug 12 12:59:06 2019 -0400
@@ -1,27 +1,11 @@
-<tool id="raceid_filtnormconf" name="Filtering, Normalisation, and Confounder Removal using RaceID" version="@VERSION_RACEID@.@VERSION_PACKAGE@.3" >
-    <description>generates a normalised and filtered count matrix of single-cell RNA data</description>
+<tool id="raceid_filtnormconf" name="Initial processing using RaceID" version="@VERSION_RACEID@.@VERSION_WRAPPER@" >
+    <description>performs filtering, normalisation, and confounder removal to generate a normalised and filtered count matrix of single-cell RNA data</description>
     <macros>
         <import>macros.xml</import>
-        <import>macros_cluster.xml</import>
+        <import>macros_cheetah.xml</import>
     </macros>
     <expand macro="requirements" />
-    <version_command><![CDATA[
-Rscript '$__tool_directory__/scripts/cluster.R' @GET_VERSION@
-]]>
-    </version_command>
-
-    <command detect_errors="exit_code"><![CDATA[
-#set bin = 'cluster.R'
-Rscript '$__tool_directory__/scripts/$bin' '$userconf' 2> '$outlog' > /dev/null
-    ]]></command>
-    <configfiles>
-        <configfile name="userconf" ><![CDATA[
-@STRING2VECTOR@
-
-@FILTNORM_CHEETAH@
-]]>
-        </configfile>
-    </configfiles>
+    <expand macro="version_command_config" prog="cluster.R" cheetah="FILTNORM_CHEETAH" out="2&#62; '$outlog' &#62; /dev/null" />
     <inputs>
         <param name="intable" type="data" format="tabular" label="Count Matrix" />
         <section name="filt" title="Filtering" expanded="true" >
@@ -70,18 +54,26 @@
         </section>
     </inputs>
     <outputs>
+        <data name="outtable" format="tabular" label="${tool.name} on ${on_string}: Normalised Matrix" />
         <data name="outpdf" format="pdf" label="${tool.name} on ${on_string}: PDF Report" />
         <data name="outrdat" format="rdata" label="${tool.name} on ${on_string}: RDS" />
         <data name="outlog" format="txt" label="${tool.name} on ${on_string}: Metrics"  />
     </outputs>
     <tests>
-        <test expect_num_outputs="3">
+        <test expect_num_outputs="4">
             <!-- This is a file with a single word 'test', which prompts the scripts to use the test intestinalData in the library -->
             <param name="intable" value="use.intestinal" />
             <output name="outpdf" value="intestinal.filter.pdf" compare="sim_size" delta="50" />
             <output name="outlog" value="intestinal.filter.log" />
+            <output name="outtable" >
+                <assert_contents>
+                    <has_n_columns n="288" />
+                    <has_text_matching expression="Amdhd2\s0\.000" />
+                    <has_text_matching expression="Ammecr1(\s0\s0)+" />
+                </assert_contents>
+            </output>
         </test>
-        <test expect_num_outputs="3">
+        <test expect_num_outputs="4">
             <!-- defaults, feeding in a matrix with reduced filtering -->
             <param name="intable" value="matrix.tabular" />
             <section name="filt" >
@@ -92,7 +84,7 @@
             <output name="outrdat" value="matrix.filter.rdat" compare="sim_size" delta="300" />
             <output name="outpdf" value="matrix.filter.pdf" compare="sim_size" delta="10" />
         </test>
-        <test expect_num_outputs="3">
+        <test expect_num_outputs="4">
             <!-- defaults, but manually specified. No opts, no CC. Generates identical to above -->
             <param name="intable" value="use.intestinal" />
             <section name="filt" >
@@ -107,7 +99,7 @@
             </section>
             <output name="outpdf" value="intestinal.filter.pdf" compare="sim_size" delta="50" />
         </test>
-        <test expect_num_outputs="3">
+        <test expect_num_outputs="4">
             <!-- defaults, but histogram adjustment  -->
             <param name="intable" value="use.intestinal" />
             <section name="filt" >
@@ -115,7 +107,7 @@
             </section>
             <output name="outpdf" value="matrix.filter.geqone.pdf" compare="sim_size" delta="10" />
         </test>
-        <test expect_num_outputs="3">
+        <test expect_num_outputs="4">
             <!-- Advanced. Opts, CC used  -->
             <param name="intable" value="use.intestinal" />
             <section name="filt" >
--- a/scripts/cluster.R	Mon Apr 15 17:55:17 2019 -0400
+++ b/scripts/cluster.R	Mon Aug 12 12:59:06 2019 -0400
@@ -1,5 +1,5 @@
 #!/usr/bin/env R
-VERSION = "0.4"
+VERSION = "0.5"
 
 args = commandArgs(trailingOnly = T)
 
@@ -139,6 +139,19 @@
     write.table(df, file=out.genelist, sep="\t", quote=F)
 }
 
+
+writecellassignments <- function(sc){
+    dat <- sc@cluster$kpart
+    tab <- data.frame(row.names = NULL,
+                      cells = names(dat),
+                      cluster.initial = dat,
+                      cluster.final = sc@cpart,
+                      is.outlier = names(dat) %in% sc@out$out)
+
+    write.table(tab, file=out.assignments, sep="\t", quote=F, row.names = F)
+}
+
+
 pdf(out.pdf)
 
 if (use.filtnormconf){
@@ -148,6 +161,7 @@
     message(paste("         :: ",
                   sprintf("%.1f", 100 * nrow(getfdata(sc))/nrow(sc@expdata)), "% of genes remain,",
                   sprintf("%.1f", 100 * ncol(getfdata(sc))/ncol(sc@expdata)), "% of cells remain"))
+    write.table(as.matrix(sc@ndata), file=out.table, col.names=NA, row.names=T, sep="\t", quote=F)
 }
 
 if (use.cluster){
@@ -161,6 +175,7 @@
     sc <- do.clustmap(sc)
 
     mkgenelist(sc)
+    writecellassignments(sc)
 }
 
 dev.off()
--- a/scripts/clusterinspect.R	Mon Apr 15 17:55:17 2019 -0400
+++ b/scripts/clusterinspect.R	Mon Aug 12 12:59:06 2019 -0400
@@ -1,5 +1,5 @@
 #!/usr/bin/env R
-VERSION = "0.2"
+VERSION = "0.5"
 
 args = commandArgs(trailingOnly = T)
 
@@ -17,13 +17,30 @@
 test$line = 3
 
 do.plotting <- function(sc){
-    print(plotmap(sc, final = FALSE, fr = FALSE))
+
+    sc.tmp <- sc
+
+    ## If it's a subset, we need to get clever and subset specific parts
+    if (!(is.null(plotting.cln) || is.na(plotting.cln))){
+        cellstokeep <- names(sc.tmp@cpart[sc.tmp@cpart %in% plotting.cln])
+
+        ## Subselect partitions for initial and final clusters
+        sc.tmp@cpart <- sc.tmp@cpart[cellstokeep]
+        sc.tmp@cluster$kpart <- sc.tmp@cluster$kpart[cellstokeep]
+
+        ## Subselect tSNE and FR data
+        ## - Note: no names in tsne, so we assume it follows the ndata naming
+        sc.tmp@tsne <- sc.tmp@tsne[colnames(sc.tmp@ndata) %in% cellstokeep,]
+        sc.tmp@fr <- sc.tmp@fr[cellstokeep,]
+    }
+
+    print(plotmap(sc.tmp, final = FALSE, fr = FALSE))
     print(do.call(mtext, c("Initial Clustering tSNE", test)))
-    print(plotmap(sc, final = TRUE, fr = FALSE))
+    print(plotmap(sc.tmp, final = TRUE, fr = FALSE))
     print(do.call(mtext, c("Final Clustering tSNE", test)))
-    print(plotmap(sc, final = FALSE, fr = TRUE))
+    print(plotmap(sc.tmp, final = FALSE, fr = TRUE))
     print(do.call(mtext, c("Initial Clustering Fruchterman-Reingold", test)))
-    print(plotmap(sc, final = TRUE, fr = TRUE))
+    print(plotmap(sc.tmp, final = TRUE, fr = TRUE))
     print(do.call(mtext, c("Final Clustering Fruchterman-Reingold", test)))
 }
 
--- a/test-data/matrix.genelist	Mon Apr 15 17:55:17 2019 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-n	mean.ncl	mean.cl	fc	pv	padj
-ENSDARG00000108798	1	0.13225291542414	22.6067842060994	170.935998904815	5.63439752001819e-20	3.43529216795509e-16
-ENSDARG00000109030	1	0.186711263967539	34.6842724288799	185.764220603798	2.48233981248329e-19	7.56741291835532e-16
-ENSDARG00000108379	1	0.168199368419563	24.3874482842581	144.991319012715	4.11994031997326e-19	8.37309204362565e-16
-ENSDARG00000107599	1	0.194980763882093	20.9729826342942	107.564367975175	3.56470297051077e-18	5.43349850280104e-15
-ENSDARG00000107321	1	0.1	1.94683879586459	19.4683879586459	1.39905888784068e-09	1.70601240783292e-06
-ENSDARG00000105564	1	0.1	1.72137476189456	17.2137476189456	5.11677986670882e-09	5.19950114122061e-06
-ENSDARG00000090447	1	0.1	1.4302236712519	14.302236712519	3.51620742912878e-08	3.06261667077116e-05
-ENSDARG00000079591	1	0.11578454541401	1.47825950354764	12.767330028907	4.83701028926633e-08	3.6864064667071e-05
-ENSDARG00000107138	1	0.118643244515052	1.63372529702772	13.7700659123533	8.59237265783686e-08	5.36793599520202e-05
-ENSDARG00000041060	1	0.11578454541401	1.4382199783801	12.421519411226	8.84781911763433e-08	5.36793599520202e-05
-ENSDARG00000077004	1	0.1	1.29299827494356	12.9299827494356	1.0364347799037e-07	5.36793599520202e-05
-ENSDARG00000100003	1	0.1	1.29775216728225	12.9775216728225	1.05650700249999e-07	5.36793599520202e-05
-ENSDARG00000102310	1	0.129577145917004	1.72085266498654	13.2805260743185	1.20446928962954e-07	5.64896096836256e-05
-ENSDARG00000068650	1	0.115601615820105	1.27001296748153	10.9861177845289	2.26895176903151e-07	9.88128495413223e-05
-ENSDARG00000086678	1	0.128030253978187	1.35647794130946	10.5949796955067	3.16910756640577e-07	0.000122948041506908
-ENSDARG00000105857	1	0.105900327795989	1.37647789967886	12.9978625026598	3.22645344285801e-07	0.000122948041506908
-ENSDARG00000105159	1	0.1	1.16700756453584	11.6700756453584	3.44329675018825e-07	0.000123492825211163
-ENSDARG00000102997	1	0.125930886410326	1.40950930054417	11.1927211879659	3.75314178672153e-07	0.00012712725263134
-ENSDARG00000052615	1	0.109701288024116	1.2495211865536	11.3902143635625	4.65728278602572e-07	0.000149449753402099
-ENSDARG00000103046	1	0.111800655591977	1.27916812008568	11.441508221151	5.24275745356588e-07	0.000158237500570989
-ENSDARG00000105009	1	0.107892272707005	1.29390774186871	11.9925895470056	5.45020093815115e-07	0.000158237500570989
-ENSDARG00000069937	1	0.1	1.08683574177416	10.8683574177416	5.98190849813324e-07	0.000165780436877811
-ENSDARG00000034941	1	0.1	1.14009483992511	11.4009483992511	7.60152472832673e-07	0.000201506505515687
-ENSDARG00000099753	1	0.121501943616094	1.29493126702895	10.6577000210014	1.17807930734258e-06	0.000299281230702821
-ENSDARG00000076005	1	0.1	1.05371686166029	10.5371686166029	1.32743044013891e-06	0.00029931174491888
-ENSDARG00000041750	2	0.118845246250015	4.25427279350112	35.7967434772393	1.39550360463363e-07	0.000850838547745124
-ENSDARG00000103735	2	0.119337350478008	3.54379562135099	29.6956117020886	9.49083511390771e-07	0.00228722429441009
-ENSDARG00000101886	2	0.215092571957637	5.30165157388469	24.6482318084367	1.12541789129576e-06	0.00228722429441009
-ENSDARG00000090914	2	0.122178374276303	3.1027845112115	25.3955295246819	1.65948635889896e-06	0.00252947208255174
-ENSDARG00000090496	2	0.111721506487875	2.96053053983273	26.4991999562235	2.19562316256802e-06	0.00267734288443544
-ENSDARG00000078308	2	0.1	2.64934229048601	26.4934229048601	2.65009460603265e-06	0.00269293780216352
-ENSDARG00000075253	2	0.121220276605515	2.61038833734525	21.534254915456	7.21609407341446e-06	0.00624434487572006
-ENSDARG00000086877	2	0.174901657246515	3.44134351834849	19.6758771330457	8.19333426369698e-06	0.00624434487572006
-ENSDARG00000040487	2	0.132551316615554	2.19579056306671	16.5655884764638	5.8552609335758e-05	0.0389789127774957
-ENSDARG00000052912	2	0.29374667394921	3.98299817184644	13.5592962408661	6.97030598265265e-05	0.0389789127774957
-ENSDARG00000052558	2	0.307266492503596	4.25427279350112	13.8455474231422	7.0324428498024e-05	0.0389789127774957
-ENSDARG00000012071	2	0.137312605449286	2.19567880375095	15.9903658995232	8.47157718952949e-05	0.0419371525043834
-ENSDARG00000052515	2	0.142741634362038	2.26259398496241	15.8509743500887	8.94182356170222e-05	0.0419371525043834
-ENSDARG00000002897	2	0.155152648803008	2.06464107607378	13.3071597037005	0.000108713544348236	0.047344748563657
-ENSDARG00000087601	2	0.220544850783226	3.03609059600962	13.7663182124972	0.000128704633773863	0.0523141434746162
-ENSDARG00000020581	2	0.132645565796613	1.97090942840696	14.8584644844365	0.000140065988406919	0.0533738957073114
-ENSDARG00000005368	2	0.109588039327212	1.71813717094559	15.6781450009842	0.000165794148578122	0.0594615837576948
-ENSDARG00000013006	2	0.139223723099655	1.9643911375366	14.1096006758166	0.000196735880595178	0.0666388146660444
-ENSDARG00000059690	2	0.220277183931972	2.42251643631602	10.9975821965482	0.000320441653294837	0.102828040007296
-ENSDARG00000007906	2	0.161941295286845	1.92988721804511	11.9172025555725	0.000357508658491656	0.108986514541181
-ENSDARG00000099235	2	0.355572431070773	3.47503570154998	9.77307405719064	0.0005137976966319	0.145982086583318
-ENSDARG00000058248	2	0.187973361461239	1.79476640836755	9.54798272699739	0.000556896211693426	0.145982086583318
-ENSDARG00000013168	2	0.122745621089648	1.36391188645772	11.1116948559948	0.000584796437234187	0.145982086583318
-ENSDARG00000089066	2	0.213734450098499	2.20785246938186	10.3298858390137	0.000627746814730416	0.145982086583318
-ENSDARG00000018559	2	0.216649831175799	2.21719732132153	10.2340136121426	0.000632257513971329	0.145982086583318
-ENSDARG00000108459	3	0.1	40.0486298308386	400.486298308386	1.17120842343972e-21	7.140857757712e-18
-ENSDARG00000106631	3	0.1	16.7209600896533	167.209600896533	1.27082371024938e-20	2.65261585580336e-17
-ENSDARG00000106893	3	0.109440335656379	20.3249081306309	185.716792704722	1.30520708010662e-20	2.65261585580336e-17
-ENSDARG00000106328	3	0.109440335656379	13.3207925346078	121.717394731248	1.812771473855e-19	2.76311691902349e-16
-ENSDARG00000107500	3	0.194403356563789	23.5777850278158	121.282808304183	8.16923386605951e-19	9.96156377627297e-16
-ENSDARG00000107098	3	0.407548050942585	20.6628907529452	50.7005019534645	7.91289296843658e-15	8.0408180714263e-12
-ENSDARG00000106626	3	0.322331939034494	11.7938446379915	36.5891281928763	3.19108227960682e-14	2.77943266553754e-11
-ENSDARG00000063254	3	0.1	1.54154831743065	15.4154831743065	6.16683050966547e-09	4.69989570217879e-06
-ENSDARG00000105532	3	0.1	1.2691654791726	12.691654791726	6.59753120473869e-08	4.46946086169909e-05
-ENSDARG00000102291	3	0.1	1.20003533117234	12.0003533117234	1.03313712547645e-07	6.29903705402992e-05
-ENSDARG00000098646	3	0.1	1.22194683967797	12.2194683967797	1.14432499391301e-07	6.3426813526251e-05
-ENSDARG00000096706	3	0.1	1.2471262087964	12.471262087964	1.27992769850814e-07	6.50309931483676e-05
-ENSDARG00000056322	3	0.1	1.15253315794626	11.5253315794626	1.81837361851978e-07	7.7399961295303e-05
-ENSDARG00000087417	3	0.1	1.1540362057603	11.540362057603	1.83177220114043e-07	7.7399961295303e-05
-ENSDARG00000100789	3	0.109440335656379	1.31018291186832	11.9716638660726	1.90421423557413e-07	7.7399961295303e-05
-ENSDARG00000076768	3	0.1	1.18681657849799	11.8681657849799	2.13741147520963e-07	8.1448736027207e-05
-ENSDARG00000091869	3	0.1	1.10007995897679	11.0007995897679	3.18290687070941e-07	0.000107899200006755
-ENSDARG00000101145	3	0.1	1.10059661347904	11.0059661347904	3.19125599577782e-07	0.000107899200006755
-ENSDARG00000091967	3	0.1	1.1236667156373	11.236667156373	3.57604258883062e-07	0.000107899200006755
-ENSDARG00000099207	3	0.1	1.13395237668583	11.3395237668583	3.75510462080806e-07	0.000107899200006755
-ENSDARG00000079762	3	0.1	1.13482318163712	11.3482318163712	3.77047564405683e-07	0.000107899200006755
-ENSDARG00000100342	3	0.118880671312758	1.11971099812246	9.4187809149955	3.89336132548567e-07	0.000107899200006755
-ENSDARG00000091631	3	0.1	1.0336438761938	10.336438761938	5.26923351033268e-07	0.000136411029348096
-ENSDARG00000101776	3	0.1	1.03711906765213	10.3711906765213	5.36963212129621e-07	0.000136411029348096
-ENSDARG00000077068	3	0.1	1.0531104586081	10.531104586081	5.84457768774286e-07	0.000138268351040062
-ENSDARG00000103380	4	0.118732364944267	4.29504915730337	36.1742070859909	1.87281976492061e-10	1.1418582106721e-06
-ENSDARG00000037116	4	0.105401803653084	3.3624106287092	31.9008832123606	6.24221125271845e-10	1.90293810039122e-06
-ENSDARG00000102060	4	0.65335417049578	14.8778451385581	22.7714856817527	8.75163683692952e-09	1.77862432649198e-05
-ENSDARG00000102188	4	0.855834419578633	14.179562474169	16.5681142868153	2.26488443176202e-07	0.000318621197056678
-ENSDARG00000105127	4	1.2186946752299	22.1380023868484	18.1653393887785	2.6129342058117e-07	0.000318621197056678
-ENSDARG00000101413	4	0.163690456191388	2.80861987923491	17.1581162676402	3.73531302510856e-07	0.000379570058568115
-ENSDARG00000104118	4	0.989700274307544	15.0174505397369	15.1737358567916	6.77423754716057e-07	0.000590036090357685
-ENSDARG00000075333	4	0.171748726689293	2.3373595505618	13.6091812476157	1.50828806455175e-06	0.00110856685474393
-ENSDARG00000071113	4	0.128246671314964	1.77801966292135	13.8640609123855	1.68613897165096e-06	0.00110856685474393
-ENSDARG00000098655	4	0.153148025950228	2.3373595505618	15.2620938863516	1.81821691773647e-06	0.00110856685474393
-ENSDARG00000105209	4	1.54534561735873	23.4939455347753	15.2030363116638	2.06788281463169e-06	0.00114617104734631
-ENSDARG00000092124	4	0.167783479025787	2.20080865760876	13.1169568683846	2.51104682731582e-06	0.00117801683762716
-ENSDARG00000102424	4	0.995458642689216	12.8896835165257	12.9484872236424	2.51176298001526e-06	0.00117801683762716
-ENSDARG00000043130	4	0.151115417204371	1.96446629213483	12.9997741360702	2.99111460631241e-06	0.00128615842311759
-ENSDARG00000102305	4	1.00227191359572	12.5079159542882	12.4795634643849	3.16424083102573e-06	0.00128615842311759
-ENSDARG00000104251	4	1.25657639483624	16.1896340694694	12.8839234415026	4.03444006517729e-06	0.00153737381733662
-ENSDARG00000016348	4	0.130718858025808	1.82528654590158	13.9634523546802	7.40568226139146e-06	0.00265602616162963
-ENSDARG00000107668	4	2.0525826270598	26.1651913798814	12.7474485240877	1.23716885008222e-05	0.00419056582163961
-ENSDARG00000102171	4	0.209616501874572	2.24413623595506	10.7059139709233	1.41333189895541e-05	0.0045353076778585
-ENSDARG00000102300	4	1.16111393148624	12.0981196442604	10.4194078773774	1.50789368610256e-05	0.00459681390208365
-ENSDARG00000096457	4	0.122651614608118	1.49305555555556	12.1731422804827	1.58593667087189e-05	0.00460450280109806
-ENSDARG00000102445	4	1.3115800466299	12.8389700502745	9.78893364782744	3.22055454104447e-05	0.00892532774397644
-ENSDARG00000089213	4	0.12779725761052	1.38681171572623	10.8516547354461	3.54676572069977e-05	0.00940201330395934
-ENSDARG00000105147	4	1.98689642082857	20.3540415496165	10.2441382128659	4.3971555566058e-05	0.0111706072619273
-ENSDARG00000055075	4	0.169741281332608	1.59157303370787	9.37646411770147	4.82148454826373e-05	0.0117586365163056
-ENSDARG00000102705	5	0.209972550128478	13.5265663218744	64.4206412390466	5.51324807068058e-17	3.36142734869395e-13
-ENSDARG00000102125	5	0.233431470953978	10.4713938457086	44.8585351534415	1.77193932024865e-15	5.401757017778e-12
-ENSDARG00000105858	5	0.462925527809972	31.4875823414393	68.0186778430692	3.07338903352449e-15	6.24615097913294e-12
-ENSDARG00000104031	5	0.417738843341455	16.1643635536032	38.6949018777042	4.63887116279502e-14	7.07079936989031e-11
-ENSDARG00000103505	5	0.455814556718891	13.0057940562389	28.5330818521002	8.00401069394782e-13	8.56538424116237e-10
-ENSDARG00000107953	5	0.768435533248605	31.7530045869607	41.3216245385258	8.42911357175237e-13	8.56538424116237e-10
-ENSDARG00000104624	5	0.586363931713224	18.662951819579	31.8282738930583	1.03929690687218e-12	9.05227605885665e-10
-ENSDARG00000107433	5	0.860111367092678	34.1815671825659	39.7408620445342	2.15526546944614e-12	1.64258169590164e-09
-ENSDARG00000105003	5	0.659817827005108	18.3691699000608	27.8397599280362	4.05465742511909e-12	2.74680514677235e-09
-ENSDARG00000102147	5	0.498991534801074	11.6870331272134	23.4213053972398	5.94420491301204e-12	3.62418173546344e-09
-ENSDARG00000104149	5	0.591410894158957	12.7563563319083	21.5693631245145	2.16849130014449e-11	1.20193558699827e-08
-ENSDARG00000105370	5	0.845960751451064	21.1606791594491	25.0137835864755	2.88314145770954e-11	1.46487612230459e-08
-ENSDARG00000102471	5	0.591016786322552	11.9787944006235	20.2681119687961	3.97757415291587e-11	1.86548227771754e-08
-ENSDARG00000104225	5	0.677500552858849	13.028628755702	19.2304326553315	8.48219367396283e-11	3.69399534501081e-08
-ENSDARG00000102765	5	0.710420955035912	7.69305581025659	10.8288694973358	2.636812754442e-08	1.07177649092219e-05
-ENSDARG00000103900	5	0.926463189872816	8.83493365876684	9.53619502139064	1.4891189989945e-07	5.67447408554341e-05
-ENSDARG00000103207	5	0.809155048654974	6.95078624248591	8.5901784262978	3.17107715066467e-07	0.000113729749338838
-ENSDARG00000100850	5	0.10266571617904	1.06794343733293	10.4021427705286	3.65574205111742e-07	0.000123828107142572
-ENSDARG00000100222	5	0.117813108572049	1.02376729835175	8.6897571141302	1.53996760366899e-06	0.000376422800056221
-ENSDARG00000078327	5	0.105063152860082	0.901542752536163	8.58096038424425	1.59754149266682e-06	0.000376422800056221
-ENSDARG00000076659	5	0.107997148537119	0.902203678729055	8.35395833084392	1.63475485205548e-06	0.000376422800056221
-ENSDARG00000078658	5	0.103730294770562	0.912796947051807	8.79971419218265	1.70133206806343e-06	0.000376422800056221
-ENSDARG00000056152	5	0.109363711084075	0.821293559013241	7.50974478528675	2.30482270129059e-06	0.000411281146237518
-ENSDARG00000042974	5	0.111761147765118	0.823872029464418	7.37172126395753	2.39063753034635e-06	0.000411281146237518
-ENSDARG00000071240	5	0.110394585218162	0.833280258058883	7.54819864046915	2.53282560651987e-06	0.000411281146237518
-ENSDARG00000094010	6	0.111452978443105	4.44006630603854	39.8380228869803	6.38525950158321e-09	3.89309271811528e-05
-ENSDARG00000103594	6	1.13093354481739	15.5296459037369	13.7317050810836	2.76457859470178e-05	0.0842781784594839
-ENSDARG00000062868	6	0.148310913360651	2.35945460562356	15.9088400992179	4.74734577891717e-05	0.0964818907135266
-ENSDARG00000101986	6	1.06278096568171	11.921270245687	11.2170528365083	0.000104992972874659	0.160035538904199
-ENSDARG00000054302	6	0.114167149192999	1.69385093295239	14.8365878006548	0.000159146295603994	0.194062992859511
-ENSDARG00000004931	6	0.146147835707832	1.50738986001055	10.3141442547532	0.000273967771010734	0.271604620436783
-ENSDARG00000099280	6	0.174438502158969	1.76393397177854	10.1120678631546	0.000341416753578639	0.271604620436783
-ENSDARG00000104949	6	1.84012138595949	18.1422310489148	9.85925775731088	0.000356378048793549	0.271604620436783
-ENSDARG00000062192	6	0.219250133212514	1.93124420721189	8.8084060835666	0.000490459989622772	0.332259395192227
-ENSDARG00000014366	6	0.135611988044807	1.00529217065682	7.41300371118129	0.00101799998551309	0.595386680453464
-ENSDARG00000099776	6	0.165584080167415	1.27670227417667	7.7102960193145	0.00113607374054731	0.595386680453464
-ENSDARG00000014017	6	0.130935742022126	1.13118855425646	8.63926485455216	0.00124672027506227	0.595386680453464
-ENSDARG00000004527	6	0.161768890546368	1.40411105178857	8.67973469463903	0.00130573477419644	0.595386680453464
-ENSDARG00000015851	6	0.211160123828113	1.42542261170536	6.75043462687903	0.00136713359461186	0.595386680453464
-ENSDARG00000017037	6	0.11090453956233	0.860975851160853	7.76321559566973	0.0016197152098211	0.658360242285282
-ENSDARG00000018146	6	0.124837526779085	0.822444876257476	6.58812215747347	0.00208359331018621	0.755769031195207
-ENSDARG00000094732	6	0.201066488547157	1.22521720805992	6.09359230826055	0.00228107117057515	0.755769031195207
-ENSDARG00000021855	6	0.109168767482819	1.07499270061704	9.84707188149048	0.00231989733905826	0.755769031195207
-ENSDARG00000062058	6	0.122552380041629	0.881708382142295	7.19454311570935	0.00235519297895833	0.755769031195207
-ENSDARG00000089032	6	0.150988259365316	1.23158448554809	8.15682285977133	0.00250441767427358	0.7634717280023
-ENSDARG000001032071	6	1.66376642491526	10.8791567395556	6.53887263057956	0.00264170112721662	0.766973893935226
-ENSDARG00000101652	6	0.117661697666601	1.00798229432208	8.5667835354393	0.00288382859301584	0.79921376961898
-ENSDARG00000036809	6	0.178132306667668	1.05062387043439	5.89799733742001	0.0033324167246799	0.875163147449564
-ENSDARG00000037018	6	0.13196794390221	0.929979569662069	7.04701113136379	0.00344495908459727	0.875163147449564
-ENSDARG00000077737	6	0.229953264257691	1.41304633493481	6.1449283596658	0.00500781997902645	1
-ENSDARG00000104242	7	0.447206731128574	14.3756294075549	32.1453779805067	2.30113131457065e-13	1.40299976249373e-09
-ENSDARG00000102056	7	0.463880684093747	12.1589657830654	26.2114078037536	2.08698751307313e-12	6.36218143360344e-09
-ENSDARG00000102470	7	0.825035359668146	13.4793918534294	16.3379565438882	1.10737149331994e-09	2.25054799825723e-06
-ENSDARG00000104836	7	1.0201341649907	17.1513950198419	16.8128816860067	1.79596375972667e-09	2.73749776076337e-06
-ENSDARG00000104197	7	0.868813330133413	13.2077072533743	15.2020080669644	2.27590161725937e-09	2.77523443208607e-06
-ENSDARG00000102167	7	0.911623267267556	12.5281341487954	13.7426660755889	6.03157787269791e-09	6.12908838163986e-06
-ENSDARG00000105195	7	1.35837446108669	20.6382812121625	15.193366632977	1.20671859497662e-08	1.05105189622463e-05
-ENSDARG00000105669	7	1.55320812115904	19.4772872937536	12.5400369908053	8.3653757257818e-08	6.37546197501146e-05
-ENSDARG00000102820	7	1.12752840077096	11.8419301998565	10.5025560258699	1.31966552783421e-07	8.94000080356132e-05
-ENSDARG00000092989	7	0.133042434280628	1.21637077531351	9.14272789648302	2.82608004083509e-07	0.000172306100089716
-ENSDARG00000061806	7	0.13278988077121	1.12194957012091	8.44905924762421	7.25529240779189e-07	0.000402141071002793
-ENSDARG00000095512	7	0.134733887854507	1.08703031970933	8.06798005326739	1.27119959332606e-06	0.000645875326709081
-ENSDARG00000090634	7	0.14895440642195	1.13152352961684	7.5964421382173	1.67131715307221e-06	0.000689864250270158
-ENSDARG00000087555	7	0.106854974051793	0.876076138239269	8.19873989033614	1.8103703467808e-06	0.000689864250270158
-ENSDARG00000069269	7	0.131991994835001	1.03283452343888	7.82497851274993	2.01967640768832e-06	0.000724351003392688
-ENSDARG00000059558	7	0.112699471961133	0.967793901919788	8.58738630340302	3.00038333622434e-06	0.000888688802910736
-ENSDARG00000060566	7	0.127846770606366	1.01035836252462	7.90288528785342	3.78083155119976e-06	0.000992894397782283
-ENSDARG00000100206	7	0.139832328948304	1.04998427596811	7.5088806992286	4.54325865418129e-06	0.000992894397782283
-ENSDARG00000057206	7	0.121885624201679	0.88338782626096	7.24767856789453	4.55979057534917e-06	0.000992894397782283
-ENSDARG00000070623	7	0.12670584582223	0.943766658477006	7.44848552450473	5.87432370429556e-06	0.00110819712277626
-ENSDARG00000100514	7	0.121454028840368	0.820406006163069	6.75486860334098	7.45177975757828e-06	0.00116897636495374
-ENSDARG00000039265	7	0.131635113592875	0.87126351316452	6.6187773868543	9.18440046329954e-06	0.00133326880058898
-ENSDARG00000095904	7	0.168129332968718	1.08581712830248	6.45822539785194	1.03525068635208e-05	0.00139894259529663
-ENSDARG00000039350	7	0.133011711683714	0.897490439418404	6.74745425088979	1.06942592337219e-05	0.00139894259529663
-ENSDARG00000070512	7	0.12670239660567	0.910072943888678	7.18276029711621	1.10515908767776e-05	0.00139894259529663
-ENSDARG00000103551	8	1.61835767565622	32.2654393890171	19.93714978732	1.97522608849965e-06	0.0120429534615824
-ENSDARG00000078383	8	0.182610070366458	2.60621132144157	14.2720021749703	1.6366673021414e-05	0.0447464228757837
-ENSDARG00000093799	8	0.115321017732354	1.62941087246693	14.1293487042283	2.20172656433248e-05	0.0447464228757837
-ENSDARG00000036625	8	0.119337255991682	1.48171990557204	12.4162391137543	8.39663841121717e-05	0.127985760982978
-ENSDARG00000016706	8	0.180025642511508	1.82486224560436	10.1366795315712	0.000126325160000158	0.154040900104192
-ENSDARG00000040251	8	0.121540951107174	1.29918699186992	10.6892942669529	0.000198034398721646	0.201235954834313
-ENSDARG00000098674	8	0.253812764860557	2.21906493621457	8.74292093793513	0.000293366486612692	0.255522209839655
-ENSDARG00000098856	8	0.194513509828675	1.64663383642527	8.46539573459756	0.000451769293400039	0.296721325111977
-ENSDARG00000062226	8	0.144813536626749	1.38335068305012	9.55263378875725	0.000474939776632199	0.296721325111977
-ENSDARG00000075123	8	0.142439266402834	1.40532056857682	9.86610366696508	0.00048666774661633	0.296721325111977
-ENSDARG00000070239	8	0.154515334275144	1.27289156626506	8.23796273836765	0.000570475520527726	0.316199022605232
-ENSDARG00000026180	8	0.151758427938041	1.41564289946672	9.32826544595394	0.000683459166751383	0.347254211640265
-ENSDARG00000104786	8	0.182483274181232	1.61787042996763	8.8658559927024	0.00078762411588287	0.369395710349066
-ENSDARG00000101061	8	0.255483815147335	1.62613690189592	6.36493118344166	0.00150635451453941	0.61883047685698
-ENSDARG00000016584	8	0.135272462199637	0.880366460381022	6.50809814551733	0.00158197684628705	0.61883047685698
-ENSDARG00000070256	8	0.203213690445973	1.26976802854965	6.24843742448165	0.00178015471505539	0.61883047685698
-ENSDARG00000062745	8	0.130428963634169	0.955091918456498	7.32269805604966	0.00182445112094621	0.61883047685698
-ENSDARG00000086037	8	0.19632007891506	1.29918699186992	6.61769799120764	0.00182695564760138	0.61883047685698
-ENSDARG00000027310	8	0.193675103177481	1.44901164174846	7.48166190685131	0.00211840042255122	0.678671506770642
-ENSDARG00000103109	8	0.14293938597264	0.936026560054929	6.54841598545899	0.00240745117064372	0.678671506770642
-ENSDARG00000078352	8	0.177346649454539	1.15788746142844	6.52895030715114	0.0024876207141355	0.678671506770642
-ENSDARG00000035389	8	0.143574445102194	1.00421593036345	6.99439186164828	0.0026995869399452	0.678671506770642
-ENSDARG00000103106	8	0.175526172559138	1.23041862190788	7.00988692437495	0.0027017171947583	0.678671506770642
-ENSDARG00000007257	8	0.157933075856061	0.866671316548008	5.48758587680447	0.0028384639169755	0.678671506770642
-ENSDARG00000010596	8	0.110516369140454	0.836156159426777	7.56590327686312	0.00297745919336174	0.678671506770642
Binary file test-data/matrix.pdf has changed
Binary file test-data/matrix.rdat has changed
Binary file test-data/out_diffgene_multiple.pdf has changed