view signature.xml @ 3:22af95e451e1 draft

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/msp_sr_signature commit a0ce81ec2c12e7f635b1a1056772ec306c4fb364
author drosofff
date Wed, 07 Jun 2017 18:14:41 -0400
parents 229645380cb9
children e77c0b28e9a2
line wrap: on
line source

<tool id="signature" name="Small RNA Signatures" version="2.1.2">
    <description />
    <requirements>
        <requirement type="package" version="1.1.2">bowtie</requirement>
        <requirement type="package" version="1.11.2=py27_0">numpy</requirement>
        <requirement type="package" version="0.11.2.1=py27_0">pysam</requirement>
        <requirement type="package" version="0.20_33=r3.3.1_0">r-lattice</requirement>
    </requirements>
    <command><![CDATA[
        python '$__tool_directory__'/signature.py
           --input '$refGenomeSource.input'
           --inputFormat '$refGenomeSource.input.ext'
           --minquery $minquery
           --maxquery $maxquery
           --mintarget $mintarget
           --maxtarget $maxtarget
           --minscope $minscope
           --maxscope $maxscope
           --outputOverlapDataframe $output
          #if $refGenomeSource.genomeSource == "history":
            --referenceGenome '$refGenomeSource.ownFile'
          #else:
            #silent reference= filter( lambda x: str( x[0] ) == str( $input.dbkey ), $__app__.tool_data_tables[ 'bowtie_indexes' ].get_fields() )[0][-1]
            --referenceGenome '$reference'
            --extract_index
          #end if
	  --graph $graph_type 
          --rcode '$sigplotter'
    ]]></command>
    <inputs>
        <conditional name="refGenomeSource">
            <param help="Built-ins were indexed using default options" label="Will you select a reference genome from your history or use a built-in index?" name="genomeSource" type="select">
                <option value="indexed">Use a built-in index</option>
                <option value="history">Use one from the history</option>
            </param>
            <when value="indexed">
                <param format="tabular,sam,bam" label="Compute signature from this bowtie standard output" name="input" type="data">
                    <validator message="database not set for this bowtie output. Select the database(=genome used for matching) manually, or select a reference fasta from your history." metadata_column="0" metadata_name="dbkey" table_name="bowtie_indexes" type="dataset_metadata_in_data_table" />
                </param>
            </when>
            <when value="history">
                <param format="fasta" label="Select the fasta reference" name="ownFile" type="data" />
                <param format="tabular,sam,bam" label="Compute signature from this bowtie standard output" name="input" type="data" />
            </when>
        </conditional>
        <param help="'23' = 23 nucleotides" label="Min size of query small RNAs" name="minquery" size="3" type="integer" value="23" />
        <param help="'29' = 29 nucleotides" label="Max size of query small RNAs" name="maxquery" size="3" type="integer" value="29" />
        <param help="'23' = 23 nucleotides" label="Min size of target small RNAs" name="mintarget" size="3" type="integer" value="23" />
        <param help="'29' = 29 nucleotides" label="Max size of target small RNAs" name="maxtarget" size="3" type="integer" value="29" />
        <param help="'1' = 1 nucleotide overlap" label="Minimal relative overlap analyzed" name="minscope" size="3" type="integer" value="1" />
        <param help="'1' = 1 nucleotide overlap" label="Maximal relative overlap analyzed" name="maxscope" size="3" type="integer" value="26" />
        <param help="Signature can be computed globally or by item present in the alignment file" label="Graph type" name="graph_type" type="select">
            <option selected="True" value="global">Global</option>
            <option value="lattice">Lattice</option>
        </param>
    </inputs>
    <outputs>
        <data format="tabular" label="signature data frame" name="output" />
        <data format="pdf" label="Overlap probabilities" name="output2" />
    </outputs>
    <tests>
        <test>
            <param name="genomeSource" value="history" />
            <param ftype="fasta" name="ownFile" value="ensembl.fa" />
            <param ftype="bam" name="input" value="sr_bowtie.bam" />
            <param name="minquery" value="23" />
            <param name="maxquery" value="29" />
            <param name="mintarget" value="23" />
            <param name="maxtarget" value="29" />
            <param name="minscope" value="5" />
            <param name="maxscope" value="15" />
            <param name="graph_type" value="global" />
            <output file="signature.tab" ftype="tabular" name="output" />
            <output file="signature.pdf" ftype="pdf" name="output2" />
        </test>
    </tests>
    <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>
    <citations>
            <citation type="doi">10.1007/978-1-4939-0931-5_12</citation>
    </citations>
    <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)
        signaturez=data.frame(signature[,1], (signature[,2] -mean(signature[,2]))/sd(signature[,2]))
        overlap_prob_z=data.frame(signature[,1], (signature[,3] -mean(signature[,3]))/sd(signature[,3]))
        YLIM=max(signature[,2])
        

        ## Open output2 PDF file
        pdf( "${output2}" )
        if (YLIM!=0) {
          par(mfrow=c(2,2),oma = c(0, 0, 3, 0))

          plot(signature[,1:2], type = "h", main="Numbers of pairs", cex.main=1, xlab="overlap (nt)", ylim=c(0,YLIM), ylab="Numbers of pairs", col="darkslateblue", lwd=4)

          plot(signaturez, type = "l", main="Number of pairs Z-scores", cex.main=1, xlab="overlap (nt)", ylab="z-score", pch=19, cex=0.2, col="darkslateblue", lwd=2)

          plot(signature[,1], signature[,3]*100, type = "l", main="Overlap probabilities",
             cex.main=1, xlab="overlap (nt)", ylab="Probability [%]", ylim=c(0,50),
             pch=19, col="darkslateblue", lwd=2)

          plot(overlap_prob_z, type = "l", main="Overlap Probability Z-scores", cex.main=1, xlab="overlap (nt)", ylab="z-score", pch=19, cex=0.2, col="darkslateblue", lwd=2)

          mtext("Overlap Signatures of ${minquery}-${maxquery} against ${mintarget}-${maxtarget}nt small RNAs", outer = TRUE, cex=1)
        }
        devname = dev.off()
        ## Close the PDF file
      }

      treillisgraph = function () {
        ## Open output2 PDF file
        pdf( "${output2}", 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(${minscope},${maxscope}), 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>
</tool>