changeset 56:07a5042bbe90

Uploaded
author bgruening
date Mon, 12 Aug 2013 14:25:53 -0400
parents e9cd105a8856
children 5b919ef94655
files homer.py tool-data/homer_available_genomes.loc.sample tools/findMotifsGenome.xml tools/findPeaks.xml
diffstat 4 files changed, 106 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/homer.py	Mon Aug 12 09:06:47 2013 -0400
+++ b/homer.py	Mon Aug 12 14:25:53 2013 -0400
@@ -1,14 +1,14 @@
 """
 HOMER special datatypes
 """
-
+import os
 from galaxy.datatypes.data import get_file_peek
 from galaxy.datatypes.data import Text, Data
 from galaxy.datatypes.metadata import MetadataElement
 from galaxy.datatypes.images import Html
 
 
-class TagDirectory( Text ):
+class TagDirectory( Html ):
     """Base class for HOMER's Tag Directory datatype."""
 
     file_ext = 'homer_tagdir'
@@ -16,7 +16,7 @@
     allow_datatype_change = False
 
     def __init__(self, **kwd):
-        Text.__init__( self, **kwd )
+        Html.__init__( self, **kwd )
         #self.add_composite_file('tagInfo.txt', description = 'basic configuration information', mimetype = 'text/html') # Contains basic configuration information
         self.add_composite_file('tagLengthDistribution.txt', description = 'histogram of read lengths used for alignment', mimetype = 'text/html') # File contains a histogram of read lengths used for alignment.
         self.add_composite_file('tagCountDistribution.txt', description = 'histogram of clonal read depth, showing the number of reads per unique position', mimetype = 'text/html') # File contains a histogram of clonal read depth, showing the number of reads per unique position.
@@ -29,25 +29,23 @@
 
     def regenerate_primary_file(self,dataset):
         """
-        cannot do this until we are setting metadata 
+            regenerate the index file after metadata generation
         """
-        flist = os.listdir(dataset.extra_files_path)
-        rval = ['<html><head><title>CuffDiff Output</title></head>']
+        rval = ['<html><head><title>HOMER database files</title></head>']
         rval.append('<body>')
         rval.append('<p/>CuffDiff Outputs:<p/><ul>')
-        for i,fname in enumerate(flist):
+        for fname in os.listdir(dataset.extra_files_path):
             sfname = os.path.split(fname)[-1]
             rval.append( '<li><a href="%s" type="text/html">%s</a>' % ( sfname, sfname ) )
         rval.append( '</ul></body></html>' )
-        f = file(dataset.file_name,'w')
-        f.write("\n".join( rval ))
-        f.write('\n')
+        f = file( dataset.file_name, 'w' )
+        f.write( '%s\n' % '\n'.join( rval ) )
         f.close()
-
-    def set_meta( self, dataset, **kwd ):
-        Text.set_meta( self, dataset, **kwd )
-        self.regenerate_primary_file(dataset)
-
+        if not dataset.info:
+            dataset.info = 'HOMER datatype object'
+        if not dataset.blurb:
+            dataset.blurb = 'Composite file - HOMER'
+        return True
 
     def generate_primary_file( self, dataset = None ):
         rval = ['<html><head><title>HOMER database files</title></head><ul>']
@@ -59,6 +57,11 @@
         rval.append( '</ul></html>' )
         return "\n".join( rval )
 
+    def set_meta( self, dataset, **kwd ):
+        Html.set_meta( self, dataset, **kwd )
+        self.regenerate_primary_file(dataset)
+
+
     def display_data(self, trans, data, preview=False, filename=None,
                      to_ext=None, size=None, offset=None, **kwd):
         """Apparently an old display method, but still gets called.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/homer_available_genomes.loc.sample	Mon Aug 12 14:25:53 2013 -0400
@@ -0,0 +1,6 @@
+hg18
+hg19
+mm9
+mm10
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/findMotifsGenome.xml	Mon Aug 12 14:25:53 2013 -0400
@@ -0,0 +1,61 @@
+<tool id="homer_findMotifsGenome" name="identify motifs" version="0.1.2">
+    <requirements>
+        <requirement type="package" version="35x1">blat</requirement>
+        <requirement type="package" version="2.8.2">weblogo</requirement>
+        <requirement type="package" version="9.07">ghostscript</requirement>
+    </requirements>
+    <description></description>
+    <!--<version_command></version_command>-->
+    <command>
+        #import tempfile
+        #set $tmpdir = tempfile.mkdtemp()
+        export PATH=\$PATH:$database.fields.path;
+
+        findMotifsGenome $infile ${infile.metadata.dbkey} $tmpdir
+
+
+        ;
+        cp $tmpdir/homerResults.html $denovo_results_html;
+        cp -r $tmpdir/homerResults/* "$denovo_results_html.files_path";
+
+        cp $tmpdir/knownResults.html $known_results_html;
+        cp -r $tmpdir/knownResults/* "$known_results_html.files_path";
+
+
+
+        2>&#38;1
+
+    </command>
+    <inputs>
+        <param name="database" type="select" label="HOMER database" min="1">
+            <options from_file="homer.loc">
+                <column name="value" index="0"/>
+                <column name="name" index="1"/>
+                <column name="path" index="2"/>
+            </options>
+        </param>
+
+        <param name="infile" format="bed" type="data" label="BED file" help="a file containing genomic coordinates">
+            <validator type="dataset_metadata_in_file" filename="homer_available_genomes.loc" metadata_name="dbkey" metadata_column="0" message="No HOMER genome build available for your species."/>
+        </param>
+
+    </inputs>
+    <outputs>
+        <data format="html" name="denovo_results_html" label="HOMER de novo motifs">
+        <data format="html" name="known_results_html" label="HOMER known motifs">
+    </outputs>
+    <tests>
+        <test>
+
+        </test>
+    </tests>
+
+    <help>
+
+  .. class:: infomark
+
+  **Homer findMotifsGenome**
+
+    </help>
+</tool>
+
--- a/tools/findPeaks.xml	Mon Aug 12 09:06:47 2013 -0400
+++ b/tools/findPeaks.xml	Mon Aug 12 14:25:53 2013 -0400
@@ -1,38 +1,40 @@
 <tool id="homer_findPeaks" name="homer_findPeaks" version="0.1.2">
     <requirements>
-        <requirement type="package" version="4.1">homer</requirement>
+        <requirement type="package" version="35x1">blat</requirement>
+        <requirement type="package" version="2.8.2">weblogo</requirement>
+        <requirement type="package" version="9.07">ghostscript</requirement>
     </requirements>
     <description>Homer's peakcaller. Requires tag directories (see makeTagDirectory)</description>
     <!--<version_command></version_command>-->
     <command>
-        findPeaks $tagDir.extra_files_path $options -o $outputPeakFile
+        export PATH=\$PATH:$database.fields.path;
 
-    #if $control_tagDir:
-        -i $control_tagDir.extra_files_path
+        findPeaks $affected_tag_dir.extra_files_path -o $outputPeakFile
+
+    #if $control_tag_dir:
+        -i $control_tag_dir.extra_files_path
     #end if
 
-        2&gt; $out_log || echo "Error running findPeaks." >&amp;2
+    2>&#38;1
+
     </command>
     <inputs>
-        <param format="homerTagDirectory" name="tagDir" type="data" label="tag directory" help="Must be made with homer_makeTagDirectory" />
-        <param format="homerTagDirectory" name="control_tagDir" type="data" optional="True" label="Control tag directory" help="Must be made with homer_makeTagDirectory" />
-        <param type="text" name="options" label="Extra options" value="" help="See link below for more options">
-          <sanitizer>
-            <valid initial="string.printable">
-             <remove value="&apos;"/>
-             <remove value="/"/>
-            </valid>
-            <mapping initial="none">
-              <add source="&apos;" target="__sq__"/>
-            </mapping>
-          </sanitizer>
+        <param name="database" type="select" label="HOMER database" min="1">
+            <options from_file="homer.loc">
+                <column name="value" index="0"/>
+                <column name="name" index="1"/>
+                <column name="path" index="2"/>
+            </options>
         </param>
+        <param name="affected_tag_dir" format="homer_tagdir" type="data" label="tag directory" help="Must be made with the tool makeTagDirectory" />
+        <param name="control_tag_dir" type="data" format="homer_tagdir" optional="True" label="Control tag directory" help="Must be made with makeTagDirectory" />
+
     </inputs>
     <outputs>
         <!--<data format="html" name="html_outfile" label="index" />-->
         <!--<data format="html" hidden="True" name="html_outfile" label="index.html" />-->
-        <data format="txt" name="outputPeakFile" label="${tool.name} on #echo os.path.splitext(str($tagDir.name))[0]#.txt" />
-        <data format="txt" name="out_log" label="${tool.name} on #echo os.path.splitext(str($tagDir.name))[0]#.log" />
+        <data format="txt" name="outputPeakFile" label="${tool.name} on #echo os.path.splitext(str($affected_tag_dir.name))[0]#.txt" />
+        <!--<data format="txt" name="out_log" label="${tool.name} on #echo os.path.splitext(str($tagDir.name))[0]#.log" />-->
     </outputs>
     <tests>
         <test>