changeset 0:3f908e7fff4f draft

Uploaded first version to toolshed.
author pjbriggs
date Thu, 11 Dec 2014 09:23:24 -0500
parents
children 771ebe02636f
files README.rst pal_finder_filter.pl pal_finder_wrapper.sh pal_finder_wrapper.xml test-data/454_in.fa test-data/454_microsat_types.out test-data/454_microsats.out test-data/illuminaPE_filtered_microsats.out test-data/illuminaPE_microsat_types.out test-data/illuminaPE_microsats.out test-data/illuminaPE_r1.fq test-data/illuminaPE_r2.fq tool_dependencies.xml
diffstat 13 files changed, 1149 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.rst	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,106 @@
+pal_finder: find microsatellite repeats and design PCR primers
+==============================================================
+
+Galaxy tool wrapper for the pal_finder microsatellite and PCR primer design script.
+
+Automated installation
+======================
+
+Installation via the Galaxy Tool Shed will take of installing the tool wrapper and
+the pal_finder and primer3_core programs, and setting the appropriate environment
+variables.
+
+Manual Installation
+===================
+
+There are two files to install:
+
+- ``pal_finder_wrapper.xml`` (the Galaxy tool definition)
+- ``pal_finder_wrapper.sh`` (the shell script wrapper)
+
+The suggested location is in a ``tools/pal_finder_wrapper/`` folder. You will then
+need to modify the ``tools_conf.xml`` file to tell Galaxy to offer the tool
+by adding the line:
+
+    <tool file="pal_finder/pal_finder_wrapper.xml" />
+
+You will also need to install the pal_finder and primer3 packages:
+
+- ``pal_finder`` can be obtained from http://sourceforge.net/projects/palfinder/
+- ``Primer3`` version 2.0.0-alpha (see the pal_finder installation notes) can be
+  obtained from http://primer3.sourceforge.net/releases.php
+
+The tool wrapper must be able to locate the pal_finder Perl script, the example
+pal_finder config.txt and simple.ref data files, and the primer3_core program - the
+locations of these are taken from the following enviroment variables which you will
+need to set manually:
+
+- ``PALFINDER_SCRIPT_DIR``: location of the pal_finder Perl script (defaults to /usr/bin)
+- ``PALFINDER_DATA_DIR``: location of the pal_finder data files (specifically config.txt
+  and simple.ref; defaults to /usr/share/pal_finder_v0.02.04)
+- ``PRIMER3_CORE_EXE``: name of the primer3_core program, which should include the
+  full path if it's not on the Galaxy user's PATH (defaults to primer3_core)
+
+If you want to run the functional tests, copy the sample test files under
+sample test files under Galaxy's ``test-data/`` directory. Then:
+
+    ./run_tests.sh -id microsat_pal_finder
+
+You will need to have set the environment variables above.
+
+History
+=======
+
+========== ======================================================================
+Version    Changes
+---------- ----------------------------------------------------------------------
+0.02.04.1  - Add option to run Graeme Fox's ``pal_finder_filter.pl`` script to
+             filter and sort the pal_finder output (Illumina input data only).
+             Update version number to reflect the pal_finder version.
+0.0.6      - Allow input data to be either Illumina paired-end data in fastq
+             format or single-end 454 data in fasta format.
+0.0.5      - Allow custom mispriming library to be specified; added
+             ``tool_dependencies.xml`` file to install pal_finder and primer3
+             programs  and configure environment for Galaxy automatically.
+0.0.4      - Added more custom options for primer3_core for selecting primers on
+             size, GC and melting temperature criteria.
+0.0.3      - Check that pal_finder script & config file, and primer3_core
+             executable are all available; move PRIMER_MIN_TM parameter to new
+             "custom" section for primer3 settings
+0.0.2      - Updated pal_finder_wrapper.sh to allow locations of pal_finder Perl
+             script, data files and primer_core3 program to be set via environment
+             variables
+0.0.1      - Initial version
+========== ======================================================================
+
+
+Developers
+==========
+
+This tool is developed on the following GitHub repository:
+https://github.com/fls-bioinformatics-core/galaxy-tools/tree/master/pal_finder
+
+For making the "Galaxy Tool Shed" http://toolshed.g2.bx.psu.edu/ tarball I use
+the ``package_pal_finder.sh`` script.
+
+
+Licence (MIT)
+=============
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pal_finder_filter.pl	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,112 @@
+############################################################
+# Graeme Fox  -  25/09/2014 - graeme.fox@manchester.ac.uk
+#
+# Program to filter output from pal_finder/primer3 workflow
+#
+# Filters output based on "Primers found (1=y,0=n)" and 
+# "occurrences of forward/reverse amplifiable primer in reads".
+# Filters out any non-perfect microsatellites.
+# Ranks microsatellites by motif size (largest first)
+#
+# Usage:
+# Give it the file that ends with:
+# "(microsatellites_with_read_IDs_and_primer_pairs)].txt"
+#
+# with the following syntax: 
+# perl pal_finder_filter.pl /path/to/input/file
+#
+# File will be created called "pal_finder_filter_output.txt"
+# in the current directory
+############################################################
+
+#!/usr/bin/perl -w
+use strict;
+
+my @lines;                                   
+my @output;                                  
+my $outfile = 'pal_finder_filter_output.txt';     
+
+# Open the file for reading
+my $filename = $ARGV[0];   
+open (my $file, '<', $filename);  
+
+# Grab the headers and store them 
+my $header;
+while (my $line = <$file>)
+{
+  if ($line =~ m/^readPair/) {
+#	push (@output, $line)             
+	$header = $line;	
+	} else {
+
+# Send everything else to array for sorting
+	push (@lines, $line);                  
+	}
+}
+close $file;
+chomp (@lines);
+
+############################################################
+# Filter the file on the "Primers found (1=y,0=n)" column
+# ie. Drop all the lines which do not have primer sequences
+############################################################
+my @temporary1;
+my @temporary2;
+foreach (@lines) { 
+@temporary1 = split(/\t/, $_);
+	if ($temporary1[5] == 1) {
+	push (@temporary2, $_);
+		}
+}
+
+############################################################
+# Filter any lines which do not have "1" in the "Occurances 
+# of Reverse/Forward Primer in Reads" field
+############################################################
+my @temporary3;
+my @temporary4;
+foreach (@temporary2) { 
+@temporary3 = split(/\t/, $_);
+	if ($temporary3[16] == 1 && $temporary3[15] == 1) {
+	push (@temporary4, $_);
+		}
+}
+
+############################################################
+# Filter any non-perfect repeats
+############################################################
+my @temporary5;
+my @temporary6;
+my $count;
+foreach (@temporary4) { 
+	@temporary5 = split(/\t/, $_);
+	$count = ($temporary5[1] =~ tr/\(//);
+		if ($count == 1) {
+		push (@temporary6, $_);
+		}
+}
+############################################################
+# Get size of repeat motif. Order by size (largest first)
+############################################################
+my @temporary7;
+my @temporary8;
+my $motif;
+my $count2 = 2;
+while ($count2 < 10) {
+	foreach (@temporary6) {
+		@temporary7 = split(/\t/, $_);  
+		#get size of motif:
+		$motif = () = ($temporary7[1] =~ /[A-Z]/gi );  
+		if ($motif == $count2) {
+			unshift (@output, join( "\t", @temporary7),"\n");	
+		}
+	}
+$count2++;
+}
+############################################################
+# Open and populate the output file
+############################################################
+unshift (@output, $header);
+open (FILE, "> $outfile") || die "Problem opening $outfile\n";
+print FILE @output;
+close(FILE);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pal_finder_wrapper.sh	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,334 @@
+#!/bin/sh
+#
+# pal_finder_wrapper.sh: run pal_finder perl script as a Galaxy tool
+#
+# Usage: run_palfinder.sh FASTQ_R1 FASTQ_R2 MICROSAT_SUMMARY PAL_SUMMARY FILTERED_MICROSATS [OPTIONS]
+#        run_palfinder.sh --454    FASTA    MICROSAT_SUMMARY PAL_SUMMARY [OPTIONS]
+#
+# Options:
+#
+# --primer-prefix PREFIX: prefix added to the beginning of all primer names (prPrefixName)
+# --2merMinReps N: miniumum number of 2-mer repeat units to detect (0=ignore units of this size)
+# --3merMinReps N
+# --4merMinReps N
+# --5merMinReps N
+# --6merMinReps N
+# --primer-mispriming-library FASTA: specify a Fasta file with sequences to avoid amplifying
+# --primer-opt-size VALUE: optimum primer length
+# --primer-min-size VALUE: minimum acceptable primer length
+# --primer-max-size VALUE: maximum acceptable primer length
+# --primer-min-gc VALUE: minimum allowable percentage of Gs and Cs in any primer
+# --primer-max-gc VALUE: maximum allowable percentage of Gs and Cs
+# --primer-gc-clamp VALUE: number of consecutive Gs and Cs at 3' end of both left and right primer
+# --primer-max-end-gc VALUE: max number of Gs or Cs in last five 3' bases of left or right primer
+# --primer-min-tm VALUE: minimum acceptable melting temperature (Celsius) for a primer oligo
+# --primer-max-tm VALUE: maximum acceptable melting temperature (Celsius)
+# --primer-opt-tm VALUE: optimum melting temperature (Celsius)
+# --primer-pair-max-diff-tm VALUE: max difference between melting temps of left & right primers
+# --output_config_file FNAME: write a copy of the config.txt file to FNAME
+# --filter_microsats FNAME: run Graeme Fox's Perl script to filter and sort the
+#                           microsatellites from pal_finder and write to FNAME
+#
+# pal_finder is available from http://sourceforge.net/projects/palfinder/
+#
+# primer3 is available from http://primer3.sourceforge.net/releases.php
+# (nb needs version 2.0.0-alpha)
+#
+# Explicitly set the locations of the pal_finder script, data files and the primer3
+# executable by setting the following variables in the environment:
+#
+#  * PALFINDER_SCRIPT_DIR: location of the pal_finder Perl script (defaults to
+#    /usr/bin)
+#  * PALFINDER_DATA_DIR: location of the pal_finder data files (specifically
+#    config.txt and simple.ref; defaults to /usr/share/pal_finder_v0.02.04)
+#  * PRIMER3_CORE_EXE: name of the primer3_core program, which should include the
+#    full path if it's not on the Galaxy user's PATH (defaults to primer3_core)
+#
+echo $*
+#
+# Initialise locations of scripts, data and executables
+#
+# Set these in the environment to overide at execution time
+: ${PALFINDER_SCRIPT_DIR:=/usr/bin}
+: ${PALFINDER_DATA_DIR:=/usr/share/pal_finder_v0.02.04}
+: ${PRIMER3_CORE_EXE:=primer3_core}
+#
+# Filter script is in the same directory as this script
+PALFINDER_FILTER_PL=$(dirname $0)/pal_finder_filter.pl
+if [ ! -f $PALFINDER_FILTER_PL ] ; then
+    echo No pal_finder_filter.pl script >&2
+    exit 1
+fi
+#
+# Check that we have all the components
+function have_program() {
+    local program=$1
+    local got_program=$(which $program 2>&1 | grep "no $(basename $program) in")
+    if [ -z "$got_program" ] ; then
+	echo yes
+    else
+	echo no
+    fi	
+}
+if [ "$(have_program $PRIMER3_CORE_EXE)" == "no" ] ; then
+    echo "ERROR primer3_core missing: ${PRIMER3_CORE_EXE} not found" >&2
+    exit 1
+fi
+if [ ! -f "${PALFINDER_DATA_DIR}/config.txt" ] ; then
+    echo "ERROR pal_finder config.txt not found in ${PALFINDER_DATA_DIR}" >&2
+    exit 1
+fi
+if [ ! -f "${PALFINDER_SCRIPT_DIR}/pal_finder_v0.02.04.pl" ] ; then
+    echo "ERROR pal_finder_v0.02.04.pl not found in ${PALFINDER_SCRIPT_DIR}" >&2
+    exit 1
+fi
+#
+# Initialise parameters used in the config.txt file
+PRIMER_PREFIX="test"
+MIN_2_MER_REPS=6
+MIN_3_MER_REPS=0
+MIN_4_MER_REPS=0
+MIN_5_MER_REPS=0
+MIN_6_MER_REPS=0
+PRIMER_MISPRIMING_LIBRARY=$PALFINDER_DATA_DIR/simple.ref
+PRIMER_OPT_SIZE=
+PRIMER_MAX_SIZE=
+PRIMER_MIN_SIZE=
+PRIMER_MAX_GC=
+PRIMER_MIN_GC=
+PRIMER_GC_CLAMP=
+PRIMER_MAX_END_GC=
+PRIMER_OPT_TM=
+PRIMER_MAX_TM=
+PRIMER_MIN_TM=
+PRIMER_PAIR_MAX_DIFF_TM=
+OUTPUT_CONFIG_FILE=
+FILTERED_MICROSATS=
+#
+# Collect command line arguments
+if [ $# -lt 2 ] ; then
+  echo "Usage: $0 FASTQ_R1 FASTQ_R2 MICROSAT_SUMMARY PAL_SUMMARY [OPTIONS]"
+  echo "       $0 --454    FASTA    MICROSAT_SUMMARY PAL_SUMMARY [OPTIONS]"
+  exit
+fi
+if [ "$1" == "--454" ] ; then
+    PLATFORM="454"
+    FNA=$2
+else
+    PLATFORM="Illumina"
+    FASTQ_R1=$1
+    FASTQ_R2=$2
+fi
+MICROSAT_SUMMARY=$3
+PAL_SUMMARY=$4
+shift; shift; shift; shift
+#
+# Collect command line options
+while [ ! -z "$1" ] ; do
+    case "$1" in
+	--primer-prefix)
+	    shift
+	    PRIMER_PREFIX=$1
+	    ;;
+	--2merMinReps)
+	    shift
+	    MIN_2_MER_REPS=$1
+	    ;;
+	--3merMinReps)
+	    shift
+	    MIN_3_MER_REPS=$1
+	    ;;
+	--4merMinReps)
+	    shift
+	    MIN_4_MER_REPS=$1
+	    ;;
+	--5merMinReps)
+	    shift
+	    MIN_5_MER_REPS=$1
+	    ;;
+	--6merMinReps)
+	    shift
+	    MIN_6_MER_REPS=$1
+	    ;;
+	--primer-mispriming-library)
+	    shift
+	    PRIMER_MISPRIMING_LIBRARY=$1
+	    ;;
+	--primer-opt-size)
+	    shift
+	    PRIMER_OPT_SIZE=$1
+	    ;;
+	--primer-max-size)
+	    shift
+	    PRIMER_MAX_SIZE=$1
+	    ;;
+	--primer-min-size)
+	    shift
+	    PRIMER_MIN_SIZE=$1
+	    ;;
+	--primer-max-gc)
+	    shift
+	    PRIMER_MAX_GC=$1
+	    ;;
+	--primer-min-gc)
+	    shift
+	    PRIMER_MIN_GC=$1
+	    ;;
+	--primer-gc-clamp)
+	    shift
+	    PRIMER_GC_CLAMP=$1
+	    ;;
+	--primer-max-end-gc)
+	    shift
+	    PRIMER_MAX_END_GC=$1
+	    ;;
+	--primer-opt-tm)
+	    shift
+	    PRIMER_OPT_TM=$1
+	    ;;
+	--primer-max-tm)
+	    shift
+	    PRIMER_MAX_TM=$1
+	    ;;
+	--primer-min-tm)
+	    shift
+	    PRIMER_MIN_TM=$1
+	    ;;
+	--primer-pair-max-diff-tm)
+	    shift
+	    PRIMER_PAIR_MAX_DIFF_TM=$1
+	    ;;
+	--output_config_file)
+	    shift
+	    OUTPUT_CONFIG_FILE=$1
+	    ;;
+	--filter_microsats)
+	    shift
+	    FILTERED_MICROSATS=$1
+	    ;;
+	*)
+	    echo Unknown option: $1 >&2
+	    exit 1
+	    ;;
+    esac
+    shift
+done
+#
+# Check that primer3_core is available
+got_primer3=`which $PRIMER3_CORE_EXE 2>&1 | grep -v "no primer3_core in"`
+if [ -z "$got_primer3" ] ; then
+  echo ERROR primer3_core not found >&2
+  exit 1
+fi
+#
+# Set up the working dir
+if [ "$PLATFORM" == "Illumina" ] ; then
+    # Paired end Illumina data as input
+    if [ $FASTQ_R1 == $FASTQ_R2 ] ; then
+	echo ERROR R1 and R2 fastqs are the same file >&2
+	exit 1
+    fi
+    ln -s $FASTQ_R1
+    ln -s $FASTQ_R2
+    fastq_r1=$(basename $FASTQ_R1)
+    fastq_r2=$(basename $FASTQ_R2)
+else
+    # 454 data as input
+    ln -s $FNA
+    fna=$(basename $FNA)
+fi
+ln -s $PRIMER_MISPRIMING_LIBRARY
+PRIMER_MISPRIMING_LIBRARY=$(basename $PRIMER_MISPRIMING_LIBRARY)
+mkdir Output
+#
+# Copy in the default config.txt file
+/bin/cp $PALFINDER_DATA_DIR/config.txt .
+#
+# Update the config.txt file with new values
+function set_config_value() {
+    local key=$1
+    local value=$2
+    local config_txt=$3
+    if [ -z "$value" ] ; then
+	echo "No value for $key, left as default"
+    else
+	echo Setting "$key" to "$value"
+	sed -i 's,^'"$key"' .*,'"$key"'  '"$value"',' $config_txt
+    fi
+}
+# Input files
+set_config_value platform $PLATFORM config.txt
+if [ "$PLATFORM" == "Illumina" ] ; then
+    set_config_value inputFormat fastq config.txt
+    set_config_value pairedEnd 1 config.txt
+    set_config_value inputReadFile $fastq_r1 config.txt
+    set_config_value pairedReadFile $fastq_r2 config.txt
+else
+    set_config_value inputFormat fasta config.txt
+    set_config_value pairedEnd 0 config.txt
+    set_config_value input454reads $fna config.txt
+fi
+# Output files
+set_config_value MicrosatSumOut Output/microsat_summary.txt config.txt
+set_config_value PALsummaryOut Output/PAL_summary.txt config.txt
+# Microsat info
+set_config_value 2merMinReps $MIN_2_MER_REPS config.txt
+set_config_value 3merMinReps $MIN_3_MER_REPS config.txt
+set_config_value 4merMinReps $MIN_4_MER_REPS config.txt
+set_config_value 5merMinReps $MIN_5_MER_REPS config.txt
+set_config_value 6merMinReps $MIN_6_MER_REPS config.txt
+# Primer3 settings
+set_config_value primer3input Output/pr3in.txt config.txt
+set_config_value primer3output Output/pr3out.txt config.txt
+set_config_value primer3executable $PRIMER3_CORE_EXE config.txt
+set_config_value prNamePrefix ${PRIMER_PREFIX}_ config.txt
+set_config_value PRIMER_MISPRIMING_LIBRARY "$PRIMER_MISPRIMING_LIBRARY" config.txt
+set_config_value PRIMER_OPT_SIZE "$PRIMER_OPT_SIZE" config.txt
+set_config_value PRIMER_MIN_SIZE "$PRIMER_MIN_SIZE" config.txt
+set_config_value PRIMER_MAX_SIZE "$PRIMER_MAX_SIZE" config.txt
+set_config_value PRIMER_MIN_GC "$PRIMER_MIN_GC" config.txt
+set_config_value PRIMER_MAX_GC "$PRIMER_MAX_GC" config.txt
+set_config_value PRIMER_GC_CLAMP "$PRIMER_GC_CLAMP" config.txt
+set_config_value PRIMER_MAX_END_GC "$PRIMER_MAX_END_GC" config.txt
+set_config_value PRIMER_MIN_TM "$PRIMER_MIN_TM" config.txt
+set_config_value PRIMER_MAX_TM "$PRIMER_MAX_TM" config.txt
+set_config_value PRIMER_OPT_TM "$PRIMER_OPT_TM" config.txt
+set_config_value PRIMER_PAIR_MAX_DIFF_TM "$PRIMER_PAIR_MAX_DIFF_TM" config.txt
+#
+# Run pal_finder
+perl $PALFINDER_SCRIPT_DIR/pal_finder_v0.02.04.pl config.txt 2>&1 | tee pal_finder.log
+#
+# Check that log ends with "Done!!" message
+if [ -z "$(tail -n 1 pal_finder.log | grep Done!!)" ] ; then
+    echo ERROR pal_finder failed to complete successfully >&2
+    exit 1
+fi
+#
+# Run the pal_finder_filter.pl script from Graeme Fox
+if [ ! -z "$FILTERED_MICROSATS" ] ; then
+    perl $PALFINDER_FILTER_PL Output/PAL_summary.txt 2>&1
+    if [ $? -ne 0 ] ; then
+	echo ERROR pal_finder_filter.pl exited with non-zero status >&2
+	exit 1
+    elif [ ! -f pal_finder_filter_output.txt ] ; then
+	echo ERROR no output from pal_finder_filter.pl >&2
+	exit 1
+    fi
+fi
+#
+# Clean up
+if [ -f Output/microsat_summary.txt ] ; then
+    /bin/mv Output/microsat_summary.txt $MICROSAT_SUMMARY
+fi
+if [ -f Output/PAL_summary.txt ] ; then
+    /bin/mv Output/PAL_summary.txt $PAL_SUMMARY
+fi
+if [ ! -z "$FILTERED_MICROSATS" ] && [ -f pal_finder_filter_output.txt ] ; then
+    echo Moving pal_finder_filter_output.txt to $FILTERED_MICROSATS
+    /bin/mv pal_finder_filter_output.txt $FILTERED_MICROSATS
+fi
+if [ ! -z "$OUTPUT_CONFIG_FILE" ] && [ -f config.txt ] ; then
+    /bin/mv config.txt $OUTPUT_CONFIG_FILE
+fi
+##
+#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pal_finder_wrapper.xml	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,225 @@
+<tool id="microsat_pal_finder" name="pal_finder" version="0.02.04.1">
+  <description>Find microsatellite repeat elements sequencing reads and design PCR primers to amplify them</description>
+  <command interpreter="bash">pal_finder_wrapper.sh
+  #if str( $platform.platform_type ) == "illumina"
+    $platform.input_fastq_r1 $platform.input_fastq_r2
+  #else
+    --454 $platform.input_fasta
+  #end if
+  $output_microsat_summary $output_pal_summary
+  #if str( $platform.platform_type ) == "illumina" and $platform.filter_microsats
+    --filter_microsats $output_filtered_microsats
+  #end if
+  #if $keep_config_file
+    --output_config_file $output_config_file
+  #end if
+  --primer-prefix $primer_prefix
+  --2merMinReps $min_2mer_repeats
+  --3merMinReps $min_3mer_repeats
+  --4merMinReps $min_4mer_repeats
+  --5merMinReps $min_5mer_repeats
+  --6merMinReps $min_6mer_repeats
+  #if str( $primer.primer_options ) == "custom"
+  --primer-opt-size $primer.primer_opt_size
+  --primer-min-size $primer.primer_min_size
+  --primer-max-size $primer.primer_max_size
+  --primer-min-gc $primer.primer_min_gc
+  --primer-max-gc $primer.primer_max_gc
+  --primer-gc-clamp $primer.primer_gc_clamp
+  --primer-max-end-gc $primer.primer_max_end_gc
+  --primer-min-tm $primer.primer_min_tm
+  --primer-max-tm $primer.primer_max_tm
+  --primer-opt-tm $primer.primer_opt_tm
+  --primer-pair-max-diff-tm $primer.primer_pair_max_diff_tm
+  #end if
+  #if str( $mispriming.mispriming_options ) == "custom"
+  --primer-mispriming-library $mispriming.mispriming_library
+  #end if
+  </command>
+  <requirements>
+    <requirement type="package" version="0.02.04">pal_finder</requirement>
+    <requirement type="package" version="2.0.0">primer3_core</requirement>
+  </requirements>
+  <inputs>
+    <param name="primer_prefix" type="text" value="test" size="25" label="Primer prefix" help="This prefix will be added to the beginning of all primer names" />
+    <conditional name="platform">
+      <param name="platform_type" type="select" label="Sequencing platform used to generate data" help="Currently pal_finder only handles Illumina paired-end reads and 454 single-end reads" >
+	<option value="illumina" selected="true">Illumina</option>
+	<option value="454">454</option>
+      </param>
+      <when value="illumina">
+	<param name="input_fastq_r1" type="data" format="fastqsanger" label="Illumina fastq file (read 1)" />
+	<param name="input_fastq_r2" type="data" format="fastqsanger" label="Illumina fastq file (read 2)" />
+	<param name="filter_microsats" type="boolean" truevalue="True" falsevalue="False"
+	       label="Filter and sort the microsatellites" checked="True"
+	       help="Filter pal_finder results to only include lines with primer sequences and remove non-perfect repeats" />
+      </when>
+      <when value="454">
+	<param name="input_fasta" type="data" format="fasta" label="454 fasta file with raw reads" />
+      </when>
+    </conditional>
+    <param name="min_2mer_repeats" type="integer" value="6" label="Minimum number of 2-mer repeat units to detect" help="Set to zero to ignore repeats of this n-mer unit" />
+    <param name="min_3mer_repeats" type="integer" value="0" label="Minimum number of 3-mer repeat units" help="Set to zero to ignore repeats of this n-mer unit" />
+    <param name="min_4mer_repeats" type="integer" value="0" label="Minimum number of 4-mer repeat units" help="Set to zero to ignore repeats of this n-mer unit" />
+    <param name="min_5mer_repeats" type="integer" value="0" label="Minimum number of 5-mer repeat units" help="Set to zero to ignore repeats of this n-mer unit" />
+    <param name="min_6mer_repeats" type="integer" value="0" label="Minimum number of 6-mer repeat units" help="Set to zero to ignore repeats of this n-mer unit" />
+    <conditional name="mispriming">
+      <param name="mispriming_options" type="select" label="Mispriming library to use" help="Specify file of nucleotide sequences to avoid amplifying (PRIMER_MISPRIMING_LIBRARY)">
+	<option value="default">Default from pal_finder</option>
+	<option value="custom">Custom sequences from history</option>
+      </param>
+      <when value="default">
+      </when>
+      <when value="custom">
+	<param name="mispriming_library" type="data" format="fasta" label="Select mispriming library from history" help="Fasta file containing sequences to avoid amplifying" />
+      </when>
+    </conditional>
+    <conditional name="primer">
+      <param name="primer_options" type="select" label="Primer settings to use" help="Advanced users can customise the settings for primer3 for more control">
+	<option value="default">Defaults for pal_finder</option>
+	<option value="custom">Custom</option>
+      </param>
+      <when value="custom">
+	<param name="primer_opt_size" type="integer" value="20"
+	       label="Optimum length (in bases) of a primer (PRIMER_OPT_SIZE)"
+	       help="Primer3 will attempt to pick primers close to this length" />
+	<param name="primer_min_size" type="integer" value="18"
+	       label="Minimum acceptable length (in bases) of a primer (PRIMER_MIN_SIZE)"
+	       help="Must be greater than 0 and less than or equal to PRIMER_MAX_SIZE" />
+	<param name="primer_max_size" type="integer" value="30"
+	       label="Maximum acceptable length (in bases) of a primer (PRIMER_MAX_SIZE)"
+	       help="Currently this parameter cannot be larger than 35. This limit is governed by maximum oligo size for which primer3's melting-temperature is valid" />
+	<param name="primer_min_gc" type="float" value="30.0"
+	       label="Minimum allowable percentage of Gs and Cs in any primer (PRIMER_MIN_GC)" />
+	<param name="primer_max_gc" type="float" value="80.0"
+	       label="Maximum allowable percentage of Gs and Cs in any primer (PRIMER_MAX_GC)" />
+	<param name="primer_gc_clamp" type="integer" value="2"
+	       label="Specify number of consecutive Gs and Cs at 3' end of both the left and right primer (PRIMER_GC_CLAMP)" />
+	<param name="primer_max_end_gc" type="integer" value="5"
+	       label="Maximum number of Gs or Cs allowed in last five 3' bases of a left or right primer (PRIMER_MAX_END_GC)" />
+	<param name="primer_min_tm" type="float" value="58.0"
+	       label="Minimum acceptable melting temperature for a primer oligo (PRIMER_MIN_TM)"
+	       help="Temperature should be in degrees Celsius" />
+	<param name="primer_max_tm" type="float" value="65.0"
+	       label="Maximum acceptable melting temperature for a primer oligo (PRIMER_MAX_TM)"
+	       help="Temperature should be in degrees Celsius" />
+	<param name="primer_opt_tm" type="float" value="62.0"
+	       label="Optimum melting temperature for a primer (PRIMER_OPT_TM)"
+	       help="Temperature should be in degrees Celsius" />
+	<param name="primer_pair_max_diff_tm" type="float" value="2.0"
+	       label="Maximum acceptable difference between melting temperatures of left and right primers (PRIMER_PAIR_MAX_DIFF_TM)"
+	       help="Temperature should be in degrees Celsius" />
+      </when>
+    </conditional>
+    <param name="keep_config_file" type="boolean" truevalue="True" falsevalue="False"
+	   label="Output the config file to the history"
+	   help="Can be used to run pal_finder outside of Galaxy" />
+  </inputs>
+  <outputs>
+    <data name="output_microsat_summary" format="txt" label="${tool.name} on ${on_string} for ${primer_prefix} (microsatellite types)" />
+    <data name="output_pal_summary" format="tabular" label="${tool.name} on ${on_string} for ${primer_prefix} (microsatellites with read IDs and primer pairs)" />
+    <data name="output_filtered_microsats" format="tabular" label="${tool.name} on ${on_string} for ${primer_prefix} (filtered and sorted microsatellites)">
+      <filter>platform['platform_type'] == 'illumina' and platform['filter_microsats']</filter>
+    </data>
+    <data name="output_config_file" format="txt" label="${tool.name} on ${on_string} for ${primer_prefix} (config file)">
+      <filter>keep_config_file is True</filter>
+    </data>
+  </outputs>
+  <tests>
+    <test>
+      <!-- Test with Illumina input -->
+      <param name="platform_type" value="illumina" />
+      <param name="input_fastq_r1" value="illuminaPE_r1.fq" ftype="fastqsanger" />
+      <param name="input_fastq_r2" value="illuminaPE_r2.fq" ftype="fastqsanger" />
+      <!-- 
+      **NB** outputs have to be specified in order that they appear in the
+      tool (which is the order they will be written to the history) - the
+      test framework seems to use the order and ignores the "name" attribute
+      -->
+      <output name="output_microsat_summary" file="illuminaPE_microsat_types.out" />
+      <output name="output_pal_summary" file="illuminaPE_microsats.out" />
+      <output name="output_filtered_microsats" file="illuminaPE_filtered_microsats.out" />
+    </test>
+    <test>
+      <!-- Test with 454 input -->
+      <param name="platform_type" value="454" />
+      <param name="input_fasta" value="454_in.fa" ftype="fasta" />
+      <!-- 
+      **NB** outputs have to be specified in order that they appear in the
+      tool (which is the order they will be written to the history) - the
+      test framework seems to use the order and ignores the "name" attribute
+      -->
+      <output name="output_microsat_summary" file="454_microsat_types.out" />
+      <output name="output_pal_summary" file="454_microsats.out" />
+    </test>
+  </tests>
+  <help>
+.. class:: infomark
+
+**What it does**
+
+This tool runs the pal_finder program, which finds microsatellite repeat elements
+directly from raw 454 or Illumina paired-end sequencing reads. It then designs PCR
+primers to amplify these repeat loci (Potentially Amplifiable Loci: PAL).
+
+Optionally for Illumina data, the output from pal_finder can also be filtered to
+remove any motifs without primer sequences, and with non-perfect microsatellites.
+The microsatellites are then ranked by motif size (largest to smallest).
+
+Pal_finder runs the primer3_core program; information on the settings used in
+primer3_core can be found in the Primer3 manual at
+http://primer3.sourceforge.net/primer3_manual.htm
+
+-------------
+
+.. class:: infomark
+
+**Credits**
+
+This Galaxy tool has been developed by Peter Briggs within the Bioinformatics Core
+Facility at the University of Manchester. It runs the pal_finder package which can be
+obtained from http://sourceforge.net/projects/palfinder/:
+
+ * PLoS One. 2012; 7(2): e30953 "Rapid Microsatellite Identification from Illumina Paired-End
+   Genomic Sequencing in Two Birds and a Snake" Todd A. Castoe, Alexander W. Poole, A. P.
+   Jason de Koning, Kenneth L. Jones, Diana F. Tomback, Sara J. Oyler-McCance, Jennifer A.
+   Fike, Stacey L. Lance, Jeffrey W. Streicher, Eric N. Smith, and David D. Pollock
+
+The paper is available at http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3279355/
+
+This tool is compatible with pal_finder version 0.02.04, which in turn runs the
+primer3_core program (version 2.0.0-alpha is required, available from
+http://primer3.sourceforge.net/releases.php):
+
+ * Steve Rozen and Helen J. Skaletsky (2000) "Primer3 on the WWW for general users and for
+   biologist programmers". In: Krawetz S, Misener S (eds) Bioinformatics Methods and
+   Protocols: Methods in Molecular Biology. Humana Press, Totowa, NJ, pp 365-386
+
+The paper is available at
+http://purl.com/STEVEROZEN/papers/rozen-and-skaletsky-2000-primer3.pdf
+
+The filtering and sorting of the pal_finder output for Illumina data is performed
+using a Perl script written by Graeme Fox at the University of Manchester, and which
+is included with this tool.
+
+Please kindly acknowledge both this Galaxy tool, the pal_finder and primer3 packages, and
+the utility script if you use it in your work.
+  </help>
+  <citations>
+    <!--
+    See https://wiki.galaxyproject.org/Admin/Tools/ToolConfigSyntax#A.3Ccitations.3E_tag_set
+    Can be either DOI or Bibtex
+    Use http://www.bioinformatics.org/texmed/ to convert PubMed to Bibtex
+    -->
+    <citation type="doi">10.1371/journal.pone.0030953</citation>
+    <citation type="bibtex">@Article{pmid10547847,
+    Author="Rozen, S.  and Skaletsky, H. ",
+    Title="{{P}rimer3 on the {W}{W}{W} for general users and for biologist programmers}",
+    Journal="Methods Mol. Biol.",
+    Year="2000",
+    Volume="132",
+    Pages="365--386",
+    URL="{http://purl.com/STEVEROZEN/papers/rozen-and-skaletsky-2000-primer3.pdf}"
+    }</citation>
+  </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/454_in.fa	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,200 @@
+>FW1N29Q04EHWSH rank=0000058 x=1727.0 y=431.5 length=236
+AATAGTATAATGCACAGCAGGCAGTTAACATGCATGTGAATTGTAACACATCTGTTATAC
+ATTACTATTAAACTTTCTGACAGTTTCTCTTTAGGTGCTTGCCCTGCCAGGCTCCGTTGT
+GTAGGGTTAAAGAACAGTCGTTTACCACCTCGCAACCTGGTAAGGATCCATAATATTCCC
+GTAATGTGGTATCAGACAGTTTGCATTGGTGCTTAGTACCTTTTAAATTTAAATTT
+>FW1N29Q04ECSPS rank=0000063 x=1668.0 y=3534.0 length=259
+TTTATGAATTTATCTATGTAACATTTGGCTTGGATGCTTCCTTAATTTAGCAAAGTGTCA
+TTGGCGCACTCCATCTCTTCCAACTAGTTTAATATTTTTATCATTTGACATCTGTTCAGT
+TAGGAGCAGGTCAGTTCTAAGCAACTAAGCATATGTTGACAAACTTAGCAGAAATGTTTG
+AGGCTTAGTCATTACTTACACAAGAGAGAGCAACAACTTACATTGATGAAATTGATCTTT
+GCTTATTTTAACCAGTTAT
+>FW1N29Q04ECFP3 rank=0000073 x=1664.5 y=3081.0 length=55
+TTTGGCCCTGTATACCAATATATTGCGCTTTGATGATGCCTCCTCCCCACCCTTT
+>FW1N29Q04EIN9F rank=0000081 x=1735.0 y=3265.0 length=51
+ATATGAGTATATAGGCCAAGGGTGGGAGGAGGCATCATCAAGACACCATAT
+>FW1N29Q04EE3VT rank=0000085 x=1695.5 y=727.0 length=223
+GTTGCCTCATATTCTCTACGAGACATTAGTGTGGTGGTAATAGGATGCAGAATAACACTT
+ATAATTCATAATTGTAATTCTTGAGTTAGAAGTGAGTTAGATAGAAAGACTCATAGTAAT
+TAGGGATCTCACATGAGAAGGACACTTAGCAAAGGTAACAGATAGGACAGATGGCGGAGA
+ATGCTCCAAATGACTCTGGTAAAATGACTAACAGTCAAGATAG
+>FW1N29Q04ECD63 rank=0000097 x=1664.0 y=1101.0 length=199
+TTCATGTCCTTCTCTATCACTCAGCCCTCCACTGTTCTCTCCCTCTCCGACCTTTCACCT
+TGGCTTCTCTACTTTGTCAAATCACCAGGAGAGATTACCTGAAAGACAAACAGGAAGGAT
+TTCTCAACTATTCAAAGCAATAGAAGTGGATTCTTAGTTGCAAACCACAGCATGTTCCTG
+TTGACCCAGATCCTGTTTC
+>FW1N29Q04EIIT4 rank=0000106 x=1734.5 y=330.0 length=354
+TCTCAAGTCAAGCTGTCAATTTGCCATCTCAGCCAACTCCATCAGCTTCACCATCCATTC
+TTCCACTATAGGTAATGTCTTATCTTTCCACCTCTGTGCATATAAAGCCTTGCTGCTGTT
+ATATATAAACAAAGTTCCATAGGTTTTCCAACTGTTTATTCATCAACCGAAAGGAAGTCT
+CTGGTTTTGATTTAATATTAAATCTTGAAAATCTTCTGTATACAGATATGTATCTTGTTC
+CAGATTATTTTTGTCTTTTATAAGTCCACCAGAGATGTAGAGCAGCCTCCTCCAGCCAGC
+TACTGGTTGGCTATGTTATGTGGATACAAGGGCTGGATCTAAAAGTCNGCATCT
+>FW1N29Q04EW9OS rank=0000113 x=1902.0 y=186.5 length=85
+GGTTAGTATTGAGACACGCTGTTGGCTTGGCCAGTGCTCCGTGCTAGTAATTAATAAGAA
+TGCTTACATAGGTCATCCTGTTGAA
+>FW1N29Q04ED6UB rank=0000114 x=1684.5 y=2961.0 length=344
+TTGACATACACCTTAGGCCCTTCATTCATAATTAACGCTACATTTCACTTCCCTGCATAT
+ATTTATCAATTCTACAAGATTAGATCATCTTCCTATTAGACCCTTCTCTTTCTTCTTCCT
+TTCACAAACAATAAGAGATCTACAACATGTGTATCTTGTTTAACAGATAACCAATCTGTA
+ATGATGAAACATTAAGCCTCTGCGCATAATAACTTATCTTTCCCATAGCTGCAAACAATA
+ACGTAGATTAAAAGCCACATTTTGCTTTCATTAAAAGTACTTCTCAACTTTCATTGTCAG
+GCAAACGTAAATGTATCTTTATTGTGGCTTCATTATGCTTTGTG
+>FW1N29Q04EJ8OD rank=0000117 x=1753.0 y=2651.0 length=157
+CATCCATGTTGCTAGTTGAGAGAACTTAATCATACTAATAAATTCATGTGTATTTGTATA
+TGAGTTTCAAATCCATTAGATTACTTTCCATTACATCATGGAGGTGGGAAATCTGTGGCC
+CTGCAAATTCTGCAGAATTACACCGGCCCACCCACTC
+>FW1N29Q04EBJG5 rank=0000123 x=1654.0 y=2247.0 length=322
+TGGCAATGGCAAGTTACTTTCATTTCAGAGCAAGATAAAGTGGCTGCTGCAATTATTACC
+AAAGCTTCATAAATTACTATGCAACCTTTCAACTTCTCTAGAACTCTTCAACAAGTGAAG
+AGGTAAGAGAAAGAAGCAGCTTATATCCATGCCATGTTATTTACAGTTAGCATGGTTTAT
+TCTTCTAAATAGTACAGTATTTATGCTAATTTAGCATCAGTGCTACATCACTGTGTTTCT
+CAACATTGTCCTCTTTGACAGCCAAATCATTTGCTTCCAGCTTGACTATGGCACATCTCA
+AATCACAAAGCTTTCAAACTGC
+>FW1N29Q04EKD0V rank=0000126 x=1755.0 y=1389.0 length=299
+TGGCTCAGATCACCGCAGATGGAGACTGCAGCCATGAATTAAGACTCTTGCTCCTTGGAG
+GAAGCTATGGCAACCTAGATAGCATATTAAGACAGAGATGTCACCTTGCCGACAAGATCC
+GCATAGTCAAGCTATGGTTTCCTAGTAGTAATGTATGGCTGTGAGAGCTGGACCATAAGA
+AGGCTGAGCGCCGAGATTGATGCCTTTGAACTGTGGTGCTGGAGAGACTCTTAAGAGTCC
+CTGGACTGCTAGGAGATCAAACCAGTCAATCTTAAGGATCAACCCTGATTGCTCATTGG
+>FW1N29Q04EKXU7 rank=0000132 x=1761.5 y=2529.0 length=150
+TTACAACACCACTGGCAGAGGAATGGATCTAGGCAAATATGACATTGTGAGTAAGGCTCT
+CAGGAGACTCTCTCCTCTTTATTCATGTTTGTCCTTTGTTTGTCTTGCAAAGCCGACCAG
+CAAAAATAGTACCATCTAAAGCAAAGAAAT
+>FW1N29Q04EOC22 rank=0000134 x=1800.0 y=2476.5 length=236
+TTAATATTACCTAGAATAAATGATTTCATCCTTTTTATTATTTCTATATATGAAGTGGAC
+TTTATTTTATTGGTTGGTTAATCTTCAGAGAAGAAATAGGAGACAGGATTTTTAAAATTA
+GTAACTATTTCCATGAACCAAGGAATCTACTAAATGTTATGGAGGAAACATGGCCATCAT
+TGATCTGCAGGTCCTCAGAATCATGTAGTAAATTTATGCAATATCATTAACTTGGC
+>FW1N29Q04EF0UZ rank=0000135 x=1705.0 y=2505.0 length=273
+TTCTATATCGCTTAACGAGGAGTCAAGCTAACTTGGAGGAGATTTATCTTTATGAGGGTA
+GATGATGCCATTTATGAGGAAATGCAAGATCTTGTTGCAAGGAGCCAGTGTTGGTGATGA
+TTCAACTCTTCCTCCTCCACAATCTTCTGAAATGACCTCCCTTCACCCTAGTTTGACCAC
+TCTTCCTCCTAAACCAGCCTTCAAGCGGAAAGTCATTCTTGTTGAGGCAAAAAGGTTCTG
+GGGGCATTTGAAGGGCGCAGGAGTGGGAGCAAA
+>FW1N29Q04EH316 rank=0000142 x=1729.5 y=1660.0 length=60
+TTTGGCCCTGTATACCAATATATTGCGCTTTGATGATGCTCTCCCACCCTTTGGCCCTGT
+
+>FW1N29Q04EJHIK rank=0000147 x=1745.0 y=218.0 length=370
+TTTAAATTATTTGTATAATGATGGGAATATCAATTTCCTAGATTTGGTCTTCCATGAAAT
+CAGTATTTCCATGTCAACACCACCCAAAGAAATGAAATAAGTTGTGCAAGTGAGGTAGTC
+TATGTAGAAATATAGAGGGTGACCTTGACAGAGAGAGGGAAGATCTGTTACCAAGGCAAC
+AAACAGATAAACATGGCTTAAAACCCATACAAAGAGAGTGTTTTACAAACAGGCATCCCC
+TAAGAAGATAAAAAGCACATTCAGACTTGCAAGATTTTGCAAAATATAGCCCATTCTAAA
+TAGTTAGGCCTATGTGGCATCTGTTCCTTGGTCCAGGGCTACCCTTGTAGGGCTGACAAT
+CAGTCTTTCT
+>FW1N29Q04D6RZR rank=0000148 x=1600.5 y=1189.0 length=344
+TGACTGATTACTATATTAACTATAATGTGGTTGGTTGGTTCAGTATGGGAATTCAGATTC
+AATCAAACACCACACTTCCTGTGTTAGCATTATGTTTGACCCACCGTGTTTAAACAACTA
+CATTATGGATTAACCATGACTTTCAAAGTTCCAGGCACCTTTCTAATCTGGAACTACTGA
+ACCTGGAGCTTCTGCAAATAATTAATGCCTGTCAACTGACTTACACTTATTCCCTTCTGT
+AACATTGCTGCATCTGGCAACAACGTGAGAATGTACAGCAGCCATGAAGGTCTTCTGTGT
+TTCATCTGACAGAAGAATTTAGCTGGAGTTCAAGTACAATTAAA
+>FW1N29Q04EFU7E rank=0000151 x=1703.5 y=3368.0 length=65
+ATGATGCTGTCATCTAGGTGTTGTGGTTGGATGTCATGGTTGATGACAGTTGCATGTTAC
+GTACC
+>FW1N29Q04D78RB rank=0000158 x=1616.5 y=4037.0 length=274
+TTAACCTGGTGATACAAATACCTGGATTTGCTGCTGGACAGCTGGAAAGAACTGCAACTG
+TTCACTGGCCTATGAAAGGAGTTATTCAGATGCAATATATTTAACAAGGTGCTGATAAAC
+TCAAACCTCACGCAAGAAGGAACTGATATGGCCATTGAGCAGCAGAAAAGTGGGCTGGGG
+GATACATAAAATCTAAGTAGAAACTATGTTTGCCGCCTACCCAATCCGCTTTGTTCTAAA
+ATGGGAAGCCTCAGAATTCACCGCTGTTCTAATT
+>FW1N29Q04EUK6W rank=0000162 x=1871.5 y=2102.0 length=378
+TTTGGTCTGGTAGTGTCTGGTTCACATCCTTGTCTTAACAATGACCTAGCAAGGGAAGAG
+GAGGACTAGATCCATCATGAGAAGTGTCTGGATTCTCATAGAGGTGCCTTTAGTTAATTA
+GGTGCCATAGAGTCATGTTTGATTTCTGCTGACTGAATGAACAATACCTGCCATCCTGAC
+CTGATTCCAGTAATAATCTCTGCATTTCCCAAGCACATTCCAGTTAATTTATTTGATCCC
+ATTCATCTGTGATCTAAGGGTTGACCAAGGCATTAGTCACCACTAGAAATGAGAGGGTGA
+CAGTGACCTTGGATTGGATCATGTCTATGTGGACTCCATGCATGTGGATCCTGGTGGCCC
+CTGATTCTGAGAAGCTCT
+>FW1N29Q04EOQ8A rank=0000163 x=1805.5 y=328.0 length=252
+GAATCTCAGGTATTAAGGAAATCATTGCAAAGTGATCAGGAGCTTCAAGGGCATTTAAGT
+TATGGAATCATACACCATAAGGAGTAGATGATCTCTGGTTACCATAGGGACCTAATGGCT
+AATACAGCAGCTCATCATCCCTACAGCACCTTTGACAGAGTCTTCCAGCAGGGACTACAA
+AGAAGTGTGTTTCTTTGCACTGAAGAGTGATTTTCACCAGAAGGAACACCTGACAGAGAT
+GCAGAGCTAAAT
+>FW1N29Q04EOZ5Y rank=0000173 x=1807.0 y=3716.0 length=55
+GGTTGAGAGAGTACATGAATGTTCAGTACAAGGCCAGTTTCTTGGGTTTAATCCC
+>FW1N29Q04EGGLO rank=0000175 x=1710.0 y=2426.0 length=208
+GCAATTAAGGCCTTGGCTACTGAGCTTCAGATGAAGTCAATTGAGAGGAGAAGAACAGCA
+CAGGGAATGAATCAGTAGACATAGAATAGATCGATCTAGCTAGGACTTTTGTTGAGTTGG
+AACAGGAGGGATATTGGAAGACAGATTTATAATAATTTAATAATGCTCAGAATCTGCTGC
+TGTGTCTGGGTGGCCATGGTACAGATAT
+>FW1N29Q04EKZW7 rank=0000178 x=1762.0 y=1097.0 length=403
+GTTTAGTTGATTTGAACTGTGAGAATAATTTAATTCGACCAGAGTATAGAAACATAATTA
+AACAACATTCCATTCATTCAATTTAATTTCATGGGAAAGAAGAGAGAGTGAGGCCACACT
+CCCAATTACTTGTGGTCAGCAATCACTTTCTTTATTAGCATCAGTCACTTATTGGTTTCT
+GACTGTTGAGGGCAGCAGGCGACTTTGCATCACTTCAGAATCCTCTGAGCCTCTTTCTTC
+TCATGCTAACATCTTCTGGGTTTGCCAACTAATCTAATGTTCTGGCTCAATTGTGGTACA
+TCCAAAATCACAAATAGACACATACGCGCACATACATACACAAAATATATTTATGTTTTC
+AGAACAGAAGTGAAGCTTTGCAAAGCTGTGGATAGTCTGCTGT
+>FW1N29Q04EP35X rank=0000180 x=1820.5 y=2307.0 length=298
+TTTATTTACCCATCTTATTTGTGCAGCTGTAAGAGATTGATAAGGGGAAAAAGCAAAAGT
+ATATGAATTTGTATTTGTATTTGTAATCAGAGGGATGTGTGTTTGTGTGTGTGTGTATAA
+GGATCCATCCCTGGATTATGGGTTCCACTTCACTGGACATGTTTACCAGAAGTGAATATA
+GCTATTCTAGAGGGACATTTCTGGAACACAAAAAGTAAATTAGATGAATCACATTGCATG
+TATATTTAAGCAATTTAAATGACACACACACACACACACACACACACACACACACACA
+>FW1N29Q04EQDJ2 rank=0000185 x=1823.0 y=2192.0 length=65
+TTCCTGATAGGCCAGGATTCTGATTAACCTCTGCCCACTACAGGATGCTTACATGAGCTC
+CTGGT
+>FW1N29Q04EK7RS rank=0000186 x=1764.5 y=3078.5 length=112
+AATGATTACGAGATCATCTCACCAACACCTTCTCTGACTCATGGCTAAGATCAGCTGGAA
+GGCCTTGCTTGTGACCCATTGGGAGGACTCATCTTAATCTGGGTTGAGAGCA
+>FW1N29Q04EO2M2 rank=0000190 x=1808.0 y=2828.5 length=262
+TGGTCCTTCAGGTCTTCCAACAGTGCACCCATTGCCTCCGTAACTGAGTCCATCCACTTT
+GCTGCTGGTCATCCTCTTCTCTTCCTTCCATATTTCCCAGCAATAGAGCCTTCTTCAGGC
+AGTGAGGTCTTCACATAATGTGTCCAAAGTAGGATAATTTGAGCCTGGTCATTTATGCCT
+CAAATTCTTTACAGGTTAGATATCACAGCAATGACTAGGTTCTTGGACAGTAGTTAACAG
+TTAAGATGTTAATGTTTATTAA
+>FW1N29Q04EXPGO rank=0000196 x=1907.0 y=150.0 length=120
+GACAGAACACACTTACAACTAGCCATATATAAGCAATGATCAGGCACCTGCCAATGTCTG
+AACTAAGGTAAGGGCTACTCATCAGTCACCTTCCAGACACAGATCAAGAAATCCAGAAAG
+
+>FW1N29Q04EBESH rank=0000203 x=1653.5 y=271.0 length=142
+AGTCATGCAAGCCTAATCATGTAACAACATTTAAATTAAGCAAATACACTGATACCTTAT
+AGTTTGACTAAAGACTTTGGCTTTCCATAAACAACTCCAGTAAACTGATTTTGCTTGCTG
+TAGTATTCCTAGCTTAACTATT
+>FW1N29Q04D8NWF rank=0000214 x=1621.0 y=3181.0 length=365
+TTAGGCTTAGTACATTGTATGAACTCAGATATTGTGATATATAAACCAGGGCTGGTGGCT
+CAACATGCTGGGTAAATCCAGCCAATTATGATAACTAGAATAGTATAGCAGTTAGTGTTA
+AACTTGTATAAGGGAACTCAAGTCCAAGTCCTCACTCATTCATGGAACGCCTTGTGTGAT
+TTTGGGCTAGTCACTCTTCTCAGCCCAACCTATCTCACAATCATGATTTAGAAATAATGG
+CTTAGCATGACAAATGGATCCAATCATATTCAGTATTTATTTGTTTGGGGGATGTGATGT
+AGAAGCATGGCTCAGTGATGCTTCTACCAAATGATACTCTCTCAAGTGTCAAACCTTCAG
+TACAG
+>FW1N29Q04ETFO7 rank=0000224 x=1858.0 y=1577.0 length=148
+TTGGCCTTTCTTGATAGATAATTTCTAGTAATTTCACACATACCCGTGCTGGACCATCTC
+CAACACCATCTGTCCTGGGCTGACATAATTTCATCAGTTGCCCATAAACATGGAGAGTAA
+TGGGTTTCAGGCTGTGGGGTAGGGAGGC
+>FW1N29Q04ECPCP rank=0000226 x=1667.5 y=3271.0 length=376
+TTAGTGATGACATCACAACTGGTTGGTGGTGCTAACAACTGCTATTGAATGTGTCTTCTC
+GATATATCACAGAGCCTAGCTTGTAATGCAATAACAACTAGCTGAATACATGATTTAATT
+GTTTGTTGCCCAGCTGTACTAATAAGCAAGCTTGATGTTAGGGATCACCCAAGGTCATTT
+CCTTAATGCTGCTAACCTGCTGGAGCTGTCATTTATTACTAGATTTGTTGAATTATGACC
+AGTGTGTTCTAAAGAGCCAGATGTTTAGTCTAAAGAATAACACATGATCTAGTAGGGATT
+ACAAGAGCTCCAGTTTCCCTCTGGAATTTGTTGGTCATGGCTTGTGATGATCAAAGTTGA
+ATATGCCTGAAATAAT
+>FW1N29Q04ECVNR rank=0000229 x=1669.5 y=3253.0 length=386
+TTCTCTGCAAGTTGGTGGCACACATGCAGGATGGCTAAGATTATCATCTGAAATGAAAGC
+CACAAGGTGAACTTCCAACAAATACCATGAAAAATGACTGACCTGCAAAAGGTAGAGGTA
+ATAAGAACTCTGGGAAAGTTGAGCAAGTACTTAAAGAATCAGTGTTAAAATGTCATGCCA
+CTGATGTGTGTTAATTTCATATGGTAATTTATATGTATGGATGAGATAATTCTTGCACTG
+TAAATAGAATAAGGGAGAATAGAGAAAACTGCAGCCAGGTGAGTAATATTTCTTTTAGCC
+TGTGCAGGTGTTATTTGTTGAAAAGGTGTTGTTCTACTGTCAGGCTCAGTCCAAGAACAG
+TTCATCCAAATTCATTTCATTTATTG
+>FW1N29Q04EFJFR rank=0000232 x=1700.0 y=405.5 length=379
+TGGCAATGGCAAGTTACTTCATTTCAGAGCAAGATAAAGTGGCTGCTGCAATTATTACCA
+AAGCTTCATAAATTACTATGCAACCTTTCAACTTCTCTAGAACTCTTCAACAAGTGAAGA
+GGTAAGAGAAAGAAGCAGCTTATATCCATGCCATGTTATTTACAGTTAGCATGGTTTATT
+CTTCTAAATAGTACAGTATTTATGCTAATTTAGCATCAGTGCTACATCACTGTGTTTCTC
+AACATTGTCCTCTTTTGACAGCCAAATCATTTGCTTCCAGCTTGACTATGGCACATCTCA
+AATCACAAAGCTTTCAAACTGCAATTTGCACACTGGAGCTTGGAGGCAAACTTATTTTGT
+TCACGGAAACTCTCACTCC
+>FW1N29Q04EGERL rank=0000233 x=1710.5 y=47.0 length=274
+TTGAATCTGATCAGGAAGGTTCAACTGGTACAGAATGTAGAAGCCAGGTTACTGAGTGAG
+TCACCCAGTCACGTTCATGTTACTTCTTCATTGAAGCAACTGCATTGGATGTCAATTACC
+AAGCCAGGTTCAGAGTTTGGTTAGGATATATAAAGCCTTAAACATCTGGAAACCAGGATG
+CCCATCAAATTGCCTTTCTGTTATCAACCTGATTACTCACTGAGATCATCAAGTGAGGTG
+CTGCAATGTGTAATGAATGCTGGTGGTTGCTTGT
+>FW1N29Q04EILAM rank=0000235 x=1734.0 y=3516.5 length=127
+TTTGGACATATGTTCAAGCCAAGGTTAGTACATTTCTCCTTCAGACCTCCCAGATGCACT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/454_microsat_types.out	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,13 @@
+totalBases:	8639
+readsWithPrimers:	0
+totalReads:	38
+compound:	0
+broken:	1
+readsWithMicrosat:	1
+
+
+Microsat Type	monomer length	reads with loci	total loci	loci amplified	total loci bases	loci bases amplified
+TC	2	0	0	0	0	0
+AC	2	1	2	0	48	0
+CG	2	0	0	0	0	0
+AT	2	0	0	0	0	0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/454_microsats.out	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,2 @@
+SequenceID	Repeat Motif Size	Repeat Motif	Number Tandem Repeats	Primer Designed (1=y,0=n)	F Primer Name	Forward Primer	R Primer Name	Reverse Primer	Total Repeats In Amplicon	Occurances of Forward Primer in Reads	Occurances of Reverse Primer in Reads	Occurances of Amplifiable Primer Pair in Reads	Occurances of Amplifiable Primer Pair in PALs
+FW1N29Q04EP35X	2	AC	18	0									
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illuminaPE_filtered_microsats.out	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,4 @@
+readPairID	Motifs(bases)	Bases in all Motifs	Possible Extended	Possible Spanning	Primers found (1=y,0=n)	F Primer Name	Forward Primer	R Primer Name	Reverse Primer	Amplicon Motifs	Number motif bases in amplicon	Primers on sep reads	Extend with primers	Spand with primers	Occurances of Forward Primer in Reads	Occurances of Reverse Primer in Reads	Occurances of Amplifiable Primer Pair in Reads	Occurances of Amplifiable Primer Pair in PALs
+ILLUMINA-545855_0049_FC61RLR:2:1:8157:1636#0	AC(12) 	12			1	test_5	AAGTACAGTGGGGAGGCTGG	test_6	TTTTCTACACAGCTCAAGTAGCCC	AC(12) 	12	1			1	1	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:10979:1695#0	TC(14) 	14			1	test_7	TTCTCCCACTATATTTTGCATTGG	test_8	TCCAGACTGAAGCTACCCTGG	TC(14) 	14	1			1	1	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:1978:1220#0	AC(12) 	12			1	test_3	GCAGTAAACAAAGGCAAAGGG	test_4	CCTGGGCAGAGGTGTTCC	AC(12) 	12	1			1	1	1	1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illuminaPE_microsat_types.out	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,14 @@
+totalBases:	2320
+allSpan:	0
+totalReads:	20	(2 x 10)
+compound:	2
+broken:	2
+allExtended:	0
+readsWithMicrosat:	13
+
+
+Microsat Type	monomer length	total loci	loci w/ primers	reads with loci	total bases	extended	extended w/ primers	spanning	spanning w/ primers
+TC	2	2	1	2	26	0	0	0	0
+AC	2	7	4	7	116	0	0	0	0
+CG	2	0	0	0	0	0	0	0	0
+AT	2	8	0	6	106	0	0	0	0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illuminaPE_microsats.out	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,11 @@
+readPairID	Motifs(bases)	Bases in all Motifs	Possible Extended	Possible Spanning	Primers found (1=y,0=n)	F Primer Name	Forward Primer	R Primer Name	Reverse Primer	Amplicon Motifs	Number motif bases in amplicon	Primers on sep reads	Extend with primers	Spand with primers	Occurances of Forward Primer in Reads	Occurances of Reverse Primer in Reads	Occurances of Amplifiable Primer Pair in Reads	Occurances of Amplifiable Primer Pair in PALs
+ILLUMINA-545855_0049_FC61RLR:2:1:8044:1926#0	AT(12) 	12			0													
+ILLUMINA-545855_0049_FC61RLR:2:1:1978:1220#0	AC(12) 	12			1	test_3	GCAGTAAACAAAGGCAAAGGG	test_4	CCTGGGCAGAGGTGTTCC	AC(12) 	12	1			1	1	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:5879:1238#0	AT(12) 	12			0													
+ILLUMINA-545855_0049_FC61RLR:2:1:8899:1514#0	AC(12) AC(12) 	24			1	test_2	TCTTTATCTAAACACATCCTGAAATACC	test_1	AAACGCAATTATTTTGAGATGTCC	AC(12) AC(12) 	24	1			1	2	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:10979:1695#0	TC(14) 	14			1	test_7	TTCTCCCACTATATTTTGCATTGG	test_8	TCCAGACTGAAGCTACCCTGG	TC(14) 	14	1			1	1	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:5626:1554#0	AT(14) AC(16) AC(16) AT(12) 	58			0													
+ILLUMINA-545855_0049_FC61RLR:2:1:8157:1636#0	AC(12) 	12			1	test_5	AAGTACAGTGGGGAGGCTGG	test_6	TTTTCTACACAGCTCAAGTAGCCC	AC(12) 	12	1			1	1	1	1
+ILLUMINA-545855_0049_FC61RLR:2:1:19063:1614#0	AT(14) AT(14) AT(14) AT(14) 	56			0													
+ILLUMINA-545855_0049_FC61RLR:2:1:17449:1584#0	AC(36) 	36			0													
+ILLUMINA-545855_0049_FC61RLR:2:1:6204:1090#0	TC(12) 	12			0													
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illuminaPE_r1.fq	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,40 @@
+@ILLUMINA-545855_0049_FC61RLR:2:1:10979:1695#0/1
+TACTGTTTAGAATAGACTGTTCTCCCACTATATTTTGCATTGGTGCATACTCAGCTTTAGTAATAAGTGTGATTCTGGTAGAGAGAGAGAGAGATACCAACCTCTTCTTCCCACTA
++
+hhhhhghhhfgghhcfghhhhhhghhhhhhhhhhhhgfhhhhgfhhhhggghggfghhggdgghfgfcgcgggffgdf`gfcfdgdfdfafbdcaccfddecddbfcdfcdcdcdW
+@ILLUMINA-545855_0049_FC61RLR:2:1:17449:1584#0/1
+TCGTAGCATGTGTATGCTTTGGGGTTTCATGCTGTTGATTCATAACTGCTGCTGGCTGTAGACTGAACCTTCTGGGTAGGAGGAATATGCTTAGACAAGCACACCAGTCAGCCCGA
++
+hhhhhhhhhhghhhhhfhhhhehhhhhhfhhhhfahgahhhghhhhghhgggdgeggedegdedhbgdffcacaccM\^^[`_^^^aaaacaaa^_bddd_aaa_a[VQ^Z_BBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:19063:1614#0/1
+TATATATATATATACACATATATATATATATTTTTTACATTATTTCACTTCGCCCAAACTAGAGAGTCTAACAAAGTACAACCCAGCATATTAAAGTTCATCTCAGTTTTGTTCTG
++
+hhhhhhhfhdhhhhfhhhgghghfhfhhhhhghhhhgfadhhhhghegghgehhhhegehghhgee]dddacfccZacWccaaccafgfggggded\cabcdddadadfgf`eg_d
+@ILLUMINA-545855_0049_FC61RLR:2:1:1978:1220#0/1
+TCATAAGAATGAGCAGTAAACAAAGGCAAAGGGGAGATAACACACACACACAAAATAAAAAAACATCAATTTCTAATACACGCCTTTATTATAAAGAAATAAATCACTGAAAAACA
++
+cccccacaccaV^aaaTaa]P^[^WW]ccc^SGURUVZ]^Q[PUS\Z]W[Occc]]`U`^]ZZU]JU]][]SLWSWSWWWE_c__cc[cZc]]^[XccZUccb[ccZ[WW_BBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:5626:1554#0/1
+TCTAATATTATATATATCTGTGTGTGTATATATATATATACACACACACACACACATTGCTATTGTTAAATTAACCACCTTTTTATTTATAATACTATTATAACACTTATCTGTAT
++
+R[\[[Zaddbb`d`ada_aY_VUVXQPX[Y]\a\__^^`XZa____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:5879:1238#0/1
+TCCCCACCCTGTCATGGTTCTATGTTTTTGTTTTTGTTTTTGTTTTTATGGTTTCCGTATTCCACATTAAAACCTTATGTAACGTACGGGCCAATAAATAGTTACTCGCCATATCC
++
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:6204:1090#0/1
+TGCTTTGGTTCTAAGAGAAAAACAATTATTATAAATGTTTATAATTGATGATAAGCATTTTTGTACAAAGCCAAGACCATTCTGAATGAAGCACCCAAAAAGCCCGGAGGCAACAA
++
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:8044:1926#0/1
+TAGATTTTTTTTTTTATATATATATAAATATAGATGTACATATATTTATATAAATATAAAAGCACAGCATCCTCCTGTCTCTCCTCCTGATTTATTATGGTTAAAGCTTGTGACAG
++
+gggggggggggggggegefegdeeceXQ\_\]ZZZ\gggfggggggggggggggggfgggeggggegecggggggggggggggggfggffggggggggggdggggfdgggded]da
+@ILLUMINA-545855_0049_FC61RLR:2:1:8157:1636#0/1
+TACTAGTCTAATAATTGCAGGCAGCTGAACTAGATAGGTCCTAAAGTACAGTGGGGAGGCTGGTGTGTGTGTGTGCATGGGATTGTCAGCCTTACCATCAGTCCTGATTTGTAGGT
++
+gggggggggggggegggggfggggggfggggfgggggg]ggffffeeggggfgfggeggggffafcb`b]bacaccbefdc_acca_aaaadbbc_[bb]b\^X\\_bdba\aaaW
+@ILLUMINA-545855_0049_FC61RLR:2:1:8899:1514#0/1
+TCTTTATCTAAACACATCCTGAAATACCATCTGTTACACACACACACAGCAGTGGAAGTATAAAAAAAAATCTGGACATCTCAAAATAATTGCGTTTCTGAAGTGTTACATTTTTC
++
+hhhhhghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfhhhhhfhhhhhhhhhhhhhhggfhhhhghgggghgggggggfgggggfegdgdggggggghh]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illuminaPE_r2.fq	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,40 @@
+@ILLUMINA-545855_0049_FC61RLR:2:1:10979:1695#0/2
+TACTGTTTAGAAAGCCTGTTCCAGAACTTGATCACTGTCACAGAAAATCTTTCTTACTATCCAGACTGAAGCTACCCTGGTGCAGCTTTGTGCTGTTACCTTGAGTCATGTCATCA
++
+hhhhhghhhhhghhhhghghhhhhhhghhhghhhghgfhhhhhhgdgggggggghhghhgeggdgghfggfgfhgfggef`fhdggfdfgaehecagggfcegacagffefcWda_
+@ILLUMINA-545855_0049_FC61RLR:2:1:17449:1584#0/2
+TCTGTGTGTGAGCACACACACACACACACACACACACACACACACACATGCAGGTACTTGCTCTGCCACCCCTGGCGGGCTGCGTGGTGTGCCTGACGACGTATTCTAATCCTACA
++
+fffff^bcbdbdaded`ffafdcfcff]cffccccaffffffedcafaR_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:19063:1614#0/2
+TATATATATATATAAACATATATATATATATTTTTTTCTCATTTCAGAACAAAAGTGAGATGAACTTTAATATGGTGGGGTGTATTTTGAGAGACTCTCTAGTTTGGGAGGAGTGA
++
+ccccccccccccYc_cJccccccccccccUccccc]`_YT]_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:1978:1220#0/2
+TCCTCTGACTAGGCAACAACAGCTTTTTTGCTCCTGGGCAGAGGTGTTCCGAGTGTATATTTTTTATAATTACGGCGCGCATTGGAAATTGATGTTATTTTATTTTGCGTGTGTGT
++
+a^N^BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:5626:1554#0/2
+TCTAATATTATATATATCTGTGTGTGTATATATATATATACACACACACACACACATTGACATAAAAGCGAAATATAAACATTAGCAGCTGGGGCTAAAATAAAAGCAGGAAGGTT
++
+hhhhhhhhhhhhhhhhhhhhhhgggghghhghhghghghghhhhhghhfgQeWdQd\URUY^aa[^\\K`JL\\[W``dQ`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:5879:1238#0/2
+TCCCCACCCTGTCATGGTTCTATGTATATATATATAGCCATGTGTGTGGTACCAGGGATAGGTACCTGGGATTGGGGCAGTGACACTTTAGTGCCCCGTACACTACATGATGTTTT
++
+gggggggggggggggggdggffffecgfgfggggggegggggfgdgdgdadgdeaWdddedc`fdcabdaaa_]adb]_a_cbaaadbaa[`dbaaab]a`]a[Za`_`_BBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:6204:1090#0/2
+TGCTTTGGTTCTAAGAGAAAAACAAGTGATGCACAAGCAATTCCTCGCCACCACCCAACTGATGCCCAGCCACCCCCCCAAGCAGTGAAAGAGAGAGAGAGATGAACCCCCTTCAA
++
+gggcagggdefggggdgegdgccccc_ggdggddgdeedddfcdffffdfda]dab]______aa_edaeaaa_`]```[Z]`]ZR]\^^]]aa]^]_^P^]YXI_BBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:8044:1926#0/2
+TCAGGCAAGGTCACTGCCACCACTGGGGAGTGCCTGTTTCTGAAGGGCCCAGCCAACTCTGTCACAAGCTTTAACCATAATAAATCAGGAGGAGAGACAGGAGGATGCTGTGCTTT
++
+hhhhhhhhhhghhhhhhhhhhhhhhfhhhhehhhhhfgghhhhhffdhgfgfgggffbggbffffffgfgfdfdfdfffcfadbbaffdcfaZW^aaaac`ab_YR\\Z\Y[ROYU
+@ILLUMINA-545855_0049_FC61RLR:2:1:8157:1636#0/2
+TAAACAACCAAATGAAACCATCTTTTCTACACAGCTCAAGTAGCCCTACATACAACACAAGCCACCTACAAATCAGGACTGATGGTAAGGCTGACAATCCAATCCACCACAACAAC
++
+geggggggggggggcgfggcggggggggggggggggggfffggfgggggggggggfggggg_gggegfgeggdggggggcgaedaageecgd]degadecBBBBBBBBBBBBBBBB
+@ILLUMINA-545855_0049_FC61RLR:2:1:8899:1514#0/2
+TATCATTGAAATTTTTATAAAAACTGTGAAGAGAAAAATGTAACACTTCAGAAACGCAATTATTTTGAGATGTCCAGATTTTTTTTTATACTTCCACTGCTGTGTGTGTGTGTAAC
++
+hfJfffhhhhhhhhhhchhhhhhfgghhghhhhhdfghghghhghhhhhhhhhhhhhhghhchhhhhdchhhchgfgehhhhhhhhhgheeagfhfaffgacaedfdfbfdhdcda
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Thu Dec 11 09:23:24 2014 -0500
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<tool_dependency>
+    <package name="pal_finder" version="0.02.04">
+      <install version="1.0">
+	<actions>
+	  <action type="download_by_url">http://sourceforge.net/projects/palfinder/files/pal_finder_v0.02.04.tar.gz</action>
+	  <action type="move_file">
+	    <source>pal_finder_v0.02.04.pl</source>
+	    <destination>$INSTALL_DIR/bin</destination>
+	  </action>
+	  <action type="move_file">
+	    <source>config.txt</source>
+	    <destination>$INSTALL_DIR/data</destination>
+	  </action>
+	  <action type="move_file">
+	    <source>simple.ref</source>
+	    <destination>$INSTALL_DIR/data</destination>
+	  </action>
+	  <action type="set_environment">
+	    <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
+	  </action>
+	  <action type="set_environment">
+	    <environment_variable name="PALFINDER_SCRIPT_DIR" action="set_to">$INSTALL_DIR/bin</environment_variable>
+	  </action>
+	  <action type="set_environment">
+	    <environment_variable name="PALFINDER_DATA_DIR" action="set_to">$INSTALL_DIR/data</environment_variable>
+	  </action>
+	</actions>
+      </install>
+      <readme>pal_finder also needs Perl</readme>
+    </package>
+    <package name="primer3_core" version="2.0.0">
+      <install version="1.0">
+	<actions>
+	  <action type="download_by_url">https://sourceforge.net/projects/primer3/files/primer3/2.0.0-alpha/primer3-2.0.0-alpha.tar.gz</action>
+	  <action type="shell_command">make -C src -f Makefile</action>
+	  <action type="move_file">
+	    <source>src/primer3_core</source>
+	    <destination>$INSTALL_DIR/bin</destination>
+	  </action>
+	  <action type="set_environment">
+	    <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
+	  </action>
+	</actions>
+      </install>
+      <readme>primer3_core</readme>
+    </package>
+</tool_dependency>