<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE pise PUBLIC "pise2.dtd" "pise2.dtd" >
<pise>
	<head>
		<title>RAxML-HPC BlackBox</title>
		<version>8.2.12</version>
		<description>Phylogenetic tree inference using maximum likelihood/rapid bootstrapping 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>raxmlhpc2bb</command>
<!--
	This file was created to reproduce the Black Box configuration of RAXML using only command line parameters offered by Alexis.

	Note: values must be passed in for invariable, empirical, dna, and matrix, even if the precond prevents them from being set, even when the default value is the empty
	string.  For example, if we're passed invariable = empty string, then the format code for the model parameter is OK, but if we are passed a parameter map that doesn't include 
	invariable, when PiseCommandRenderer. restituteFormat tries to replace variables for model's code and it finds a reference to a parameter that doesn't exist it clobbers
	the whole code string.
-->

 <!-- Move the jobs to Expanse, per Wayne Pfeiffer, as of 10/29/2020
 
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.

    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
  -->

<!-- dhge10 = dna/hybrid runs; with mpi; greater than or equal to N=10 -->
<!--     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 -->
<parameters>

<!-- hybrid when mpi used; not protein, and nchar is less than 500000 and -N >= 10 -->	
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdhge10</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 500000 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-HYBRID_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!-- pthreads when mpi not used; not protein, nchar is greater than or equal to 500000 and -N >= 10 -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdpge10</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 499999 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>

<!--  pthreads when mpi used; protein, nchar is greater than or equal to 200000 and -N >= 10 -->									
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicphge10</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 200000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-HYBRID_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--  pthreads when mpi used; protein, nchar is greater than or equal to 200000 and -N >= 10 -->							
<!-- ppge10 =protein/pthreads runs-->				
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicppge10</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 199999 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9)</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!-- dplt10 and protein; =  pthread runs; -N lt 10, no bootstopping -->	
<!--   DNA        >=300,000                128      128    compute -->					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicallplt10</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>!$use_bootstopping &amp;&amp; $bootstop &lt; 10</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"raxmlHPC-PTHREADS_8.2.12_expanse"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>

					
<!--     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-->
<!-- when time is less than = 2 hours run on a single processor -->
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdhge10_scheduler1</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 10000 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9)  &amp;&amp; !$many_partitions</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>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdhge10_scheduler2</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 9999  &amp;&amp; $nchars &lt; 40000  &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=5\\n" .
									"threads_per_process=25\\n" .
									"cpus-per-task=25\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdhge10_scheduler3</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 39999 &amp;&amp; $nchars &lt; 500000  &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=2\\n" .
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>

 <!--  DNA              any   >=100      10       12      120    compute     243G	-->	
 					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdhge10_scheduler5</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; $many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .
									"threads_per_process=12\\n" .
									"cpus-per-task=120\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
								
<!-- dna when there are no mpi processes 
     DNA        >=500,000                128      128    compute-->														
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdpge10_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 499999 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!-- using pthreads; dna, less than 9 for -N; or no bootstopping 
Any other analysis

     DNA           <4,000                  8        8     shared      15G
     DNA     4,000-15,999                 16       16     shared      30G
     DNA    16,000-59,999                 24       24     shared      46G
     DNA   60,000-299,999                 48       48     shared      92G
     DNA        >=300,000                128      128    compute -->
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler1</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 4000 &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=8\\n" .
									"cpus-per-task=8\\n" .
									"node_exclusive=0\\n" .
									"mem=15G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler2</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 3999  &amp;&amp; $nchars &lt; 16000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=16\\n" .
									"cpus-per-task=16\\n" .
									"node_exclusive=0\\n" .
									"mem=30G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler3</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 15999 &amp;&amp; $nchars &lt; 60000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=24\\n" .
									"cpus-per-task=24\\n" .
									"node_exclusive=0\\n" .
									"mem=46G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler4</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 59999 &amp;&amp; $nchars &lt; 300000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=48\\n" .
									"cpus-per-task=48\\n" .
									"node_exclusive=0\\n" .
									"mem=92G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>

<!--   DNA              any   >=100               16       16     shared      30G -->
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler6</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; $many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=16\\n" .
									"cpus-per-task=16\\n" .
									"node_exclusive=0\\n" .
									"mem=30G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!-- dna when there are no mpi processes 
     DNA        >=300,000                128      128    compute-->														
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicdplt10_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 299999 &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
							<group>0</group>
						</attributes>
					</parameter>
	 
	 
<!-- When the -N >= 10

	  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_hybridlogicphge10_scheduler1</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 3000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</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>
						</attributes>
					</parameter>
					
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicphge10_scheduler2</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 2999 &amp;&amp; $nchars &lt; 12000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .
									"threads_per_process=12\\n" .
									"cpus-per-task=12\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
											
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicphge10_scheduler3</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 11999 &amp;&amp; $nchars &lt; 30000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=5\\n" .
									"threads_per_process=25\\n" .
									"cpus-per-task=25\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
																	
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicphge10_scheduler4</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 29999 &amp;&amp; $nchars &lt; 200000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=2\\n" .
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>

<!-- ->    AA              any   >=100      10       12      120    compute     243G -->
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicphge10_scheduler5</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; $many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"jobtype=mpi\\n" .
									"mpi_processes=10\\n" .
									"threads_per_process=12\\n" .
									"cpus-per-task=120\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
																					
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicppge10_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 199999 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>

<!--  When the -N < 10
	  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     123G
      AA        >=100,000                128      128    compute -->
					<parameter ishidden="1" type="String">
						<name>raxmlhpc_hybridlogicpplt10_scheduler1</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &lt; 3000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=12\\n" .
									"cpus-per-task=12\\n" .
									"node_exclusive=0\\n" .
									"mem=23G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
					
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicpplt10_scheduler2</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 2999 &amp;&amp; $nchars &lt; 4500 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=24\\n" .
									"cpus-per-task=24\\n" .
									"node_exclusive=0\\n" .
									"mem=46G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
											
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicpplt10_scheduler3</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 4499 &amp;&amp; $nchars &lt; 15000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=32\\n" .
									"cpus-per-task=32\\n" .
									"node_exclusive=0\\n" .
									"mem=61G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
																	
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicpplt10_scheduler4</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 14999 &amp;&amp; $nchars &lt; 100000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=64\\n" .
									"cpus-per-task=64\\n" .
									"node_exclusive=0\\n" .
									"mem=123G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
																					
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicpplt10_scheduler</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$nchars &gt; 99999 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=128\\n" .
									"cpus-per-task=128\\n" .
									"node_exclusive=1\\n" .
									"mem=243G\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
<!-- partions > 100 -->
<!-- ->    AA              any   >=100               12       12     shared      23G -->
				<parameter ishidden="1" type="String">					
					<name>raxmlhpc_hybridlogicpplt10_scheduler2</name>
						<attributes>
							<paramfile>scheduler.conf</paramfile>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; $many_partitions</code>
							</precond>
							<format>
								<language>perl</language>
								<code>
									"threads_per_process=12\\n" .
									"cpus-per-task=12\\n" .
									"node_exclusive=0\\n" .
									"nodes=1\\n"
								</code>
								</format>
						</attributes>
					</parameter>
<!-- Stop  -N  =100 -->	
			
<!-- end of hidden params Section 1 -->				
<!-- Begin hidden params Section 2 -->
<!--required input file -->
					<parameter ismandatory="1" issimple="1" isinput="1" type="InFile">
						<name>infile</name>
						<attributes>
							<prompt>Sequences File (relaxed phylip format) (-s)</prompt>
							<format>
								<language>perl</language>
								<code>" -s infile"</code>
							</format>
							<group>1</group>
							<filenames>infile</filenames>
						</attributes>
					</parameter>
		
<!-- required setting of hidden -p value version 7.3.0 -->
<!--PARSIMONY SEED VALUE FOR CONSTANT STARTING TREE-->

					<parameter type="Integer" issimple="1"  ismandatory="1" ishidden="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> " -p 12345"</code>
							</format>
							<group>2</group>
						</attributes>
					</parameter>
					
<!-- -n argument to specify output file suffix is required -->
					<parameter type="String" ishidden="1">
						<name>outsuffix</name>
						<attributes>
						<format>
							<language>perl</language>
							<code>" -n result"</code>
						</format>
						<group>1</group>
						</attributes>
					</parameter>
		
<!-- this sets -x, which is always true for the black box-->
					<parameter type="String" ismandatory="1" ishidden="1" issimple="1">
						<name>bootstrap_seed</name>
						<attributes>
							<format>
								<language>perl</language>
								<code>"-x 12345"</code>
							</format>
							<group>2</group>
						</attributes>
					</parameter>
		
<!-- Bootstrap iterations -->
					<parameter type="Integer" ismandatory="0" issimple="1" ishidden="0">
						<name>bootstop</name>
						<attributes>
							<prompt>Set the number of bootstraps</prompt>
							<precond>
								<language>perl</language>
								<code>!$use_bootstopping</code>
							</precond>
							<format>
								<language>perl</language>
								<code>" -N $value"</code>
							</format>
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please enter number of bootstraps desired (-N) (eg 100)</message>
									<language>perl</language>
									<code>!$use_bootstopping &amp;&amp; !defined $bootstop</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>$bootstop &gt; 1000</code>
								</ctrl>	
							</ctrls>
						</attributes>
					</parameter>
					
<!-- Activate programmatic bootstopping -->					
					<parameter type="Switch" issimple="1" ismandatory="1">
						<name>use_bootstopping</name>
						<attributes>
							<prompt>Let RAxML halt bootstrapping automatically (HIGHLY recommended)</prompt>
							<vdef>
								<value>1</value>
							</vdef>
							<format>
								<language>perl</language>
								<code>($value)? "-N autoMRE":""</code>
							</format>
							<ctrls>
								<ctrl>
									<message>Sorry, you cant use automatic bootstopping with a constraint tree</message>
									<language>perl</language>
									<code>$use_bootstopping &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>
					
<!-- Set the model for Nucleotide sequences  -->
<!--           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.
  NOW 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 -->
                
					<parameter type="String" issimple="1" ishidden="1">
						<name>dna_gtrcat</name>
						<attributes>
							<prompt>Use GTRCAT for the bootstrapping phase, and GTRGAMMA for the final tree inference (default)</prompt>
							<format>
								<language>perl</language>
								<code>"-m GTRCAT$invariable"</code>
							</format>
							<group>2</group>
							<precond>
								<language>perl</language>
								<code>$datatype eq "dna"</code>
							</precond>
						</attributes>
					</parameter>	
					
<!--   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 -->
   
<!-- cat is the default in black box -->             		
					<parameter type="String" ishidden="1" issimple="1">
						<name>prot_sub_model</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"-m PROTCAT$invariable$prot_matrix_spec$empirical"</code>
							</format>
							<group>2</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>
				<comment>
<value>Estimate the maximum time your job will need to run. We recommend testimg initially with a &lt; 0.5hr test run because Jobs set for 0.5 h or less 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>
				<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>
				<warns>
					<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>$nchars &lt; 10000 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
					<warn>
						<message>The job will run on 125 processors as configured. If it runs for the entire configured time, it will consume 125 x $runtime cpu hours</message>
						<language>perl</language>
						<code>$nchars &gt; 9999  &amp;&amp; $nchars &lt; 40000  &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</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>$nchars &gt; 39999 &amp;&amp; $nchars &lt; 500000  &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
<!-- 100+ partitions -->
					<warn>
						<message>The job will run on 120 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 ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; $many_partitions</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>$nchars &gt; 499999 &amp;&amp; $datatype ne "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
					<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>$nchars &lt; 4000 &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 3999  &amp;&amp; $nchars &lt; 16000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 15999 &amp;&amp; $nchars &lt; 60000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 59999 &amp;&amp; $nchars &lt; 250000  &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 249999 &amp;&amp; $datatype ne "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
					</warn>
<!-->100 partitions -->
					<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; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; $many_partitions</code>
					</warn>
					<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>$nchars &lt; 3000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
					<warn>
						<message>The job will run on 120 processors as configured. If it runs for the entire configured time, it will consume 120 x $runtime cpu hours</message>
						<language>perl</language>
						<code>$nchars &gt; 2999 &amp;&amp; $nchars &lt; 12000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
					<warn>
						<message>The job will run on 125 processors as configured. If it runs for the entire configured time, it will consume 125 x $runtime cpu hours</message>
						<language>perl</language>
						<code>$nchars &gt; 11999 &amp;&amp; $nchars &lt; 30000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</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>$nchars &gt; 29999 &amp;&amp; $nchars &lt; 200000 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</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>$nchars &gt; 199999 &amp;&amp; $datatype eq "protein" &amp;&amp; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; !$many_partitions</code>
					</warn>
<!-- > 100 partitions -->
					<warn>
						<message>The job will run on 120 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; ($use_bootstopping || $bootstop &gt; 9) &amp;&amp; $many_partitions</code>
					</warn>
					<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>$nchars &lt; 3000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 2999 &amp;&amp; $nchars &lt; 4500 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 4499 &amp;&amp; $nchars &lt; 15000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 14999 &amp;&amp; $nchars &lt; 100000 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</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>$nchars &gt; 99999 &amp;&amp; $datatype eq "protein" &amp;&amp; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; !$many_partitions</code>
					</warn>
<!-- > 100 partitions -->
<!-- 	 -->
					<warn>
						<message>The job will run on 120 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; !$use_bootstopping &amp;&amp; $bootstop &lt; 10 &amp;&amp; $many_partitions</code>
					</warn>
				</warns>
				<format>
					<language>perl</language>
					<code>"runhours=$value\\n"</code>
				</format>
			</attributes>
		</parameter>
		
<!-- user enters nchar parameter this will help decide how to run -->
		<parameter type="Integer" issimple="1">
			<name>nchars</name>
			<attributes>
				<prompt>Number of patterns in your dataset</prompt>
				<comment>
					<value>
						Knowing the number of characters in your dataset helps us determine the most efficient way to run raxml.
						We need to know the number of characters per row in the input data matrix. You can find this by doing a quick pre-run using raxml.
					</value>
				</comment>
				<vdef>
					<value>1000</value>
				</vdef>
				<ctrls>
					<ctrl>
						<message>Please enter a value for the number of characters in your data matrix</message>
						<language>perl</language>
						<code>!defined $nchars</code>
					</ctrl>
					<ctrl>
						<message>The number of characters in the matrix must 1 or greater.</message>
						<language>perl</language>
						<code>$nchars &lt; 1</code>
					</ctrl>
				</ctrls>
				<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>
				<group>15</group>
			</attributes>
		</parameter>

<!-- is it protein or dna input ? -->
					<parameter type="Excl" issimple="1" ismandatory="1">
						<name>datatype</name>
						<attributes>
							<prompt>Sequence Type</prompt>
							<vlist>
								<value>protein</value>
								<label>Protein</label>
								<value>dna</value>
								<label>Nucleotide</label>
							</vlist>
							<vdef>
								<value>dna</value>
							</vdef>
							<group>2</group>
							<ctrls>
								<ctrl>
									<message>Please select a data type</message>
									<language>perl</language>
									<code>!defined $datatype</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
<!-- outgroup (-o) -->
					<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>
							<group>10</group>
							<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>
					
<!-- 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>
		
		<!-- 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>The multipleModelFileName parameter (-q) 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. 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 handle 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 CAT or CATI. for all partitions. 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: DNA, gene1 = 1-500; WAG, gene2 = 501-1000. For more help see http://phylobench.vital-it.ch/raxml-bb/index.php?help=model.
</value>
							</comment>
						</attributes>
					</parameter>
					
					<parameter type="Switch" issimple="1">
						<name>many_partitions</name>
						<attributes>
							<prompt>My data set has more than 99 partitions</prompt>
							<precond>
								<language>perl</language>
								<code>defined $partition</code>
							</precond>
							<warns>
								<warn>
									<message>If you have more than 99 partitions, please check the appropriate box</message>
									<language>perl</language>
									<code>defined $partition &amp;&amp; !defined $many_partitions</code>
								</warn>
							</warns>
							<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>

		<!-- 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>Create 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>	

		<!-- 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. -->
		<!-- enabled 1/20/2010 based on its inclusion in the black box -->
		
		<parameter type="Excl" issimple="1" >
			<name>invariable</name>
			<attributes>
				<prompt>Estimate proportion of invariable sites (GTRGAMMA + I)</prompt>
				<precond>
					<language>perl</language>
					<code>$mlsearch</code>
				</precond>
				<vlist>
					<value>I</value>
					<label>yes</label>
					<value></value>
					<label>no</label>
				</vlist>
				<vdef>
					<value></value>
				</vdef>
				<group>2</group>
			</attributes>
		</parameter>		 
		
				<parameter type="Excl" ismandatory="1" issimple="1">
						<name>prot_matrix_spec</name>
						<attributes>
							<prompt>Protein Substitution Matrix</prompt>
							<precond>
								<language>perl</language>
								<code>$datatype eq "protein"</code>
							</precond>
							<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>GTR</value>
								<label>GTR</label>
							</vlist>
							<vdef>
								<value>JTT</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] anyses 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>

<!-- Empirical Base Frequencies -->
<!-- datatype=protein is a precondition, adds -F to end of -m model string; switch isnt used because it adds a 0! -->		
		<parameter issimple="1" type="Excl" ismandatory="0">
			<name>empirical</name>
			<attributes>
				<prompt>Use empirical base 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>
				<group>2</group>
				<comment>
<value>The empirical base frequency command is relevant for the protein datatype, and is used as a suffix to the -m model string PROTGAMMA_____
</value>
					
				</comment>
			</attributes>
		</parameter>
					
<!-- Do maximum likelihood search after bootstrap -->
					<parameter type="Switch" issimple="1">
						<name>mlsearch</name>
						<attributes>
							<prompt>Find best tree using maximum likelihood search</prompt>
							<format>
								<language>perl</language>
								<code> ($value)?" -f a ":""</code>
							</format>
							<vdef>
								<value>1</value>
							</vdef>
							<group>2</group>
							<comment>
								<value>Tell RAxML to conduct a Rapid Bootstrap analysis (-x) and search for the best-scoring ML tree in one single program run.
								</value>
							</comment>
						</attributes>
					</parameter>
		
					
<!-- Dont use BFGS-->					
					<parameter type="Switch" issimple="1" ismandatory="1">
						<name>no_bfgs</name>
						<attributes>
							<prompt>Don't use BFGS searching algorithm (--no-bfgs)</prompt>
							<vdef>
								<value>0</value>
							</vdef>
							<format>
								<language>perl</language>
								<code>($value)? "--no-bfgs":""</code>
							</format>
							<ctrls>
								<ctrl>
									<message>Sorry, you cant use automatic bootstopping with a constraint tree</message>
									<language>perl</language>
									<code>$use_bootstopping &amp;&amp; defined $constraint</code>
								</ctrl>
							</ctrls>
							<comment>
<value> BFGS is a more efficient optimization algorithm for optimizing 
branch lengths and GTR parameters simultaneously. YUOu can disable it using this option</value>
							</comment>
						</attributes>
					</parameter>
					
<!-- selecting bootstopping is not supported -->
					
<!-- 	[-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>
							<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>
									
					

<!-- a priori bootstopping (-I) is not supported -->	
		
	 	<parameter type="Results">
				<name>all_outputfiles</name>
				<attributes>
					<filenames>*</filenames>
				</attributes>
			</parameter>	
			

<!-- return raxml result files  -->	
		
	 	<parameter type="Results">
				<name>raxml_outputfiles</name>
				<attributes>
					<filenames>RAXML_*</filenames>
				</attributes>
			</parameter>	
							


	</parameters>
</pise>
