<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pise PUBLIC "pise2.dtd" "pise2.dtd" >
<pise>
	<head>
		<title>MrBayes Restart on ACCESS</title>
		<version>3.2.x</version>
		<description>Tree Inference Using Bayesian Analysis - run on XSEDE</description>
		<authors>John P. Huelsenbeck and Fred Ronquist</authors>
		<reference>
			Huelsenbeck, J. P. and F. Ronquist. 2001. MRBAYES: Bayesian inference of phylogeny. Bioinformatics 17:754-755. 
		</reference>
		<reference>
			Ronquist, F. and J. P. Huelsenbeck. 2003. MRBAYES 3: Bayesian phylogenetic inference under mixed models. Bioinformatics 19:1572-1574. .
		</reference>
		<category>Phylogeny / Alignment</category>
	</head>
	<command>mrbayes_restart_xsede</command>
<!--
*****************************************************************************************************************************************
Created by Mark Miller for CIPRES2, 1_22_2013 or thereabouts
*****************************************************************************************************************************************
-->

<!-- For all cases, each set of conditions with a dependency on nruns nchains must be 
	duplicated to allow for submission of these parms in the mb block, or the interface -->

<!-- Adapted to run on MB 3.2.1 Gordon 

I have only been able to get MrBayes 3.2.1 to work with MPI, the rules for running it are
very simple.

. Calculate np = nruns*nchains, which is the number of MPI processes.

. If np <= 8, run in the shared queue.

. If np >8 but <= 16, run in the normal queue.

. If np > 16, tell the user to make np smaller.

That's it.

The code runs with OpenMPI, not MVAPICH2, from my /home directory.  A sample PBS file is appended,
and the input and output files are at /oasis/projects/nsf/use320/pfeiffer/MrBayes-3.2.1_gordon/Mike/mpi8.10kgen

A significant new feature in the new version of MrBayes is checkpoint/restart.  

A checkpoint file with suffix ckp is written periodically.  The default frequency is 100,000 
generations and is controlled by checkfreq in the mcmc block of the nex file.
	
To restart, the ckp file as well as the mcmc, p, and t files need to be input along with the
nex file.  You should consider how best to handle this.

In my sample script, I redirect the stdout file to one with the prefix log. 
In this case I use >> for redirection to allow the file to be updated rather than overwritten
upon restart. This would require that the stdout file be input upon restart, but maybe you run
differently via the gateway.  If you do run the same way as I do, then >> can be used for the
initial run as well. In addition, the user needs to add append=yes to the mcmc block in the nex
file, but only for the restart run.  

	Also, if the original run completed the number of generations specified, then that number needs
to be increased in the nex file.

I think users should be encouraged to become familiar with checkpoint/restart.  This could allow
them to specify a smaller number of generations for a run than they might have done previously,
especially since the new version of MrBayes often converges faster. If the run has converged
sufficiently, they are done.  Otherwise, they could restart and run longer until they get
convergence or find that they need more data.

* Let me know if you have any questions.

*******************************************************************************
	Here is the script
*******************************************************************************
#!/bin/bash
#PBS -N mpi8.10kgen
#PBS -q shared
#PBS -l nodes=1:ppn=8:native:noflash
#PBS -v QOS=10
#PBS -l walltime=1:00:00
#PBS -m abe
#PBS -M pfeiffer@sdsc.edu
#PBS -V
#PBS -A use320
cd $PBS_O_WORKDIR
source /etc/profile.d/modules.sh
module unload mvapich2_ib
module load openmpi_ib
mpirun -hostfile $PBS_NODEFILE -np 8 /home/pfeiffer/gordon/MrBayes-3.2.1/mb infile.nex >> log.mpi8.10kgen.txt qstat -f $PBS_JOBID | grep Job qstat -f $PBS_JOBID | grep resources

-->
	
<!-- this section defines a file scheduler.conf that accompanies the command line to the TG 
resource. It instructs the machine how to run the job. Unlike the raxml interface, the individual
lines of the file are broken up. This is necessary because of the $mrbayesblockquery element,
which affects individual lines in this file --> 

<parameters>
<!-- 	Move to expanse -->
				<parameter ismandatory="1" ishidden="1" type="String">
						<name>mbmpi_326</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$run_version == "6"</code>
							</precond>
					 		<format>
								<language>perl</language>	
								<code>"<![CDATA[mrbayes_3.2.6  paramfile.txt]]>"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
					<parameter ismandatory="1" ishidden="1" type="String">
						<name>mbmpi_327</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$run_version == "7"</code>
							</precond>
							<format>
								<language>perl</language>	
								<code>"<![CDATA[mrbayes_3.2.7a  paramfile.txt]]>"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>
					
<!--  					<parameter ismandatory="1" ishidden="1" type="String">
						<name>mbmpi_327dev</name>
						<attributes>
							<precond>
								<language>perl</language>
								<code>$run_version eq "71"</code>
							</precond>
							<format>
								<language>perl</language>	
								<code>"<![CDATA[mbmpiwrapper_3.2.7adev_comet.centos7 paramfile.txt]]>"</code>
							</format>
							<group>0</group>
						</attributes>
					</parameter>	 -->
					

<!-- this sets the mpi process value when the values nruns/nchains are set in the MB block (all runs for this interface have a mb block -->
<!-- 
- Calculate n = nruns*nchains. Check that n is an even number between
  2 and 16. If it is not, tell the user to change it so it is.

- Specify the number of MPI processes, number of threads, number of cores,
  value of usebeagle, and value of beaglethreadcount, according to the
  the following table.

                                MPI                  beagle
              use     More     pro-                  thread
  Version  beagle   memory   cesses  threads  cores   count

   3.2.7a     yes       no      n/2        2      n       2
   3.2.7a     yes      yes        n        4    4*n       4
   3.2.7a      no       no        n        1      n      
   3.2.7a      no      yes        n        1    4*n      
   3.2.6      yes       no        n        1      n
            or no
   3.2.6      yes      yes        n        1    4*n
            or no

- In Slurm run script, set

  ntasks-per-node = <cores>
  cpus-per-task = <threads>
  mem = <floor(cores*248/128)>G
  CIPRES_NP = <MPIprocesses>
  CIPRES_THREADSPP = <threads> -->
 <!-- mrbayes 6, with/without beagle, nexus file
 
 tasks_per_node_ = ((mpi_processes * threads_per_process)/nodes)/ cpus-per-task 
 when nodes=1
 tasks_per_node_ = ((mpi_processes * threads_per_process)/cpus-per-task  -->
 	 
		<parameter type="String" ishidden="1" >
					<name>mpi_processes_conf1</name>
					<attributes>
						<group>3</group>
						<paramfile>scheduler.conf</paramfile>
						<precond>
                            <language>perl</language>
                             <code> !$more_memory</code>
                        </precond>
						<format>
							<language>perl</language>
							<code>	"jobtype=mpi\\n" .
									"cpus-per-task=1\\n" .
									"threads_per_process=1\\n" .
									"node_exclusive=0\\n" .
									"mpi_processes=" .  $nchains_specified * $nruns_specified  . "\\n"
							</code>
						</format>
					</attributes>
				</parameter>
				
<!--  more memory 		-->	
<!--  more memory option, adjusted for when popeye machine or expanse are used -->
                                <parameter type="String" ishidden="1" > 
                                        <name>mpi_processes_conf1b</name>
                                        <attributes>
                                                <group>3</group>
                                                <paramfile>scheduler.conf</paramfile>
                                                <precond>
                                                        <language>perl</language>
                                                        <code>$more_memory</code>
                                                </precond>
                                                <format> 
                                                        <language>perl</language>
                                                        <code>   "jobtype=mpi\\n" .
                                                                        "cpus-per-task=1\\n" .
                                                                        "mem_expanse=" . (int($nchains_specified * $nruns_specified*8)) . "G\\n" .
                                                                        "threads_per_process=1\\n" .
                                                                        "threads_per_process_expanse=4\\n" .
                                                                        "node_exclusive=0\\n" .
                                                                        "mpi_processes=" .  $nchains_specified * $nruns_specified  . "\\n"
                                                        </code>
                                                </format>
                                        </attributes>
                                </parameter>       
				
<!-- mrbayes 7, with beagle, nexus file -->	
<!-- 
                                MPI                  beagle
              use     More     pro-                  thread
  Version  beagle   memory   cesses  threads  cores   count

   3.2.6      yes       no        n        1      n
            or no
   3.2.6      yes      yes        n        1    4*n
            or no 
            
  cpus-per-task = <threads>
  mem = <floor(cores*248/128)>G
  CIPRES_NP = <MPIprocesses>
  CIPRES_THREADSPP = <threads>-->			
	
<!-- This begins the parameter settings, all are compiled into a big file for delivery in batch mode -->	
		<parameter issimple="1" ismandatory="1" isinput="1" type="Sequence">
			<name>infile</name>
			<attributes>
				<prompt>Input File (must be in Nexus format) (-execute)</prompt>
				<paramfile>paramfile.txt</paramfile>
				<format>
					<language>perl</language>
					<code>"execute infile.nex\\n"</code>
				</format>
				<group>2</group>
				<filenames>infile.nex</filenames>
			</attributes>
		</parameter>
		
<!--    return all results                -->		
		<parameter type="Results">
			<name>ALL_FILES</name>
			<attributes>
				<filenames>*</filenames>
			</attributes>
		</parameter> 

<!--    all runs produce this file                -->
<!-- this file is not produced on globus run tools
		<parameter ishidden="1" type="Results">
			<name>log_file</name>
			<attributes>
				<filenames>log.txt</filenames>
			</attributes>
		</parameter> -->
 	
		
<!-- This section provides visible queries that help configure the interface  -->
	<!-- This section provides visible queries that help configure the interface  -->	
				<parameter issimple="1" ismandatory="1" type="Excl">
					<name>run_version</name>
					<attributes>
						<prompt>I am restarting a checkpoint from</prompt>
						<vlist>
	<!-- 						<value>1</value>
							<label>MrBayes 3.2.1</label>
							<value>2</value>
							<label>MrBayes 3.2.2</label> 
							<value>3</value>
							<label>MrBayes 3.2.3</label>  -->
 							<value>6</value>
							<label>MrBayes 3.2.6</label> 
							<value>7</value>
							<label>MrBayes 3.2.7a</label>    
						</vlist>
						<vdef>
							<value>7</value>
						</vdef>
					</attributes>
				</parameter>
		
<!-- 	commented out because bryans wrapper takes care of this.
			<parameter issimple="1" ismandatory="1" type="Switch">
					<name>set_autoclose_confirm</name>
					<attributes>
						<group>1</group>
						<prompt>I confirm that there is not an "autoclose = no" statement in my MrBayes block</prompt>
						<format>
							<language>perl</language>
							<code>($value)? "":""</code>
						</format>
						<ctrls>
							<ctrl>
								<message>Please acknowledge that there is not a "set autoclose = no" statement in the MrBayes block of your Nexus file</message>
								<language>perl</language>
								<code>!$set_autoclose_confirm</code>
							</ctrl>
						</ctrls>	
						<vdef>
							<value>0</value>
						</vdef>
						<comment>
							<value>Putting an "autoclose = no" statement in your MrBayes block will cause catastrophic failure of the job, and may impact others. Please be careful. 
							</value>
						</comment>
					</attributes>
				</parameter> -->

				<parameter type="Integer" issimple="1" >
					<name>nruns_specified</name>
					<attributes>
						<group>1</group>
						<prompt>My MrBayes Block specifies nruns=</prompt>
						<paramfile>scheduler.conf</paramfile>
						<vdef>
							<value>2</value>
						</vdef>
						<comment>
							<value>The values entered for nruns and nchains influence the number of cpu's that can be used in parallel.  Please enter the value you specified for 
							nruns in the MrBayes block of the Nexus file.  If you didn't specify a value for nruns, please leave this field at its default value of 2.
							</value>
						</comment>
						<ctrls>
<!-- 
Determine 

  nruns, the number of runs,
  nchains, the number of chains,
 
Check that np is a multiple of 2 and <= 16.

If not, ask the user to change parameters to ensure that.

-->
							<ctrl>
								<message>Please enter a value for nruns</message>
								<language>perl</language>
								<code>!$nruns_specified</code>
							</ctrl>
							<ctrl>
								<message>The value of nruns must be greater than 0</message>
								<language>perl</language>
								<code>$nruns_specified &lt; 1</code>
							</ctrl>
						</ctrls>
					</attributes>
				</parameter>

				<parameter type="Integer" issimple="1" >
					<name>nchains_specified</name>
					<attributes>
						<group>1</group>
						<prompt>My MrBayes Block specifies nchains=</prompt>
						<paramfile>scheduler.conf</paramfile>
						<vdef>
							<value>4</value>
						</vdef>
						<comment>
							<value>The value entered for nruns and nchains influences the number of cpu's that can be used in parallel.  Enter the value you specified 
							for nchains in the MrBayes block of the nexus file.  If you didn't specify a value for nchains, please leave this field at its default value of 4.
							</value>
						</comment>
						<ctrls>
							<ctrl>
								<message>Please enter value for nchains</message>
								<language>perl</language>
								<code>!$nchains_specified</code>
							</ctrl>
							<ctrl>
								<message>The value of nchains must be greater than 0</message>
								<language>perl</language>
								<code>$nchains_specified &lt; 1</code>
							</ctrl>
							<ctrl>
								<message>nruns x nchains must be less than or equal to 24.</message>
								<language>perl</language>
								<code>($nruns_specified * $nchains_specified &gt; 24) </code>
							</ctrl>
							<ctrl>
								<message>nruns x nchains must be a multiple of 2</message>
								<language>perl</language>
								<code>((($nruns_specified * $nchains_specified) % 2) != 0)</code>
							</ctrl>
						</ctrls>
					</attributes>
				</parameter>

<!--how many generations -->
<!--	I commented this out for now, will re-add if it causes problems	
				<parameter type="Integer" issimple="1" >
					<name>ngen_specified</name>
					<attributes>
						<group>1</group>
						<prompt>How many generations will your job run?</prompt>
						<ctrls>
							<ctrl>
								<message>Please enter a value for the number of generations specified</message>
								<language>perl</language>
								<code>!defined $ngen_specified</code>
							</ctrl>
						</ctrls>
						<comment>
<value>The number of samples produced is used to warn about possible issues with output file size.</value>
						</comment>
					</attributes>
				</parameter> -->

<!-- Sampling frequency. Gen times sampling frequency is used to warn about .t file size -->
<!--				<parameter issimple="1" ismandatory="1" type="Integer">
					<name>sample_freq</name>
					<attributes>
						<group>1</group>
						<prompt>What is the sample frequency for your data set?</prompt>
						<vdef>
							<value>100</value>
						</vdef>
						<ctrls>
							<ctrl>
								<message>Please enter a value for the sample frequency</message>
								<language>perl</language>
								<code>!defined $sample_freq</code>
							</ctrl>
						</ctrls>
						<warns>
							<warn>
								<message>The number of samplings you requested is greater than 50,000. This may cause your output files to exceed the allowed limit of 500 GB. Please consider editing your input file to request a lower sample frequency.</message>
								<language>perl</language>
								<code>$ngen_specified  &gt; 50000 * $sample_freq </code>		
							</warn>
						</warns>
					</attributes>
				</parameter> -->
				
<!-- this was added by mamiller, so a user can specify they are using a partition -->
			
<!--	not used currently			<parameter issimple="1" ismandatory="1" type="Switch">
					<name>is_partitioned</name>
					<attributes>
						<group>0</group>
						<prompt>My data set is partitioned</prompt>
						<vdef>
							<value>0</value>
						</vdef>
						<comment>
							<value>This option will help the application determine how to run the job</value>
						</comment>
					</attributes>
				</parameter> -->
				
<!-- this sets the run time -->
				<parameter type="Float" issimple="1" ismandatory="1">
					<name>runtime</name> 
					<attributes>
						<group>1</group>
						<paramfile>scheduler.conf</paramfile>
						<prompt>Maximum Hours to Run (click here for help setting this correctly)</prompt>
						<vdef><value>0.5</value></vdef>
						<ctrls>
							<ctrl>
								<message>The maximum hours to run must be less than 168</message>
								<language>perl</language>
								<code>$runtime &gt; 168.0</code>
							</ctrl>
							<ctrl>
								<message>Please enter a positive number for the maximum runtime</message>
								<language>perl</language>
								<code>$runtime &lt; 0</code>
							</ctrl>
							<ctrl>
								<message>Please specify a maximum runtime</message>
								<language>perl</language>
								<code>!defined $runtime </code>
							</ctrl>
						</ctrls>
						<format>
							<language>perl</language>
							<code>"runhours=$value\\n"</code>
						</format>

<!-- xxxxxxxx added by mamiller to provide feedback on number of cpu hrs to be consumed -->
						<warns>
							<warn>
								<message>The job will run on 2 processors as configured. If it runs for the entire configured time, it will consume 2 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 2</code>
							</warn>
							<warn>
								<message>The job will run on 4 processors as configured. If it runs for the entire configured time, it will consume 4 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 4</code>
							</warn>
							<warn>
								<message>The job will run on 6 processors as configured. If it runs for the entire configured time, it will consume 6 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 6</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>$nchains_specified * $nruns_specified == 8 </code>
							</warn>
							<warn>
								<message>The job will run on 10 processors as configured. If it runs for the entire configured time, it will consume 10 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 10 </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>$nchains_specified * $nruns_specified == 12 </code>
							</warn>
							<warn>
								<message>The job will run on 14 processors as configured. If it runs for the entire configured time, it will consume 14 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 14</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>$nchains_specified * $nruns_specified == 16 </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>$nchains_specified * $nruns_specified == 2 &amp;&amp; $more_memory</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>$nchains_specified * $nruns_specified == 4 &amp;&amp; $more_memory</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>$nchains_specified * $nruns_specified == 6 &amp;&amp; $more_memory</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>$nchains_specified * $nruns_specified == 8 &amp;&amp; $more_memory</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>$nchains_specified * $nruns_specified == 10 </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>$nchains_specified * $nruns_specified == 12 &amp;&amp; $more_memory</code>
							</warn>
							<warn>
								<message>The job will run on 52 processors as configured. If it runs for the entire configured time, it will consume 52 x $runtime cpu hours</message>
								<language>perl</language>
								<code>$nchains_specified * $nruns_specified == 14 &amp;&amp; $more_memory</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>$nchains_specified * $nruns_specified == 16 &amp;&amp; $more_memory</code>
							</warn>-->
						</warns>  
						<comment>
<value>Estimate the maximum time your job will need to run. We recommend testing 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>
					</attributes>
				</parameter>
				
<!-- more memory 			-->		
					<parameter type="Switch" issimple="1">
						<name>more_memory</name>
						<attributes>
							<prompt>I need more memory</prompt>
							<group>1</group>
							<comment>
								<value>Choosing this option will increase your memory by 4 fold, and increase the charge by 4 fold as well.</value>
							</comment>
						</attributes>
					</parameter>
				
<!-- changed for  MB 3.7 -->		
					<parameter type="Switch" issimple="1">
						<name>set_beagle_params</name>
						<attributes>
							<prompt>Run BEAGLE</prompt>
							<paramfile>paramfile.txt</paramfile>
							<group>1</group>
							<warns>
								<warn>
									<message>Disabling BEAGLE will slow your run by as much as 20%. You should only do this if a run with BEAGLE fails, or if you believe using BEAGLE gave you unexpected results.</message>
									<language>perl</language>
									<code>!$set_beagle_params</code>
								</warn>
								<warn>
									<message>We have seen examples where MrBayes runs on BEAGLE can produce anomalous topolgies. If you see an odd topology, please try the run without BEAGLE</message>
									<language>perl</language>
									<code>$set_beagle_params</code>
								</warn>
							</warns>
							<comment>
								<value>Beagle should speed up runs by about 10-20%. You should only disble this parameter if you have a problem using Beagle.</value>
							</comment>
						</attributes>
					</parameter>
					
<!-- added for MB 3.2 -->		
					<parameter type="String" ishidden="1">
						<name>set_beagle_params6</name>
						<attributes>
							<paramfile>paramfile.txt</paramfile>
							<precond>
								<language>perl</language>
								<code>$set_beagle_params &amp;&amp; $run_version &gt; "5"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"set usebeagle=yes beagleprecision=double beaglesse=yes beaglescaling=dynamic  beaglethreads=no\\n"</code>
							</format>
						</attributes>
					</parameter>
					
					<parameter type="String" ishidden="1">
						<name>set_beagle_params7</name>
						<attributes>
							<paramfile>paramfile.txt</paramfile>
							<precond>
								<language>perl</language>
								<code>!$set_beagle_params &amp;&amp; $run_version &gt; "5"</code>
							</precond>
							<format>
								<language>perl</language>
								<code>"set usebeagle=no\\n"</code>
							</format>
						</attributes>
					</parameter>
		
<!--To use restart in our current modality, there are two possible strategies. One would be to devise a way to re-deploy in an 
	existing directory, and the other would be to re-upload all of the files into a new job.
	the re-start requires the nexus file, the ckp file, the mcmc, .p, and .t files. The names of the files 
	must remain the same. Below I am creating a method for making this work by the second option. -->
<!--First, upload the ckp file (the Nexus file will be "input")-->
					<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_ckpfile</name> 
						<attributes>
							<group>2</group>
							<prompt>Choose the Checkpoint File (.ckp) </prompt>
							<filenames>infile.nex.ckp</filenames>
<!-- 							<ctrls>
								<ctrl>
									<message>Please select the Checkpoint file to upload</message>
									<language>perl</language>
									<code>!defined $upload_ckpfile</code>
								</ctrl>
							</ctrls>  -->
						</attributes>
					</parameter>

					<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_mcmcfile</name> 
						<attributes>
							<group>2</group>
							<prompt>Choose the mcmc File (.mcmc) </prompt>
							<filenames>infile.nex.mcmc</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the mcmc file to upload</message>
									<language>perl</language>
									<code>!defined $upload_mcmcfile</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
<!--upload the .ss file for stepping stone analysis  (the Nexus file will be "input")-->
					<parameter type="InFile" issimple="1">
						<name>upload_ssfile</name> 
						<attributes>
							<group>2</group>
							<prompt>Choose the Stepping Stone File (.ss) </prompt>
							<filenames>infile.nex.ss</filenames>
						</attributes>
					</parameter>

					<parameter type="Excl" issimple="1" ismandatory="1">
						<name>num_tfiles</name> 
						<attributes>
							<group>2</group>
							<prompt>How many Sumt files do you wish to use?</prompt>
							<vdef><value>1</value></vdef>
							<vlist>
								<value>1</value>
								<label>1</label>
								<value>2</value>
								<label>2</label>
								<value>3</value>
								<label>3</label>
								<value>4</value>
								<label>4</label>
								<value>5</value>
								<label>5</label>
								<value>6</value>
								<label>6</label>
								<value>7</value>
								<label>7</label>
								<value>8</value>
								<label>8</label>
								<value>9</value>
								<label>9</label>
								<value>10</value>
								<label>10</label>
								<value>11</value>
								<label>11</label>
								<value>12</value>
								<label>12</label>
								<value>13</value>
								<label>13</label>
								<value>14</value>
								<label>14</label>
								<value>15</value>
								<label>15</label>
								<value>16</value>
								<label>16</label>
								<value>17</value>
								<label>17</label>
								<value>18</value>
								<label>18</label>
								<value>19</value>
								<label>19</label>
								<value>20</value>
								<label>20</label>
							</vlist>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_sumtfile1</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 1 (.t) </prompt>
							<filenames>infile.nex.run1.t</filenames>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 1</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the first Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile1 &amp;&amp; $num_tfiles &gt; 1</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
										
					<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_sumtfile1b</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 1 (.t) </prompt>
							<filenames>infile.nex.t</filenames>
							<precond>
								<language>perl</language>
								<code>$num_tfiles == 1</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the first Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile1b &amp;&amp; $num_tfiles == 1</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile2</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 2 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 1</code>
							</precond>
							<filenames>infile.nex.run2.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the second Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile2</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<!-- Because there's a precond the backend jobs/Job.java doesn't treat this
					as a required parameter, so it must have a control as well. Not enough to
					just say it's mandatory.
					-->
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile3</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 3 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 2</code>
							</precond>
							<filenames>infile.nex.run3.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the third Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile3</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile4</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 4 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 3</code>
							</precond>
							<filenames>infile.nex.run4.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fourth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile4</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1">
						<name>upload_sumtfile5</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 5 (.t) </prompt>
							<filenames>infile.nex.run5.t</filenames>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 4</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the fifth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile5</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile6</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 6 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 5</code>
							</precond>
							<filenames>infile.nex.run6.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the sixth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile6</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<!-- Because there's a precond the backend jobs/Job.java doesn't treat this
					as a required parameter, so it must have a control as well. Not enough to
					just say it's mandatory.
					-->
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile7</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 7 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 6</code>
							</precond>
							<filenames>infile.nex.run7.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the seventh Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile7</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile8</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 8 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 7</code>
							</precond>
							<filenames>infile.nex.run8.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eigth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile8</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile9</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 9 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 8</code>
							</precond>
							<filenames>infile.nex.run9.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the ninth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile9</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile10</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 10 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 9</code>
							</precond>
							<filenames>infile.nex.run10.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the tenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile10</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<!-- Because there's a precond the backend jobs/Job.java doesn't treat this
					as a required parameter, so it must have a control as well. Not enough to
					just say it's mandatory.
					-->
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile11</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 11 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 10</code>
							</precond>
							<filenames>infile.nex.run11.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eleventh Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile11</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile12</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 12 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 11</code>
							</precond>
							<filenames>infile.nex.run12.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the twelfth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile12</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1">
						<name>upload_sumtfile13</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 13 (.t) </prompt>
							<filenames>infile.nex.run13.t</filenames>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 12</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the thirteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile13</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile14</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 14 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 13</code>
							</precond>
							<filenames>infile.nex.run14.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fourteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile14</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<!-- Because there's a precond the backend jobs/Job.java doesn't treat this
					as a required parameter, so it must have a control as well. Not enough to
					just say it's mandatory.
					-->
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile15</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 15 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 14</code>
							</precond>
							<filenames>infile.nex.run15.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fifteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile15</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile16</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 16 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 15</code>
							</precond>
							<filenames>infile.nex.run16.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the sixteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile16</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1">
						<name>upload_sumtfile17</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 17 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 16</code>
							</precond>
							<filenames>infile.nex.run17.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the seventeenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile17</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile18</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 18 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 17</code>
							</precond>
							<filenames>infile.nex.run18.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eighteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile18</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<!-- Because there's a precond the backend jobs/Job.java doesn't treat this
					as a required parameter, so it must have a control as well. Not enough to
					just say it's mandatory.
					-->
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile19</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 19 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 18</code>
							</precond>
							<filenames>infile.nex.run19.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the nineteenth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile19</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumtfile20</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sumt File 20 (.t) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_tfiles &gt; 19</code>
							</precond>
							<filenames>infile.nex.run20.t</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the twentieth Sumt file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumtfile20</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="Excl" issimple="1" ismandatory="1">
						<name>num_pfiles</name> 
						<attributes>
							<group>2</group>
							<prompt>How many Sump files do you wish to use?</prompt>
							<vdef><value>1</value></vdef>
							<vlist>
								<value>1</value>
								<label>1</label>
								<value>2</value>
								<label>2</label>
								<value>3</value>
								<label>3</label>
								<value>4</value>
								<label>4</label>
								<value>5</value>
								<label>5</label>
								<value>6</value>
								<label>6</label>
								<value>7</value>
								<label>7</label>
								<value>8</value>
								<label>8</label>
								<value>9</value>
								<label>9</label>
								<value>10</value>
								<label>10</label>
								<value>11</value>
								<label>11</label>
								<value>12</value>
								<label>12</label>
								<value>13</value>
								<label>13</label>
								<value>14</value>
								<label>14</label>
								<value>15</value>
								<label>15</label>
								<value>16</value>
								<label>16</label>
								<value>17</value>
								<label>17</label>
								<value>18</value>
								<label>18</label>
								<value>19</value>
								<label>19</label>
								<value>20</value>
								<label>20</label>
							</vlist>
						</attributes>
					</parameter>				
		
					<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_sumpfile1</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 1 (.p) </prompt>
							<filenames>infile.nex.run1.p</filenames>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 1</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the first Sump file for the run</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile1 &amp;&amp; $num_pfiles &gt; 1 </code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
				<parameter type="InFile" issimple="1" ismandatory="1">
						<name>upload_sumpfile1b</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 1 (.p) </prompt>
							<filenames>infile.nex.p</filenames>
							<precond>
								<language>perl</language>
								<code>$num_pfiles == 1</code>
							</precond>
							<ctrls>
								<ctrl>
									<message>Please select the Sump file for a single run (nruns=1)</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile1b &amp;&amp; $num_pfiles == 1</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile2</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 2 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 1</code>
							</precond>
							<filenames>infile.nex.run2.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the second Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile2</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile3</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 3 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 2</code>
							</precond>
							<filenames>infile.nex.run3.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the third Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile3</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile4</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 4 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 3</code>
							</precond>
							<filenames>infile.nex.run4.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fourth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile4</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
							
					<parameter type="InFile" issimple="1">
						<name>upload_sumpfile5</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 5 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 4</code>
							</precond>
							<filenames>infile.nex.run5.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fifth Sump file for the run</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile5</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile6</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 6 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 5</code>
							</precond>
							<filenames>infile.nex.run6.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the sixth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile6</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile7</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 7 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 6</code>
							</precond>
							<filenames>infile.nex.run7.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the seventh Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile7</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile8</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 8 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 7</code>
							</precond>
							<filenames>infile.nex.run8.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eigth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile8</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
					
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile9</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 9 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 8</code>
							</precond>
							<filenames>infile.nex.run9.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the ninth Sump file for the run</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile9</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile10</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 10 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 9</code>
							</precond>
							<filenames>infile.nex.run9.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the tenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile10</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile11</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 11 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 10</code>
							</precond>
							<filenames>infile.nex.run11.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eleventh Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile11</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile12</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 12 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 11</code>
							</precond>
							<filenames>infile.nex.run12.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the twelfth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile12</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
							
					<parameter type="InFile" issimple="1">
						<name>upload_sumpfile13</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 13 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 12</code>
							</precond>
							<filenames>infile.nex.run13.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the thirteenth Sump file for the run</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile13</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile14</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 14 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 13</code>
							</precond>
							<filenames>infile.nex.run14.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fourteenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile14</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile15</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 15 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 14</code>
							</precond>
							<filenames>infile.nex.run15.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the fifteenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile15</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile16</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 16 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 15</code>
							</precond>
							<filenames>infile.nex.run16.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the sixteenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile16</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>	
					
					<parameter type="InFile" issimple="1">
						<name>upload_sumpfile17</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 17 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 16</code>
							</precond>
							<filenames>infile.nex.run17.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the seventeenth Sump file for the run</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile17</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile18</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 18 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 17</code>
							</precond>
							<filenames>infile.nex.run18.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the eighteenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile18</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile19</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 19 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 18</code>
							</precond>
							<filenames>infile.nex.run19.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the nineteenth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile19</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>
		
					<parameter type="InFile" issimple="1" >
						<name>upload_sumpfile20</name> 
						<attributes>
							<group>2</group>
							<prompt>Select Sump File 20 (.p) </prompt>
							<precond>
								<language>perl</language>
								<code>$num_pfiles &gt; 19</code>
							</precond>
							<filenames>infile.nex.run20.p</filenames>
							<ctrls>
								<ctrl>
									<message>Please select the twentieth Sump file to upload</message>
									<language>perl</language>
									<code>!defined $upload_sumpfile20</code>
								</ctrl>
							</ctrls>
						</attributes>
					</parameter>				
					
	</parameters>
</pise>



