view macs2_wrapper.xml @ 14:88634fc77f11 draft

Uploaded
author modencode-dcc
date Fri, 18 Jan 2013 16:08:48 -0500
parents 522a47128d55
children
line wrap: on
line source

<tool id="modencode_peakcalling_macs2" name="MACS2" version="2.0.10.2">
  <requirements>
    <requirement type="python-module">macs2</requirement>
    <requirement type="package" version="2.0.10.2">macs2</requirement>
    <!--<requirement type="set_environment">SCRIPT_PATH</requirement>-->
  </requirements>
  <description>Model-based Analysis of ChIP-Seq</description>
  <command interpreter="python">macs2_wrapper.py $options_file $outputs_file</command>
  <inputs>
    <!--experiment name and option of selecting paired or single end will always be present-->
    <param name="experiment_name" type="text" value="MACS2 in Galaxy" size="50" label="Experiment Name"/>
    
    <!--select one of the 7 major commands offered by macs2-->
    <conditional name="major_command">
      <param name="major_command_selector" type="select" label="Select action to be performed">
	<option value="callpeak">Peak Calling</option>
	<!--<option value="filterdup">filterdup</option>
	<option value="randsample">randsample</option>-->
	<option value="bdgcmp">Compare .bdg Files</option>
	<!--<option value="bdgdiff">bdgdiff</option>
	<option value="bdgpeakcall">bdgpeakcall</option>
	<option value="bdgbroadcall">bdgbroadcall</option>-->
      </param>
      <!--callpeak option of macs2-->
      <when value="callpeak">
	<!--may need to add a few more formats at later time-->
        <param name="input_chipseq_file1" type="data" format="bam" label="ChIP-Seq Tag File" />
        <param name="input_control_file1" type="data" format="bam" optional="True" label="ChIP-Seq Control File" />
	<param name="gsize" type="float" label="Effective genome size" value="2.7e+9" help="Human: 3.3e+9, Mouse: 3.0e+9, Fly: 1.9e+8, Worm: 1.3e+8 (--gsize)"/>
	<param name="bw" type="integer" label="Band width" value="300" help="(--bw)"/>
	<param name="xls_to_interval" label="Parse xls files into into distinct interval files" type="boolean" truevalue="True" falsevalue="False" checked="False"/>
	<param name="bdg" label="Save fragment pileup, control lambda, -log10pvalue/qvalue in bedGraph" type="boolean" truevalue="-B" falsevalue="" checked="False" help="files located in html report"/>

	<conditional name="pq_options">
	  <param name="pq_options_selector" type="select" label="Select p-value or q-value" help="default uses q-value">
	    <option value="qvalue">q-value</option>
	    <option value="pvalue">p-value</option>
	  </param>
	  <when value="pvalue">
	    <param name="pvalue" type="float" label="p-value cutoff for peak detection" value="1e-2" help="default: 1e-2 (--pvalue)"/>
	  </when>
	  <when value="qvalue">
	    <param name="qvalue" type="float" label="q-value cutoff for peak detection" value="5e-2" help="default: 5e-2 (--qvalue)"/>
	  </when> 
	</conditional>
	<conditional name="advanced_options">
	  <param name="advanced_options_selector" type="select" label="Display advanced options">
	    <option value="off">Hide</option>
	    <option value="on">Display</option>
	  </param>
	  <when value="on">
            <param name="mfoldlo" type="integer" label="Select the regions with MFOLD high-confidence enrichment ratio against background to build model (lower-limit)" value="10" help="(--mfold)"/>
	    <param name="mfoldhi" type="integer" label="Select the regions with MFOLD high-confidence enrichment ratio against background to build model (upper-limit)" value="30" help="(--mfold)"/>
	    <param name="nolambda" label="Use fixed background lambda as local lambda for every peak region" type="boolean" truevalue="--nolambda" falsevalue="" checked="False" help="up to 9X more time consuming (--nolambda)"/>
	  </when>
	  <when value="off">
	    <!--display nothing-->
	  </when>
	</conditional>
    	<conditional name="nomodel_type">
          <param name="nomodel_type_selector" type="select" label="Build Model">
	   <option value="nomodel">Do not build the shifting model (--nomodel enabled)</option>
           <option value="create_model" selected="true">Build the shifting model (--nomodel disabled)</option>
          </param>
          <when value="nomodel">
            <param name="shiftsize" type="integer" label="Arbitrary shift size in bp" value="100" help="(--shiftsize)"/>
          </when>
        </conditional>
      </when>

      <!--callpeak option of macs2-->
      <when value="bdgcmp">
        <param name="input_chipseq_file1" type="data" format="bam" label="ChIP-Seq Tag File" />
        <param name="input_control_file1" type="data" format="bam" optional="True" label="ChIP-Seq Control File" />
	<param name="pseudocount" type="float" label="Set pseudocount" value="0.00001" help="default: 0.00001 (-p)"/>

        <conditional name="bdgcmp_options">
          <param name="bdgcmp_options_selector" type="select" label="Select action to be performed">
	    <option value="ppois">ppois</option>
	    <option value="qpois">qpois</option>
	    <option value="subtract">subtract</option>
	    <option value="logFE">logFE</option>
	    <option value="FE">FE</option>
	    <option value="logLR">logLR</option>
          </param>
	</conditional>
      </when>
    </conditional>
  </inputs>

  <outputs>
    <!--callpeaks output-->
    <data name="output_bed_file" format="bed" label="${tool.name}: callpeak on ${on_string} (peaks: bed)">
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <data name="output_extra_files" format="html" label="${tool.name}: callpeak on ${on_string} (html report)">
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <data name="output_peaks_file" format="xls" label="${tool.name}: callpeak on ${on_string} (peaks: xls)">
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <data name="output_narrowpeaks_file" format="txt" label="${tool.name}: callpeak on ${on_string} (peaks: encodePeak)">
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <data name="output_xls_to_interval_peaks_file" format="interval" label="${tool.name}: callpeak on ${on_string} (peaks: interval)">
      <filter>major_command['xls_to_interval'] is True</filter>
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <data name="output_xls_to_interval_negative_peaks_file" format="interval" label="${tool.name}: callpeak on ${on_string} (negative peaks: interval)">
      <filter>major_command['xls_to_interval'] is True</filter>
      <filter>major_command['input_control_file1'] is not None</filter>
      <filter>major_command['major_command_selector'] == 'callpeak'</filter>
    </data>
    <!--bdgcmp output-->
    <data name="output_bdgcmp_file" format="bdg" label="${tool.name}: bdgcmp on ${on_string} (bdg)">
      <filter>major_command['major_command_selector'] == 'bdgcmp'</filter>
    </data>
  </outputs>
  <configfiles>

    <configfile name="outputs_file">&lt;%
import simplejson
%&gt;
##=======================================================================================
#set $__outputs = { 'command':str( $major_command.major_command_selector ) }
#if str( $major_command.major_command_selector ) == 'callpeak':
	#set $__outputs['output_bed_file'] = str( $output_bed_file )
	#set $__outputs['output_extra_file'] = str( $output_extra_files )
	#set $__outputs['output_extra_file_path'] = str( $output_extra_files.files_path )
	#set $__outputs['output_peaks_file'] = str( $output_peaks_file )
	#set $__outputs['output_narrowpeaks_file'] = str( $output_narrowpeaks_file )
	#set $__outputs['output_xls_to_interval_peaks_file'] = str( $output_xls_to_interval_peaks_file )
	#set $__outputs['output_xls_to_interval_negative_peaks_file'] = str( $output_xls_to_interval_negative_peaks_file )
#end if
##=======================================================================================
#if str( $major_command.major_command_selector ) == 'bdgcmp':
	#set $__outputs['output_bdgcmp_file'] = str( $output_bdgcmp_file )
#end if

${ simplejson.dumps( __outputs ) }
    </configfile>
    <configfile name="options_file">&lt;%
import simplejson
%&gt;
##=======================================================================================
#set $__options = { 'experiment_name':str( $experiment_name ) }
##treatment/tag input files and format
#set $__options['input_chipseq'] = [ str( $major_command.input_chipseq_file1 ) ]
#set $__options['format'] = $major_command.input_chipseq_file1.extension.upper()

##control/input files
#set $__options['input_control'] = []
#if str( $major_command.input_control_file1 ) != 'None':
	#set $_hole = __options['input_control'].append( str( $major_command.input_control_file1 ) )
#end if

#if str( $major_command.major_command_selector ) == 'callpeak':
	#set $__options['command'] = str( "callpeak" )
	#set $__options['gsize'] = int( $major_command.gsize )
	#set $__options['bw'] = str( $major_command.bw )
	#set $__options['bdg'] = str( $major_command.bdg )
	#set $__options['xls_to_interval'] = str( $major_command.xls_to_interval )

	##advanced options
	#if str( $major_command.advanced_options.advanced_options_selector ) == 'on':
		#set $__options['mfoldlo'] = int( $major_command.advanced_options.mfoldlo )
		#set $__options['mfoldhi'] = int( $major_command.advanced_options.mfoldhi )
		#set $__options['nolambda'] = str( $major_command.advanced_options.nolambda )
	#else:
		#set $__options['mfoldlo'] = int( "10" )
		#set $__options['mfoldhi'] = int( "30" )
		#set $__options['nolambda'] = str( "" )		
	#end if

	##enable xls file options
	##if str( $major_command.xls_to_interval ) == 'create':
		##set $__options['xls_to_interval'] = { 'peaks_file': str( $output_xls_to_interval_peaks_file ), 'negative_peaks_file': str( $output_xls_to_interval_negative_peaks_file ) }
	##end if
	
	##pq value select options
	#if str( $major_command.pq_options.pq_options_selector ) == 'qvalue':
		#set $__options['qvalue'] = str( $major_command.pq_options.qvalue )
	#else:
		#set $__options['pvalue'] = str( $major_command.pq_options.pvalue )
	#end if
	
	##model options
	#if str( $major_command.nomodel_type.nomodel_type_selector ) == 'nomodel':
		#set $__options['nomodel'] = str( $major_command.nomodel_type.shiftsize )
	#end if
#end if
##=======================================================================================
#if str( $major_command.major_command_selector ) == 'bdgcmp':
	#set $__options['command'] = str( "bdgcmp" )
	#set $__options['pseudocount'] = float( str( $major_command.pseudocount ) )
	#set $__options['m'] = str( $major_command.bdgcmp_options.bdgcmp_options_selector )
#end if
##=======================================================================================

${ simplejson.dumps( __options ) }
    </configfile>
  </configfiles>
  <tests>
	<!--none yet for macs2-->
  </tests>
  <help>
**What it does**

With the improvement of sequencing techniques, chromatin immunoprecipitation followed by high throughput sequencing (ChIP-Seq)
is getting popular to study genome-wide protein-DNA interactions. To address the lack of powerful ChIP-Seq analysis method, we present a novel algorithm, named Model-based Analysis of ChIP-Seq (MACS), for
identifying transcript factor binding sites. MACS captures the influence of genome complexity to evaluate the significance of enriched ChIP regions, and MACS improves the spatial resolution of
binding sites through combining the information of both sequencing tag position and orientation. MACS can be easily used for ChIP-Seq data alone, or with control sample with the increase of specificity.

View the original MACS2 documentation: https://github.com/taoliu/MACS/blob/master/README

------

**Usage**

**Peak Calling**: Main MACS2 Function to Call peaks from alignment results.

**Compare .bdg files**: Deduct noise by comparing two signal tracks in bedGraph.


------

**Citation**

For the underlying tool, please cite Zhang Y, Liu T, Meyer CA, Eeckhoute J, Johnson DS, Bernstein BE, Nusbaum C, Myers RM, Brown M, Li W, Liu XS. Model-based analysis of ChIP-Seq (MACS). Genome Biol. 2008;9(9):R137.

Integration of MACS2 with Galaxy performed by Ziru Zhou ( ziruzhou@gmail.com ). Please send your comments/questions to modENCODE DCC at help@modencode.org.
  </help>
</tool>