<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pise PUBLIC "pise2.dtd" "pise2.dtd" >
<pise>
	<head>
		<title>MPboot on XSEDE</title>
		<version>1.2</version>
		<description>Fast maximum parsimony tree inference - run on XSEDE</description>
		<authors>D.T. Hoang, L.S. Vinh, T. Flouri, A. Stamatakis, A. von Haeseler, and B.Q. Minh </authors>
		<reference>
			D.T. Hoang, L.S. Vinh, T. Flouri, A. Stamatakis, A. von Haeseler, and B.Q. Minh (2018) MPBoot: fast phylogenetic maximum parsimony tree inference and bootstrap approximation. BMC Evol. Biol., 18, 11. https://doi.org/10.1186/s12862-018-1131-3.
		</reference>
		<category>Phylogeny / Alignment</category>
	</head>
	
	<command>mpboot_xsede</command>
	   
<!--
*****************************************************************************************************************************************
Created by Mark Miller for CSG, 3_2_2022 or thereabouts.
*****************************************************************************************************************************************
Basic setup: 

[cipres@login01| /expanse/projects/ngbt/opt/benchmarks/MPBoot-1.1.0_expanse/218/218.coste.wrapper.shared]> /expanse/projects/ngbt/home/cipres/ngbw/contrib/scripts/mpboot_1.1.0_expanse -h
mpboot-avx -h
MPBoot version 1.1.0 for Linux 64-bit built Feb 24 2022
Copyright (c) 2016 Diep Thi Hoang, Le Sy Vinh, Tomas Flouri, Alexandros Stamatakis, Arndt von Haeseler and Bui Quang Minh.

Usage: mpboot-avx -s <alignment> [OPTIONS] [<treefile>] 

GENERAL OPTIONS:
  -?                   Printing this help dialog
  -s <alignment>       Input alignment (REQUIRED) in PHYLIP/FASTA/NEXUS format
  -st <data_type>      BIN, DNA, AA, CODON, or MORPH (default: auto-detect)
  <treefile>           Initial tree for tree reconstruction (default: MP)
  -pre <PREFIX>        Using <PREFIX> for output files (default: alignment name)
  -seed <number>       Random seed number, normally used for debugging purpose
  -v, -vv, -vvv        Verbose mode, printing more messages to screen

MPBOOT - MAXIMUM PARSIMONY BOOTSTRAP APPROXIMATION:
  -mulhits                  Store multiple equally parsimonious trees per bootstrap replicate
  -ratchet_iter <number>    Number of non-ratchet iterations before each ratchet iteration (default: 1)
  -ratchet_wgt <number>     Weight to add to each site selected for perturbation during ratchet (default: 1)
  -ratchet_percent <number> Percentage of informative sites selected for perturbation during ratchet (default: 50)
  -ratchet_off              Turn of ratchet, i.e. Only use tree perturbation
  -spr_rad <number>         Maximum radius of SPR (default: 6)
  -cand_cutoff <#s>         Use top #s percentile as cutoff for selecting bootstrap candidates (default: 10)
  -opt_btree_off            Turn off refinement step on the final bootstrap tree set
  -nni_pars                 Hill-climb by NNI instead of SPR
  -cost <file>              Read <file> for the matrix of transition cost between character states
                            Replace <file> by letter e for uniform cost.

NEW STOCHASTIC TREE SEARCH ALGORITHM:
  -numpars <number>    Number of initial parsimony trees (default: 100)
  -toppars <number>    Number of best parsimony trees (default: 20)
  -numcand <number>    Size of the candidate tree set (defaut: 5)
  -pers <perturbation> Perturbation strength for randomized NNI (default: 0.5)
  -numstop <number>    Number of unsuccessful iterations to stop (default: 100)
  -n <#iterations>     Fix number of iterations to <#iterations> (default: auto)
  -iqp                 Use the IQP tree perturbation (default: randomized NNI)
  -iqpnni              Switch back to the old IQPNNI tree search algorithm

ULTRAFAST BOOTSTRAP:
  -bb <#replicates>    Ultrafast bootstrap (>=1000)
  -nm <#iterations>    Maximum number of iterations (default: 1000)
  -nstep <#iterations> #Iterations for UFBoot stopping rule (default: 100)
  -bcor <min_corr>     Minimum correlation coefficient (default: 0.99)
  -beps <epsilon>      RELL epsilon to break tie (default: 0.5)

CONSENSUS RECONSTRUCTION:
  <tree_file>          Set of input trees for consensus reconstruction
  -t <threshold>       Min split support in range [0,1]. 0.5 for majority-rule
                       consensus (default: 0, i.e. extended consensus)
  -bi <burnin>         Discarding <burnin> trees at beginning of <treefile>
  -con                 Computing consensus tree to .contree file
  -net                 Computing consensus network to .nex file
  -sup <target_tree>   Assigning support values for <target_tree> to .suptree

ROBINSON-FOULDS DISTANCE:
  -rf_all              Computing all-to-all RF distances of trees in <treefile>
  -rf <treefile2>      Computing all RF distances between two sets of trees
                       stored in <treefile> and <treefile2>
  -rf_adj              Computing RF distances of adjacent trees in <treefile>

GENERATING RANDOM TREES:
  -r <num_taxa>        Create a random tree under Yule-Harding model.
  -ru <num_taxa>       Create a random tree under Uniform model.
  -rcat <num_taxa>     Create a random caterpillar tree.
  -rbal <num_taxa>     Create a random balanced tree.
  -rcsg <num_taxa>     Create a random circular split network.
  -rlen <min_len> <mean_len> <max_len>  
                       min, mean, and max branch lengths of random trees.

    
 -->

<parameters> 
			<parameter ismandatory="1" ishidden="1" type="String">
						<name>mpboot_command</name>
						<attributes>
<!--							<precond>
								<language>perl</language>	
								<code></code>
							</precond> -->
							<format>
								<language>perl</language>		
								<code>"<![CDATA[mpboot_1.2_expanse]]>"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>	


<!-- ################################################################################################ -->
<!-- configuration for mpboot 1.1.0 -->
<!-- ################################################################################################ -->
<!-- rules 
[cipres@login01| /expanse/projects/ngbt/opt/benchmarks/rules]> cat MPBoot.Expanse.rules
Rules for running MPBoot on Expanse via the CIPRES gateway

All runs are serial in the shared partition of Expanse.
The charged usage is based upon the Slurm memory.

- Ask the user whether extra memory is needed for the analysis.

- Specify the Slurm memory according to the following table.

   Extra   Slurm
  memory  memory

      no      6G

     yes     24G

- Include the following in the run script.

  #SBATCH -p shared
  #SBATCH -*qos=shared-cipres
  #SBATCH -N 1
  #SBATCH -*ntasks-per-node=1
  #SBATCH -*cpus-per-task=1
  #SBATCH -*mem=<memory>
  ...
  srun <wrapper> <options>
-->
		<parameter type="String" ishidden="1" >
			<name>number_nodes</name>
			<attributes>
				<group>2</group>
				<paramfile>scheduler.conf</paramfile>
					<precond>
						<language>perl</language>
						<code>!$more_memory</code>
					</precond>
					<format>
						<language>perl</language>
						<code>
									"ChargeFactor=1.0\\n" .
									"mem=4G\\n" .
									"nodes=1\\n" .
									"node_exclusive=0\\n" .
									"threads_per_process=1\\n"
						</code>
					</format>
			</attributes>
		</parameter>
		
		<parameter type="String" ishidden="1" >
			<name>number_nodes_moremem</name>
			<attributes>
				<group>2</group>
				<paramfile>scheduler.conf</paramfile>
					<precond>
						<language>perl</language>
						<code>$more_memory</code>
					</precond>
					<format>
						<language>perl</language>
						<code>
									"ChargeFactor=1.0\\n" .
									"mem=12G\\n" .
									"nodes=1\\n" .
									"node_exclusive=0\\n" .
									"threads_per_process=1\\n"
						</code>
					</format>
			</attributes>
		</parameter>
<!-- Usage: mpboot-avx -s <alignment> [OPTIONS] [<treefile>] -->		
<!-- input file specification -->
<!-- the input file to be operated on ends the command line -->
		<parameter issimple="1" ismandatory="1" isinput="1" type="Sequence">
			<name>infile</name>
			<attributes>
				<prompt>Input File</prompt>
				<format>
					<language>perl</language>
					<code>"-s infile.txt"</code>
				</format>
				<group>10</group>
				<filenames>infile.txt</filenames>
			</attributes>
		</parameter>
<!-- Results section. To start we return all results files available-->

		<parameter ishidden="1" type="Results">
			<name>all_results</name>
			<attributes>
				<filenames>*</filenames>
			</attributes>
		</parameter>
		
<!-- This section provides visible queries that help configure the interface  -->

<!-- Left this because we will need it at some point.
			<parameter issimple="1" ismandatory="1" type="Excl">
			<name>which_mpboot</name>
			<attributes>
				<prompt>Which Version of MPBOOT do you wish to run?</prompt>
				<vlist>
					<value>0</value>
  					<label>Version 1.8.0</label>
 					<value>1</value>
					<label>Version 1.8.1</label>
					<value>2</value>
				</vlist>
				<vdef>
					<value>104</value>				
				</vdef>
				<ctrls>
					<ctrl>
						<message>Sorry, you cant turn off BEAGLE for BEAST version 1.10 and above.</message>
						<language>perl</language>
						<code>$which_beast &gt; 4 &amp;&amp; $no_beagle</code>
					</ctrl>
				</ctrls>
				<group>4</group>
				<comment>
<value>This option is offered because sometimes a bug in the interface between BEAST and BEAGLE prevents a run from completing. Use this option if you wish to run a data set that 
has failed using the normal BEAST/BEAGLE implementation. Runs made this way are always slower, so use this option as a last resort.</value>
				</comment>
			</attributes>
		</parameter>
	 -->
	
<!-- this sets the run time -->
				<parameter type="Float" issimple="1" ismandatory="1">
					<name>runtime</name> 
					<attributes>
						<group>1</group>
						<paramfile>scheduler.conf</paramfile>
						<prompt>Maximum Hours to Run (up to 168 hours for non-gpu; 120 for gpu jobs)</prompt>
						<vdef>
							<value>0.5</value>
						</vdef>
						<ctrls>								
							<ctrl>
								<message>The maximum runtime for a non-gpu job can be no more than 168 hours</message>
								<language>perl</language>
								<code>$runtime &gt; 168.0</code>
							</ctrl>						
						</ctrls>
						
						<format>
							<language>perl</language>
							<code>"runhours=$value\\n"</code>
						</format>
						<warns>
							<warn>
								<message>The job will run on 1 processors as configured. If it runs for the entire configured time, it will consume 1 X $runtime cpu hours</message>
								<language>perl</language>
								<code>!$more_memory</code>
							</warn>
							<warn>
								<message>The job will run on 2 processors as configured. If it runs for the entire configured time, it will consume 4 X $runtime cpu hours</message>
								<language>perl</language>
								<code>$more_memory</code>
							</warn>
						</warns>
						<comment>
<value>Estimate the maximum time your job will need to run. We recommend testimg initially with a &lt; 0.5hr test run because Jobs set for 0.5 h or less dependably run immediately in the "debug" queue. 
Once you are sure the configuration is correct, you then increase the time. The reason is that jobs &gt; 0.5 h are submitted to the "normal" queue, where jobs configured for 1 or a few hours times may
	run sooner than jobs configured for the full 168 hours. 
</value>
						</comment>
					</attributes>
				</parameter>				
	
<!-- Specify the data type:   -st <data_type>      BIN, DNA, AA, CODON, or MORPH (default: auto-detect)-->
			<parameter issimple="1" ishidden="0" type="Excl">
			<name>datatype</name>
			<attributes>
				<prompt>My data set is (leave empty for auto detect)</prompt>
				<vlist>
					<value></value>
					<label>Auto</label>
					<value>DNA</value>
					<label>DNA</label>
					<value>AA</value>
					<label>Protein</label>
					<value>CODON</value>
					<label>Codon</label>
					<value>MORPH</value>
					<label>Morhological</label>
					<value>BIN</value>
					<label>Binary</label>
				</vlist>
				<vdef>
					<value>auto</value>
				</vdef>
				<format>
					<language>perl</language>
					<code> ($value ne $vdef) ? "-st $value":""</code>
				</format>
				<group>14</group>
				<comment>
<value>Specifies the data type. Leave blank for auto detect</value>
				</comment>
			</attributes>
		</parameter>
	
<!--   <treefile>           Initial tree for tree reconstruction (default: MP)
  -pre <PREFIX>        Using <PREFIX> for output files (default: alignment name)
  -seed <number>       Random seed number, normally used for debugging purpose
  -v, -vv, -vvv        Verbose mode, printing more messages to screen -->
				<parameter issimple="1" type="InFile">
					<name>initialTree</name>
					<attributes>
						<group>99</group>
						<prompt>Specify an initial tree (Newick format)</prompt>
						<format>
							<language>perl</language>
							<code> (defined $value) ? "initialtree.tre":""</code>
						</format>
						<filenames>initialtree.tre</filenames>

					</attributes>
				</parameter>
	
		<parameter issimple="1" ishidden="0" type="String">
			<name>specifyPrefix</name>
			<attributes>
				<prompt>Provide a prefix for output files (-pre)</prompt>
				<format>
					<language>perl</language>
					<code> "-pre $value"</code>
				</format>
				<vdef>
					<value>mpboot</value>				
				</vdef>
				<comment>
					<value>Using prefix for output files (default: alignment name). Not required</value>
				</comment>
				<group>16</group>
			</attributes>
		</parameter>

		<parameter issimple="1" ishidden="0" type="Integer">
			<name>seed_val</name>
			<attributes>
				<prompt>Enter the seed value here</prompt>
				<format>
					<language>perl</language>
					<code> "-seed $value"</code>
				</format>
				<vdef>
					<value>12345</value>				
				</vdef>
				<group>14</group>
			</attributes>
		</parameter>

  		<parameter issimple="1"  type="Switch">
			<name>specifyVerbose</name>
			<attributes>
				<prompt>Provide verbose output (-vvv)</prompt>
				<format>
					<language>perl</language>
					<code> "-vvv"</code>
				</format>
				<group>18</group>
			</attributes>
		</parameter> 	 	

		<parameter type="Switch" issimple="1" ishidden="0" >
			<name>more_memory</name>
			<attributes>
				<prompt>My run ran out of memory; I need more.</prompt>
			</attributes>
		</parameter>
		
<!--MPBOOT - MAXIMUM PARSIMONY BOOTSTRAP APPROXIMATION:
  -mulhits                  Store multiple equally parsimonious trees per bootstrap replicate
  -ratchet_iter <number>    Number of non-ratchet iterations before each ratchet iteration (default: 1)
  -ratchet_wgt <number>     Weight to add to each site selected for perturbation during ratchet (default: 1)
  -ratchet_percent <number> Percentage of informative sites selected for perturbation during ratchet (default: 50)
  -ratchet_off              Turn of ratchet, i.e. Only use tree perturbation
  -spr_rad <number>         Maximum radius of SPR (default: 6)
  -cand_cutoff <#s>         Use top #s percentile as cutoff for selecting bootstrap candidates (default: 10)
  -opt_btree_off            Turn off refinement step on the final bootstrap tree set
  -nni_pars                 Hill-climb by NNI instead of SPR
  -cost <file>              Read <file> for the matrix of transition cost between character states
                            Replace <file> by letter e for uniform cost.
-->		
<parameter type="Paragraph">
	<paragraph>
		<name>tree_uploads</name>
		<prompt>Maximum Parsimony Bootstrap Approximation</prompt>
		<parameters>
		
<!--  -mulhits Store multiple equally parsimonious trees per bootstrap replicate-->
		<parameter type="Switch">
			<name>storeMulhits</name>
			<attributes>
				<prompt>Store multiple equally parsimonious trees per bootstrap replicate (-mulhits)</prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-mulhits":""</code>
				</format>
				<group>20</group>
			</attributes>
		</parameter>
			
		<parameter type="Integer">
			<name>specifyIters</name>
			<attributes>
				<prompt>Number of non-ratchet iterations before each ratchet iteration (default: 1)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-ratchet_iter $value":""</code>
				</format>
				<vdef>
					<value>1</value>
				</vdef>
				<group>20</group>
			</attributes>
		</parameter>

<!-- 
-ratchet_wgt <number>     Weight to add to each site selected for perturbation during ratchet (default: 1)
-->
					
		<parameter type="Integer">
			<name>specifyRatweight</name>
			<attributes>
				<prompt>Weight to add to each site selected for perturbation during ratchet (-ratchet_wgt)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-ratchet_wgt $value":""</code>
				</format>
				<vdef>
					<value>1</value>
				</vdef>
				<group>24</group>
			</attributes>
		</parameter>

<!--   -ratchet_percent <number> Percentage of informative sites selected for perturbation during ratchet (default: 50)
.-->					
		<parameter type="Float">
			<name>specifyRatpercent</name>
			<attributes>
				<prompt>Percentage of informative sites selected for perturbation during ratchet (-ratchet_percent)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-ratchet_percent $value":""</code>
				</format>
				<vdef>
					<value>50</value>
				</vdef>
				<group>26</group>
				<comment>
					<value>Default value is 50 percent</value>
				</comment>
			</attributes>
		</parameter>
				
<!--  -ratchet_off              Turn off ratchet, i.e. Only use tree perturbation
-->				
		<parameter type="Switch">
			<name>turnoffRat</name>
			<attributes>
				<prompt>Turn off ratchet, i.e. Only use tree perturbation (-ratchet_off)</prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-ratchet_off":""</code>
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<group>26</group>
				<comment>
					<value>Turn off ratchet, i.e. Only use tree perturbation</value>
				</comment>
			</attributes>
		</parameter>		

<!--   -spr_rad <number>         Maximum radius of SPR (default: 6)
 -->		
		
		<parameter type="Integer">
			<name>specifyRadius</name>
			<attributes>
				<prompt>Maximum radius of SPR (-spr_rad)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-spr_rad $value":""</code>
				</format>
				<vdef>
					<value>6</value>
				</vdef>
				<group>28</group>
				<comment>
					<value>Default value is 6</value>
				</comment>
			</attributes>
		</parameter>		
		
<!--   -cand_cutoff <#s>         Use top #s percentile as cutoff for selecting bootstrap candidates (default: 10)
                            -->				
		<parameter type="Integer">
			<name>specifyCutoff</name>
			<attributes>
				<prompt>Use top #s percentile as cutoff for selecting bootstrap candidates (-cand_cutoff)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-cand_cutoff  $value":""</code>
				</format>
				<vdef>
					<value>10</value>
				</vdef>
				<group>30</group>
				<comment>
					<value>Default value is 10</value>
				</comment>
			</attributes>
		</parameter>	
		
<!--  -opt_btree_off            Turn off refinement step on the final bootstrap tree set
-->		
		<parameter type="Switch">
			<name>optBtreeoff</name>
			<attributes>
				<prompt>Turn off refinement step on the final bootstrap tree set (-opt_btree_off)</prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-opt_btree_off":""</code>
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<group>30</group>
			</attributes>
		</parameter>	
				
<!--   -nni_pars                 Hill-climb by NNI instead of SPR
-->	
		<parameter type="Switch">
			<name>nniHillclimb</name>
			<attributes>
				<prompt>Hill-climb by NNI instead of SPR (-nni_pars)</prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-nni_pars":""</code>
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<group>30</group>
			</attributes>
		</parameter>
		
<!--  -cost <file>              Read <file> for the matrix of transition cost between character states
                                Replace <file> by letter e for uniform cost  -->	
		<parameter type="Switch">
			<name>uniformCost</name>
			<attributes>
				<prompt>Uniform cost between character states (-cost e)</prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-cost e":""</code>
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<ctrls>
					<ctrl>
						<message>Sorry, you cant both specify cost and have uniform cost</message>
						<language>perl</language>
						<code>$uniformCost &amp;&amp; defined $costFile</code>
					</ctrl>
				</ctrls>
				<group>30</group>
			</attributes>
		</parameter>
		
		<parameter type="InFile">
			<name>costFile</name>
			<attributes>
				<prompt>Matrix of transition cost between character states (-cost)</prompt>
				<format>
					<language>perl</language>
					<code>"-cost costfile.txt"</code>
				</format>
				<group>10</group>
				<filenames>costfile.txt</filenames>
			</attributes>
		</parameter>
		</parameters>

	</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>tree_search</name>
		<prompt>New Stochastic Tree Search Algorithm</prompt>
		<parameters>
<!-- 
NEW STOCHASTIC TREE SEARCH ALGORITHM:
  -numpars <number>    Number of initial parsimony trees (default: 100)
                            -->				

		<parameter type="Integer">
			<name>specifyNumpars</name>
			<attributes>
				<prompt>Number of initial parsimony trees (-numpars)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-numpars $value":""</code>
				</format>
				<vdef>
					<value>100</value>
				</vdef>
				<group>32</group>
				<comment>
					<value>Default value is 100</value>
				</comment>
			</attributes>
		</parameter>	
		
<!-- -toppars <number>    Number of best parsimony trees (default: 20)-->		
		<parameter type="Integer">
			<name>specifyToppars</name>
			<attributes>
				<prompt>Number of best parsimony trees (-toppars)</prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-toppars $value":""</code>
				</format>
				<vdef>
					<value>20</value>
				</vdef>
				<group>34</group>
				<comment>
					<value>Default value is 20</value>
				</comment>
			</attributes>
		</parameter>
		
<!--  -numcand <number>    Size of the candidate tree set (defaut: 5) -->
		<parameter type="Integer">
			<name>specifyTreeset</name>
			<attributes>
				<prompt>Size of the candidate tree set (defaut: 5) </prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-numcand $value":""</code>
				</format>
				<vdef>
					<value>20</value>
				</vdef>
				<group>36</group>
				<comment>
					<value>Default value is 5</value>
				</comment>
			</attributes>
		</parameter>
		
<!--  -pers <perturbation> Perturbation strength for randomized NNI (default: 0.5)-->
		<parameter type="Float">
			<name>specifyPertstrength</name>
			<attributes>
				<prompt>Perturbation strength for randomized NNI (-pers) </prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-pers $value":""</code>
				</format>
				<vdef>
					<value>0.5</value>
				</vdef>
				<group>38</group>
				<comment>
					<value>Default value is 0.5</value>
				</comment>
			</attributes>
		</parameter>

<!-- 
  -numstop <number>    Number of unsuccessful iterations to stop (default: 100)
 -->
		<parameter type="Integer">
			<name>specifyNumstop</name>
			<attributes>
				<prompt>Number of unsuccessful iterations to stop (-numstop) </prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-numstop $value":""</code>
				</format>
				<vdef>
					<value>100</value>
				</vdef>
				<group>40</group>
				<comment>
					<value>Default value is 100</value>
				</comment>
			</attributes>
		</parameter>

<!--   -n <#iterations>      (default: auto)
-->
		<parameter type="String">
			<name>specifyIterations</name>
			<attributes>
				<prompt>Run this number of iterations (-n) </prompt>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-n $value":""</code>
				</format>
				<vdef>
					<value>auto</value>
				</vdef>
				<group>42</group>
				<comment>
					<value>Default value is auto</value>
				</comment>
			</attributes>
		</parameter>
		
<!--    -iqp                 Use the IQP tree perturbation (default: randomized NNI)
 -->
		<parameter type="Switch">
			<name>useIqp</name>
			<attributes>
				<prompt>Use the IQP tree perturbation (-iqp) </prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-iqp":""</code>
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<group>44</group>
			</attributes>
		</parameter>
		
<!--   -iqpnni     Switch back to the old IQPNNI tree search algorithm -->
		<parameter type="Switch">
			<name>useOldiqpnni</name>
			<attributes>
				<prompt>Switch back to the old IQPNNI tree search algorithm (-iqpnni) </prompt>
				<format>
					<language>perl</language>
					<code>($value) ? "-iqpnni":""</code> 
				</format>
				<vdef>
					<value>0</value>
				</vdef>
				<group>46</group>
			</attributes>
		</parameter>
		
		</parameters>
	</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>ultrafast_boot</name>
		<prompt>Ultrafast Bootstrapping</prompt>
		<parameters>
<!-- ULTRAFAST BOOTSTRAP:

 -->
 <!--  turn on ultrafast-->
		<parameter type="Switch">
			<name>useUltrafast</name>
			<attributes>
				<prompt>Use Ultrafast Bootstrapping </prompt>
			</attributes>
		</parameter>
		
 <!--   -bb <#replicates>    Ultrafast bootstrap (>=1000)-->
		<parameter type="Integer">
			<name>specifyUboots</name>
			<attributes>
				<prompt>Specify the number of Ultrafast bootstraps.</prompt>
				<precond>
					<language>perl</language>
					<code>$useUltrafast</code>
				</precond>
				<format>
					<language>perl</language>
					<code>"-bb $value"</code>
				</format>
				<ctrls>
					<ctrl>
						<message>The number of Ultrafast bootstraps must be at least 1000</message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; $specifyUboots &lt; 1000</code>
					</ctrl>
					<ctrl>
						<message>Please specify the number of Ultrafast bootstraps</message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; !defined $specifyUboots</code>
					</ctrl>
				</ctrls>
				<vdef>
					<value>1000</value>
				</vdef>
				<group>48</group>
				<comment>
					<value>Default value is 5</value>
				</comment>
			</attributes>
		</parameter>
		
		<!--   -nm <#iterations>    Maximum number of iterations (default: 1000)
-->
		<parameter type="Integer">
			<name>specifyMaxiters</name>
			<attributes>
				<prompt> Maximum number of iterations (-nm) </prompt>
				<precond>
					<language>perl</language>
					<code>$useUltrafast</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value ne $vdef) ? "-nm $value":""</code>
				</format>
				<vdef>
					<value>1000</value>
				</vdef>
				<group>50</group>
				<ctrls>
					<ctrl>
						<message>Please specify the maximum number of iterations</message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; !defined $specifyMaxiters</code>
					</ctrl>
				</ctrls>				
				<comment>
					<value>Default value is 1000</value>
				</comment>
			</attributes>
		</parameter>
		
<!--    -nstep <#iterations> #Iterations for UFBoot stopping rule (default: 100) -->
		<parameter type="Integer">
			<name>specifyUfiters</name>
			<attributes>
				<prompt>Iterations for UFBoot stopping rule (-nstep) </prompt>
				<precond>
					<language>perl</language>
					<code>$useUltrafast</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-nstep $value":""</code>
				</format>
				<vdef>
					<value>100</value>
				</vdef>
				<group>52</group>
				<ctrls>
					<ctrl>
						<message>Please specify the maximum number of iterations for UFBoot stopping rule</message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; !defined $specifyUfiters</code>
					</ctrl>
					<ctrl>
						<message>The value nstep must be 100 or greater</message>
						<language>perl</language>
						<code>$specifyUfiters &lt; 100</code>
					</ctrl>
					<ctrl>
						<message>The value nstep must be an even number</message>
						<language>perl</language>
						<code>(($specifyUfiters % 2) != 0)</code>
					</ctrl>
				</ctrls>
				<comment>
					<value>Default value is 100</value>
				</comment>
			</attributes>
		</parameter>
		
		<!--    -bcor <min_corr>     Minimum correlation coefficient (default: 0.99)
  -->
		<parameter type="Float">
			<name>specifyMincorr</name>
			<attributes>
				<prompt>Minimum correlation coefficient (-bcor) </prompt>
				<precond>
					<language>perl</language>
					<code>$useUltrafast</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-bcor $value":""</code>
				</format>
				<vdef>
					<value>0.99</value>
				</vdef>
				<group>54</group>
				<ctrls>
					<ctrl>
						<message>Please specify the minimum correlation coefficient (default=0.99)</message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; !defined $specifyMincorr</code>
					</ctrl>
				</ctrls>
				<comment>
					<value>Default value is 0.99</value>
				</comment>
			</attributes>
		</parameter>
		
		<!--  -beps <epsilon>      RELL epsilon to break tie (default: 0.5) -->
		<parameter type="Float">
			<name>specifyRelleps</name>
			<attributes>
				<prompt> RELL epsilon to break tie (-beps) </prompt>
				<precond>
					<language>perl</language>
					<code>$useUltrafast</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value ne $vdef ) ? "-beps $value":""</code>
				</format>
				<vdef>
					<value>0.5</value>
				</vdef>
				<group>56</group>
				<ctrls>
					<ctrl>
						<message>Please specify the RELL epsilon (default = 0.5) </message>
						<language>perl</language>
						<code>$useUltrafast &amp;&amp; !defined $specifyRelleps</code>
					</ctrl>
				</ctrls>				
				<comment>
					<value>Default value is 0.5</value>
				</comment>
			</attributes>
		</parameter>
				
		</parameters>
	</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>consensusReconstruction</name>
		<prompt>Consensus Reconstruction</prompt>
		<parameters>
		
<!-- CONSENSUS RECONSTRUCTION:-->
 <!--  <tree_file>          Set of input trees for consensus reconstruction -->
		<parameter type="InFile">
			<name>consensusTrees</name>
			<attributes>
				<prompt>Set of input trees for consensus reconstruction</prompt>
				<format>
					<language>perl</language>
					<code>(defined $consensusTrees) ? "consensustrees.tre":""</code>
				</format>
				<filenames>consensustrees.tre</filenames>
				<group>99</group>
			</attributes>
		</parameter>
		
<!--    -t <threshold>       Min split support in range [0,1]. 0.5 for majority-rule
                       consensus (default: 0, i.e. extended consensus)-->
		<parameter type="Float">
			<name>specifyMinsplit</name>
			<attributes>
				<prompt>Min split support (-t)</prompt>
				<precond>
					<language>perl</language>
					<code>defined $consensusTrees</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value ne $vdef) ? "-t $value":""</code>
				</format>
				<group>60</group>
				<vdef>
					<value>0</value>
				</vdef>
				<ctrls>
					<ctrl>
						<message>The Min split support value must be between 0 and 1</message>
						<language>perl</language>
						<code>$specifyMinsplit &lt; 0 || $specifyMinsplit &gt; 1 </code>
					</ctrl>
					<ctrl>
						<message>Please enter a value for Min split support; must be between 0 and 1</message>
						<language>perl</language>
						<code>!defined $specifyMinsplit</code>
					</ctrl>
				</ctrls>
				<comment>
					<value>Must be between 0 and 1, use 0.5 for majority-rule</value>
				</comment>
			</attributes>
		</parameter>
		
<!--   -bi <burnin>  Discarding <burnin> trees at beginning of <treefile> -->
		<parameter type="Integer">
			<name>specifyBurnin</name>
			<attributes>
				<prompt>How many trees to discard at beginning of treefile (-bi)</prompt>
				<precond>
					<language>perl</language>
					<code>defined $consensusTrees</code>
				</precond>
				<format>
					<language>perl</language>
					<code>(defined $value) ? "-bi $value":""</code>
				</format>
				<group>62</group>
				<comment>
					<value></value>
				</comment>
			</attributes>
		</parameter>
		
<!--    -con   Computing consensus tree to .contree file-->
		<parameter type="Switch">
			<name>writeTocontree</name>
			<attributes>
				<prompt>Compute consensus tree to .contree file (-con) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $consensusTrees</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value) ? " -con ":""</code>
				</format>
				<group>64</group>
				<comment>
					<value></value>
				</comment>
			</attributes>
		</parameter>
		
<!--  -net  Computing consensus network to .nex file-->
		<parameter type="Switch">
			<name>writeTonexnet</name>
			<attributes>
				<prompt>Compute consensus network to .nex file (-net) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $consensusTrees</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value) ? " -net ":""</code>
				</format>
				<group>64</group>
				<comment>
					<value></value>
				</comment>
			</attributes>
		</parameter>	

<!-- -sup <target_tree>   Assigning support values for <target_tree> to .suptree -->
		<parameter type="InFile">
			<name>assignSupportvals</name>
			<attributes>
				<prompt>Assign support values for this file to .suptree (-sup) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $consensusTrees</code>
				</precond>
				<format>
					<language>perl</language>
					<code>(defined $value) ? "-sup target_tree.tre":""</code>
				</format>
				<filenames>target_tree.tre</filenames>
				<group>66</group>
			</attributes>
		</parameter>
				
		</parameters>
	</paragraph>
</parameter>


<parameter type="Paragraph">
	<paragraph>
		<name>robinsonFoulds</name>
		<prompt>Robinson-Foulds distance</prompt>
		<parameters>
		<parameter type="InFile">
			<name>rfTreefile</name>
			<attributes>
				<prompt>Specify a tree set for RF distances</prompt>
				<filenames>rftreefile.tre</filenames>
				<group>99</group>
			</attributes>
		</parameter>
		
		
<!--ROBINSON-FOULDS DISTANCE: -->		
<!--  Computing all-to-all RF distances of trees in <treefile (-rf_all)  -->
		<parameter type="Switch">
			<name>alltoallRfdistance</name>
			<attributes>
				<prompt>Compute all-to-all RF distances of trees in treefile (-rf_all) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $rfTreefile</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value) ? "-rf_all rftreefile.tre":""</code>
				</format>
				<group>68</group>
				<comment>
					<value>Default value is 5</value>
				</comment>
			</attributes>
		</parameter>
		
<!--    -rf_adj              Computing RF distances of adjacent trees in <treefile> -->
		<parameter type="Switch">
			<name>computeRfadj</name>
			<attributes>
				<prompt>Compute RF distances of adjacent trees in treefile (-rf_adj) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $rfTreefile</code>
				</precond>
				<format>
					<language>perl</language>
					<code>($value) ? "-rf_adj rftreefile.tre":""</code>
				</format>
				<group>72</group>
			</attributes>
		</parameter>
		
<!--   -rf <treefile2>      Computing all RF distances between two sets of trees stored in <treefile> and <treefile2> -->
		<parameter type="InFile">
			<name>rfdistTwosets</name>
			<attributes>
				<prompt>Compute all RF distances between two sets of trees (-rf treefile2) </prompt>
				<precond>
					<language>perl</language>
					<code>defined $rfTreefile</code>
				</precond>
				<format>
					<language>perl</language>
					<code>(defined $value) ? "-rf rftreefile2.tre":""</code>
				</format>
				<filenames>rftreefile2.tre</filenames>
				<group>70</group>
			</attributes>
		</parameter>

		</parameters>
	</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>generateRandom</name>
		<prompt>Generate Random Trees</prompt>
		<parameters>
<!-- GENERATING RANDOM TREES: -->	
 
 <!--  -r <num_taxa>        Create a random tree under this model. -->
		<parameter type="Excl">
			<name>randomTreemodel</name>
			<attributes>
				<prompt>Create a random tree under this model (-r) </prompt>
				<vlist>
					<value>-r</value>
					<label>Yule</label>
					<value>-ru</value>
					<label>Uniform</label>
					<value>-rcat</value>
					<label>Caterpillar</label>
					<value>-rbal</value>
					<label>Balanced</label>
					<value>-rcsg</value>
					<label>Circular Split Network</label>
				</vlist>
				<flist>
					<value>-r</value>
					<code>"-r $specifyTaxa"</code>
					<value>-ru</value>
					<code>"-ru $specifyTaxa"</code>					
					<value>-rcat</value>
					<code>"-rcat $specifyTaxa"</code>					
					<value>-rbal</value>
					<code>"-rbal $specifyTaxa"</code>					
					<value>-rcsg</value>
					<code>"-rcsg $specifyTaxa"</code>
				</flist>
				<group>74</group>
			</attributes>
		</parameter>
		
		<parameter type="Integer">
			<name>specifyTaxa</name>
			<attributes>
				<prompt>How many taxa in your random trees?</prompt>
				<precond>
					<language>perl</language>
					<code>defined $randomTreemodel</code>
				</precond>
				<group>76</group>
			</attributes>
		</parameter>
		
		<parameter ishidden="1" type="String">
			<name>specifyLengths</name>
			<attributes>
				<format>
					<language>perl</language>
					<code>(defined $specifyminLengths) ? "-rlen $specifyminLengths $specifymeanLengths  $specifymaxLengths":""</code>
				</format>
				<group>76</group>
			</attributes>
		</parameter>
		
<!--    -rlen <min_len> <mean_len> <max_len> min, mean, and max branch lengths of random trees -->
		<parameter type="Integer">
			<name>specifyminLengths</name>
			<attributes>
				<prompt>Min branch lengths of random trees </prompt>
			</attributes>
		</parameter>
		
		<parameter type="Integer">
			<name>specifymeanLengths</name>
			<attributes>
				<prompt>Mean branch lengths of random trees </prompt>
				<ctrls>
					<ctrl>
						<message>Please specify the mean branch length</message>
						<language>perl</language>
						<code>defined $specifyminLengths &amp;&amp; !defined $specifymeanLengths</code>
					</ctrl>
				</ctrls>
			</attributes>
		</parameter>
		
		<parameter type="Integer">
			<name>specifymaxLengths</name>
			<attributes>
				<prompt>Max branch lengths of random trees </prompt>
				<ctrls>
					<ctrl>
						<message>Please specify the max branch length</message>
						<language>perl</language>
						<code>defined $specifyminLengths &amp;&amp; !defined $specifymaxLengths</code>
					</ctrl>
				</ctrls>
			</attributes>
		</parameter>
		
		<parameter ishidden="1" type="String">
			<name>randomTrees</name>
			<attributes>
				<format>
					<language>perl</language>
					<code>(defined $randomTreemodel ) ? "randomtrees.tre":""</code>
				</format>
				<filenames>randomtrees.tre</filenames>
				<group>99</group>
			</attributes>
		</parameter>

		</parameters>
	</paragraph>
</parameter>

</parameters>
</pise>


