view gmap.xml @ 2:f6ba0f12cca2 draft

Untested work-in-progress GMAP wrappers v3.0.0, from JJ back in June 2013
author peterjc
date Wed, 28 Sep 2016 10:43:44 -0400
parents 74391fc6e3f2
children 488e9d642566
line wrap: on
line source

<tool id="gmap" name="GMAP" version="3.0.0">
  <description>Genomic Mapping and Alignment Program for mRNA and EST sequences</description>
  <requirements>
    <requirement type="package" version="2013-05-09">gmap</requirement>
  </requirements>
  <version_string>gmap --version</version_string>
  <command>
    #import os,os.path
    gmap
    --nthreads=4 --ordered
    #if $refGenomeSource.genomeSource == "history":
      --gseg=$refGenomeSource.ownFile
    #elif $refGenomeSource.genomeSource == "gmapdb":
      --dir=$refGenomeSource.gmapdb.extra_files_path --db=$refGenomeSource.gmapdb.metadata.db_name
      #if $refGenomeSource.kmer != None and len($refGenomeSource.kmer.__str__) == 2:
        --kmer=$refGenomeSource.kmer
      #end if
    #else:
      --dir=$os.path.dirname($refGenomeSource.gmapindex.value) --db=$os.path.basename($refGenomeSource.gmapindex.value)
      #if $refGenomeSource.kmer != None and len($refGenomeSource.kmer.__str__) == 2:
        --kmer=$refGenomeSource.kmer
      #end if
    #end if
    #if $result.format == "summary":
      --summary
    #elif $result.format == "align":
      --align
    #elif $result.format == "continuous":
      --continuous
    #elif $result.format == "continuous-by-exon":
      --continuous-by-exon
    #elif $result.format == "compress":
      --compress
    #elif $result.format == "exons_dna":
      --exons=cdna
    #elif $result.format == "exons_gen":
      --exons=genomic
    #elif $result.format == "protein_dna":
      --protein_dna
    #elif $result.format == "protein_gen":
      --protein_gen
    #elif $result.format == "sam":
      --format=$result.sam_paired_read
      $result.no_sam_headers 
      $result.sam_use_0M
      $result.force_xs_dir
      $result.md_lowercase_snp
      #* Removed in gmap version 2011-11-30
      #if len($result.noncanonical_splices.__str__) > 0
         --noncanonical-splices=$result.noncanonical_splices
      #end if
      *#
      #if len($result.read_group_id.__str__) > 0
         --read-group-id=$result.read_group_id
      #end if
      #if len($result.read_group_name.__str__) > 0
         --read-group-name=$result.read_group_name
      #end if
      #if len($result.read_group_library.__str__) > 0
         --read-group-library=$result.read_group_library
      #end if
      #if len($result.read_group_platform.__str__) > 0
         --read-group-platform=$result.read_group_platform
      #end if
    #elif $result.format != "gmap":
      --format=$result.format
    #end if
    #if $computation.options == "advanced":
      $computation.nosplicing
      $computation.find_shifted_canonical
      $computation.cross_species
      #if len($computation.min_intronlength.__str__) > 0
        --min-intronlength=$computation.min_intronlength
      #end if
      #if len($computation.intronlength.__str__) > 0
        --intronlength=$computation.intronlength
      #end if
      #if len($computation.localsplicedist.__str__) > 0
        --localsplicedist=$computation.localsplicedist
      #end if
      #if len($computation.totallength.__str__) > 0
        --totallength=$computation.totallength
      #end if
      #if len($computation.trimendexons.__str__) > 0
        --trimendexons=$computation.trimendexons
      #end if
      --direction=$computation.direction
      --canonical-mode=$computation.canonical
      --prunelevel=$computation.prunelevel
      --allow-close-indels=$computation.allow_close_indels
      #if len($computation.microexon_spliceprob.__str__) >= 0:
        --microexon-spliceprob=$computation.microexon_spliceprob
      #end if
      #if len($computation.chimera_margin.__str__) >= 0:
        --chimera-margin=$computation.chimera_margin
      #end if
    #end if
    #if $advanced.options == "used":
      #if len($advanced.npaths.__str__) > 0:
        --npaths=$advanced.npaths
      #end if
      #if len($advanced.suboptimal_score.__str__) > 0:
        --suboptimal-score=$advanced.suboptimal_score
      #end if
      #if len($advanced.chimera_overlap.__str__) > 0:
        --chimera_overlap=$advanced.chimera_overlap
      #end if
      $advanced.protein
      $advanced.tolerant
      $advanced.nolengths
      $advanced.invertmode
      #if len($advanced.introngap.__str__) > 0:
        --introngap=$advanced.introngap
      #end if
      #if len($advanced.wraplength.__str__) > 0:
        --wraplength=$advanced.wraplength
      #end if
    #end if
    #if $split_output == True
      $split_output
    #end if
    #if len($quality_protocol.__str__) > 0:
      --quality-protocol=$quality_protocol
    #end if
    $input
    #for $i in $inputs:
      ${i.added_input}
    #end for
    #if $split_output == True
      2> $gmap_stderr 
    #else
      2> $gmap_stderr > $output
    #end if
  </command>
  <inputs>
    <!-- Input data -->
    <param name="input" type="data" format="fasta,fastqsanger,fastqillumina" label="&lt;H2&gt;Input Sequences&lt;/H2&gt;Select an mRNA or EST dataset to map" />
    <repeat name="inputs" title="addtional mRNA or EST dataset to map">
      <param name="added_input" type="data" format="fasta,fastqsanger,fastqillumina" label=""/>
    </repeat>
    <param name="quality_protocol" type="select" label="Protocol for input quality scores">
      <option value="">No quality scores</option>
      <option value="sanger">Sanger quality scores</option>
      <option value="illumina">Illumina quality scores</option>
    </param>

    <!-- GMAPDB for mapping -->
    <conditional name="refGenomeSource">
     <param name="genomeSource" type="select" label="&lt;HR&gt;&lt;H2&gt;Map To&lt;/H2&gt;Will you map to a reference genome from your history or use a built-in index?" help="Built-ins were indexed using default options">
        <option value="indexed">Use a built-in index</option>
        <option value="gmapdb">Use gmapdb from the history</option>
        <option value="history">Use a fasta reference sequence from the history</option>
      </param>
      <when value="indexed">
        <param name="gmapindex" type="select" label="Select a reference genome" help="if your genome of interest is not listed - contact Galaxy team">
          <options from_file="gmap_indices.loc">
            <column name="uid" index="0" />
            <column name="dbkey" index="1" />
            <column name="name" index="2" />
            <column name="kmers" index="3" />
            <column name="maps" index="4" />
            <column name="snps" index="5" />
            <column name="value" index="6" />
          </options>
        </param>
        <param name="kmer" type="select" data_ref="gmapindex" label="kmer size" help="Defaults to highest available kmer size">
          <options from_file="gmap_indices.loc">
            <column name="name" index="3"/>
            <column name="value" index="3"/>
            <filter type="param_value" ref="gmapindex" column="6"/>
            <filter type="multiple_splitter" column="3" separator=","/>
            <filter type="add_value" name="" value=""/>
            <filter type="sort_by" column="3"/>
          </options>
        </param>
        <!--
         basesize=INT                 Base size to use in genome database.  If not specified, the program
                                   will find the highest available base size in the genome database
                                   within selected k-mer size
         sampling=INT                 Sampling to use in genome database.  If not specified, the program
                                   will find the smallest available sampling value in the genome database
                                   within selected basesize and k-mer size

        -->
        <param name="map" type="select" data_ref="gmapindex" label="Look for splicing involving known sites or known introns" help="">
          <options from_file="gmap_indices.loc">
            <column name="name" index="4"/>
            <column name="value" index="4"/>
            <filter type="param_value" ref="gmapindex" column="6"/>
            <filter type="multiple_splitter" column="4" separator=","/>
            <filter type="add_value" name="" value=""/>
            <filter type="sort_by" column="4"/>
          </options>
        </param>
      </when>
      <when value="gmapdb">
        <param name="gmapdb" type="data" format="gmapdb" metadata_name="dbkey" label="Select a gmapdb" 
              help="A GMAP database built with GMAP Build"/>
        <param name="kmer" type="select" data_ref="gmapdb" label="kmer size" help="Defaults to highest available kmer size">
          <options>
            <filter type="data_meta" ref="gmapdb" key="kmers" multiple="True" separator=","/>
          </options>
        </param>
        <param name="map" type="select"  data_ref="gmapdb" label="Use map for splicing involving known sites or known introns" help="">
          <options>
            <filter type="data_meta" ref="gmapdb" key="maps" multiple="True"/>
          </options>
        </param>
      </when>
      <when value="history">
        <param name="ownFile" type="data" format="fasta" metadata_name="dbkey" label="Select the reference genome" 
              help="Fasta containing genomic DNA sequence"/>
      </when>
    </conditional>

    
    <!-- Computation options -->
    <conditional name="computation">
      <param name="options" type="select" label="&lt;HR&gt;Computational Settings" help="">
        <option value="default">Use default settings</option>
        <option value="advanced">Set Computation Options</option>
      </param>
      <when value="default"/>
      <when value="advanced">
       <param name="nosplicing" type="boolean" truevalue="--nosplicing" falsevalue="" checked="false" label="Turn off splicing" help="(useful for aligning genomic sequences onto a genome)"/>
       <param name="min_intronlength" type="integer" value="" optional="true" label="Min length for one internal intron (default 9)." help="Below this size, a genomic gap will be considered a deletion rather than an intron." >	
         <validator type="in_range" message="min_intronlength must be positive" min="0" />
       </param>
       <param name="intronlength" type="integer" value="" optional="true" label="Max length for one intron (default 1000000)" >	
         <validator type="in_range" message="intronlength must be positive" min="0" />
       </param>
       <param name="localsplicedist" type="integer" value="" optional="true" label="Max length for known splice sites at ends of sequence (default 200000)" >	
         <validator type="in_range" message="localsplicedist must be positive" min="0" />
       </param>
       <param name="totallength"  type="integer" value="" optional="true" label="Max total intron length (default 2400000)" >	
         <validator type="in_range" message="totallength must be positive" min="0" />
       </param>
       <param name="chimera_margin" type="integer" value="" optional="true" label="Amount of unaligned sequence that triggers search for a chimera" 
              help=" default is 40, To turn off, set to 0" >	
         <validator type="in_range" message="chimera_margin must be positive" min="0" />
       </param>
       <param name="direction"  type="select" label="cDNA direction">	
         <option value="auto">auto</option>
         <option value="sense_force">sense_force</option>
         <option value="antisense_force">antisense_force</option>
         <option value="sense_filter">sense_filter</option>
         <option value="antisense_filter">antisense_filter</option>
       </param>
       <param name="trimendexons"  type="integer" value="" optional="true" label="Trim end exons with fewer than given number of matches (in nt, default 12)" >	
         <validator type="in_range" message="trimendexons must be positive" min="1" />
       </param>
       <param name="find_shifted_canonical" type="boolean" truevalue="--find-shifted-canonical-species" falsevalue="" checked="false" label="find-shifted-canonical Use a more sensitive search for canonical splicing" help=""/>
       <param name="cross_species" type="boolean" truevalue="--cross-species" falsevalue="" checked="false" label="Cross-species alignment" help="For cross-species alignments, use a more sensitive search for canonical splicing"/>
       
       <param name="canonical"  type="select" label="Reward for canonical and semi-canonical introns">	
         <option value="1">high reward (default)</option>
         <option value="0">low reward</option>
         <option value="2">low reward for high-identity sequences</option>
       </param>
       <param name="allow_close_indels"  type="select" label="Allow an insertion and deletion close to each other">	
         <option value="1" selected="true">yes (default)</option>
         <option value="0">no</option>
         <option value="2">only for high-quality alignments</option>
       </param>
       <param name="microexon_spliceprob" type="float" value="" optional="true" label="Micro Exon splice probablility threshold" 
              help="Allow microexons only if one of the splice site probabilities is greater than this value (default 0.90)" >	
         <validator type="in_range" message="slice probability between 0.00 and 1.00" min="0" max="1"/> 
       </param>
       <param name="prunelevel"  type="select" label="Pruning level">	
         <option value="0">no pruning (default)</option>
         <option value="1">poor sequences</option>
         <option value="2">repetitive sequences</option>
         <option value="3">poor and repetitive sequences</option>
       </param>
       <!--  could do this as a config file 
       <param name="chrsubsetfile" type="data" format="fasta" label="User-supplied chromosome subset file" />
       <param name="chrsubset" type="text" label="Chromosome subset to search" />
       -->
      </when>
    </conditional>

    <!-- Advanced Settings -->
    <conditional name="advanced">
      <param name="options" type="select" label="&lt;HR&gt;Advanced Settings" help="">
        <option value="default">Use default settings</option>
        <option value="used">Set Options</option>
      </param>
      <when value="default"/>
      <when value="used">
       <param name="nolengths" type="boolean" checked="false" truevalue="--nolengths=true" falsevalue="" label="No intron lengths in alignment"/>
       <param name="invertmode" type="select" label=" Mode for alignments to genomic (-) strand" help="">
        <option value="">Don't invert the cDNA (default)</option>
        <option value="--invertmode=1">Invert cDNA and print genomic (-) strand</option>
        <option value="--invertmode=2">Invert cDNA and print genomic (+) strand</option>
       </param>
       <param name="introngap" type="integer" value="" optional="true" label="Nucleotides to show on each end of intron (default=3)">	
         <validator type="in_range" message="introngap must be positive" min="0" />
       </param>
       <param name="wraplength" type="integer" value="" optional="true" label="Line Wrap length for alignment (default=50)">	
         <validator type="in_range" message="wraplength must be positive" min="1" />
       </param>
       <param name="npaths" type="integer" value="" optional="true"
              label="Maximum number of paths to show.  Ignored if negative.  If 0, prints two paths if chimera detected, else one." >	
         <validator type="in_range" message="npaths must be positive" min="0" />
       </param>
       <param name="suboptimal_score" type="integer" value="" optional="true"
              label="Report only paths whose score is within this value of the best path"
              help="By default the program prints all paths found." >	
         <validator type="in_range" message="suboptimal_score must be positive" min="0" />
       </param>
       <param name="chimera_overlap" type="integer" value="" optional="true" label="Overlap to show, if any, at chimera breakpoint (default 0)" >	
                <validator type="in_range" message="chimera_overlap must be positive" min="0" />
       </param>
       <param name="tolerant" type="boolean" checked="false" truevalue="--tolerant=true" falsevalue="" 
              label="Translates cDNA with corrections for frameshifts"/>
       <param name="protein" type="select" label="Protein alignment" help="">
        <option value="">default</option>
        <option value="--fulllength=true">Assume full-length protein, starting with Met</option>
        <option value="--truncate=true">Truncate alignment around full-length protein, Met to Stop</option>
       </param>
      </when>
    </conditional>

    <!-- Output data -->
    <conditional name="result">
    <param name="format" type="select" label="&lt;HR&gt;&lt;H2&gt;Output&lt;/H2&gt;Select the output format" help="">
      <option value="gmap">GMAP default output</option>
      <option value="summary">Summary of alignments</option>
      <option value="align">Alignment</option>
      <option value="continuous">Alignment in three continuous lines</option>
      <option value="continuous-by-exon">Alignment in three lines per exon</option>
      <option value="compress">Print output in compressed format</option>
      <option value="exons_dna">Print exons cDNA</option>
      <option value="exons_gen">Print exons genomic</option>
      <option value="protein_dna">Print protein sequence (cDNA)</option>
      <option value="protein_gen">Print protein sequence (genomic)</option>
      <option value="psl">PSL (BLAT) format</option>
      <option value="gff3_gene">GFF3 gene format</option>
      <option value="gff3_match_cdna">GFF3 match cDNA format</option>
      <option value="gff3_match_est">GFF3 match EST format</option>
      <option value="splicesites">splicesites output (for GSNAP)</option>
      <option value="introns">introns output (for GSNAP)</option>
      <option value="map_exons">IIT FASTA exon map format</option>
      <option value="map_ranges">IIT FASTA map format</option>
      <option value="coords">coords in table format</option>
      <option value="sam" selected="true">SAM format</option>
    </param>
      <when value="gmap">
      </when>
      <when value="summary"/>
      <when value="align">
      </when>
      <when value="continuous">
      </when>
      <when value="continuous-by-exon">
      </when>
      <when value="compress"/>
      <when value="exons_dna"/>
      <when value="exons_gen"/>
      <when value="protein_dna"/>
      <when value="protein_gen"/>
      <when value="psl"/>
      <when value="gff3_gene"/>
      <when value="gff3_match_cdna"/>
      <when value="gff3_match_est"/>
      <when value="splicesites"/>
      <when value="introns"/>
      <when value="map_exons"/>
      <when value="map_ranges"/>
      <when value="coords"/>
      <when value="sam">
        <param name="sam_paired_read" type="boolean" truevalue="sampe" falsevalue="samse" checked="false" label="SAM paired reads"/>
        <param name="no_sam_headers" type="boolean" truevalue="--no-sam-headers" falsevalue="" checked="false" label="Do not print headers beginning with '@'"/>
        <!--  Removed in gmap version 2011-11-30
        <param name="noncanonical_splices" type="select" label="Print non-canonical genomic gaps greater than 20 nt in CIGAR string as STRING.">
          <option value="">Use default</option>
          <option value="N">N</option>
          <option value="D">D</option>
        </param>
        -->
        <param name="read_group_id" type="text" value="" label="Value to put into read-group id (RG-ID) field"/>
        <param name="read_group_name" type="text" value="" label="Value to put into read-group name (RG-SM) field"/>
        <param name="read_group_library" type="text" value="" label="Value to put into read-group library (RG-LB) field"/>
        <param name="read_group_platform" type="text" value="" label="Value to put into read-group library platform (RG-PL) field"/>
        <param name="sam_use_0M" type="boolean" truevalue="--sam-use-0M" falsevalue="" checked="false" label="Insert 0M in CIGAR between adjacent insertions and deletions" help="Required by Picard, but can cause errors in other tools"/>
        <param name="force_xs_dir" type="boolean" truevalue="--force-xs-dir" falsevalue="" checked="false" label="Force direction (disallow XS:A:?)" 
               help="For RNA-Seq alignments, disallows XS:A:? when the sense direction is unclear, and replaces this value arbitrarily with XS:A:+. May be useful for some programs, such as Cufflinks, that cannot handle XS:A:?.  However, if you use this flag, the reported value of XS:A:+ in these cases will not be meaningful."/>
        <param name="md_lowercase_snp" type="boolean" truevalue="--md-lowercase-snp" falsevalue="" checked="false" label="MD lowercase SNP" 
               help="In MD string, when known SNPs are given by the -v flag, prints difference nucleotides as lower-case when they, differ from reference but match a known alternate allele"/>
      </when>
    </conditional> <!-- name="result" -->

    <param name="split_output" type="boolean" truevalue="--split-output=gmap_out" falsevalue="" checked="false" label="Separate outputs for nomapping, uniq, mult, and chimera" help="(chimera only when chimera-margin is selected)"/>


    <!-- 
      map=iitfile      Map file.  If argument is '?' (with the quotes), this lists available map files.
      mapexons         Map each exon separately
      mapboth          Report hits from both strands of genome
      flanking=INT     Show flanking hits (default 0)
      print-comment    Show comment line for each hit
    -->

    <!-- 
  min-trimmed-coverage=FLOAT   Do not print alignments with trimmed coverage less
                                   this value (default=0.0, which means no filtering)
                                   Note that chimeric alignments will be output regardless
                                   of this filter
  min-identity=FLOAT           Do not print alignments with identity less
                                   this value (default=0.0, which means no filtering)
                                   Note that chimeric alignments will be output regardless
                                   of this filter
    -->



  </inputs>
  <outputs>
    <data format="txt" name="gmap_stderr" label="${tool.name} on ${on_string}: stderr"/>
    <data format="txt" name="output" label="${tool.name} on ${on_string} ${result.format}" >
      <filter>(split_output == False)</filter>
      <change_format>
        <when input="result['format']" value="gff3_gene" format="gff3"/>
        <when input="result['format']" value="gff3_match_cdna" format="gff3"/>
        <when input="result['format']" value="gff3_match_est" format="gff3"/>
        <when input="result['format']" value="sam" format="sam"/>
        <when input="result['format']" value="splicesites" format="gmap_splicesites"/>
        <when input="result['format']" value="introns" format="gmap_introns"/>
        <when input="result['format']" value="map_genes" format="gmap_annotation"/>
        <when input="result['format']" value="map_exons" format="gmap_annotation"/>
      </change_format>
    </data>
    <data format="txt" name="uniq" label="${tool.name} on ${on_string} uniq.${result.format}"  from_work_dir="gmap_out.uniq">
      <filter>(split_output == True)</filter>
      <change_format>
        <when input="result['format']" value="gff3_gene" format="gff3"/>
        <when input="result['format']" value="gff3_match_cdna" format="gff3"/>
        <when input="result['format']" value="gff3_match_est" format="gff3"/>
        <when input="result['format']" value="sam" format="sam"/>
        <when input="result['format']" value="splicesites" format="gmap_splicesites"/>
        <when input="result['format']" value="introns" format="gmap_introns"/>
        <when input="result['format']" value="map_genes" format="gmap_annotation"/>
        <when input="result['format']" value="map_exons" format="gmap_annotation"/>
      </change_format>
    </data>
    <data format="txt" name="transloc" label="${tool.name} on ${on_string} transloc.${result.format}"  from_work_dir="gmap_out.transloc">
      <filter>(split_output == True)</filter>
      <change_format>
        <when input="result['format']" value="gff3_gene" format="gff3"/>
        <when input="result['format']" value="gff3_match_cdna" format="gff3"/>
        <when input="result['format']" value="gff3_match_est" format="gff3"/>
        <when input="result['format']" value="sam" format="sam"/>
        <when input="result['format']" value="splicesites" format="gmap_splicesites"/>
        <when input="result['format']" value="introns" format="gmap_introns"/>
        <when input="result['format']" value="map_genes" format="gmap_annotation"/>
        <when input="result['format']" value="map_exons" format="gmap_annotation"/>
      </change_format>
    </data>
    <data format="txt" name="nomapping" label="${tool.name} on ${on_string} nomapping.${result.format}"  from_work_dir="gmap_out.nomapping">
      <filter>(split_output == True)</filter>
      <change_format>
        <when input="result['format']" value="gff3_gene" format="gff3"/>
        <when input="result['format']" value="gff3_match_cdna" format="gff3"/>
        <when input="result['format']" value="gff3_match_est" format="gff3"/>
        <when input="result['format']" value="sam" format="sam"/>
        <when input="result['format']" value="splicesites" format="gmap_splicesites"/>
        <when input="result['format']" value="introns" format="gmap_introns"/>
        <when input="result['format']" value="map_genes" format="gmap_annotation"/>
        <when input="result['format']" value="map_exons" format="gmap_annotation"/>
      </change_format>
    </data>
    <data format="txt" name="mult" label="${tool.name} on ${on_string} mult.${result.format}"  from_work_dir="gmap_out.mult">
      <filter>(split_output == True)</filter>
      <change_format>
        <when input="result['format']" value="gff3_gene" format="gff3"/>
        <when input="result['format']" value="gff3_match_cdna" format="gff3"/>
        <when input="result['format']" value="gff3_match_est" format="gff3"/>
        <when input="result['format']" value="sam" format="sam"/>
        <when input="result['format']" value="splicesites" format="gmap_splicesites"/>
        <when input="result['format']" value="introns" format="gmap_introns"/>
        <when input="result['format']" value="map_genes" format="gmap_annotation"/>
        <when input="result['format']" value="map_exons" format="gmap_annotation"/>
      </change_format>
    </data>
  </outputs>
  <tests>
  </tests> 

  <help>

**What it does**

GMAP_ (Genomic Mapping and Alignment Program)  The functionality provided by gmap allows a user to: (1) map and align a single cDNA interactively against a large genome in about a second, without the startup time of several minutes typically needed by existing mapping programs; (2) switch arbitrarily among different genomes, without the need for a preloaded server dedicated to each genome; (3) run the program on computers with as little as 128 MB of RAM (random access memory); (4) perform high-throughput batch processing of cDNAs by using memory mapping and multithreading when appropriate memory and hardware are available; (5) generate accurate gene models, even in the presence of substantial polymorphisms and sequence errors; (6) locate splice sites accurately without the use of probabilistic splice site models, allowing generalized use of the program across species; (7) detect statistically significant microexons and incorporate them into the alignment; and (8) handle mapping and alignment tasks on genomes having alternate assemblies, linkage groups or strains.  It is developed by Thomas D. Wu of Genentech, Inc.  

Publication_ citation: Thomas D. Wu, Colin K. Watanabe  Bioinformatics 2005 21(9):1859-1875; doi:10.1093/bioinformatics/bti310

.. _GMAP: http://research-pub.gene.com/gmap/
.. _Publication: http://bioinformatics.oxfordjournals.org/cgi/content/full/21/9/1859

------

**Know what you are doing**

.. class:: warningmark

You will want to read the README_

.. _README: http://research-pub.gene.com/gmap/src/README

  </help>
</tool>