view piRNAsignature.xml @ 5:1b590866c534 draft

Uploaded
author drosofff
date Mon, 23 Jun 2014 05:23:00 -0400
parents a8844a18de0d
children
line wrap: on
line source

<tool id="piRNAsignature" name="piRNA Signatures" version="1.0.1">
	<description></description>
	<command interpreter="python">
          piRNAsignature.py $refGenomeSource.input $refGenomeSource.input.ext $minquery $maxquery $mintarget $maxtarget $minscope $maxscope $output
          #if $refGenomeSource.genomeSource == "history":
            $refGenomeSource.ownFile
            --do_not_extract_index
          #else:
            #silent reference= filter( lambda x: str( x[0] ) == str( $input.dbkey ), $__app__.tool_data_tables[ 'bowtie_indexes' ].get_fields() )[0][-1]
            $reference
            --extract_index
          #end if
	  $graph_type 
          $sigplotter
       </command>

	<inputs>
          <conditional name="refGenomeSource">
             <param name="genomeSource" type="select" label="Will you select 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="history">Use one from the history</option>
             </param>
	     <when value="indexed">
  	        <param name="input" type="data" format="tabular,sam,bam" label="Compute signature from this bowtie standard output">
		  <validator type="dataset_metadata_in_data_table" table_name="bowtie_indexes" metadata_name="dbkey" metadata_column="0" message="database not set for this bowtie output. Select the database(=genome used for matching) manually, or select a reference fasta from your history."/>
	        </param>
	     </when>
             <when value="history">
                <param name="ownFile" type="data" format="fasta"  label="Select the fasta reference" />
  	        <param name="input" type="data" format="tabular,sam,bam" label="Compute signature from this bowtie standard output"/>
             </when>
          </conditional>  <!-- refGenomeSource -->
		<param name="minquery" type="integer" size="3" value="23" label="Min size of query small RNAs" help="'23' = 23 nucleotides"/>
		<param name="maxquery" type="integer" size="3" value="29" label="Max size of query small RNAs" help="'29' = 29 nucleotides"/>
                <param name="mintarget" type="integer" size="3" value="23" label="Min size of target small RNAs" help="'23' = 23 nucleotides"/>
                <param name="maxtarget" type="integer" size="3" value="29" label="Max size of target small RNAs" help="'29' = 29 nucleotides"/>
                <param name="minscope" type="integer" size="3" value="1" label="Minimal relative overlap analyzed" help="'1' = 1 nucleotide overlap"/>
                <param name="maxscope" type="integer" size="3" value="26" label="Maximal relative overlap analyzed" help="'1' = 1 nucleotide overlap"/>
		<param name="graph_type" type="select" label="Graph type" help="Signature can be computed globally or by item present in the alignment file">
		  <option value="global" selected="True">Global</option>
                  <option value="lattice">Lattice</option>
		</param>
	</inputs>

  <configfiles>
    <configfile name="sigplotter">
      graph_type = "${graph_type}"

      globalgraph = function () {
        ## Setup R error handling to go to stderr
        options( show.error.messages=F,
                 error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
        signature = read.delim("${output}", header=TRUE)
        ## Open output1 PDF file
        pdf( "${output1}" )
        signaturez=(signature[,2] -mean(signature[,2]))/sd(signature[,2])
        plot(signaturez, type = "b", main="signature", cex.main=2, xlab="overlap (nt)", ylab="z-score", pch=19, cex=0.8, col="darkslateblue", lwd=3, cex.lab=1.5, cex.axis=1.4, xaxt="n")
        axis(1, at=seq(from=1, to=length(signature[,1]), by=3) )
        devname = dev.off()
        ## Close the PDF file
        ## Open output2 PDF file
        pdf( "${output2}" )
        YLIM=max(signature[,2])
        plot(signature[,1:2], type = "h", xlab="overlap (nt)", ylim=c(0,YLIM), ylab="number of pairs", col="darkslateblue", lwd=7)
        devname = dev.off()
        ## Close the PDF file
        ## Open output3 PDF file
        pdf( "${output3}" )
        plot(signature[,1], signature[,3]*100, type = "l", main="ping-pong Signature of ${minquery}-${maxquery} against ${mintarget}-${maxtarget}nt small RNAs",
             cex.main=1, xlab="overlap (nt)", ylab="ping-pong signal [%]", ylim=c(0,50),
             pch=19, col="darkslateblue", lwd =4, cex.lab=1.2, cex.axis=1, xaxt="n")
        axis(1, at=seq(from=1, to=length(signature[,1]), by=3) )
        devname = dev.off()
        ## Close the PDF file
      }

      treillisgraph = function () {
        ## Open output3 PDF file
        pdf( "${output3}", paper="special", height=11.69, width=8.2677 )
        signature = read.delim("${output}", header=TRUE)
        options( show.error.messages=F,
               error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
        library(lattice)
        print (xyplot(signature[,3]*100~signature[,1]|signature[,4], type = "l", xlim=c(1,26), main="ping-pong Signature of ${minquery}-${maxquery} against ${mintarget}-${maxtarget}nt small RNAs",
             par.strip.text=list(cex=.5), strip=strip.custom(which.given=1, bg="lightblue"), scales=list(cex=0.5),
             cex.main=1, cex=.5, xlab="overlap (nt)", ylab="ping-pong signal [%]",
             pch=19, col="darkslateblue", lwd =1.5, cex.lab=1.2, cex.axis=1.2,
             layout=c(4,12), as.table=TRUE, newpage = T) )
        devnname = dev.off()
      }

      if (graph_type=="global") {
	globalgraph()

      }
      if(graph_type=="lattice") {
        treillisgraph()
      }
    </configfile>
  </configfiles>

        <outputs>
                <data name="output" format="tabular" label = "signature data frame"/>
                <data name="output2" format="pdf" label="number of pairs signature">
                <filter>(graph_type == "global")</filter>
                </data>
                <data name="output1" format="pdf" label="z-score signature">
                <filter>(graph_type == "global")</filter>
                </data>
                <data name="output3" format="pdf" label="ping-pong signal (hannon algo.)"/>
        </outputs>

        <help>

**What it does**

This tool computes the number of pairs by overlap classes (in nt) from a bowtie output file, the z-score calculated from these numbers of pairs, and the ping-pong signal as described in Brennecke et al (2009) Science.
The numerical options set the min and max size of both the query small rna class and the target small rna class
Three type of signals are plotted in separate pdf files, the number of pairs founds, the z-score calculated from these numbers of pairs, and the ping-pong signal as described in Brennecke et al (2009) Science.

        </help>
</tool>