<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE pise PUBLIC "pise2.dtd" "pise2.dtd" >
<pise>
	<head>
		<title>RAxML-HPC2 Workflow on XSEDE</title>
		<version>8.2.12</version>
		<description>Phylogenetic tree inference using maximum likelihood/rapid bootstrapping run on XSEDE</description>
		<authors>Alexandros Stamatakis</authors>
		<reference>Stamatakis A. RAxML-VI-HPC: maximum likelihood-based phylogenetic analyses with thousands of taxa and mixed models.Bioinformatics. 2006 Nov 1;22(21):2688-90</reference>
		<category>Phylogeny / Alignment</category>
		<doclink>http://icwww.epfl.ch/~stamatak/index-Dateien/countManual7.0.0.php</doclink>
	</head>
	<command>raxmlhpc2_workflow</command>
<!--  test
	This file was created by mamiller around 12/10/2014. It is meant to enable workflows such as those available in raxmlgui
-->
	<parameters>
<!--	hybridlogic1  (revised 1/21/2010)
				For nnn < 20, use one node with
				8 Pthreads (no MPI) if and only if -xxx -f a is specified & nchar >= 2,000 (pthreads only)	or
				2 MPI processes and 4 Pthreads in all other cases, when  -x xxx -f a with nchar < 2,000,
 --> 
<!-- the first section considers only the cases where -f a is checked, and where bootstraps (=N, bootstop) 
	 are specified, these are binned as a matrix of bootstrap number -->		


<!--	hybridlogic2
				For nnn < 50, use 1 node on trestles with
				5 MPI processes & 6 Pthreads per process --> 
<!--mamiller revised the logic on 1/18/2011 to accomodate new rules for running on trestles per wayne recommendations

* Check whether the -N option is specified and, if so, what its value is.

* If -N is not specified,

   run the Pthreads-only version of RAxML on a single node with
8 threads.
   That is, use nodes=1:ppn=1 and -T 8.

* If -N nnn is specified with nnn < 50,

   run the hybrid parallel version of RAxML on a single node of Trestles using
   5 MPI processes and 6 threads per process.
   That is, use nodes=1:ppn=5, -np 5, and -T 6.

* If -N nnn is specified with nnn >= 50 or nnn = autoFC or nnn = autoMR or nnn = autoMRE or nnn = autoMRE_IGN,

   run the hybrid parallel version of RAxML on two nodes of Trestles using
   10 MPI processes and 6 threads per process.
   That is, use nodes=2:ppn=5, -np 10, and -T 6. -->
		
<!-- mamiller revised this version so we can accomodate larger data sets that need more memory -->
<!-- the design will be as follows:
	First prompt the user to ask if they have a big data set. This will avoid forcing all users to go through this process with no benefit
	
	Now, ask the user how many taxa and how many patterns/characters they have.
	Calculate the value of (ntax-2)*(nchar)*16*8 for dna and (ntax-2)*(nchar)*80*8 for protein.
	This will let us set the value of threads and processes correctly. The visible command is below, in the visible command section 
	-->
<!-- Move the jobs to Expanse, per Wayne Pfeiffer, as of 4/20/2021
 
Rules for running RAxML 8.2.12 on Expanse via the CIPRES gateway

All runs are on one standard node of Expanse.

- Ask the user for the following:

  whether the data set has amino acids (AAs) and
  how many patterns are in the data set.

  If the data set does not contain AA data, assume that it is DNA.

- Check whether -N is specified and, if so, what is value is.

- Specify the number of MPI processes (CIPRES_NP) and number of threads
  (CIPRES_THREADSPP) according to the following table.
  Runs with MPI processes use raxmlHPC-HYBRID-AVX, while
  runs with only threads use raxmlHPC-PTHREADS-AVX.

raxmlHPC-HYBRID_8.2.12_expanse
raxmlHPC-PTHREADS_8.2.12_expanse

    Data             Data  MPI pro-                        Slurm    Slurm
    type         patterns    cesses  Threads    Cores  partition   memory

Analysis with -N >=10 or equal to autoMR or autoMRE or autoMRE_IGN 

     DNA          <10,000        10        4       40     shared      77G
     DNA    10,000-39,999         5       25      125    compute
     DNA   40,000-499,999         2       64      128    compute
     DNA        >=500,000                128      128    compute
	 
      AA           <3,000        10        4       40     shared      77G
      AA     3,000-11,999        10       12      120    compute
      AA    12,000-29,999         5       25      125    compute
      AA   30,000-199,999         2       64      128    compute
      AA        >=200,000                128      128    compute

Any other analysis

     DNA           <4,000                  8        8     shared      15G
     DNA     4,000-15,999                 16       16     shared      31G
     DNA    16,000-59,999                 24       24     shared      46G
     DNA   60,000-299,999                 48       48     shared      92G
     DNA        >=300,000                128      128    compute

      AA           <3,000                 12       12     shared      23G   
      AA      3,000-4,499                 24       24     shared      46G
      AA     4,500-14,999                 32       32     shared      61G
      AA    15,000-99,999                 64       64     shared     120G
      AA        >=100,000                128      128    compute
  
  -->
	 
						<parameter ishidden="1" type="String">
						<name>this_is_a_workflow</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<format>
								<language>perl</language>
								<code>
									"workflow_type=simple\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
	
<!--  --> 
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogic1</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; $nchar &lt; 500000 &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-HYBRID_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>	
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogic2</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; $nchar &lt; 200000 &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-HYBRID_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogic3</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; $nchar &gt; 499999 &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogic4</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; $nchar &gt; 199999 &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>						

<!--     DNA          <10,000        10        4       40     shared      77G -->
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch1hyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &lt; 10000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .
									"threads_per_process=4\\n" .
									"cpus-per-task=4\\n" .
									"mem=77G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--          DNA    10,000-39,999         5       25      125    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch2hyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype ne "protein"  &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 9999 &amp;&amp; $nchar &lt; 40000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=5\\n" .
									"threads_per_process=25\\n" .
									"cpus-per-task=25\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--      DNA   40,000-499,999         2       64      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch3hyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 39999 &amp;&amp; $nchar &lt; 500000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=2\\n" .
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
					
<!--         DNA        >=500,000                128      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch4hyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 499999</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
						
					
<!-- protein  -->
<!--  AA           <3,000        10        4       40     shared      77G
      AA     3,000-11,999        10       12      120    compute
      AA    12,000-29,999         5       25      125    compute
      AA   30,000-199,999         2       64      128    compute
      AA        >=200,000                128      128    compute -->

					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch1phyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &lt; 3000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .
									"threads_per_process=4\\n" .
									"cpus-per-task=4\\n" .
									"mem=77G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--            AA     3,000-11,999        10       12      120    compute-->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch2phyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 2999 &amp;&amp; $nchar &lt; 12000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .									
									"threads_per_process=12\\n" .
									"cpus-per-task=12\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--            AA    12,000-29,999         5       25      125    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch3phyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 11999 &amp;&amp; $nchar &lt; 30000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=5\\n" .									
									"threads_per_process=25\\n" .
									"cpus-per-task=25\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
					
<!--                 AA   30,000-199,999         2       64      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch4phyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 29999 &amp;&amp; $nchar &lt; 200000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=2\\n" .									
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
<!--              AA        >=200,000                128      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch5phyb_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 199999</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
		
<!--	This is for the fts option only, where hybrid is not used.
				For all options where -N is not used (not -f d -x (bootstrap_seed) or -b (mulparambootstrap_seed xxx -N  nnn; 
				and not -f d -N nnn (specify_runs) to be run on Comet in the shared queue, use pthreads version, 12 Pthreads in one node. -->
<!-- RUN THESE JOBS ON Expanse in the shared queue --> 
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch</name>
						<attributes>
							<precond>
								<!-- deliver this line for any option that does not involve -f a or -f d -->
								<language>perl</language>
								<code>$specify_workflow eq "FTS" || ($bootstrap_value &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop" &amp;&amp; $altrun_number &lt; 10)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>

							<group>0</group>
						</attributes>
					</parameter>
		
<!-- run job on expanse in the shared queue-->	
<!-- like this
    Data             Data  MPI pro-                        Slurm    Slurm
    type         patterns    cesses  Threads    Cores  partition   memory

     DNA           <4,000                  8        8     shared      15G
     DNA     4,000-15,999                 16       16     shared      31G
     DNA    16,000-59,999                 24       24     shared      46G
     DNA   60,000-299,999                 48       48     shared      92G
     DNA        >=300,000                128      128    compute

      AA           <3,000                 12       12     shared      23G   
      AA      3,000-4,499                 24       24     shared      46G
      AA     4,500-14,999                 32       32     shared      61G
      AA    15,000-99,999                 64       64     shared     120G
      AA        >=100,000                128      128    compute -->
      	
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch1_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &lt; 4000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=8\\n" .
									"cpus-per-task=8\\n" .
									"mem=15G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--      DNA     4,000-15,999                 16       16     shared      31G -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch2_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein"  &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 3999 &amp;&amp; $nchar &lt; 16000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=16\\n" .
									"cpus-per-task=16\\n" .
									"mem=31G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--     DNA    16,000-59,999                 24       24     shared      46G -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch3_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 15999 &amp;&amp; $nchar &lt; 60000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=24\\n" .
									"cpus-per-task=24\\n" .
									"mem=46G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
					
<!--     DNA   60,000-299,999                 48       48     shared      92G -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch4_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 59999 &amp;&amp; $nchar &lt; 300000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=48\\n" .
									"cpus-per-task=48\\n" .
									"mem=92G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					

<!--          DNA        >=300,000                128      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch5_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 299999</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>							
					
<!-- protein  -->
<!--  AA           <3,000                 12       12     shared      23G   
      AA      3,000-4,499                 24       24     shared      46G
      AA     4,500-14,999                 32       32     shared      61G
      AA    15,000-99,999                 64       64     shared     120G
      AA        >=100,000                128      128    compute -->

					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch1p_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &lt; 3000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=12\\n" .
									"cpus-per-task=12\\n" .
									"mem=23G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--          AA      3,000-4,499                 24       24     shared      46G-->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch2p_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 2999 &amp;&amp; $nchar &lt; 4500</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=24\\n" .
									"cpus-per-task=24\\n" .
									"mem=46G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--           AA     4,500-14,999                 32       32     shared      61G -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch3p_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 4499 &amp;&amp; $nchar &lt; 15000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=32\\n" .
									"cpus-per-task=32\\n" .
									"mem=61G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					
					
<!--           AA    15,000-99,999                 64       64     shared     120G -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch4p_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<!-- must be not -f d -x or -b AND use_bootstopping --> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 14999 &amp;&amp; $nchar &lt; 100000</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"mem=120G\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>					

<!--         AA        >=100,000                128      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_fasttreesearch5p_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond> 
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 99999</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"mem=243G\\n" .
									"node_exclusive=1\\n" .
									"nodes=1\\n"
								</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
											
									
<!-- required input file -->
					<parameter ismandatory="1" issimple="1" isinput="1" type="InFile">
						<name>infile</name>
						<attributes>
							<prompt>Sequences File (relaxed phylip format) (-s)</prompt>
							<group>1</group>
							<filenames>infile.txt</filenames>
						</attributes>
					</parameter>
		
<!-- required input file, when the -J option is not used -->
					<parameter ismandatory="1" ishidden="1" type="String">
						<name>infile_regular</name>
						<attributes>
							<format>
								<language>perl</language>
<!--  for RAXMLGUI we would like to make this a variable -->
								<code>"-s infile.txt"</code>
							</format>
							<group>1</group>
						</attributes>
					</parameter>
	
<!-- Parameters with visible controls start here -->
		<parameter type="Float" issimple="1" ismandatory="1">
			<name>runtime</name>
			<attributes>
				<group>1</group>
				<paramfile>scheduler.conf</paramfile>
				<prompt>Maximum Hours to Run (click here for help setting this correctly)</prompt>
				<vdef>
					<value>0.25</value>
				</vdef>
				<ctrls>
					<ctrl>
						<message>Maximum Hours to Run must be less than 168</message>
						<language>perl</language>
						<code>$runtime &gt; 168.0</code>
					</ctrl>
					<ctrl>
						<message>Maximum Hours to Run must be greater than 0.1</message>
						<language>perl</language>
						<code>$runtime &lt; 0.1</code>
					</ctrl>
				</ctrls>
				<format>
					<language>perl</language>
					<code>"runhours=$value\\n"</code>
				</format>
<!-- added by mamiller to provide feedback on number of cpu hrs to be consumed -->
							<warns>
<!-- dna, hybrid code -->
								<warn>
									<message>The job will run on 40 processors as configured. If it runs for the entire configured time, it will consume 40 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &lt; 10000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 125 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 9999 &amp;&amp; $nchar &lt; 40000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 39999 &amp;&amp; $nchar &lt; 500000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 499999</code>
								</warn>
<!-- protein, hybrid -->		<warn>
									<message>The job will run on 40 processors as configured. If it runs for the entire configured time, it will consume 40 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &lt; 3000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 120 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 2999 &amp;&amp; $nchar &lt; 12000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 125 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 11999 &amp;&amp; $nchar &lt; 30000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 29999 &amp;&amp; $nchar &lt; 200000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $specify_workflow ne "FTS" &amp;&amp; ($bootstrap_value &gt; 9 || $choose_bootstop eq "bootstop" || $altrun_number &gt; 9) &amp;&amp; $nchar &gt; 199999</code>
								</warn>
<!-- dna. pthread only -->		<warn>
									<message>The job will run on 8 processors as configured. If it runs for the entire configured time, it will consume 8 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &lt; 4000</code>
								</warn>
								<warn>
									<message>The job will run on 16 processors as configured. If it runs for the entire configured time, it will consume 16 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 3999 &amp;&amp; $nchar &lt; 16000</code>
								</warn>
								<warn>
									<message>The job will run on 24 processors as configured. If it runs for the entire configured time, it will consume 24 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 15999 &amp;&amp; $nchar &lt; 60000</code>
								</warn>
								<warn>
									<message>The job will run on 48 processors as configured. If it runs for the entire configured time, it will consume 48 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 59999 &amp;&amp; $nchar &lt; 300000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype ne "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 299999</code>
								</warn>
<!-- protein pthread only -->	<warn>
									<message>The job will run on 12 processors as configured. If it runs for the entire configured time, it will consume 12 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &lt; 3000</code>
								</warn>
								<warn>
									<message>The job will run on 24 processors as configured. If it runs for the entire configured time, it will consume 24 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 2999 &amp;&amp; $nchar &lt; 4500</code>
								</warn>
								<warn>
									<message>The job will run on 32 processors as configured. If it runs for the entire configured time, it will consume 32 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 4499 &amp;&amp; $nchar &lt; 15000</code>
								</warn>
								<warn>
									<message>The job will run on 64 processors as configured. If it runs for the entire configured time, it will consume 64 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 14999 &amp;&amp; $nchar &lt; 100000</code>
								</warn>
								<warn>
									<message>The job will run on 128 processors as configured. If it runs for the entire configured time, it will consume 128 x $runtime cpu hours</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; (($specify_workflow eq "FTS") || ($bootstrap_value &lt; 10 &amp;&amp; $altrun_number &lt; 10 &amp;&amp; $choose_bootstop ne "bootstop")) &amp;&amp; $nchar &gt; 99999</code>
								</warn>
								
							</warns>
							
							<comment>
<value>Estimate the maximum time your job will need to run. We recommend testimg initially with a time less than 0.5hr test run because Jobs set for 0.5 h or less depedendably 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>
<!--	Select the workflow you wish to run-->
							
		<parameter type="Excl" issimple="1" >
			<name>specify_workflow</name>
			<attributes>
				<prompt>Select your workflow</prompt>
						<vlist>
							<value>FTS</value>
							<label>Fast Tree search</label>
							<value>MLTB</value>
							<label>ML + Thorough bootstrap</label>
							<value>BOOTCON</value>
							<label>Bootstrap + Consensus</label>
							<value>MLS</value>
							<label>ML Search</label>
						</vlist> 
						<vdef>
							<value>FTS</value>
						</vdef>
						<ctrls>
							<ctrl>
								<message>Please specify a workflow</message>
								<language>perl</language>
								<code>!defined $specify_workflow</code>
							</ctrl>
						</ctrls>
						<group>1</group>
					</attributes>
				</parameter>
				
<!-- Dont use BFGS-->					
					<parameter type="Switch" issimple="0">
						<name>no_bfgs</name>
						<attributes>
							<prompt>Don't use BFGS searching algorithm (--no-bfgs)</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLTB" || $specify_workflow eq "MLS" || $specify_workflow eq "BOOTCON"</code>
							</precond>
							<vdef>
								<value>0</value>
							</vdef>
							<group>10</group>
							<format>
								<language>perl</language>
								<code>($value)? "--no-bfgs":""</code>
							</format>
							<comment>
<value> BFGS is a more efficient optimization algorithm for optimizing branch lengths and GTR parameters simultaneously. You can disable it using this option</value>
							</comment>
						</attributes>
					</parameter>	
				
				<!-- -#|-N numberOfRuns Specifies the number of alternative runs on distinct starting trees, e.g., if -# 10 or -N 10 is specfied RAxML
will compute 10 distinct ML trees starting from 10 distinct randomized maximum parsimony starting trees. -->

					<parameter type="Integer" issimple="1" >
						<name>altrun_number</name>
						<attributes>
							<prompt>Specify the number alternative runs on distinct starting trees (-#/-N)</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLS" || $specify_workflow eq "MLTB" </code>
							</precond>
							<vdef>
								<value>10</value>
							</vdef>
							<group>15</group>
  							<ctrls>
								<ctrl>
									<message>Please specify how many runs you wish to execute (must be > 1 )</message>
									<language>perl</language>
									<code>($specify_workflow eq "MLTB" ||$specify_workflow eq "MLS") &amp;&amp; $altrun_number &lt; 2</code>
								</ctrl>
								<ctrl>
									<message>Sorry, the value for alternative runs must 1000 or less</message>
									<language>perl</language>
									<code>($specify_workflow eq "MLTB" ||$specify_workflow eq "MLS") &amp;&amp; $altrun_number &gt; 1000</code>				
								</ctrl>		
							</ctrls>
							<comment>
								<value>This option specifies the number of alternative runs on distinct starting trees. For example, if  -N 10 is specfied, RAxML
will compute 10 distinct ML trees starting from 10 distinct randomized maximum parsimony starting trees. </value>
							</comment>
						</attributes>
					</parameter>
					
					<parameter type="Excl" ismandatory="1" issimple="1" >
						<name>choose_bootstop</name>
						<attributes>
							<prompt>Specify bootstrap protocol</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLTB" || $specify_workflow eq "BOOTCON" </code>
							</precond>
							<vlist>
								<value>specify</value>
								<label>Specify an explicit number of bootstraps</label>
								<value>bootstop</value>
								<label>Let RaxML halt bootstrapping automatically</label>
							</vlist>
  						    <vdef>
								<value>specify</value>
							</vdef> 	
							<ctrls>
								<ctrl>
									<message>Please select "Specify an explicit number of bootstraps" or "Let RaxML halt bootstrapping automatically"</message>
									<language>perl</language>
									<code>!defined $choose_bootstop</code>
								</ctrl>
								<ctrl>
									<message>Sorry, you can not use a constraint tree with automatic boot stopping</message>
									<language>perl</language>
									<code>$choose_bootstop eq "bootstop" &amp;&amp; defined $constraint</code>
								</ctrl>
							</ctrls>
							<comment>
<value>This option instructs Raxml to automatically halt bootstrapping when certain criteria are met, instead of specifying the number of bootstraps for an analysis. The exact criteria are specified/configured using subsequent entry fields.</value>
							</comment>
						</attributes>
					</parameter>
					
					<parameter type="Integer" issimple="1" >
						<name>bootstrap_value</name>
						<attributes>
							<prompt>Bootstrap iterations (-N)</prompt>
							<precond>
								<language>perl</language>
								<code>$choose_bootstop eq "specify"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>" -N $value"</code>
							</format>
  							<vdef>
									<value>100</value>
								</vdef> 
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please enter number of bootstraps desired (-N) (eg 100)</message>
									<language>perl</language>
									<code>$choose_bootstop eq "specify" &amp;&amp; !defined $bootstrap_value</code>
								</ctrl>
<!-- bootstraps must be less than or equal to 2 -->
								<ctrl>
									<message>Sorry, the number of bootstraps must be greater than 1 (-N) </message>
									<language>perl</language>
									<code>$bootstrap_value &lt; 2</code>
								</ctrl>	
<!-- bootstraps must be less than or equal to 1000 -->
								<ctrl>
									<message>Sorry, the number of bootstraps cannot exceed 1,000 (-N) </message>
									<language>perl</language>
									<code>$bootstrap_value &gt; 1000</code>
								</ctrl>	
							</ctrls>
							<comment>
								<value>Specifies the number of Bootstraps.
</value>
							</comment>
						</attributes>
					</parameter>
				
					<parameter type="Excl" issimple="1" >
						<name>bootstopping_type</name>
						<attributes>
							<prompt>Select Bootstopping Criterion: (autoMRE is recommended)</prompt>
							<precond>
								<language>perl</language>
								<code>$choose_bootstop eq "bootstop"</code>	
							</precond>													
							<format>
								<language>perl</language>
								<code>"-N $value"</code>
							</format>
							<vlist>
								<value>autoFC</value>
								<label>autoFC</label>
								<value>autoMR</value>
								<label>autoMR</label>
								<value>autoMRE</value>
								<label>autoMRE</label>
								<value>autoMRE_IGN</value>
								<label>autoMRE_IGN</label>
							</vlist>
							<vdef>
								<value>autoMRE</value>
							</vdef>
							<ctrls>
								<ctrl>
									<message>Please choose a bootstopping criterion</message>
									<language>perl</language>
									<code>$choose_bootstop eq "bootstop" &amp;&amp; !defined $bootstopping_type</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter> 
					
<!-- 	[-k] 		Specifies that bootstrapped trees should be printed with branch lengths. The bootstraps will run a bit longer, because model parameters will be optimized at 
					the end of each run under GAMMA or GAMMA+P-Invar respectively. DEFAULT: OFF (old version said Use with CATMIX/PROTMIX or GAMMA/GAMMAI., check on this)-->

					<parameter type="Switch" issimple="1">
						<name>printbrlength</name>
						<attributes>
<!--  might want to put a precond on this -->
							<prompt>Print branch lengths (-k)</prompt>
							<format>
								<language>perl</language>
								<code> ($value)?" -k":""</code>
							</format>
							<vdef>
								<value>0</value>
							</vdef>
							<group>2</group>
							<comment>
								<value>	The -k option causes bootstrapped trees to be printed with branch lengths. 
The bootstraps will require a bit longer to run under this option because model parameters will be optimized at 
					the end of each run under GAMMA or GAMMA+P-Invar respectively.
								</value>
							</comment>
						</attributes>
					</parameter>
					
				
<parameter type="Paragraph">
	<paragraph>
		<name>fasttree_worklow</name>
		<prompt>Fast Tree Search Workflow</prompt>
		<parameters>

<!--  ********************** Fasttree Search Workflow start ***************** -->				
<!--  here we construct the workflow command lines, one element per, precond on the workflow selected -->
				<parameter type="String" issimple="0" ishidden="1" >
					<name>fasttreesearch_workflow</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "FTS"</code>
						</precond>
<!-- Fast Tree search: Protein command line with everything: three steps below
This should run as raxmlHPC-PTHREADS -T 8 (added by the wrapper) -f E (-n <string> added by the interface already) -s infile.txt (added by the interface already) -O (added by $disable_seqcheck) (-p 891) ($parsimony_seed and parsimony seed_val) (-m PROTGAMMABLOSUM62F configured below) 
                   raxmlHPC-PTHREADS.exe -T 2 -f E -p 755   -m GTRGAMMA -n combi_red.tre -s combi.phy.reduced  -O
                   raxmlHPC-PTHREADS     -T 8 -f E -p 12345 -m GTRGAMMA -n infile.tre    -s infile.txt         -O 
 -->
 						<format>
 							<language>perl</language>
 							<code>"-f E $clcorrascertainment"</code>
 						</format>
						<group>4</group>
					</attributes>
				</parameter>

<!-- use a text string with the -n argument to specify output file suffix; this is  is required -->
		<parameter type="String" issimple="0" >
			<name>outsuffix_FTS</name>
			<attributes>
				<prompt>Set a name for output files in the FTS workflow</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "FTS"</code>
				</precond>
				<format>
					<language>perl</language>
					<code>"-n $value.tre"</code>
				</format>
				<vdef>
					<value>infile</value>
				</vdef> 
				<ctrls>
					<ctrl>
						<message>Please enter a name for Fast Tree Search output files</message>
						<language>perl</language>
						<code>$specify_workflow eq "FTS" &amp;&amp; !defined $outsuffix_FTS</code>
					</ctrl>
				</ctrls>
				<group>12</group>
			</attributes>
		</parameter>
		
				<parameter type="Switch" issimple="0"  ishidden="0" >
					<name>fasttreesearch_workflow2</name>
					<attributes>
						<prompt>Optimize model parameters and branch lengths (-f e) </prompt>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "FTS"</code>
						</precond>
<!-- Fast Tree search: optimize brls
step 2: && raxmlHPC-PTHREADS.exe -T 2 -f e -t  RAxML_fastTree.help.tre   -n brL.help.tre   -s infile_prot.txt.phy -O  (variable set below) -m PROTGAMMABLOSUM62F (variable set below) 
currently produces this:
        && raxmlHPC-PTHREADS     -T 8 -f e -t  RAxML_fastTree.infile.tre -n brL.infile.tre -s infile.txt          -O                       -m GTRGAMMA-->
 						<format>
 							<language>perl</language>
 							<code>($value) ? "&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f e -t RAxML_fastTree.$outsuffix_FTS.tre  -n brL.$outsuffix_FTS.tre -s infile.txt -O -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freq $clcorrascertainment2": ""</code>
 						</format>
 						<vdef>
 							<value>0</value>
 						</vdef>
						<group>45</group>
					</attributes>
				</parameter>
				
<!-- Fast Tree search: Protein command line with everything: three steps
the third step finds sh like values using -f J
the -m configuration is identical in all three steps and configured by the interface.
The names of the input and output files must be managed in hard code for now.
I think we can give flexibility, however.
&& raxmlHPC-PTHREADS.exe -T 2 -f J -t RAxML_result.brL.help.tre   -n sh.help.tre   -s infile_prot.txt.phy   -O -m PROTGAMMABLOSUM62F
currently produces this:
&& raxmlHPC-PTHREADS     -T 8 -f J -t RAxML_result.brL.infile.tre -n sh.infile.tre -s infile.txt            -O -m GTRGAMMA 
 -->				
<!-- this step can be added to step 1 independent of step 2 -->				
				<parameter type="Switch" issimple="0"  ishidden="0" >
					<name>fasttreesearch_workflow3</name>
					<attributes>
						<prompt>SH-like values (-f J)</prompt>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "FTS"</code>
						</precond>
 						<vdef>
 							<value>0</value>
 						</vdef>
					</attributes>
				</parameter>
				
<!-- this delivers the command line if step 2 optimization is used before the SH like values -->				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>fasttreesearch_optimization</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$fasttreesearch_workflow3 &amp;&amp; $fasttreesearch_workflow2</code>
						</precond>
 						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f J -t RAxML_result.brL.$outsuffix_FTS.tre -p $parsimony_seed_val2 -n sh.$outsuffix_FTS.tre -s infile.txt -O -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freq $clcorrascertainment3"</code>
 						</format>
 						<vdef>
 							<value>0</value>
 						</vdef>
						<group>60</group>
					</attributes>
				</parameter>
				
<!-- this genewrates the correct command line file names if the brL step is not selected -->				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>fasttreesearch_nooptimzation</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$fasttreesearch_workflow3 &amp;&amp; !$fasttreesearch_workflow2</code>
						</precond>
 						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f J -t RAxML_fastTree.$outsuffix_FTS.tre -p $parsimony_seed_val2 -n sh.$outsuffix_FTS.tre -s infile.txt -O -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freq $clcorrascertainment3"</code>
 						</format>
 						<vdef>
 							<value>0</value>
 						</vdef>
						<group>60</group>
					</attributes>
				</parameter>
				
				<parameter type="Integer" issimple="0"  ismandatory="1">
						<name>parsimony_seed_val2</name>
						<attributes>
							<prompt>Enter a random seed value for parsimony inferences for the SH- like value step</prompt>
							<precond>
								<language>perl</language>
								<code>$fasttreesearch_workflow3</code>
						</precond>
							<vdef>
								<value>12345</value>
							</vdef>
							<group>60</group>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -p option SH- like value step of the Fast Tree Search  workflow (eg 12345)</message>
									<language>perl</language>
									<code>$fasttreesearch_workflow3 &amp;&amp; !defined $parsimony_seed_val2</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
		</parameters>
	</paragraph>
</parameter>
<!--  ********************** Fasttree Search Workflow end ***************** -->

<!--  ********************** Maximum Liklihood / Thorough Bootstrap Workflow start ***************** -->
<parameter type="Paragraph">
	<paragraph>
		<name>MLTB_workflow</name>
		<prompt>Maximum Likelihood / Thorough Bootstrap Workflow</prompt>
		<parameters>

<!-- These steps will be invoked using the group element to place command line strings. The first command string will go from group 10 to group 29; the second string 
will begin at group 30, and the third will begin at group 60 -->
<!-- example: 
  raxmlHPC-PTHREADS.exe -T 2 -b 631 -m PROTGAMMABLOSUM62F -k -p 223 -N 100 -o 1_Euglena_gracilis -s infile2.txt  -n testR -O  
&&raxmlHPC-PTHREADS.exe -T 2 -f d -m PROTGAMMABLOSUM62F -o 1_Euglena_gracilis -s infile2.txt" -N 1 -n testB -p 730 -O 
&&raxmlHPC-PTHREADS.exe -T 2 -f b -t RAxML_bestTree.testB -z RAxML_bootstrap.testR -m PROTGAMMABLOSUM62F -s infile2.txt"  -n test.tre -O 
 exit 
 
when runs = 10, no brL (-k)
&&raxmlHPC-PTHREADS.exe -T 2   -b 762   -m PROTGAMMABLOSUM62     -p 801   -N 100 -o 1_Euglena_gracilis -s infile2.txt -n testR -O
&&raxmlHPC-PTHREADS.exe -T 2 -f d -m PROTGAMMABLOSUM62  -o 1_Euglena_gracilis -s infile2.txt -N 10 -n testB -p 603 -O 
&&raxmlHPC-PTHREADS.exe -T 2 -f b -t RAxML_bestTree.testB  -z RAxML_bootstrap.testR -m PROTGAMMABLOSUM62  -s infile2.txt -n test.tre -O 

raxmlHPC-HYBRID        (-T 16) -b 12345 -m PROTGAMMADAYHOFF   -k -p 12345 -N 100  (outgroup must be added -s infile.txt -n testR -O
&& raxmlHPC-HYBRID           -f d -m GTRCATPROTGAMMADAYHOFF -s infile.txt -N 1 -n -p 12345 -O 
&& raxmlHPC-PTHREADS -f b -t RAxML_bestTree.testB -z RAxML_bootstrap.testR -m GTRCATPROTGAMMA DAYHOFF -s infile.txt -n MLTB_output -O 

when ASC is selected,Commandline is: 
   raxmlHPC-HYBRID -b 787 -m ASC_GTRGAMMA -p 12345  -n testS -N 100 -s infile.txt  -asc-corr lewis -k  -O 
&& raxmlHPC-HYBRID -f d  -m ASC_GTRGAMMA  -s infile.txt -N 10 -n testZ -p 333 -O 
&& raxmlHPC-PTHREADS -f b -t  RAxML_bestTree.testZ  -z  RAxML_bootstrap.testS  -m ASC_GTRGAMMA  -s infile.txt  -n testout  -O'


 -->				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>MLTB_workflow</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLTB"</code>
						</precond>
						<format>
							<language>perl</language>
							<code>" -b $mulparambootstrap_seed_val $cloutgroup $clcorrascertainment "</code>
						</format>
<!-- ML + Thorough bootstrap: three steps.
The first line should be constructed using the existing interface, leaving this as [placeholder just in case:
 -b 639 (-b must be set here, value from below) -m GTRGAMMA (set below)  -k  (set below) -p 534 (set below) -N 100 (set below) -s infile.txt  -n infileR  -O
 -->
						<group>10</group>
					</attributes>
				</parameter>
				<!-- use a text string with the -n argument to specify output file suffix; this is  is required -->
		
					<parameter type="Integer" issimple="0" ismandatory="1">
						<name>mulparambootstrap_seed_val</name>
						<attributes>
							<prompt>Enter a random seed value for multi-parametric bootstrapping</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLTB"</code>
							</precond>
							<vdef>
								<value>12345</value>
							</vdef>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -b option (eg 12345)</message>
									<language>perl</language>
									<code>$mulparambootstrap_seed &amp;&amp; !defined $mulparambootstrap_seed_val</code>
								</ctrl>
							</ctrls>
							<comment>
								<value>This random number is provided to assure that there is comparability between runs.</value>
							</comment>
						</attributes>
					</parameter>
		
					
		<parameter type="String" issimple="0" >
			<name>outsuffix_MLTB1</name>
			<attributes>
				<prompt>Name for output files from the  MLTB bootstrapping step</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "MLTB"</code>
				</precond>
				<format>
					<language>perl</language>
					<code>"-n $value"</code>
				</format>
				<vdef>
					<value>testR</value>
				</vdef> 
				<group>13</group>
				<ctrls>
					<ctrl>
						<message>Please enter a name for output files from the  MLTB bootstrapping step</message>
						<language>perl</language>
						<code>$specify_workflow eq "MLTB" &amp;&amp; !defined $outsuffix_MLTB1</code>
					</ctrl>
					<ctrl>
						<message>Sorry, the values for output file names cannot be the same</message>
						<language>perl</language>
						<code>$outsuffix_MLTB1 eq $outsuffix_MLTB2</code>
					</ctrl>
					<ctrl>
						<message>Sorry, the values for output file names cannot be the same</message>
						<language>perl</language>
						<code>$outsuffix_MLTB1 eq $outsuffix_MLTB3</code>
					</ctrl>
					<ctrl>
						<message>Sorry, the values for output file names cannot be the same</message>
						<language>perl</language>
						<code>$outsuffix_MLTB2 eq $outsuffix_MLTB3</code>
					</ctrl>
				</ctrls>
			</attributes>
		</parameter>
												
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>MLTB_workflow2</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLTB"</code>
						</precond>
<!-- ML + Thorough bootstrap: second step: the second line will be constructed from information we have, but special provision made to allow a new parsimony seed, no new value for N is allowed yet, because we cant figure out how to make this posisble.
&&raxmlHPC-PTHREADS.exe -T 2 -f d -m PROTGAMMABLOSUM62  -o 1_Euglena_gracilis -s infile2.txt -N 10 -n testB -p 603 -O 
 -->
  						<format>
 							<language>perl</language>
 <!-- pthreads has to be used to get the best tree file -->
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f d $cloutgroup2 -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freqs $clcorrascertainment2 -N $altrun_number -s infile.txt -n $outsuffix_MLTB2 -p $parsimony_seed_val_MLTB2 -O"</code>
 						</format>  
						<group>30</group>
					</attributes>
				</parameter>
					
				<parameter type="Integer" issimple="0"  ismandatory="1">
				<name>parsimony_seed_val_MLTB2</name>
						<attributes>
							<prompt>Enter a random seed value for MLTB sampling step</prompt>
							<vdef>
								<value>12345</value>
							</vdef>
							<group>45</group>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLTB"</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -p option (eg 12345)</message>
									<language>perl</language>
									<code>$specify_workflow eq "MLTB" &amp;&amp; !defined $parsimony_seed_val</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
		<parameter type="String" issimple="0" >
			<name>outsuffix_MLTB2</name>
			<attributes>
				<prompt>Name for the output files in step 2 of the ML + thorough bootstrap workflow</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "MLTB"</code>
				</precond>
				<vdef>
					<value>testB</value>
				</vdef> 
  				<ctrls>
					<ctrl>
						<message>Please enter a name for the output files for  ML + thorough bootstrap workflow step2</message>
						<language>perl</language>
						<code>$specify_workflow eq "MLTB" &amp;&amp; !defined $outsuffix_MLTB2</code>
					</ctrl>
				</ctrls>
				<group>45</group>
			</attributes>
		</parameter>
		
					<parameter type="String" ishidden="1" issimple="1">
						<name>no_bfgs2mltb</name>
						<attributes>
							<prompt>Don't use BFGS searching algorithm (--no-bfgs) &amp;&amp; $no_bfgs</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLTB" &amp;&amp; $no_bfgs</code>
							</precond>
							<group>45</group>
							<format>
								<language>perl</language>
								<code>"--no-bfgs"</code>
							</format>
							<comment>
<value> BFGS is a more efficient optimization algorithm for optimizing branch lengths and GTR parameters simultaneously. You can disable it using this option</value>
							</comment>
						</attributes>
					</parameter> 
					
			<parameter type="String" issimple="0" >
			<name>outsuffix_MLTB3</name>
			<attributes>
				<prompt>Set a name for output files in step 3 of the ML Thorough Bootstrapping analysis</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "MLTB"</code>
				</precond>
				<vdef>
					<value>MLTB_output</value>
				</vdef> 
  				<ctrls>
					<ctrl>
						<message>Please enter a name for the MLTB final output files</message>
						<language>perl</language>
						<code>$specify_workflow eq "MLTB" &amp;&amp; !defined $outsuffix_MLTB3</code>
					</ctrl>
				</ctrls>
				<group>60</group>
			</attributes>
		</parameter>
				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>MLTB_workflow3</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLTB"</code>
						</precond>
<!-- ML + Thorough bootstrap: third step
&&raxmlHPC-PTHREADS.exe -T 2 -f b -t RAxML_bestTree.testB  -z RAxML_bootstrap.testR -m PROTGAMMABLOSUM62  -s infile2.txt -n test.tre -O 
 -->
  						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f b -t  RAxML_bestTree.$outsuffix_MLTB2  -z  RAxML_bootstrap.$outsuffix_MLTB1  -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freqs -s infile.txt $clcorrascertainment3  $cloutgroup3 -n $outsuffix_MLTB3  -O"</code>
 						</format>
						<group>60</group>
					</attributes>
				</parameter>
<!--  ********************** Maximum Liklihood / Thorough Bootstrap Workflow end ***************** -->	
			</parameters>
		</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>MLS_worklow</name>
		<prompt>Maximum Likelihood Search Workflow</prompt>
		<parameters>

<!--  ********************** Max Likelihood Search Workflow start ***************** -->				
<!--  here we construct the workflow command lines, one element per, precond on the workflow selected -->
				<parameter type="String" issimple="0" ishidden="1" >
					<name>mlsearch_workflow</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLS"</code>
						</precond>
<!-- raxmlHPC-PTHREADS.exe -T 2 -f d -m PROTGAMMABLOSUM62F -N 1 -p 130 -o 1_Euglena_gracilis -s infile2.txt -n infile2.tre -O 
   &&raxmlHPC-PTHREADS.exe -T 2 -f J -m PROTGAMMABLOSUM62F -t RAxML_bestTree.infile2.tre"  -n sh.infile2.tre -s infile2.txt -O 
   && type RAxML_result.infile2.tre* > combined_results.infile2.tre 
 exit
 -->
 						<format>
 							<language>perl</language>
 <!--  -f d is the default command so it doesnt need to be called probably -->
 							<code>"-f d -N $altrun_number $clcorrascertainment $no_bfgs"</code>
 						</format>
						<group>10</group>
					</attributes>
				</parameter>

<!-- use a text string with the -n argument to specify output file suffix; this is  is required -->
		<parameter type="String" issimple="0" >
			<name>outsuffix_MLS</name>
			<attributes>
				<prompt>Set a name for output files in the MLS workflow</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "MLS"</code>
				</precond>
				<format>
					<language>perl</language>
					<code>"-n $value.tre"</code>
				</format>
				<vdef>
					<value>infile</value>
				</vdef> 
				<ctrls>
					<ctrl>
						<message>Please enter a name for ML Search output files</message>
						<language>perl</language>
						<code>$specify_workflow eq "MLS" &amp;&amp; !defined $outsuffix_MLS</code>
					</ctrl>
				</ctrls>
				<group>12</group>
			</attributes>
		</parameter>
					
<!-- this step can be added to step 1 as required -->				
				<parameter type="Switch" issimple="0"  ishidden="0" >
					<name>mlsearch_shlike</name>
					<attributes>
						<prompt>SH-like values (-f J)</prompt>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLS"</code>
						</precond>
 						<vdef>
 							<value>0</value>
 						</vdef>
					</attributes>
				</parameter>
				
<!-- this step can be added to step 1 as required -->				
				<parameter type="Switch" issimple="0"  ishidden="0" >
					<name>mlsearch_combine</name>
					<attributes>
						<prompt>Combine Results</prompt>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLS"</code>
						</precond>
 						<vdef>
 							<value>0</value>
 						</vdef>
					</attributes>
				</parameter>
				
<!-- this delivers the command line if step 2 optimization is used before the SH like values -->				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>mlsearch_workflow2</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLS" &amp;&amp; $mlsearch_shlike</code>
						</precond>
 						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -f J -t RAxML_bestTree.$outsuffix_MLS.tre -p $parsimony_seed_val2 -n sh.$outsuffix_MLS.tre -s infile.txt -O -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freq $clcorrascertainment2"</code>
 						</format>
 						<vdef>
 							<value>0</value>
 						</vdef>
						<group>45</group>
					</attributes>
				</parameter>
				
<!-- this step can be added to step 1 independent of step 2 -->				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>mlsearch_workflow3</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "MLS" &amp;&amp; $mlsearch_combine</code>
						</precond>
 						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; cat RAxML_result.$outsuffix_MLS.tre* > combined_results.$outsuffix_MLS.tre"</code>
 						</format>
 						<vdef>
 							<value>0</value>
 						</vdef>
						<group>90</group>
					</attributes>
				</parameter>
				
<!--  			<parameter type="Integer" issimple="0"  ismandatory="1">
						<name>parsimony_seed_MLS2</name>
						<attributes>
							<prompt>Enter a random seed value for parsimony inferences for the SH- like value step</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "MLS"</code>
						</precond>
							<vdef>
								<value>12345</value>
							</vdef>
							<group>31</group>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -p option in step 2 of MLTB wotkflow (eg 12345)</message>
									<language>perl</language>
									<code>$mlsearch_workflow2 &amp;&amp; !defined $parsimony_seed_val2</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter> -->	
					
<!--  **********************ML Search Workflow end ***************** -->
		</parameters>
	</paragraph>
</parameter>

<parameter type="Paragraph">
	<paragraph>
		<name>BOOTCON_workflow</name>
		<prompt>Rapid Bootstrap / Consensus Tree Workflow</prompt>
		<parameters>

<!--  ********************** Bootstrap Consensus Workflow start ***************** -->			
				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>BOOTCON_workflow</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "BOOTCON"</code>
						</precond>
<!-- Bootstrap + Consensus: Two Steps
raxmlHPC-PTHREADS.exe -T 2 -m GTRGAMMA   -n infile.tre -s  infile.txt -O   -x 4 -N 100  -p 368 
&& raxmlHPC-PTHREADS.exe -T 2 -m GTRGAMMA -n con.infile.tre -J MR -z infile.tre     
 -->
  						<format>
 							<language>perl</language>
 							<code>" -x $rapidbootstrap_seed_val  $clcorrascertainment $no_bfgs" </code>
 						</format>
						<group>12</group>
					</attributes>
				</parameter>
				
<!-- use a text string with the -n argument to specify output file suffix; this is  is required -->
		<parameter type="String" issimple="0" >
			<name>outsuffix_BOOTCON</name>
			<attributes>
				<prompt>Set a name for output files from the Rapid Bootstrap Step</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "BOOTCON"</code>
				</precond>
				<format>
					<language>perl</language>
					<code>"-n $value.tre"</code>
				</format>
				<vdef>
					<value>boot</value>
				</vdef> 
				<ctrls>
					<ctrl>
						<message>Please enter a name for the output files from the Rapid Bootstrap Step</message>
						<language>perl</language>
						<code>$specify_workflow eq "BOOTCON" &amp;&amp; !defined $outsuffix_BOOTCON</code>
					</ctrl>
				</ctrls>
				<group>12</group>
			</attributes>
		</parameter>
				
				<parameter type="Integer" issimple="0" ismandatory="1">
						<name>rapidbootstrap_seed_val</name>
						<attributes>
							<prompt>Enter a random seed value for multi-parametric bootstrapping</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow eq "BOOTCON"</code>
							</precond>
							<group>12</group>
							<vdef>
								<value>12345</value>
							</vdef>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -x option (eg 12345)</message>
									<language>perl</language>
									<code>$specify_workflow eq "BOOTCON" &amp;&amp; !defined $rapidbootstrap_seed_val</code>
								</ctrl>
							</ctrls>
							<comment>
								<value>This random number is provided to assure that there is comparability between runs.</value>
							</comment>
						</attributes>
					</parameter>
				
				<parameter type="String" issimple="0"  ishidden="1" >
					<name>BOOTCON_workflow2</name>
					<attributes>
						<precond>
							<language>perl</language>
							<code>$specify_workflow eq "BOOTCON"</code>
						</precond>
<!-- Bootstrap + Consensus: Two Steps
&& raxmlHPC-PTHREADS.exe -T 2 -m GTRGAMMA -n con.infile.tre -J MR -z  infile.tre     
 -->
  						<format>
 							<language>perl</language>
 							<code>"&amp;&amp; raxmlHPC-PTHREADS_8.2.12_expanse -m $ascertainment$dna_gtrcat$prot_sub_model$bin_model$multi_model$invariable$prot_matrix_spec$use_emp_freqs $clcorrascertainment2  -n $outsuffix_BOOTCON2.tre -J MR -z RAxML_bootstrap.$outsuffix_BOOTCON.tre"</code>
 						</format>
						<group>44</group>
					</attributes>
				</parameter>
				
		<parameter type="String" issimple="0" >
			<name>outsuffix_BOOTCON2</name>
			<attributes>
				<prompt>Name for output files from the Consensus Tree Step</prompt>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "BOOTCON"</code>
				</precond>
				<vdef>
					<value>con.tre</value>
				</vdef> 
				<ctrls>
					<ctrl>
						<message>Please enter a name for output files from the BOOTCON consensus tree step</message>
						<language>perl</language>
						<code>$specify_workflow eq "BOOTCON" &amp;&amp; !defined $outsuffix_BOOTCON2</code>
					</ctrl>
					<ctrl>
						<message>Sorry, the output file names cannot be the same</message>
						<language>perl</language>
						<code>$outsuffix_BOOTCON2 eq $outsuffix_BOOTCON</code>
					</ctrl>
				</ctrls>
				<group>50</group>
			</attributes>
		</parameter>
<!--  ********************** Bootstrap Consensus Workflow end ***************** -->	
			</parameters>
		</paragraph>
</parameter>

<!-- user enters nchar parameter this will help decide how to run -->
		<parameter type="Integer" issimple="1">
			<name>nchar</name>
			<attributes>
				<prompt>Enter the number of patterns in your dataset</prompt>
				<ctrls>
					<ctrl>
						<message>Please enter a value for the number of patterns in your data matrix</message>
						<language>perl</language>
						<code>!defined $nchar</code>
					</ctrl>
					<ctrl>
						<message>The number of patterns in the matrix must 1 or greater.</message>
						<language>perl</language>
						<code>$nchar &lt; 1</code>
					</ctrl>
				</ctrls>
				<group>15</group>
				<comment>
					<value>
						Knowing the number of characters in your dataset helps us determine the most efficient way to run raxml.
						The number of patterns is the number of unique columns in the multiple sequence alignment matrix. You can get this number from the output of the intermediate results once a job begins. Entering the number of characters per taxon in your matirx, or 1000 as the number of patterns is an ok start.
						Look at the intermediate results, and see if that is reasonably close. If it is not, kill the job, and adjust the number.
					</value>
				</comment>
			</attributes>
		</parameter>
	
<!-- state input type -->		
					<parameter type="Excl" issimple="1" ismandatory="1">
						<name>datatype</name>
						<attributes>
							<prompt>Please select the Data Type</prompt>
							<vlist>
								<value>protein</value>
								<label>Protein</label>
								<value>dna</value>
								<label>Nucleotide</label>
								<value>rna</value>
								<label>RNA Structure</label>
								<value>binary</value>
								<label>Binary Morphological</label>
								<value>multi</value>
								<label>Multi-State Morphological</label>
							</vlist>
							<vdef>
								<value>dna</value>
							</vdef>
							<group>2</group>
						</attributes>
					</parameter>
					
		<!-- outgroup (-o) -->
		<!-- this is delivered in different ways depending on the workflow. So the element is split into parts, the name is specified here, and where it goes is specified in a subsequent hidden element -->
		<parameter type="String" issimple="1">
			<name>outgroup</name>
			<attributes>
				<prompt>Outgroup (one or more comma-separated outgroups, see comment for syntax)</prompt>
<!--  			 <format>
					<language>perl</language>
					<code>(defined $value)? "-o $value": "" </code>
				</format>  -->
				<comment>
<value>The correct syntax for the box is outgroup1,outgroup2,outgroupn. If white space is introduced (e.g. outgroup1, outgroup2, outgroupn) the program will fail with the message
"Error, you must specify a model of substitution with the '-m' option"
</value>					
				</comment>
			</attributes>
		</parameter>
		
<!-- add to deliver the outgroup parameter for the workflow command lines -->		
		<parameter type="String" ishidden="1" issimple="1">
			<name>cloutgroup</name>
			<attributes>
 			    <format>
					<language>perl</language>
					<code>(defined $outgroup)? "-o $outgroup":"" </code>
				</format>
				<group>12</group>
			</attributes>
		</parameter>

		
<!-- add to deliver the outgroup parameter for the workflow command lines -->		
		<parameter type="String" ishidden="1" issimple="1">
			<name>cloutgroup2</name>
			<attributes>
 			    <format>
					<language>perl</language>
					<code>(defined $outgroup)? "-o $outgroup":"" </code>
				</format>
				<group>45</group>
			</attributes>
		</parameter>
		
				
<!-- add to deliver the outgroup parameter for the workflow command lines -->		
		<parameter type="String" ishidden="1" issimple="1">
			<name>cloutgroup3</name>
			<attributes>
				<precond>
					<language>perl</language>
					<code>$specify_workflow eq "MLTB" || $specify_workflow eq "FTS"</code>
				</precond>
 			    <format>
					<language>perl</language>
					<code>(defined $outgroup)? "-o $outgroup":"" </code>
				</format>
				<group>65</group>
			</attributes>
		</parameter>
			
		
		<!-- rev 2 -->
		<!--category (-c) -->
					<parameter type="Integer" issimple="1" ismandatory="1">
						<name>number_cats</name>
						<attributes>
							<prompt>Specify the number of distinct rate categories (-c)</prompt>
							<format>
								<language>perl</language>
								<code>(defined $value)? " -c $value" : "" </code>
							</format>
							<vdef>
								<value>25</value>
							</vdef>
							<group>2</group>
							<precond>
								<language>perl</language>
								<code>($datatype eq "dna" &amp;&amp; $dna_gtrcat eq "GTRCAT") || ($datatype eq "protein" &amp;&amp; $prot_sub_model eq "PROTCAT") || ($datatype eq "binary" &amp;&amp; $bin_model eq "BINCAT")</code>
							</precond>
							<comment>
					<value>This option allows you to specify the number of distinct rate categories, into which the individually optimized rates for each individual site are thrown under -m GTRCAT. The default of -c 25 works fine in most practical cases.
</value>
							</comment>
						</attributes>
					</parameter>

		<!-- user supplied starting tree (-t) -->
		
					<parameter issimple="1" type="InFile">
						<name>treetop</name>
						<attributes>
							<prompt>Supply a tree (Not available when doing rapid bootstrapping, -x) (-t)</prompt>
							<precond>
								<language>perl</language>
								<code>$specify_workflow ne "BOOTCON"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>" -t tree.tre"</code>
							</format>
							<group>12</group>
							<filenames>tree.tre</filenames>
<!--							<ctrls>
								<ctrl>
									<message>Sorry, you can't specify a random seed AND supply a starting tree</message>
									<language>perl</language>
									<code>defined $value &amp;&amp; $provide_parsimony_seed</code>
								</ctrl>
							</ctrls> -->
							<comment>
<value>Specifies a user starting tree file in Newick format. Not available when doing rapid bootstrapping. Branch lengths of that tree will be ignored. Note that you can also specify a non-comprehensive (not containing all taxa in the alignment) starting tree now. This might be useful if newly aligned/sequenced taxa have been added to your alignment. Initially, taxa will be added to the tree using the MP criterion. The comprehensive tree will then be optimized
under ML.</value>
							</comment>
						</attributes>
					</parameter>

					<!--PARSIMONY SEED VALUE FOR CONSTANT STARTING TREE-->
					<!-- I split the seeds  into invocation, and number entry, due to command line conflicts -->
					<parameter type="Switch" issimple="1" ismandatory="1">
						<name>provide_parsimony_seed</name>
						<attributes>
							<prompt>Specify a random seed value for parsimony inferences (-p)</prompt>
<!--  							<precond>
								<language>perl</language>
								<code>!defined $treetop || $morpho_weight_calibration</code>
							</precond>-->
							<vdef>
								<value>1</value>
							</vdef>
							<ctrls>
								<ctrl>
									<message>Please provide a parsimony seed</message>
									<language>perl</language>
									<code>$altrun_number &gt; 1 &amp;&amp; !defined $parsimony_seed_val</code>
								</ctrl>
								<ctrl>
									<message>Please provide a parsimony seed for the first step of the Fast Tree search workflow</message>
									<language>perl</language>
									<code>$specify_workflow eq "FTS" &amp;&amp; !defined $parsimony_seed_val</code>
								</ctrl>
<!--						    <ctrl>
									<message>Sorry, you cannot specify a starting tree (via the -t option above) and a random seed value</message>
									<language>perl</language>
									<code>defined $treetop</code>
								</ctrl> -->
							</ctrls> 
							<comment>
								<value>Specify a random number seed. The -p option allows you and others to reproduce your results (reproducible/verifiable experiments) and will help Alexis debug the program. Do not use this option if you want to generate multiple different starting trees.</value>
							</comment>
						</attributes>
					</parameter>

					<parameter type="Integer" issimple="1"  ismandatory="1">
						<name>parsimony_seed_val</name>
						<attributes>
							<prompt>Enter a random seed value for parsimony inferences (gives reproducible results from random starting tree)</prompt>
							<format>
								<language>perl</language>
								<code>($value) ? " -p $value" : ""</code>
							</format>
							<vdef>
								<value>12345</value>
							</vdef>
							<group>2</group>
							<precond>
								<language>perl</language>
								<code>$provide_parsimony_seed</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please enter a random seed for the -p option (eg 12345)</message>
									<language>perl</language>
									<code>$provide_parsimony_seed &amp;&amp; !defined $parsimony_seed_val</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
		<!-- rev 2 -->
		<!-- constraint (-g) -->
					<parameter type="InFile" issimple="1">
						<name>constraint</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>!defined $binary_backbone &amp;&amp; !$use_bootstopping</code>
							</precond>
							<prompt>Constraint (-g)</prompt>
							<filenames>constraint.tre</filenames>
							<format>
								<language>perl</language>
					<!-- 
						parameters of type Results are always processed so we need to check
						whether we actually got a value entered.
					-->
								<code>defined $value ? " -g constraint.tre" : ""</code>
							</format>
							<group>2</group>
<comment>
					<value> This option allows you to specify an incomplete or comprehensive multifurcating constraint 
					tree for the RAxML search in NEWICK format. Initially, multifurcations are resolved 
					randomly. If the tree is incomplete (does not contain all taxa) the remaining taxa are added by 
					using the MP criterion. Once a comprehensive (containing all taxa) bifurcating tree 
					is computed, it is further optimized under ML respecting the given constraints. Important: If you 
					specify a non-comprehensive constraint, e.g., a constraint tree that does not contain all taxa, 
					RAxML will assume that any taxa that not found in the constraint topology 
					are unconstrained, i.e., these taxa can be placed in any part of the tree.  As an example 
					consider an alignment with 10 taxa: Loach, Chicken, Human, Cow, Mouse, Whale, Seal, Carp, 
					Rat, Frog.  If, for example you would like Loach, Chicken, Human, Cow to be monophyletic you 
					would specify the constraint tree as follows: </value>
					<value> ((Loach, Chicken, Human, Cow),(Mouse, Whale, Seal, Carp, Rat, Frog)); </value>
					<value> Moreover, if you would like Loach, Chicken, Human, Cow to be monophyletic and in 
					addition Human, Cow to be monophyletic within that clade you could specify: </value>
					<value> ((Loach, Chicken, (Human, Cow)),(Mouse, Whale, Seal, Carp, Rat, Frog)); </value>
					<value> If you specify an incomplete constraint: </value>
					<value> ((Loach, Chicken, Human, Cow),(Mouse, Whale, Seal, Carp)); </value>
					<value> the two groups Loach, Chicken, Human, Cow and Mouse, Whale, Seal, Carp will be 
					monophyletic, while Rat and Frog can end up anywhere in the tree.  </value>
				</comment>
						</attributes>
					</parameter>
					
		<!-- Disable rate heterogeneity (-V) -->
					<parameter type="Switch" issimple="1" ismandatory="1">
						<name>disable_ratehet</name>
						<attributes>
							<prompt>Disable Rate Heterogeneity  (-V)</prompt>
							<format>
								<language>perl</language>
								<code>($value)? " -V " : "" </code>
							</format>
							<vdef>
								<value>0</value>
							</vdef>
							<group>2</group>
							<precond>
								<language>perl</language>
								<code>($datatype eq "dna" &amp;&amp; $dna_gtrcat eq "GTRCAT") || ($datatype eq "protein" &amp;&amp; $prot_sub_model eq "PROTCAT") || ($datatype eq "binary" &amp;&amp; $bin_model eq "BINCAT")</code>
							</precond>
							<comment>
					<value>This option allows you to disable rate heterogeneity anong the sites. Valid for CAT model only.
</value>
							</comment>
						</attributes>
					</parameter>
					
		<!-- binary backbone (-r) -->
					<parameter type="InFile" issimple="1">
						<name>binary_backbone</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>! defined $constraint</code>
							</precond>
							<prompt>Binary Backbone (-r)</prompt>
							<filenames>binary_backbone.tre</filenames>
							<format>
								<language>perl</language>
<!--  parameters of type Results are always processed so we need to check
						whether we actually got a value entered.   -->
								<code>(defined $value) ? " -r binary_backbone.tre" : ""</code>
							</format>
							<group>2</group>
							<comment>
<value>This option allows you to pass a binary/bifurcating constraint/backbone tree in NEWICK format to RAxML. Note that using this option only makes sense if this tree contains fewer taxa than the input alignment. The remaining taxa will initially be added by using the MP criterion. Once a comprehensive tree with all taxa has been obtained it will be  optimized under ML respecting the restrictions of the constraint tree.
</value>
							</comment>
						</attributes>
					</parameter>
		
		<!-- Optional mixed  model file -->
		<!-- If user doesn't enter a value the partition parameter won't be in the map that the web app sends the command renderer (which evaluates the perl for parameters that are present), so we don't need to worry about making the format code conditional since this parameter just won't be evaluated. Command renderer evaluates 3 types of parameters: 1) those that appear in the map coming from the gui, those that are	hidden, 3) those that are of type OutFile or Result. -->
					<parameter type="InFile" issimple="1">
						<name>partition</name>
						<attributes>
							<prompt>Use a mixed/partitioned model? (-q)</prompt>
							<format>
								<language>perl</language>
								<code>" -q part"</code>
							</format>
							<group>2</group>
							<filenames>part</filenames>
							<comment>
					<value>This parameter allows you to upload a file that specifies the regions of your alignment for which an individual model of nucleotide substitution should be estimated. This will typically be used to infer trees for long (in terms of base pairs) multi-gene alignments. If DNA and protein mixed models are used together (for example) you should choose a model option based on the model of rate heterogeneity you want to use. If you specify either -m GTRCAT or PROTCAT, the CAT model will be used, if you specify -m GTRGAMMA or -m BINGAMMA, the GAMMA model will be used ....
For example, if -m GTRGAMMA is used, individual alpha-shape parameters, GTR-rates, and empirical base frequencies will be estimated and optimized for each partition. Since Raxml can now handles mixed Amino Acid and DNA alignments, you must specify the data type in the partition file, before the partition name. For DNA, this means you have to add DNA to each line in the partition. For AA data you must specify the transition matrices for each partition: 
The AA substitution model must be the first entry in each line and must be separated by a comma from the gene name, just like the DNA token above. You can not assign different models of rate heterogeneity to different partitions, i.e. it will be either CAT, GAMMA, GAMMAI etc. for all partitions, as specified with -m. Finally, if you have a concatenated DNA and AA alignments, with DNA data at positions 1 - 500 and AA data at 501-1000 with the WAG model the partition file should look as follows:</value>
<value>DNA, gene1 = 1-500</value> 
<value>WAG gene2 = 501-1000</value>
							</comment>
						</attributes>
					</parameter>
					

<!-- ascertainment bias -->
					<parameter issimple="1" type="Excl" >
						<name>ascertainment</name>
						<attributes>
							<prompt>Correct for Ascertinament bias (ASC_)</prompt>
							<precond>
								<language>perl</language>
								<code>!$invariable</code>
							</precond>
							<vlist>
								<value>ASC_</value>
								<label>yes</label>
								<value></value>
								<label>no</label>
							</vlist>
							<vdef>
								<value></value>
							</vdef>
							<comment>
								<value>This is useful for binary/morphological datasets  that only contain variable sites (the identical morphological features are usually not
included in the alignments, hence you need to correct for this, see, e.g., http://sysbio.oxfordjournals.org/content/50/6/913.short).For DNA data this option might be useful when
you analyze alignments of SNPs that also don't contain constant sites. Note that, for mathematical and numerical reasons you can
not apply an ascertainment bias correction to datasets or partitions that contain constantsites. In this case, RAxML will exit with an error.</value>
							</comment>
						</attributes>
					</parameter>
<!-- end ascertainment bias		-->
<!-- ascertainment bias -->
					<parameter issimple="1" type="Excl" ismandatory="1">
						<name>corrascertainment</name>
						<attributes>
							<prompt>Ascertainment bias correction type (--asc-corr)</prompt>
							<precond>
								<language>perl</language>
								<code>$ascertainment</code>
							</precond>
 							<vlist>
								<value>lewis</value>
								<label>Lewis</label>
								<value>felsenstein</value>
								<label>Felsenstein</label>
								<value>stamatakis</value>
								<label>Stamatakis</label>
							</vlist>
							<vdef>
								<value>lewis</value>
							</vdef>
							<ctrls>
								<ctrl>
									<message>Please specify the ascertainment correction</message>
									<language>perl</language>
									<code>$ascertainment &amp;&amp; !defined $corrascertainment</code>
								</ctrl>
								<ctrl>
									<message>To use the Felsenstein option, you must specify the number of invariable sites in a file using -q</message>
									<language>perl</language>
									<code>$corrascertainment eq "felsenstein" &amp;&amp; !defined $partition</code>
								</ctrl>
								<ctrl>
									<message>To use the Stamatakis option, you must specify the number of invariable sites per state for each partition in a file using -q</message>
									<language>perl</language>
									<code>$corrascertainment eq "stamatakis" &amp;&amp; !defined $partition</code>
								</ctrl>
							</ctrls> 
							<comment>
								<value>This option allows to specify the type of ascertainment bias correction you wish to
use. There are three types available: Lewis: the standard correction by Paul Lewis, Felsenstein: a correction introduced by Joe Felsenstein
that allows to explicitely specify the number of invariable sites (if known) one wants to correct for. Stamatakis: a correction introduced by myself that
allows to explicitly specify the number of invariable sites for each character (if known) one wants to correct for. Flesenstein and Stamatkis corrections are 
accompanied by an upload file specified by the -q option, even if only one partiion is present. For file formatting, please see the RaxML 8.1 or higher manual.</value>
							</comment>
						</attributes>
					</parameter>
<!--  each paramter only seems to be used once, so for a three part workflow, we create three of these parameters -->					
					<parameter ishidden="1" type="String" ismandatory="1">
						<name>clcorrascertainment</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$corrascertainment</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"--asc-corr $corrascertainment"</code>
							</format>
							<group>15</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String" ismandatory="1">
						<name>clcorrascertainment2</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$corrascertainment &amp;&amp; ($fasttreesearch_workflow2 || $specify_workflow eq "MLTB" || $mlsearch_shlike || $specify_workflow eq "BOOTCON") </code>
							</precond>
							<format>
								<language>perl</language>
								<code>"--asc-corr $corrascertainment"</code>
							</format>
							<group>45</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String" ismandatory="1">
						<name>clcorrascertainment3</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$corrascertainment &amp;&amp; ($fasttreesearch_workflow3 || $specify_workflow eq "MLTB")</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"--asc-corr $corrascertainment"</code>
							</format>
							<group>60</group>
						</attributes>
					</parameter>
					
<!-- ascertainment correction 		-->

		<!-- rev 5 -->
		<!-- Estimate proportion of invariable sites, mlsearch is a precondition  -->
		<!-- The control should be of type switch, but I need the value of the parameter
		to be either "I" or "", so I made it type Excl instead. -->
		<!-- disabled 5/5/2009 based on information in the manual -->
					<parameter issimple="1" type="Excl" >
						<name>invariable</name>
						<attributes>
							<prompt>Estimate proportion of invariable sites (GTRGAMMA + I)</prompt>
							<vlist>
								<value>I</value>
								<label>yes</label>
								<value></value>
								<label>no</label>
							</vlist>
							<vdef>
								<value></value>
							</vdef>
							<warns>
								<warn>
									<message>The invariable option is not recommended by the developer of RAxML. Please see the manual for details.</message>
									<language>perl</language>
									<code>$invariable</code>
								</warn>
							</warns>
							<group>2</group>
							<comment>
								<value>This option is not recommended by the developer of RAxML</value>
							</comment>
						</attributes>
					</parameter>
					
		<!-- Substitution matrix for protein datatype, datatype=protein is a precondition -->
		<!-- Is used to build the -m model string -->
		<!-- A value must be selected when datatype=protein, so I added a vdef, so users wont have a job fail accidentally; this also highlights where the value needs to be set by populating the box with text-->

		<!-- Optional excludes these characters -->
		<!-- If user doesn't enter a value, the parameter won't be in the map that the web app sends the command renderer (which evaluates the perl for parameters that are present), so we don't need to worry about making the format code conditional; if null, this parameter just won't be evaluated. Command renderer evaluates 3 types of parameters: 1) those that appear in the map coming from the gui, those that are hidden, 3) those that are of type OutFile or Result. -->
			<parameter type="InFile" issimple="1">
						<name>exclude_file</name>
						<attributes>
							<prompt>Choose an input file that excludes the range of positions specifed in this file (-E)</prompt>
							<format>
								<language>perl</language>
								<code>" -E excl"</code>
							</format>
							<group>2</group>
				<filenames>excl</filenames>
				<comment>
					<value>This option is used to excludes specific positions in the matrix. For example, uploading a file
					that contains the text: 100-200 300-400 will create a file that excludes all columns between positions
					100 and 200 as well as all columns between positions 300 and 400. Note that the boundary numbers (positions 100, 200, 300, 
					and 400) will also be excluded. To exclude a single column write (100-100). This option does not 
					run an analysis but just prints an alignment file without the excluded columns. Save this file to your 
					data area, and then run the real analysis. If you use a mixed model, an appropriately adapted model file 
					will also be written. The ntax element of the phylip files is automatically corrected Example: raxmlHPC -E excl
						-s infile -m GTRCAT -q part -n TEST. In this case the files with columns excluded will be named
						infile.excl and part.excl. </value>
				</comment>
						</attributes>
			</parameter>
					
			<parameter type="InFile" issimple="1">
				<name>set_weights</name>
				<attributes>
					<prompt>Weight characters as specifed in this file (-a)</prompt>
						<format>
							<language>perl</language>
							<code>" -a weights"</code>
						</format>
						<group>2</group>
					<filenames>weights</filenames>
				<comment>
<value>This option alows you to specify a column weight file name to assign individual weights to each
column of the alignment. Those weights must be integers separated by any type and number of whitespaces
within a separate file. There must, of course, be as many weights as there are columns in your
alignment. The contents of an example weight file could look like this:
5 1 1 2 1 1 1 1 1 1 1 2 1 1 3 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 4 1 1 </value>
				</comment>
				</attributes>
			</parameter>
			
<!-- add the -O option to disable checking for sequences with no values in them  
      -O      Disable check for completely undetermined sequence in alignment.
              The program will not exit with an error message when "-O" is specified.-->				
					<parameter type="Switch" issimple="1" ishidden="0">
						<name>disable_seqcheck</name>
						<attributes>
							<prompt>Disable checking for sequences with no values (-O)</prompt>
							<format>
								<language>perl</language>
								<code>($value) ? "-O" : ""</code>
							</format>
							<vdef>
								<value>0</value>
							</vdef>
							<warns>
								<warn>
									<message>Please use the -O with caution. It disables the check to see if sequences are completely devoid of information. See the RAxML manual for guidance</message>
									<language>perl</language>
									<code>$disable_seqcheck</code>
								</warn>
							</warns>
						<group>10</group>
						</attributes>
					</parameter>				

<!-- Nucleotides as sequences (not secondary structure -->
<parameter type="Paragraph">
	<paragraph>
		<name>nucleic_opts</name>
		<prompt>Nucleic Acid Options</prompt>
		<parameters>
<!--               NUCLEOTIDES:

                "-m GTRCAT"         : GTR + Optimization of substitution rates + Optimization of site-specific
                                      evolutionary rates which are categorized into numberOfCategories distinct 
                                      rate categories for greater computational efficiency.  Final tree might be evaluated
                                      under GTRGAMMA, depending on the tree search option
  NOT SUPPORTED "-m GTRCAT_FLOAT"   : Same as above but uses single-precision floating point arithmetics instead of double-precision
                                      Usage only recommend for testing, the code will run slower, but can save almost 50% of memory.
                                      If you have problems with phylogenomic datasets and large memory requirements you may give it a shot.
                                      Keep in mind that numerical stability seems to be okay but needs further testing.
  NOT SUPPORTED "-m GTRCATI"        : GTR + Optimization of substitution rates + Optimization of site-specific
                                      evolutionary rates which are categorized into numberOfCategories distinct 
                                      rate categories for greater computational efficiency.  Final tree might be evaluated
                                      under GTRGAMMAI, depending on the tree search option
                "-m GTRGAMMA"       : GTR + Optimization of substitution rates + GAMMA model of rate 
                                      heterogeneity (alpha parameter will be estimated)
				
  NOT SUPPORTED "-m GTRGAMMA_FLOAT" : Same as GTRGAMMA, but also with single-precision arithmetics, same cautionary notes as for  
                                      GTRCAT_FLOAT apply.
  NOT SUPPORTED "-m GTRGAMMAI"      : Same as GTRGAMMA, but with estimate of proportion of invariable sites -->
                
					<parameter type="Excl">
						<name>dna_gtrcat</name>
						<attributes>
							<prompt>Choose model for bootstrapping phase</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "dna" || $datatype eq "rna"</code>
							</precond>
							<vlist>
								<value>GTRCAT</value>
								<label>GTRCAT</label>
				                <value>GTRGAMMA</value>
								<label>GTRGAMMA</label>
							</vlist>
							<format>
								<language>perl</language>
								<code>"-m $ascertainment$dna_gtrcat$invariable"</code>
							</format>
							<group>2</group>
							<ctrls>
							<ctrl>
									<message>Please choose a DNA model</message>
									<language>perl</language>
									<code>($datatype eq "dna" || $datatype eq "rna") &amp;&amp; $dna_gtrcat ne "GTRCAT" &amp;&amp; $dna_gtrcat ne "GTRGAMMA"</code>
								</ctrl>
							</ctrls>
							<comment>
								<value>The meaning of the model name GTRGAMMA used by RAxML 7.2.0 is exactly opposite that 
									used in RAxML 7.0.4, so we have eliminated selection by model name. Instead we use a 
									description of the  model analysis. This selection gives GTR + Optimization of substitution
									 rates + Optimization of site-specific evolutionary rates which are categorized into "numberOfCategories" distinct
									 rate categories for greater computational efficiency.  Final tree is evaluated under GTRGAMMA. 
									GTRMIX  and GTRCAT_GAMMA have been eliminated as options. FLOAT options that are native in RAxML 7.2.3 are currently not supported here.
								</value>
								<value>The meaning of the model names used by RAxML 7.2.0 are exactly opposite to those used in RAxML 7.0.4, 
									so we have eliminated selection by model name. Instead we use a description of the model analysis. 
									This option gives GTR + Optimization of substitution rates + GAMMA model of rate heterogeneity 
									(alpha parameter will be estimated) for bootstrap AND final evaluation. An analysis run in this 
									way will take a good deal longer than the alternative option (what used to be called GTRGAMMA in RAxML v.7.0.4).
									 GTRMIX  and GTRCAT_GAMMA have been eliminated as options. FLOAT options that are native in RAxML 7.2.3 are currently not supported here.
								</value>
							</comment>
						</attributes>
					</parameter>
				
		</parameters>
	</paragraph>
</parameter>
						
			<parameter type="Paragraph">
				<paragraph>
					<name>protein_opts</name>
					<prompt>Protein Analysis Options</prompt>
					<parameters>		 
					
<!--               AMINO ACIDS:

                "-m PROTCATmatrixName[F]"         : specified AA matrix + Optimization of substitution rates + Optimization of site-specific
                                                    evolutionary rates which are categorized into numberOfCategories distinct 
                                                    rate categories for greater computational efficiency.   Final tree might be evaluated
                                                    automatically under PROTGAMMAmatrixName[f], depending on the tree search option
                "-m PROTCATmatrixName[F]_FLOAT"   : PROTCAT with single precision arithmetics, same cautionary notes as for GTRCAT_FLOAT apply
                "-m PROTCATImatrixName[F]"        : specified AA matrix + Optimization of substitution rates + Optimization of site-specific
                                                    evolutionary rates which are categorized into numberOfCategories distinct 
                                                    rate categories for greater computational efficiency.   Final tree might be evaluated
                                                    automatically under PROTGAMMAImatrixName[f], depending on the tree search option
                "-m PROTGAMMAmatrixName[F]"       : specified AA matrix + Optimization of substitution rates + GAMMA model of rate 
                                                    heterogeneity (alpha parameter will be estimated)
                "-m PROTGAMMAmatrixName[F]_FLOAT" : PROTGAMMA with single precision arithmetics, same cautionary notes as for GTRCAT_FLOAT apply
                "-m PROTGAMMAImatrixName[F]"      : Same as PROTGAMMAmatrixName[F], but with estimate of proportion of invariable sites 

                Available AA substitution models: DAYHOFF, DCMUT, JTT, MTREV, WAG, RTREV, CPREV, VT, BLOSUM62, MTMAM, LG, GTR
                With the optional "F" appendix you can specify if you want to use empirical base frequencies
                Please note that for mixed models you can in addition specify the per-gene AA model in
                the mixed model file (see manual for details). Also note that if you estimate AA GTR parameters on a partitioned
                dataset, they will be linked (estimated jointly) across all partitions to avoid over-parameterization -->
   
<!-- not sure if we should support cat or not -->             		
					<parameter type="Excl" ismandatory="1">
						<name>prot_sub_model</name>
						<attributes>
							<prompt>Choose GAMMA or CAT model:</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<vlist>
								<value>PROTGAMMA</value>
								<label>Protein GAMMA</label>
								<value>PROTCAT</value>
								<label>Protein CAT</label>
							</vlist>
<!--change for invariable option -->
							<format>
								<language>perl</language>
								<code>"-m $ascertainment$prot_sub_model$invariable$prot_matrix_spec$use_emp_freqs"</code>
							</format>
<!--  						<vdef>
								<value>PROTCAT</value>
							</vdef> -->		
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please choose a protein model</message>
									<language>perl</language>
									<code>$datatype eq "protein" &amp;&amp; $prot_sub_model ne "PROTGAMMA" &amp;&amp; $prot_sub_model ne "PROTCAT" </code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter> 
		
				<parameter type="Excl" ismandatory="1">
						<name>prot_matrix_spec</name>
						<attributes>
							<prompt>Protein Substitution Matrix</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
<!--New AA substitution models: MTART, MTZOA, PMB, HIVB, HIVW, JTTDCMUT, FLU 10/4/2010-->
							<vlist>
								<value>DAYHOFF</value>
								<label>DAYHOFF</label>
								<value>DCMUT</value>
								<label>DCMUT</label>
								<value>JTT</value>
								<label>JTT</label>
								<value>MTREV</value>
								<label>MTREV</label>
								<value>WAG</value>
								<label>WAG</label>
								<value>RTREV</value>
								<label>RTREV</label>
								<value>CPREV</value>
								<label>CPREV</label>
								<value>VT</value>
								<label>VT</label>
								<value>BLOSUM62</value>
								<label>BLOSUM62</label>
								<value>MTMAM</value>
								<label>MTMAM</label>
								<value>LG</value>
								<label>LG</label>
								<value>MTART</value>
								<label>MTART</label>
								<value>MTZOA</value>
								<label>MTZOA</label>
								<value>PMB</value>
								<label>PMB</label>
								<value>HIVB</value>
								<label>HIVB</label>
								<value>HIVW</value>
								<label>HIVW</label>
								<value>JTTDCMUT</value>
								<label>JTTDCMUT</label>
								<value>FLU</value>
								<label>FLU</label>
								<value>DUMMY</value>
								<label>DUMMY</label>
								<value>DUMMY2</value>
								<label>DUMMY2</label>
								<value>AUTO</value>
								<label>AUTO</label>
								<value>LG4M</value>
								<label>LG4M</label>
								<value>LG4X</value>
								<label>LG4X</label>
								<value>PROT_FILE</value>
								<label>PROT_FILE</label>
								<value>GTR_UNLINKED</value>
								<label>GTR_UNLINKED</label>
								<value>GTR</value>
								<label>GTR</label>
							</vlist>
	<!--  					<vdef>
								<value>DAYHOFF</value>
							</vdef> -->		
							<comment>
<value>Note: FLOAT and invariable sites (I) options are not exposed here. If you require this option, please contact mmiller@sdsc.edu.</value>
<value>-m PROTCATmatrixName: analyses using the specified AA matrix + Optimization of substitution rates + Optimization of site-specific evolutionary rates which are categorized into numberOfCategories distinct rate categories for greater computational efficiency. Final tree might be evaluated automatically under PROTGAMMAmatrixName[f], depending on the tree search option.
</value>
<value>-m PROTGAMMAmatrixName[F] analyses use the specified AA matrix + Optimization of substitution rates + GAMMA model of rate heterogeneity (alpha parameter will be estimated)</value>
<value>Available AA substitution models: DAYHOFF, DCMUT, JTT, MTREV, WAG, RTREV, CPREV, VT, BLOSUM62, MTMAM, LG, GTR. You can specify if you want to use empirical base frequencies. Please note that for mixed models you can in addition specify the per-gene AA model in the mixed model file (see manual for details). Also note that if you estimate AA GTR parameters on a partitioned dataset, they will be linked (estimated jointly) across all partitions to avoid over-parametrization.</value>
							</comment>
						</attributes>
					</parameter>

<!--[-P proteinModel] Specify the file name of a user-defined AA (Protein) substitution model. This file must contain 420 entries, the first 400 being the AA substitution rates (this must be a symmetric matrix) and the last 20 are the empirical base frequencies -->

					<parameter type="InFile" >
						<name>user_prot_matrix</name>
						<attributes>
							<prompt>Upload a Custom Protein Substitution Matrix</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"-P Userproteinmatrix.txt"</code>
							</format>
							<group>2</group>
							<filenames>Userproteinmatrix.txt</filenames>
							<comment>
<value>Specify a file containing a user-defined Protein substitution model. This file must contain 420 entries, the first 400 entires are the AA substitution rates (this matrix must be symmetric) and the last 20 entries are the empirical base frequencies</value>
							</comment>
						</attributes>
					</parameter>
						
<!-- user requested option for multiple protein matrices-->	
					<parameter type="Switch">
						<name>mulcustom_aa_matrices</name>
						<attributes>
							<prompt>Use a Partition file that specifies AA Matrices</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please choose a partition file specifying up to 5 partitions</message>
									<language>perl</language>
									<code>$mulcustom_aa_matrices &amp;&amp; !defined $partition</code>
								</ctrl>
							</ctrls>
							<comment>
								<value>This option can be used to specify multiple custom matrices via a partition file. The filenames must be specified as firstpartition, secondpartition, thirdpartition, fourthpartition, and fifthpartition, in order, </value>
							</comment>
						</attributes>
					</parameter>
										
<!--  This option has never received much attention in the RAxML manual and
tutorials, but I think it is available since one or two years. That's how it works in a local implementation.

Files needed:
data.phy
matrix1
matrix2
matrix3
partitions

The "matrix" files have a specific format, the same as if you use only
custom one. The "partitions" file is similar to the one used in regular partitioned
analyses. It is different only in that each line begins with the name of
the matrix file (with path if needed, between square brackets) instead of
the name of the model. The -q options tells the software to read this file.

A small "partition" file:
[/home/fn/Desktop/raxml776/mat582], firstpartition = 1-20
[/home/fn/Desktop/raxml776/mat1414], secondpartition = 21-30
[/home/fn/Desktop/raxml776/mat657], thirdpartition = 31-50


Then the command is:
./raxmlHPC -m PROTGAMMAMTREV -q partitions -p 123 -s smallprotein.phy -n
test 

The software takes the fact that we are talking about proteins (PROT) and
the among site rate variation part (GAMMA) from the PROTGAMMAMTREV token,
discarding the r-matrix (MTREV) part. The r-matrices are in turn taken
(differently for each partition) from the matrix files, whose location is
indicated in the partiton file. The among site rate variation has to be the
same for all partitions (not much of a problem). -->
	
					<parameter type="InFile" >
						<name>user_prot_matrixq1</name>
						<attributes>
							<prompt>Select the First Protein Substitution Matrix Called in Your Partition File</prompt>
							<precond>
								<language>perl</language>
								<code>$mulcustom_aa_matrices</code>
							</precond>
							<filenames>firstpartition</filenames>
							<comment>
<value>This option allows the user to upload a Protein subsitution matrix</value>
							</comment>
						</attributes>
					</parameter>
					
					<parameter type="InFile" >
						<name>user_prot_matrixq2</name>
						<attributes>
							<prompt>Select the Second Protein Substitution Matrix Called in Your Partition File</prompt>
							<precond>
								<language>perl</language>
								<code>$mulcustom_aa_matrices &amp;&amp; defined $user_prot_matrixq1</code>
							</precond>
							<filenames>secondpartition</filenames>
							<comment>
<value>This option allows the user to upload a second Protein subsitution matrix</value>
							</comment>
						</attributes>
					</parameter>
						
					<parameter type="InFile" >
						<name>user_prot_matrixq3</name>
						<attributes>
							<prompt>Select the Third Protein Substitution Matrix Called in Your Partition File</prompt>
							<precond>
								<language>perl</language>
								<code>$mulcustom_aa_matrices &amp;&amp; defined $user_prot_matrixq2</code>
							</precond>
							<filenames>thirdpartition</filenames>
							<comment>
<value>This option allows the user to upload a third Protein subsitution matrix</value>
							</comment>
						</attributes>
					</parameter>

					<parameter type="InFile" >
						<name>user_prot_matrixq4</name>
						<attributes>
							<prompt>Select the Fourth Protein Substitution Matrix Called in Your Partition File</prompt>
							<precond>
								<language>perl</language>
								<code>$mulcustom_aa_matrices &amp;&amp; defined $user_prot_matrixq3</code>
							</precond>
							<filenames>fourthpartition</filenames>
							<comment>
<value>This option allows the user to upload a fourth Protein subsitution matrix</value>
							</comment>
						</attributes>
					</parameter>	
						
					<parameter type="InFile" >
						<name>user_prot_matrixq5</name>
						<attributes>
							<prompt>Select the Fifth Protein Substitution Matrix Called in Your Partition File</prompt>
							<precond>
								<language>perl</language>
								<code>$mulcustom_aa_matrices &amp;&amp; defined $user_prot_matrixq4</code>
							</precond>
							<filenames>fifthpartition</filenames>
							<comment>
<value>This option allows the user to upload a fifth Protein subsitution matrix</value>
							</comment>
						</attributes>
					</parameter>

		<!-- Empirical Base Frequencies -->		
					<parameter type="Excl">
						<name>use_emp_freqs</name>
						<attributes>
							<prompt>Use empirical frequencies?</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<vlist>
								<value>F</value>
								<label>Yes</label>
								<value></value>
								<label>No</label>
							</vlist>
							<vdef>
								<value></value>
							</vdef>
						</attributes>
					</parameter> 

		<!-- datatype=protein is a precondition, adds -F to end of -m model string -->
				
				</parameters>
			</paragraph>
		</parameter>
		
		<parameter type="Paragraph">
			<paragraph>
				<name>Sec_structure_opts</name>
				<prompt>RNA Secondary Structure Options</prompt>
				<parameters>
<!--***************************************************************************************************************************************************************************-->
<!-- ******************************THESE FEATURES ARE READY TO GO, BUT WHO KNOWS IF THEY WORK************************************************-->
<!-- 	[-S secondaryStructureFile] Specify the name of a secondary structure file. The file can contain "." for  alignment columns that do not form part of a stem and characters. "()<>[]{}" to define stem regions and pseudoknots -->
		 
					<parameter type="InFile" >
						<name>sec_str_file</name>
						<attributes>
						<precond>
								<language>perl</language>
								<code>$datatype eq "rna"</code>
							</precond> 
							<prompt>Upload a Secondary Structure File (-S)</prompt>
							<filenames>sec_structure.txt</filenames>
							<format>
								<language>perl</language>
								<code>(defined $value) ? " -S sec_structure.txt" : ""</code>
							</format>
							<group>2</group>
							<comment>
<value>This option allows you to provide a secondary structure file. The file can contain "." for  alignment columns that do not form part of a stem and characters, while  "(), [], and {}" are used to define stem regions and pseudoknots.</value>
							</comment>
						</attributes>
					</parameter>	 
		 
<!--     [-A secondaryStructureSubstModel] 	Specify one of the RNA secondary structure substitution models implemented in RAxML.
			The same nomenclature as in the PHASE manual is used, available models: 
			S6A, S6B, S6C, S6D, S6E, S7A, S7B, S7C, S7D, S7E, S7F, S16, S16A, S16B
			DEFAULT: 16-state GTR model (S16)
			6 state model nomenclature: http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node101.html 
			7 state model nomenclature http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node107.html
			16 state model nomenclature http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node114.html -->
														  
 			<parameter type="Excl" ismandatory="1">
						<name>rna_model</name>
						<attributes>
							<prompt>Use an RNA Secondary Structure Substitution Model (-A)</prompt>
							<precond>
								<language>perl</language>
								<code>defined $sec_str_file</code>
							</precond>
							<vlist>
								<value>S6A</value>
								<label>Six State Model A</label>
								<value>S6B</value>
								<label>Six State Model B</label>
								<value>S6C</value>
								<label>Six State Model C</label>
								<value>S6D</value>
								<label>Six State Model D</label>
								<value>S6E</value>
								<label>Six State Model E</label>
								<value>S7A</value>
								<label>Seven State Model A</label>
								<value>S7B</value>
								<label>Seven State Model B</label>
								<value>S7C</value>
								<label>Seven State Model C</label>
								<value>S7D</value>
								<label>Seven State Model D</label>
								<value>S7E</value>
								<label>Seven State Model E</label>
								<value>S7F</value>
								<label>Seven State Model F</label>
								<value>S16A</value>
								<label>Sixteen State Model A</label>
								<value>S16B</value>
								<label>Sixteen State Model B</label>
							</vlist>
							<vdef>
								<value>S16A</value>
							</vdef>
							<format>
								<language>perl</language>
								<code>"-A $value"</code>
							</format>
							<group>2</group>
							<comment>
<value>Use this option to specify one of the 6, 7, or 16 state RNA secondary structure substitution models.The nomenclature is identical to that used in the program PHASE. For more information, see PHASE documentation: 6 state model nomenclature: http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node101.html; 7 state model nomenclature http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node107.html; 16 state model nomenclature http://www.cs.manchester.ac.uk/ai/Software/phase/manual/node114.html</value>
							</comment> 
					</attributes> 
					</parameter>
		
				</parameters>
			</paragraph>
		</parameter>
		
		<parameter type="Paragraph">
			<paragraph>
				<name>bin_opts</name>
				<prompt>Binary Matrix Options</prompt>
				<parameters>
						<!-- -m argument to specify substitution model is required -->
<!-- mmiller changed the way this is done  I exposed the other nucleic acid model options on 8/3/2009 -->
		<!--             [ -m      Model of Binary (Morphological), Nucleotide or Amino Acid Substitution]: 

            BINARY: (NEW for 7.2.0)

                "-m BINCAT"         : Optimization of site-specific
                                      evolutionary rates which are categorized into numberOfCategories distinct 
                                      rate categories for greater computational efficiency. Final tree might be evaluated
                                      automatically under BINGAMMA, depending on the tree search option
                "-m BINCATI"        : Optimization of site-specific
                                      evolutionary rates which are categorized into numberOfCategories distinct 
                                      rate categories for greater computational efficiency. Final tree might be evaluated
                                      automatically under BINGAMMAI, depending on the tree search option 
                "-m BINGAMMA"       : GAMMA model of rate heterogeneity (alpha parameter will be estimated)
                "-m BINGAMMAI"      : Same as BINGAMMA, but with estimate of proportion of invariable sites

The I option is not added in this interface                                                                 -->
					<parameter type="Excl" ismandatory="1">
						<name>bin_model</name>
						<attributes>
							<prompt>Binary data model (-m)</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "binary"</code>
							</precond> 
							<vlist>
								<value>BINCAT</value>
								<label>Binary CAT</label>
								<value>BINGAMMA</value>
								<label>Binary GAMMA</label>
							</vlist>
<!--  						<vdef>
								<value>BINCAT</value>
							</vdef> -->		
							<format>
								<language>perl</language>
								<code>"-m $ascertainment$bin_model$invariable"</code>
							</format>
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please choose a binary model</message>
									<language>perl</language>
									<code>$datatype eq "binary" &amp;&amp; $bin_model ne "BINCAT" &amp;&amp; $bin_model ne "BINGAMMA" </code>
								</ctrl>
							</ctrls>
							<comment>
<value>Binary data is handled in RAXML 7.2.0. Binary CAT use optimization of site-specific evolutionary rates, which are categorized into numberOfCategories (option -c) distinct  rate categories for greater computational efficiency. Final tree might be evaluatedautomatically under BINGAMMA, depending on the tree search option. </value>
<value>Binary GAMMA uses the GAMMA model of rate heterogeneity (alpha parameter will be estimated). The option for invariable sites is not provided at this time. The program's author supports the use of Gamma models.</value>
							</comment> 
						</attributes>
					</parameter>
				</parameters>
			</paragraph>
		</parameter>

		<parameter type="Paragraph">
			<paragraph>
				<name>multi_opts</name>
				<prompt>Multiple State Morphological Matrix Options</prompt>
				<parameters>
<!--             MULTI-STATE:

                 "-m MULTICAT"         Optimization of site-specific evolutionary rates which are categorized into numberOfCategories distinct
                                       rate categories for greater computational efficiency. Final tree might be evaluated automatically under MULTIGAMMA,
	                                   depending on the tree search option
                 "-m MULTICATI"        : Optimization of site-specific evolutionary rates which are categorized into numberOfCategories distinct
                                       rate categories for greater computational efficiency. Final tree might be evaluated automatically under MULTIGAMMAI, depending on the 
	                                   tree search option
                 "-m MULTIGAMMA"       : GAMMA model of rate heterogeneity (alpha parameter will be estimated)
                 "-m MULTIGAMMAI"      : Same as MULTIGAMMA, but with estimate of proportion of invariable sites
	                                     You can use up to 32 distinct characters to encode multi-state regions, they must be used in the following 
	                                     order:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V
                                         i.e., if you have 6 distinct characters you would use 0, 1, 2, 3, 4, 5 to encode these.
                                         The substitution model for the multi-state regions can be selected via the "-K" option-->
					<parameter type="Excl" ismandatory="1">
						<name>multi_model</name>
						<attributes>
							<prompt>Multiple State Data Model (-m)</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "multi"</code>
							</precond> 
							<vlist>
								<value>MULTICAT</value>
								<label>Multi-state CAT</label>
								<value>MULTIGAMMA</value>
								<label>Multi-state GAMMA</label>
							</vlist>
	<!--  					<vdef>
								<value>MULTICAT</value>
							</vdef> -->		
							<format>
								<language>perl</language>
								<code>"-m $ascertainment$value$invariable"</code>
							</format>
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please choose a Multi-State model</message>
									<language>perl</language>
									<code>$datatype eq "multi" &amp;&amp; $multi_model ne "MULTICAT" &amp;&amp; $multi_model ne "MULTIGAMMA" </code>
								</ctrl>
							</ctrls>
							<comment>
<value>Multi-state morphological data are handled in RAXML at V. 7.3.0 and above. Multi-state CAT uses optimization of site-specific evolutionary rates which are categorized
into numberOfCategories distinct rate categories for greater computational efficiency. Final tree might be evaluated automatically under MULTIGAMMA depending on the tree search option </value>
<value>Mutli-state GAMMA uses the GAMMA model of rate heterogeneity (alpha parameter will be estimated). Invariable sites (I) options are not exposed here. 
	If you require this option, please contact mmiller@sdsc.edu.</value>
							</comment> 
						</attributes>
					</parameter>
					
					<parameter type="Excl" ismandatory="1">
<!--	[-K] syntax?(not yet supported)Specify one of the multi-state substitution models (max 32 states) implemented in RAxML.
              Available models are: ORDERED, MK, GTR
              DEFAULT: GTR model -->
						<name>choose_multi_model</name>
						<attributes>
							<prompt>Select a Multiple state data model (-K)</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "multi"</code>
							</precond> 
							<vlist>
								<value>ORDERED</value>
								<label>Ordered</label>
								<value>MK</value>
								<label>MK</label>
								<value>GTR</value>
								<label>GTR</label>
							</vlist>
							<vdef>
								<value>GTR</value>
							</vdef>
							<format>
								<language>perl</language>
								<code>"-K $value"</code>
							</format>
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please choose a Multi-State data model</message>
									<language>perl</language>
									<code>$datatype eq "multi" &amp;&amp; $choose_multi_model ne "ORDERED" &amp;&amp; $choose_multi_model ne "MK" &amp;&amp; $choose_multi_model ne "GTR" </code>
								</ctrl>
							</ctrls>
							<comment>
<value>Multi-state morphological data are handled in RAXML 7.3.0 and above. Multi-state CAT uses optimization of site-specific evolutionary rates which are categorized
into numberOfCategories distinct rate categories for greater computational efficiency. Final tree might be evaluated automatically under MULTIGAMMA depending on the tree search option </value>
<value>Mutli-state GAMMA uses the GAMMA model of rate heterogeneity (alpha parameter will be estimated). The program's author supports the use of Gamma models.</value>
							</comment> 
						</attributes>
					</parameter>
					
					
				</parameters>
			</paragraph>
		</parameter>
		
		<!-- return all output files from raxml in one big mess -->
		
	 	<parameter type="Results">
				<name>all_outputfiles</name>
				<attributes>
					<filenames>*</filenames>
				</attributes>
		</parameter>		
	</parameters>
</pise>

