diff matutils.xml @ 2:daa704d3ac8f draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/usher commit d44fdcd836306a2096d50bebb28d8faacdb0fbfd
author iuc
date Mon, 02 Feb 2026 14:37:36 +0000
parents 75e51e947a98
children
line wrap: on
line diff
--- a/matutils.xml	Sun Dec 19 15:50:21 2021 +0000
+++ b/matutils.xml	Mon Feb 02 14:37:36 2026 +0000
@@ -1,133 +1,155 @@
-<tool id='usher_matutils' name='UShER matUtils' version='@TOOL_VERSION@+@GALAXY_TOOL_VERSION@' profile='20.01'>
+<tool id='usher_matutils' name='UShER matUtils' version='@TOOL_VERSION@+galaxy@VERSION_SUFFIX@' profile='@PROFILE@'>
     <description>analyze, edit, and manipulate mutation annotated tree files</description>
     <macros>
         <import>macros.xml</import>
     </macros>
-    <expand macro='edam_ontology' />
+    <expand macro="xrefs"/>
     <expand macro='requirements' />
-    <version_command>usher --version</version_command>
+    <expand macro="version"/>
     <command detect_errors='exit_code'><![CDATA[
-        matUtils
-        $matutils_mode.options_mode
-        --input-mat $mutation_annotation_file
-        #if $matutils_mode.options_mode == 'extract'
-            #if $matutils_mode.operation_mode.operation == 'samples'
-                #if $matutils_mode.operation_mode.samples
-                    --samples '${matutils_mode.operation_mode.samples}'
-                #end if
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'clade'
-                --clade '${matutils_mode.operation_mode.clade}'
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'mutation'
-                --mutation '${matutils_mode.operation_mode.mutation}'
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'max-epps'
-                --max-epps $matutils_mode.operation_mode.max_epps
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'max-parsimony'
-                --max-parsimony $matutils_mode.operation_mode.max_parsimony
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'nearest-k'
-                --nearest-k '${matutils_mode.operation_mode.nearest_k}'
-                $matutils_mode.operation_mode.prune
-            #elif $matutils_mode.operation_mode.operation == 'max-branch-length'
-                --max-branch-length $matutils_mode.operation_mode.max_branch_length
-            #end if
-            $matutils_mode.get_representative
-            $matutils_mode.resolve_polytomies
-            #if 'used-samples' in $matutils_mode.outputs_extract
-                --used-samples selected_samples.txt ##$selected_samples
-            #end if
-            #if 'sample-paths' in $matutils_mode.outputs_extract
-                --sample-paths path_mutations.tabular ##$path_mutations
-            #end if
-            #if 'clade-paths' in $matutils_mode.outputs_extract
-                --clade-paths path_clades.tabular ##$path_clades
-            #end if
-            #if 'all-paths' in $matutils_mode.outputs_extract
-                --all-paths all_paths.txt ##$all_paths
-            #end if
-            #if 'write-vcf' in $matutils_mode.outputs_extract
-                --write-vcf subtree_vcf.vcf ##$subtree_vcf
-            #end if
-            #if 'write-vcf-no-genotypes' in $matutils_mode.outputs_extract and 'write-vcf' not in $matutils_mode.outputs_extract
-                --write-vcf subtree_vcf_no_genotypes.vcf --no-genotypes
-            #end if
-            #if 'write-mat' in $matutils_mode.outputs_extract
-                --write-mat mutation_annotated.pb ##$mutation_annotated
-            #end if
-            #if 'write-mat-collapsed' in $matutils_mode.outputs_extract and 'write-mat' not in $matutils_mode.outputs_extract
-                --write-mat mutation_annotated_collapsed.pb --collapsed-tree
-            #end if
-            #if 'write-json' in $matutils_mode.outputs_extract
-                --write-json subtree_json.json ##$subtree_json
-            #end if
-            #if 'write-tree' in $matutils_mode.outputs_extract
-                --write-tree tree_newick.nh ##$tree_newick
+    ## get correct extension filenames
+    ln -sf '$mutation_annotation_file' '$mutation_annotation_file.element_identifier' &&
+    
+    matUtils
+    $matutils_mode.options_mode
+    --input-mat '$mutation_annotation_file.element_identifier'
+
+    #if $matutils_mode.options_mode == 'extract'
+        #if $matutils_mode.operation_mode.operation == 'samples'
+            #if $matutils_mode.operation_mode.samples
+                --samples '${matutils_mode.operation_mode.samples}'
             #end if
-            #if 'write-tree-retain-branch' in $matutils_mode.outputs_extract and 'write-tree' not in $matutils_mode.outputs_extract
-                --write-tree tree_newick_retain_branch.nh --retain-branch-length
-            #end if
-        #elif $matutils_mode.options_mode == 'summary'
-            #if 'samples' in $matutils_mode.summary_options
-                --samples samples_stats.tabular
-            #end if
-            #if 'clades' in $matutils_mode.summary_options
-                --clades clades_stats.tabular
-            #end if
-            #if 'mutations' in $matutils_mode.summary_options
-                --mutations mutations_stats.tabular
-            #end if
-            #if 'aberrant' in $matutils_mode.summary_options
-                --aberrant aberrant_stats.tabular
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'clade'
+            --clade '${matutils_mode.operation_mode.clade}'
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'mutation'
+            --mutation '${matutils_mode.operation_mode.mutation}'
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'max-epps'
+            --max-epps $matutils_mode.operation_mode.max_epps
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'max-parsimony'
+            --max-parsimony $matutils_mode.operation_mode.max_parsimony
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'nearest-k'
+            --nearest-k '${matutils_mode.operation_mode.nearest_k}'
+            $matutils_mode.operation_mode.prune
+        #elif $matutils_mode.operation_mode.operation == 'max-branch-length'
+            --max-branch-length $matutils_mode.operation_mode.max_branch_length
+        #end if
+        $matutils_mode.get_representative
+        $matutils_mode.resolve_polytomies
+        #if 'used-samples' in $matutils_mode.outputs_extract
+            --used-samples selected_samples.txt ##$selected_samples
+        #end if
+        #if 'sample-paths' in $matutils_mode.outputs_extract
+            --sample-paths path_mutations.tabular ##$path_mutations
+        #end if
+        #if 'clade-paths' in $matutils_mode.outputs_extract
+            --clade-paths path_clades.tabular ##$path_clades
+        #end if
+        #if 'all-paths' in $matutils_mode.outputs_extract
+            --all-paths all_paths.txt ##$all_paths
+        #end if
+        #if 'write-vcf' in $matutils_mode.outputs_extract
+            --write-vcf subtree_vcf.vcf ##$subtree_vcf
+        #end if
+        #if 'write-vcf-no-genotypes' in $matutils_mode.outputs_extract and 'write-vcf' not in $matutils_mode.outputs_extract
+            --write-vcf subtree_vcf_no_genotypes.vcf --no-genotypes
+        #end if
+        #if 'write-mat' in $matutils_mode.outputs_extract
+            --write-mat mutation_annotated.pb ##$mutation_annotated
+        #end if
+        #if 'write-mat-collapsed' in $matutils_mode.outputs_extract and 'write-mat' not in $matutils_mode.outputs_extract
+            --write-mat mutation_annotated_collapsed.pb --collapsed-tree
+        #end if
+        #if 'write-json' in $matutils_mode.outputs_extract
+            --write-json subtree_json.json ##$subtree_json
+        #end if
+        #if 'write-tree' in $matutils_mode.outputs_extract
+            --write-tree tree_newick.nh ##$tree_newick
+        #end if
+        #if 'write-tree-retain-branch' in $matutils_mode.outputs_extract and 'write-tree' not in $matutils_mode.outputs_extract
+            --write-tree tree_newick_retain_branch.nh --retain-branch-length
+        #end if
+
+    #elif $matutils_mode.options_mode == 'summary'
+        #if 'samples' in $matutils_mode.summary_options
+            --samples samples_stats.tabular
+        #end if
+        #if 'clades' in $matutils_mode.summary_options
+            --clades clades_stats.tabular
+        #end if
+        #if 'sample_clades' in $matutils_mode.summary_options
+            --sample-clades sampleclades_stats.tabular
+        #end if
+        #if 'mutations' in $matutils_mode.summary_options
+            --mutations mutations_stats.tabular
+        #end if
+        #if 'aberrant' in $matutils_mode.summary_options
+            --aberrant aberrant_stats.tabular
+        #end if
+        #if 'haplotype' in $matutils_mode.summary_options
+            --haplotype haplotype_stats.tabular
+        #end if
+        #if 'calculate_roho' in $matutils_mode.summary_options
+            --calculate-roho roho_stats.tabular
+        #end if
+        #if 'node_stats' in $matutils_mode.summary_options
+            --node-stats node_stats.tabular
+        #end if
+        --output-directory ./
+
+    #elif $matutils_mode.options_mode == 'annotate'
+        #if $matutils_mode.clade_names
+            --clade-names '${matutils_mode.clade_names}'
+            #if $matutils_mode.allele_frequency
+                --allele-frequency $matutils_mode.allele_frequency
             #end if
-            --output-directory ./
-        #elif $matutils_mode.options_mode == 'annotate'
-            #if $matutils_mode.clade_names
-                --clade-names '${matutils_mode.clade_names}'
-                #if $matutils_mode.allele_frequency
-                    --allele-frequency $matutils_mode.allele_frequency
-                #end if
-                #if $matutils_mode.set_overlap
-                    --set-overlap $matutils_mode.set_overlap
-                #end if
-                #if $matutils_mode.mask_frequency
-                    --mask-frequency $matutils_mode.mask_frequency
-                #end if
-                #if $matutils_mode.clip_sample_frequency
-                    --clip-sample-frequency $matutils_mode.clip_sample_frequency
-                #end if
+            #if $matutils_mode.set_overlap
+                --set-overlap $matutils_mode.set_overlap
             #end if
-            #if $matutils_mode.clade_to_nid
-                --clade-to-nid '${matutils_mode.clade_to_nid}'
+            #if $matutils_mode.mask_frequency
+                --mask-frequency $matutils_mode.mask_frequency
+            #end if
+            #if $matutils_mode.clip_sample_frequency
+                --clip-sample-frequency $matutils_mode.clip_sample_frequency
             #end if
-            $matutils_mode.clear_current
-            --output-mat output_mat.pb ##$output_mat
-        #elif $matutils_mode.options_mode == 'uncertainty'
-            --samples '${matutils_mode.samples}'
-            #if 'get-parsimony' in $matutils_mode.uncertainty_options
-                --get-parsimony
-            #end if
-            #if 'find-epps' in $matutils_mode.uncertainty_options
-                --find-epps equally_parsimonious.tabular
-            #end if
-            #if 'find-neighborhood' in $matutils_mode.uncertainty_options
-                --find-neighborhood neighborhood.tabular
-            #end if
-        #elif $matutils_mode.options_mode == 'mask'
-            #if $matutils_mode.restricted_samples
-                --restricted-samples '${matutils_mode.restricted_samples}'
-            #end if
-            #if $matutils_mode.rename_samples
-                --rename-samples '${matutils_mode.rename_samples}'
-            #end if
-            $$matutils_mode.simplify
-            --output-mat output_mat.pb ##$output_mat
+        #end if
+        #if $matutils_mode.clade_to_nid
+            --clade-to-nid '${matutils_mode.clade_to_nid}'
+        #end if
+        $matutils_mode.clear_current
+        --output-mat output_mat.pb ##$output_mat
+
+    #elif $matutils_mode.options_mode == 'uncertainty'
+        --samples '${matutils_mode.samples}'
+        #if 'find-epps' in $matutils_mode.uncertainty_options
+            --find-epps equally_parsimonious.tabular
+        #end if
+        #if 'record-placements' in $matutils_mode.uncertainty_options
+            --record-placements parent_placements.tabular
         #end if
-        --threads \${GALAXY_SLOTS:-1} > output_stdout.txt
 
-    ]]>    </command>
+    #elif $matutils_mode.options_mode == 'mask'
+        #if $matutils_mode.restricted_samples
+            --restricted-samples '${matutils_mode.restricted_samples}'
+        #end if
+        #if $matutils_mode.rename_samples
+            --rename-samples '${matutils_mode.rename_samples}'
+        #end if
+        #if $matutils_mode.mask_mutations
+            --mask-mutations '${matutils_mode.mask_mutations}'
+        #end if
+        $matutils_mode.simplify
+        $matutils_mode.condense_tree
+        --output-mat output_mat.pb ##$output_mat
+    #end if
+
+    --threads \${GALAXY_SLOTS:-1} > output_stdout.txt
+
+]]> </command>
     <inputs>
         <param name="mutation_annotation_file" type="data" format="protobuf3" label="Mutation-annotated tree object" help="Load a mutation annotated tree file, in protocol-buffers format (protobuf3)."/>
         <conditional name="matutils_mode">
@@ -204,8 +226,12 @@
                     <option value="general">Number of nodes, number of samples, number of condensed nodes, and total tree parsimony</option>
                     <option value="samples">Samples in the tree and their parsimony score (--samples)</option>
                     <option value="clades">Clades and the count of associated samples in the tree (--clades)</option>
+                    <option value="sample_clades">All samples and their associated clade values (--sample-clades)</option>
                     <option value="mutations">Mutations in the tree and their occurrence count (--mutations)</option>
                     <option value="aberrant">Potentially problematic nodes (--aberrant)</option>
+                    <option value="haplotype">Haplotypes and their total frequency (--haplotype)</option>
+                    <option value="calculate_roho">Distribution of RoHO values for all homoplasic mutations (--calculate-roho)</option>
+                    <option value="node_stats">Per internal node, the number of descendents, mutations, mutational density, and reversion mutations (--node-stats)</option>
                 </param>
             </when>
             <when value="annotate">
@@ -220,15 +246,16 @@
             <when value="uncertainty">
                 <param argument="--samples" type="data" format="txt" label="Select samples by explicitly naming them, one per line in a plain text file" />
                 <param name="uncertainty_options" type="select" display="checkboxes" multiple="true" label="Metrics for sample placement certainty">
-                    <option value="get-parsimony">Total tree parsimony score (--get-parsimony)</option>
                     <option value="find-epps">Number of equally parsimonious placements for each sample (--find-epps)</option>
-                    <option value="find-neighborhood">Neighborhood size scores (--find-neighborhood)</option>
+                    <option value="record-placements">Record potential parents for each sample (--record-placements)</option>
                 </param>
             </when>
             <when value="mask">
                 <param argument="--restricted-samples" type="data" format="txt" optional="True" label="Select samples by explicitly naming them, one per line in a plain text file" help="Sample names to restrict. Use to perform masking"/>
                 <param argument="--rename-samples" type="data" format="tabular" optional="True" label="TSV file containing names of the samples to be renamed and their new names"/>
+                <param argument="--mask-mutations" type="data" format="tabular" optional="True" label="TSV or CSV containing mutations to be masked in the first column and locations to mask downstream from in the second."/>
                 <param argument="--simplify" type="boolean" truevalue="--simplify" falsevalue="" label="Use to automatically remove identifying information from the tree, including all sample names and private mutations" />
+                <param argument="--condense-tree" type="boolean" truevalue="--condense-tree" falsevalue="" label="Use to recondense the tree before saving." />
             </when>
         </conditional>
     </inputs>
@@ -275,23 +302,33 @@
         <data name="clades_stats" format="tabular" from_work_dir='clades_stats.tabular' label="${tool.name} on ${on_string}: clades stats">
             <filter>matutils_mode['options_mode'] == 'summary' and 'clades' in matutils_mode['summary_options']</filter>
         </data>  
+        <data name="sampleclades_stats" format="tabular" from_work_dir='sampleclades_stats.tabular' label="${tool.name} on ${on_string}: sample - clades stats">
+            <filter>matutils_mode['options_mode'] == 'summary' and 'sample_clades' in matutils_mode['summary_options']</filter>
+        </data>  
+
         <data name="mutations_stats" format="tabular" from_work_dir='mutations_stats.tabular' label="${tool.name} on ${on_string}: mutations stats">
             <filter>matutils_mode['options_mode'] == 'summary' and 'mutations' in matutils_mode['summary_options']</filter>
         </data>  
         <data name="aberrant_stats" format="tabular" from_work_dir='aberrant_stats.tabular' label="${tool.name} on ${on_string}: aberrant stats">
             <filter>matutils_mode['options_mode'] == 'summary' and 'aberrant' in matutils_mode['summary_options']</filter>
         </data>  
-        <data name="output_mat" format="protobuf3" from_work_dir='output_mat.pb' label="${tool.name} on ${on_string}: mutation annotated tree">
-            <filter>matutils_mode['options_mode'] == 'annotate' or matutils_mode['options_mode'] == 'mask'</filter>
+        <data name="haplotype_stats" format="tabular" from_work_dir='haplotype_stats.tabular' label="${tool.name} on ${on_string}: haplotype stats">
+            <filter>matutils_mode['options_mode'] == 'summary' and 'haplotype' in matutils_mode['summary_options']</filter>
+        </data>  
+        <data name="roho_stats" format="tabular" from_work_dir='roho_stats.tabular' label="${tool.name} on ${on_string}: RoHo stats">
+            <filter>matutils_mode['options_mode'] == 'summary' and 'calculate_roho' in matutils_mode['summary_options']</filter>
         </data>  
-        <data name="total_parsimony_tree" format="txt" from_work_dir='output_stdout.txt' label="${tool.name} on ${on_string}: parsimony tree">
-            <filter>matutils_mode['options_mode'] == 'uncertainty' and 'get-parsimony' in matutils_mode['uncertainty_options']</filter>
+        <data name="node_stats" format="tabular" from_work_dir='node_stats.tabular' label="${tool.name} on ${on_string}: node stats">
+            <filter>matutils_mode['options_mode'] == 'summary' and 'node_stats' in matutils_mode['summary_options']</filter>
+        </data>  
+        <data name="output_mat" format="protobuf3" from_work_dir='output_mat.pb' label="${tool.name} on ${on_string}: mutation tree">
+            <filter>matutils_mode['options_mode'] == 'annotate' or matutils_mode['options_mode'] == 'mask'</filter>
         </data>  
         <data name="equally_parsimonious" from_work_dir='equally_parsimonious.tabular' format="tabular" label="${tool.name} on ${on_string}: equally parsimonious placements">
             <filter>matutils_mode['options_mode'] == 'uncertainty' and 'find-epps' in matutils_mode['uncertainty_options']</filter>
         </data>  
-        <data name="neighbourhood" format="tabular" from_work_dir='neighborhood.tabular' label="${tool.name} on ${on_string}: neighborhood size scores">
-            <filter>matutils_mode['options_mode'] == 'uncertainty' and 'find-neighborhood' in matutils_mode['uncertainty_options']</filter>
+        <data name="parent_placements" format="tabular" from_work_dir='parent_placements.tabular' label="${tool.name} on ${on_string}: Potential parents">
+            <filter>matutils_mode['options_mode'] == 'uncertainty' and 'record-placements' in matutils_mode['uncertainty_options']</filter>
         </data>  
     </outputs>
     <tests>
@@ -325,9 +362,12 @@
             <output name="path_mutations" file="test_14_path_mutations.tabular" ftype="tabular"/>
             <output name="path_clades" file="test_14_path_clades.tabular" ftype="tabular"/>
             <output name="all_paths" file="test_14_all_paths.txt" ftype="txt"/>
-            <output name="subtree_vcf" ftype="vcf">
+            <output name="subtree_vcf" ftype="vcf" >
                 <assert_contents>
-                    <has_size value="7219100" delta="300"/>
+                    <has_line line="##fileformat=VCFv4.2" />
+                    <has_line_matching expression="#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT.+" />
+                    <has_n_columns n="1105" comment="#" />
+                    <has_n_lines n="3204" />
                 </assert_contents>
             </output>
         </test>
@@ -352,17 +392,13 @@
                 <param name="options_mode" value="extract"/>
                 <param name="outputs_extract" value="used-samples,sample-paths,write-vcf"/>
                 <conditional name="operation_mode">
-                    <param name="operation" value="clades"/>
-                    <param name="clade" value="B.1.160.7, B.1.258.4"/>
+                    <param name="operation" value="clade"/>
+                    <param name="clade" value="B.1.160.7,B.1.258.4"/>
                 </conditional>
             </conditional>
             <output name="selected_samples" file="test_16_sample_names.txt" ftype="txt"/>
             <output name="path_mutations" file="test_16_path_mutations.tabular" ftype="tabular"/>
-            <output name="subtree_vcf" ftype="vcf">
-                <assert_contents>
-                    <has_size value="8999600" delta="300"/>
-                </assert_contents>
-            </output>
+            <output name="subtree_vcf" file="test_16_subtree.vcf" ftype="vcf" />
         </test>
         <test expect_num_outputs="5">
             <param name="mutation_annotation_file" value="mutation_annotation.pb" ftype="protobuf3"/>
@@ -378,9 +414,12 @@
             <output name="path_mutations" file="test_17_path_mutations.tabular" ftype="tabular"/>
             <output name="path_clades" file="test_17_path_clades.tabular" ftype="tabular"/>
             <output name="all_paths" file="test_17_all_paths.txt" ftype="txt"/>
-            <output name="subtree_vcf" ftype="vcf">
+            <output name="subtree_vcf" ftype="vcf" >
                 <assert_contents>
-                    <has_size value="8999600" delta="300"/>
+                    <has_line line="##fileformat=VCFv4.2" />
+                    <has_line_matching expression="#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT.+" />
+                    <has_n_columns n="1243" comment="#" />
+                    <has_n_lines n="3558" />
                 </assert_contents>
             </output>
         </test>
@@ -398,9 +437,12 @@
             <output name="path_mutations" file="test_18_path_mutations.tabular" ftype="tabular"/>
             <output name="path_clades" file="test_18_path_clades.tabular" ftype="tabular"/>
             <output name="all_paths" file="test_18_all_paths.txt" ftype="txt"/>
-            <output name="subtree_vcf" ftype="vcf">
+            <output name="subtree_vcf" ftype="vcf" >
                 <assert_contents>
-                    <has_size value="1183300" delta="300"/>
+                    <has_line line="##fileformat=VCFv4.2" />
+                    <has_text_matching expression="#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT.+" />
+                    <has_n_columns n="450" comment="#" />
+                    <has_n_lines n="1256" />
                 </assert_contents>
             </output>
         </test>
@@ -426,35 +468,44 @@
             </conditional>
             <output name="general_stats" file="test_20_general_stats.txt" ftype="txt"/>
         </test>
-        <test expect_num_outputs="4">
+        <test expect_num_outputs="8">
             <param name="mutation_annotation_file" value="mutation_annotation.pb" ftype="protobuf3"/>
             <conditional name="matutils_mode">
                 <param name="options_mode" value="summary"/>
-                <param name="summary_options" value="samples,clades,mutations,aberrant"/>
+                <param name="summary_options" value="samples,clades,mutations,aberrant,sample_clades,haplotype,calculate_roho,node_stats"/>
             </conditional>
             <output name="samples_stats" file="test_21_sample_stats.tabular" ftype="tabular"/>
             <output name="clades_stats" file="test_21_clades_stats.tabular" ftype="tabular"/>
             <output name="mutations_stats" file="test_21_mutations_stats.tabular" ftype="tabular"/>
             <output name="aberrant_stats" file="test_21_aberrant_stats.tabular" ftype="tabular"/>       
+            <output name="sampleclades_stats" file="test_21_sampleclades_stats.tabular" ftype="tabular"/>       
+            <output name="haplotype_stats" file="test_21_haplotype_stats.tabular" ftype="tabular"/>       
+            <output name="roho_stats" file="test_21_roho_stats.tabular" ftype="tabular"/>       
+            <output name="node_stats" file="test_21_node_stats.tabular" ftype="tabular"/>       
         </test>
         <test expect_num_outputs="1">
             <param name="mutation_annotation_file" value="mutation_annotation.pb" ftype="protobuf3"/>
             <conditional name="matutils_mode">
                 <param name="options_mode" value="uncertainty"/>
                 <param name="samples" value="sample_names.txt"/>
-                <param name="uncertainty_options" value="get-parsimony"/>
+                <param name="uncertainty_options" value="record-placements"/>
             </conditional>
-            <output name="total_parsimony_tree" file="test_22_total_parsimony_tree.txt" ftype="txt"/>
+            <output name="parent_placements" ftype="tabular" >
+                <assert_contents>
+                    <has_line_matching expression="placement\tsample" />
+                    <has_n_columns n="2" />
+                    <has_n_lines n="3240" />
+                </assert_contents>
+            </output>
         </test>
-        <test expect_num_outputs="2">
+        <test expect_num_outputs="1">
             <param name="mutation_annotation_file" value="mutation_annotation.pb" ftype="protobuf3"/>
             <conditional name="matutils_mode">
                 <param name="options_mode" value="uncertainty"/>
                 <param name="samples" value="sample_names.txt"/>
-                <param name="uncertainty_options" value="find-epps,find-neighborhood"/>
+                <param name="uncertainty_options" value="find-epps"/>
             </conditional>
-            <output name="equally_parsimonious" file="test_23_equally_parsimoniou.tabular" ftype="tabular"/>
-            <output name="neighbourhood" file="test_23_neighbourhood.tabular" ftype="tabular"/>
+            <output name="equally_parsimonious" file="test_23_equally_parsimonious.tabular" ftype="tabular"/>
         </test>
         <test expect_num_outputs="1">
             <param name="mutation_annotation_file" value="mutation_annotation.pb" ftype="protobuf3"/>