changeset 2:b8c6a38530eb draft default tip

Support Edena v. 3.131028 (new <version_command>, official overlapping log file, covStats output file removed, -lph and -sph options instead of -peHorizon). Use $GALAXY_SLOTS instead of $EDENA _SITE_OPTIONS. Directly call edena, remove edena_ovl_wrapper.py and edena_ass_wrapper.py . Discard stderr instead of redirecting to stdout. Do not redirect stdout to logfile. Add readme.rst .
author crs4
date Fri, 31 Jan 2014 12:08:21 -0500
parents cd6cc6d76708
children
files edena_ass_wrapper.py edena_ass_wrapper.xml edena_ovl_wrapper.py edena_ovl_wrapper.xml readme.rst tool_dependencies.xml
diffstat 6 files changed, 95 insertions(+), 221 deletions(-) [+]
line wrap: on
line diff
--- a/edena_ass_wrapper.py	Fri Oct 18 14:09:11 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Edena (assembling)
-version 0.2.1 (andrea.pinna@crs4.it)
-"""
-
-import optparse
-import shutil
-import subprocess
-import sys
-
-def __main__():
-    # load arguments
-    print 'Parsing Edena (assembling) input options...'
-    parser = optparse.OptionParser(description='Edena assembly')
-    parser.add_option('--ovl_input', dest='ovl_input', help='')
-    parser.add_option('--overlapCutoff', dest='overlapCutoff', type='int', help='')
-    parser.add_option('--cc', action="store_true", dest='cc', help='')
-    parser.add_option('--discardNonUsable', action="store_true", dest='discardNonUsable', help='')
-    parser.add_option('--minContigSize', dest='minContigSize', type='int', help='')
-    parser.add_option('--minCoverage', dest='minCoverage', type='float', help='')
-    parser.add_option('--trim', dest='trim', type='int', help='')
-    parser.add_option('--peHorizon', dest='peHorizon', type='int', help='')
-    parser.add_option('--covStats', dest='covStats', help='')
-    parser.add_option('--out_contigs_cov', dest='out_contigs_cov', help='')
-    parser.add_option('--out_contigs_fasta', dest='out_contigs_fasta', help='')
-    parser.add_option('--out_contigs_lay', dest='out_contigs_lay', help='')
-    parser.add_option('--out_log_txt', dest='out_log_txt', help='')
-    parser.add_option('--out_nodesInfo', dest='out_nodesInfo', help='')
-    parser.add_option('--out_nodesPosition', dest='out_nodesPosition', help='')
-    parser.add_option('--logfile', dest='logfile', help='logfile')
-    (options, args) = parser.parse_args()
-    if len(args) > 0:
-        parser.error('Wrong number of arguments')
-
-    # build Edena (assembling) command to be executed
-    ovl_input = '-e %s' % (options.ovl_input)
-    overlapCutoff = '-m %d' % (options.overlapCutoff) if options.overlapCutoff is not None else ''
-    cc = '-cc yes' if options.cc else '-cc no'
-    discardNonUsable = '-discardNonUsable yes' if options.discardNonUsable else '-discardNonUsable no'
-    minContigSize = '-c %d' % (options.minContigSize) if options.minContigSize is not None else ''
-    minCoverage = '-minCoverage %s' % (options.minCoverage) if options.minCoverage is not None else ''
-    trim = '-trim %d' % (options.trim) if options.trim is not None else ''
-    peHorizon = '-peHorizon %d' % (options.peHorizon) if options.peHorizon is not None else ''
-    covStats = options.covStats
-    out_contigs_cov = options.out_contigs_cov
-    out_contigs_fasta = options.out_contigs_fasta
-    out_contigs_lay = options.out_contigs_lay
-    out_log_txt = options.out_log_txt
-    out_nodesInfo = options.out_nodesInfo
-    out_nodesPosition = options.out_nodesPosition
-    logfile = options.logfile
-
-    # Build Edena (assembling) command
-    cmd = 'edena %s %s %s %s %s %s %s %s' % (ovl_input, overlapCutoff, cc, discardNonUsable, minContigSize, minCoverage, trim, peHorizon)
-    print '\nEdena (assembling) command to be executed:\n %s' % (cmd)
-
-    # Execution of Edena
-    print 'Executing Edena (assembling)...'
-    log = open(logfile, 'w') if logfile else sys.stdout
-    try:
-        subprocess.check_call(cmd, stdout=log, stderr=subprocess.STDOUT, shell=True) # need to redirect stderr because edena writes some logging info there (e.g. "Condensing overlaps graph...")
-    finally:
-        if log != sys.stdout:
-            log.close()
-    print 'Edena (assembling) executed!'
-
-    shutil.move("covStats", covStats)
-    shutil.move("out_contigs.cov", out_contigs_cov)
-    shutil.move("out_contigs.fasta", out_contigs_fasta)
-    shutil.move("out_contigs.lay", out_contigs_lay)
-    shutil.move("out_log.txt", out_log_txt)
-    shutil.move("out_nodesInfo", out_nodesInfo)
-    shutil.move("out_nodesPosition", out_nodesPosition)
-
-
-if __name__ == "__main__":
-    __main__()
--- a/edena_ass_wrapper.xml	Fri Oct 18 14:09:11 2013 -0400
+++ b/edena_ass_wrapper.xml	Fri Jan 31 12:08:21 2014 -0500
@@ -1,63 +1,67 @@
-<tool id="edena_ass_wrapper" name="Edena (assembling)" version="0.2.1">
+<tool id="edena_ass_wrapper" name="Edena (assembling)" version="0.3">
   <description></description>
   <requirements>
-    <requirement type="package" version="3.130110">edena</requirement>
+    <requirement type="package" version="3.131028">edena</requirement>
   </requirements>
-  <version_command>edena -v</version_command>
-  <command interpreter="python">
-    edena_ass_wrapper.py --ovl_input=$ovl_input
+  <version_command>edena | head -n 1</version_command>
+  <command>
+    edena -e $ovl_input
     #if str($overlapCutoff)
-      --overlapCutoff=$overlapCutoff
+      -m $overlapCutoff
     #end if
     #if $cc
-      --cc
+      -cc yes
+    #else
+      -cc no
     #end if
     #if $discardNonUsable
-      --discardNonUsable
+      -discardNonUsable yes
+    #else
+      -discardNonUsable no
     #end if
     #if str($minContigSize)
-      --minContigSize=$minContigSize
+      -c $minContigSize
     #end if
     #if str($minCoverage)
-      --minCoverage=$minCoverage
+      -minCoverage $minCoverage
     #end if
     #if str($trim)
-      --trim=$trim
+      -trim $trim
+    #end if
+    #if str($sph)
+      -sph $sph
     #end if
-    #if str($peHorizon)
-      --peHorizon=$peHorizon
+    #if str($lph)
+      -lph $lph
     #end if
-    --covStats=$covStats --out_contigs_cov=$out_contigs_cov --out_contigs_fasta=$out_contigs_fasta --out_contigs_lay=$out_contigs_lay --out_log_txt=$out_log_txt --out_nodesInfo=$out_nodesInfo --out_nodesPosition=$out_nodesPosition
-    --logfile=$logfile
+    2&gt;/dev/null ## need to discard stderr because edena writes some progress info there (e.g. "Condensing overlaps graph...")
   </command>
 
   <inputs>
-    <param name="ovl_input" type="data" format="ovl" label="Edena .ovl file (-e)" help="Specify here the Edena “.ovl” file obtained from the overlapping step" />
+    <param name="ovl_input" type="data" format="ovl" label="Edena overlap (.ovl) file (-e)" help="Specify here the Edena “.ovl” file obtained from the overlapping step" />
 
     <param name="overlapCutoff" type="integer" value="" optional="true" label="Overlap cutoff (-m)" help="The overlap cutoff is by default set to half of the reads length L (see the log output by the overlapping step to identify it). It is however still worth trying to increase this setting since it can greatly simplify highly connected overlaps graphs, and thus speed up the assembly. If one step during the assembly hangs, increasing the overlap cutoff is the first thing to do." />
 
-    <param name="cc" type="boolean" checked="true" label="Contextual cleaning (-cc)" help="This option is enabled by default. Contextual cleaning is a procedure that efficiently identifies and removes false positive edges, improving thus the assembly. This procedure can be seen as a dynamic overlap cutoff on the overlaps graph. It is possible however for this step to be slow on ultra-high covered sequencing data. In such cases, try to increase the overlap cutoff value, or to simply disable this option." />
+    <param name="cc" type="boolean" checked="true" label="Contextual cleaning of spurious edges (-cc)" help="Contextual cleaning is a procedure that efficiently identifies and removes false positive edges, improving thus the assembly. This procedure can be seen as a dynamic overlap cutoff on the overlaps graph. It is possible however for this step to be slow on ultra-high covered sequencing data. In such cases, try to increase the overlap cutoff value, or to simply disable this option." />
 
-    <param name="discardNonUsable" type="boolean" checked="true" label="Discard non usable nodes (-discardNonUsable)" help="Enabled by default, this procedure discards nodes smaller than 1.5*readLength and that are not connected to any other nodes." />
+    <param name="discardNonUsable" type="boolean" checked="true" label="Discard non usable nodes (-discardNonUsable)" help="This procedure discards orphan nodes smaller than 1.5*readLength." />
 
     <param name="minContigSize" type="integer" value="" optional="true" label="Minimum size of the contigs to output (-c)" help="If not specified, this value is set to 1.5*readLength." />
 
     <param name="minCoverage" type="float" value="" optional="true" label="Minimum required coverage for the contigs (-minCoverage)" help="If not specified, this value is automatically determined from the nodes coverage distribution. This estimation however supposes a uniform coverage. It could be worth overriding this parameter in some cases, i.e. with transcriptome data, or a mix of PCR product assemblies." />
 
-    <param name="trim" type="integer" value="4" optional="true" label="Coverage cutoff for contigs ends (-trim)" help="Contig interruptions are caused either because of a non-resolved ambiguity, or because of a lack of overlapping reads. In the latter case, the contig end may be inaccurate. This option will trim such ends until a minimum coverage is reached. By default, this value is set to 4. To disable contigs ends trimming, set this value to 1." />
-
-    <param name="peHorizon" type="integer" value="" optional="true" label="Maximum search distance for paired-end reads connection (-peHorizon)" help="Edena samples the overlaps graph to accurately determine the paired distance distribution. This parameter specifies the maximum distance that is searched during this sampling. By default, this value is set to 1000 if solely direct-reverse mates are used and 10000 if reverse-direct mates are also used. This value has to be set to at least 2X the expected size of the longest mate library." />
+    <param name="trim" type="integer" value="4" optional="true" label="Coverage cutoff for contigs ends (-trim)" help="Contig interruptions are caused either because of a non-resolved ambiguity, or because of a lack of overlapping reads. In the latter case, the contig end may be inaccurate. This option will trim a few bases from these ends until a minimum coverage is reached. By default, this value is set to 4. To disable contigs ends trimming, set this value to 1." />
+    <param name="sph" type="integer" value="1000" optional="true" label="Maximum search distance for paired-end (forward-reverse) sampling (-sph)" help="Edena samples the overlaps graph to accurately determine the paired distance distribution. This parameter specifies the maximum distance that is searched during this sampling. This value has to be set to at least 2X the expected size of the longest paired-end library." />
+    <param name="lph" type="integer" value="15000" optional="true" label="Maximum search distance for mate-pair (reverse-forward) sampling (-lph)" help="Edena samples the overlaps graph to accurately determine the paired distance distribution. This parameter specifies the maximum distance that is searched during this sampling. This value has to be set to at least 2X the expected size of the longest mate-pair library." />
   </inputs>
 
   <outputs>
-    <data name="covStats" format="tabular" label="${tool.name} on ${on_string}: CovStats" />
-    <data name="out_contigs_cov" format="txt" label="${tool.name} on ${on_string}: ContigsCov" />
-    <data name="out_contigs_fasta" format="fasta" label="${tool.name} on ${on_string}: ContigsFasta" />
-    <data name="out_contigs_lay" format="txt" label="${tool.name} on ${on_string}: ContigsLay" />
-    <data name="out_log_txt" format="txt" label="${tool.name} on ${on_string}: log" />
-    <data name="out_nodesInfo" format="txt" label="${tool.name} on ${on_string}: nodes info" />
-    <data name="out_nodesPosition" format="txt" label="${tool.name} on ${on_string}: nodes position" />
-    <data name="logfile" format="txt" label="${tool.name} on ${on_string}: log (terminal)" />
+    <data name="out_contigs_cov" format="txt" label="${tool.name} on ${on_string}: ContigsCov" from_work_dir="out_contigs.cov" />
+    <data name="out_contigs_fasta" format="fasta" label="${tool.name} on ${on_string}: ContigsFasta" from_work_dir="out_contigs.fasta" />
+    <data name="out_contigs_lay" format="txt" label="${tool.name} on ${on_string}: ContigsLay" from_work_dir="out_contigs.lay" />
+    <data name="out_log_txt" format="txt" label="${tool.name} on ${on_string}: log" from_work_dir="out_assembling.log" />
+    <data name="out_nodesInfo" format="txt" label="${tool.name} on ${on_string}: nodes info" from_work_dir="out_nodesInfo" />
+    <data name="out_nodesPosition" format="txt" label="${tool.name} on ${on_string}: nodes position" from_work_dir="out_nodesPosition" />
   </outputs>
 
   <tests>
--- a/edena_ovl_wrapper.py	Fri Oct 18 14:09:11 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Edena (overlapping)
-version 0.2.1 (andrea.pinna@crs4.it)
-"""
-
-import optparse
-import shutil
-import subprocess
-import sys
-
-def __main__():
-    # load arguments
-    print 'Parsing Edena (overlapping) input options...'
-    parser = optparse.OptionParser()
-    parser.add_option('--unpaired_input', action='append', dest='unpaired_input', help='')
-    parser.add_option('--dr_pair_1', action='append', dest='dr_pair_1', help='')
-    parser.add_option('--dr_pair_2', action='append', dest='dr_pair_2', help='')
-    parser.add_option('--rd_pair_1', action='append', dest='rd_pair_1', help='')
-    parser.add_option('--rd_pair_2', action='append', dest='rd_pair_2', help='')
-    parser.add_option('--nThreads', dest='nThreads', type='int', help='')
-    parser.add_option('--minOlap', dest='minOlap', type='int', help='')
-    parser.add_option('--readsTruncation', dest='readsTruncation', type='int', help='')
-    parser.add_option('--output', dest='output', help='')
-    parser.add_option('--logfile', dest='logfile', help='')
-    (options, args) = parser.parse_args()
-    if len(args) > 0:
-        parser.error('Wrong number of arguments')
-
-    # build Edena (overlapping) command to be executed
-    # unpaired input(s)
-    if options.unpaired_input:
-        unpaired_input = '-r'
-        for item in options.unpaired_input:
-            unpaired_input += ' %s' % (item)
-    else:
-        unpaired_input = ''
-    # direct-reverse paired-end files
-    if options.dr_pair_1 and options.dr_pair_2:
-        dr_pairs = '-DRpairs'
-        for i in range(len(options.dr_pair_1)):
-            dr_pairs += ' %s %s' % (options.dr_pair_1[i], options.dr_pair_2[i])
-    else:
-        dr_pairs = ''
-     # reverse-direct paired-end files
-    if options.rd_pair_1 and options.rd_pair_2:
-        rd_pairs = '-RDpairs'
-        for i in range(len(options.rd_pair_1)):
-            rd_pairs += ' %s %s' % (options.rd_pair_1[i], options.rd_pair_2[i])
-    else:
-        rd_pairs = ''
-    # nThreads
-    nThreads = '-nThreads %d' % (options.nThreads) if options.nThreads is not None else ''
-    # minimum overlap
-    minOlap = '-M %d' % (options.minOlap) if options.minOlap is not None else ''
-    # 3' end reads truncation
-    readsTruncation = '-t %d' % (options.readsTruncation) if options.readsTruncation is not None else ''
-    # output file(s)
-    output = options.output
-    logfile = options.logfile
-
-    # Build Edena (overlapping) command
-    cmd = 'edena %s %s %s %s %s %s -p galaxy_output' % (unpaired_input, dr_pairs, rd_pairs, nThreads, minOlap, readsTruncation)
-    print '\nEdena (overlapping) command to be executed:\n %s' % (cmd)
-
-    # Execution of Edena
-    print 'Executing Edena (overlapping)...'
-    log = open(logfile, 'w') if logfile else sys.stdout
-    try:
-        subprocess.check_call(cmd, stdout=log, stderr=subprocess.STDOUT, shell=True) # need to redirect stderr because edena writes some logging info there (e.g. "Computing overlaps >=30...")
-    finally:
-        if log != sys.stdout:
-            log.close()
-    print 'Edena (overlapping) executed!'
-
-    shutil.move('galaxy_output.ovl', output)
-
-
-if __name__ == "__main__":
-    __main__()
--- a/edena_ovl_wrapper.xml	Fri Oct 18 14:09:11 2013 -0400
+++ b/edena_ovl_wrapper.xml	Fri Jan 31 12:08:21 2014 -0500
@@ -1,75 +1,75 @@
-<tool id="edena_ovl_wrapper" name="Edena (overlapping)" version="0.2.2">
+<tool id="edena_ovl_wrapper" name="Edena (overlapping)" version="0.3">
   <description></description>
   <requirements>
-    <requirement type="package" version="3.130110">edena</requirement>
+    <requirement type="package" version="3.131028">edena</requirement>
   </requirements>
-  <version_command>edena -v</version_command>
-  <command interpreter="python">
-    edena_ovl_wrapper.py
-    \${EDENA_SITE_OPTIONS:---nThreads 2}
+  <version_command>edena | head -n 1</version_command>
+  <command>
+    edena
+    -nThreads \${GALAXY_SLOTS:-2}
     #if $input_selection.input == "unpaired_file"
+      -r
       #for $ui in $input_selection.unpaired_input
-        --unpaired_input=${ui.unpaired_file}
+        ${ui.unpaired_file}
       #end for
     #elif $input_selection.input == "dr_pairs"
+      -DRpairs
       #for $dpi in $input_selection.dr_pairs_input
-        --dr_pair_1=${dpi.dr_pair_1}
-        --dr_pair_2=${dpi.dr_pair_2}
+        ${dpi.dr_pair_1} ${dpi.dr_pair_2}
       #end for
     #elif $input_selection.input == "rd_pairs"
+      -RDpairs
       #for $rpi in $input_selection.rd_pairs_input
-        --rd_pair_1=${rpi.rd_pair_1}
-        --rd_pair_2=${rpi.rd_pair_2}
+        ${rpi.rd_pair_1} ${rpi.rd_pair_2}
       #end for
     #end if
     #if str($minOlap)
-      --minOlap=$minOlap
+      -M $minOlap
     #end if
     #if str($readsTruncation)
-      --readsTruncation=$readsTruncation
+      -t $readsTruncation
     #end if
-    --output=$output
-    --logfile=$logfile
+    2&gt;/dev/null ## need to discard stderr because edena writes some progress info there (e.g. "Computing overlaps >=30...")
   </command>
 
   <inputs>
     <conditional name="input_selection">
       <param name="input" type="select" label="Select input type">
         <option value="unpaired_file">Unpaired files</option>
-        <option value="dr_pairs">Direct-reverse paired-end files</option>
-        <option value="rd_pairs">Reverse-direct paired-end files</option>
+        <option value="dr_pairs">Paired-end (forward-reverse) files</option>
+        <option value="rd_pairs">Mate-pair (reverse-forward) files</option>
       </param>
 
       <when value="unpaired_file">
-        <repeat name="unpaired_input" title="Unpaired inputs (-r)" min="1">
+        <repeat name="unpaired_input" title="Unpaired input" help="(-r)" min="1">
           <param name="unpaired_file" type="data" format="fasta,fastq" label="Unpaired file" help="FASTA or FASTQ format" />
         </repeat>
       </when>
 
       <when value="dr_pairs">
-        <repeat name="dr_pairs_input" title="DR paired-end inputs (-DRpairs, -paired)" min="1">
-          <param name="dr_pair_1" type="data" format="fasta,fastq" label="DR paired-end file 1" help="FASTA or FASTQ format" />
-          <param name="dr_pair_2" type="data" format="fasta,fastq" label="DR paired-end file 2" help="FASTA or FASTQ format" />
+        <repeat name="dr_pairs_input" title="Paired-end (forward-reverse) file" help="(-DRpairs, -paired)" min="1">
+          <param name="dr_pair_1" type="data" format="fasta,fastq" label="Paired-end file 1" help="FASTA or FASTQ format" />
+          <param name="dr_pair_2" type="data" format="fasta,fastq" label="Paired-end file 2" help="FASTA or FASTQ format" />
         </repeat>
       </when>
 
       <when value="rd_pairs">
-        <repeat name="rd_pairs_input" title="RD paired-end inputs (-RDpairs, -matePairs)" min="1">
-          <param name="rd_pair_1" type="data" format="fasta,fastq" label="RD paired-end file 1" help="FASTA or FASTQ format" />
-          <param name="rd_pair_2" type="data" format="fasta,fastq" label="RD paired-end file 2" help="FASTA or FASTQ format" />
+        <repeat name="rd_pairs_input" title="Mate-pair (reverse-forward) file" help="(-RDpairs, -matePairs)" min="1">
+          <param name="rd_pair_1" type="data" format="fasta,fastq" label="Mate-pair file 1" help="FASTA or FASTQ format" />
+          <param name="rd_pair_2" type="data" format="fasta,fastq" label="Mate-pair file 2" help="FASTA or FASTQ format" />
         </repeat>
       </when>
     </conditional>
 
     <param name="minOlap" type="integer" value="" optional="true" label="Minimum overlap size to compute (-M)" help="If not specified, this value is set to half of the reads length. When the sequencing coverage is sufficient, you can increase this value which will reduce the computational time. Edena will compute the overlaps whose sizes range from this value to the reads length." />
 
-    <param name="readsTruncation" type="integer" value="" optional="true" label="3' end reads truncation (-t)" help="Use this option to truncate the 3’end of the reads such that the resulting length is the inserted value. You may consider reads truncation since it can significantly improve the assembly. Since Edena computes exact overlaps, only error free reads can take part to the assembly. Since errors are likely to occur at the 3’ ends, shortening the reads by some nucleotides may increase the number of errors-free reads in the dataset, and thus increase the assembly performance." />
+    <param name="readsTruncation" type="integer" value="" optional="true" label="3' end reads truncation (-t)" help="Use this option to truncate the 3’end of the reads to the specified length. You may consider reads truncation since it can significantly improve the assembly. Since Edena computes exact overlaps, only error free reads can take part to the assembly. Since errors are likely to occur at the 3’ ends, shortening the reads by some nucleotides may increase the number of errors-free reads in the dataset, and thus increase the assembly performance." />
 
   </inputs>
 
   <outputs>
-    <data name="logfile" format="txt" label="${tool.name} on ${on_string}: log" />
-    <data name="output" format="ovl" label="${tool.name} on ${on_string}: overlapping" />
+    <data name="logfile" format="txt" label="${tool.name} on ${on_string}: log" from_work_dir="out_overlapping.log" />
+    <data name="output" format="ovl" label="${tool.name} on ${on_string}: overlapping" from_work_dir="out.ovl" />
   </outputs>
 
   <tests>
@@ -78,7 +78,9 @@
   <help>
 **What it does**
 
-Edena is an overlaps graph based short reads assembler and is suited to Illumina GA reads. An assembly with Edena is a two step process: overlapping and assembling.
+Edena is an overlaps graph based short reads assembler and is suited to Illumina GA reads. This program requires the reads to be all the same length, as Illumina GA reads are. This is due to historical reasons and because it greatly simplifies several computational steps. 454 or Sanger reads are therefore not suited to Edena. If you provide multiple files with different read lengths, Edena will trim the 3’ end of the reads so that the reads are all the same length as the shortest reads in the file.
+
+An assembly with Edena is a two step process: overlapping and assembling.
 
 In the overlapping step, the reads files are provided to the program which computes the transitively reduced overlaps graph. This structure is then stored together with the sequence reads in the overlapping file.
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.rst	Fri Jan 31 12:08:21 2014 -0500
@@ -0,0 +1,29 @@
+Edena wrapper
+=============
+
+Configuration
+-------------
+
+edena_ovl_wrapper tool may be configured to use more than one CPU core by selecting an appropriate destination for this tool in Galaxy job_conf.xml file (see http://wiki.galaxyproject.org/Admin/Config/Jobs and http://wiki.galaxyproject.org/Admin/Config/Performance/Cluster ).
+
+If you are using Galaxy release_2013.11.04 or later, this tool will automatically use the number of CPU cores allocated by the job runner according to the configuration of the destination selected for this tool.
+
+If instead you are using an older Galaxy release, you should also add a line
+
+  GALAXY_SLOTS=N; export GALAXY_SLOTS
+
+(where N is the number of CPU cores allocated by the job runner for this tool) to the file
+
+  <tool_dependencies_dir>/edena/3.131028/crs4/edena/<hash_string>/env.sh
+
+Version history
+---------------
+
+- Release 2: Support Edena v. 3.131028 (new <version_command>, official overlapping log file, covStats output file removed, -lph and -sph options instead of -peHorizon). Use $GALAXY_SLOTS instead of $EDENA_SITE_OPTIONS. Directly call edena, remove edena_ovl_wrapper.py and edena_ass_wrapper.py . Discard stderr instead of redirecting to stdout. Do not redirect stdout to logfile. Add readme.rst .
+- Release 1: Simplify passing repeated params to Python script. Add more info to help sections.
+- Release 0: Initial release in the Tool Shed.
+
+Development
+-----------
+
+Development is hosted at https://bitbucket.org/crs4/orione-tools . Contributions and bug reports are very welcome!
--- a/tool_dependencies.xml	Fri Oct 18 14:09:11 2013 -0400
+++ b/tool_dependencies.xml	Fri Jan 31 12:08:21 2014 -0500
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <tool_dependency>
-  <package name="edena" version="3.130110">
+  <package name="edena" version="3.131028">
     <install version="1.0">
       <actions>
-        <action type="download_by_url">http://www.genomic.ch/edena/EdenaV3.130110.tar.gz</action>
+        <action type="download_by_url">http://www.genomic.ch/edena/EdenaV3.131028.tar.gz</action>
         <action type="shell_command">make</action>
         <action type="move_directory_files">
           <source_directory>bin</source_directory>
@@ -12,13 +12,10 @@
         <action type="set_environment">
           <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
         </action>
-        <action type="set_environment">
-          <environment_variable name="EDENA_SITE_OPTIONS" action="set_to">"--nThreads 2"</environment_variable>
-        </action>
       </actions>
     </install>
     <readme>
-Change the EDENA_SITE_OPTIONS variable in the installed env.sh file to adjust the number of threads to use (--nThreads).
+Configuration: Previously (until Release 1), the EDENA_SITE_OPTIONS variable in the installed env.sh file was used to adjust the number of threads to use (--nThreads). This is not used anymore and may be removed.
     </readme>
   </package>
 </tool_dependency>