Add CCAT ChIP-seq peak/region caller.

This commit is contained in:
Daniel Blankenberg
2011-01-03 11:15:29 -05:00
parent b2b891d52d
commit b9d790af55
5 changed files with 173 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
#Provide Pre-compiled CCAT peak/region caller configuration files
#UID Description path_to_config_file
#ccat_2.0_tf_config CCAT provided Transcription Factor Binding /path_to/ccat/configs/config_TF.txt
#ccat_2.0_histone_config CCAT provided Histone Modification /path_to/ccat/configs/config_histone.txt
+1
View File
@@ -313,6 +313,7 @@
</section>
<section name="NGS: Peak Calling" id="peak_calling">
<tool file="peak_calling/macs_wrapper.xml" />
<tool file="peak_calling/ccat_2_wrapper.xml" />
<tool file="genetrack/genetrack_indexer.xml" />
<tool file="genetrack/genetrack_peak_prediction.xml" />
</section>
+5
View File
@@ -70,4 +70,9 @@
<columns>value, dbkey, name, path</columns>
<file path="tool-data/bowtie_indices.loc" />
</table>
<!-- Locations of configurations in the CCAT peak/region caller format -->
<table name="ccat_configurations" comment_char="#">
<columns>value, name, path</columns>
<file path="tool-data/ccat_configurations.loc" />
</table>
</tables>
+40
View File
@@ -0,0 +1,40 @@
import sys, subprocess, tempfile, shutil, os.path
CCAT_BINARY = "CCAT"
def get_top_count( filename ):
for line in open( filename ):
if line.startswith( 'outputNum' ):
return int( line.split()[-1].strip() )
def stop_err( tmp_dir, exception ):
print >> sys.stderr, "Error running CCAT."
shutil.rmtree( tmp_dir ) #some error has occurred, provide info and remove possibly non-empty temp directory
raise exception
def main():
input_tag_file = sys.argv[1]
input_control_file = sys.argv[2]
chrom_info_file = sys.argv[3]
input_config_file = sys.argv[4]
project_name = sys.argv[5]
output_peak_file = sys.argv[6]
output_region_file = sys.argv[7]
output_top_file = sys.argv[8]
output_log_file = sys.argv[9]
tmp_dir = tempfile.mkdtemp()
try:
proc = subprocess.Popen( args="%s %s > %s" % ( CCAT_BINARY, " ".join( map( lambda x: "'%s'" % x, [ input_tag_file, input_control_file, chrom_info_file, input_config_file, project_name ] ) ), output_log_file ), shell=True, cwd=tmp_dir )
proc.wait()
if proc.returncode:
raise Exception( "Error code: %i" % proc.returncode )
output_num = get_top_count( input_config_file )
shutil.move( os.path.join( tmp_dir, "%s.significant.peak" % project_name ), output_peak_file )
shutil.move( os.path.join( tmp_dir, "%s.significant.region" % project_name ), output_region_file )
shutil.move( os.path.join( tmp_dir, "%s.top%i.peak" % ( project_name, output_num ) ), output_top_file )
except Exception, e:
return stop_err( tmp_dir, e )
os.rmdir( tmp_dir ) #clean up empty temp working directory
if __name__ == "__main__": main()
+123
View File
@@ -0,0 +1,123 @@
<tool id="peakcalling_ccat2" name="CCAT" version="0.0.1">
<description>Control-based ChIP-seq Analysis Tool</description>
<command interpreter="python">ccat_2_wrapper.py '$input_tag_file' '$input_control_file' '$chromInfo'
#if str( $options_type[ 'options_type_selector' ] ) == 'advanced':
'$input_advanced_config_file'
#else:
'${ options_type.input_config_file.get_field( 'path' ) }'
#end if
'CCAT in Galaxy'
'$output_peak_file' '$output_region_file' '$output_top_file' '$output_log_file'</command>
<requirements>
<requirement type="binary">CCAT</requirement>
</requirements>
<inputs>
<param name="input_tag_file" type="data" format="bed" label="ChIP-Seq Tag File" >
<validator type="unspecified_build" />
</param>
<param name="input_control_file" type="data" format="bed" label="ChIP-Seq Control File" >
<validator type="unspecified_build" />
</param>
<conditional name="options_type">
<param name="options_type_selector" type="select" label="Advanced Options">
<option value="basic" selected="True">Hide Advanced Options</option>
<option value="advanced">Show Advanced Options</option>
</param>
<when value="basic">
<param name="input_config_file" type="select" label="Select a pre-defined configuration file">
<options from_data_table="ccat_configurations">
<validator type="no_options" message="No configurations are available"/>
</options>
</param>
</when>
<when value="advanced">
<param name="fragment_size" type="integer" label="Length of DNA fragment" value="200"/>
<param name="sliding_window_size" type="integer" label="Sliding window size" value="500" help="transcription factor binding default: 300; histone modifications default: 500"/>
<param name="moving_step" type="integer" label="Step of sliding window" value="50" help="transcription factor binding default: 10; histone modifications default: 50"/>
<param name="is_strand_sensitive_mode" type="select" label="isStrandSensitiveMode" >
<option value="1">Transition from sense strand to anti-sense strand</option>
<option value="0" selected="True">Local maximum of read-enrichment profile</option>
</param>
<param name="min_count" type="integer" label="Minimum number of read counts at the peak" value="4"/>
<param name="output_num" type="integer" label="Number of peaks reported in top peak file" value="100000"/>
<param name="random_seed" type="integer" label="Random Seed" value="123456"/>
<param name="min_score" type="float" label="Minimum score of normalized difference" value="3.0"/>
<param name="bootstrap_pass" type="integer" label="Number of passes in the bootstrapping process" value="50"/>
</when>
</conditional>
</inputs>
<outputs>
<data name="output_peak_file" format="interval" label="${tool.name} on ${on_string} (peaks)">
<actions>
<action type="metadata" name="chromCol" default="1"/>
<action type="metadata" name="startCol" default="3"/>
<action type="metadata" name="endCol" default="4"/>
</actions>
</data>
<data name="output_region_file" format="interval" label="${tool.name} on ${on_string} (regions)">
<actions>
<action type="metadata" name="chromCol" default="1"/>
<action type="metadata" name="startCol" default="3"/>
<action type="metadata" name="endCol" default="4"/>
</actions>
</data>
<data name="output_top_file" format="interval" label="${tool.name} on ${on_string} (top peaks)">
<actions>
<action type="metadata" name="chromCol" default="1"/>
<action type="metadata" name="startCol" default="3"/>
<action type="metadata" name="endCol" default="4"/>
</actions>
</data>
<data name="output_log_file" format="txt" label="${tool.name} on ${on_string} (log)"/>
</outputs>
<configfiles>
<configfile name="input_advanced_config_file">#if str( $options_type['options_type_selector' ] ) == 'advanced':
fragmentSize ${options_type[ 'fragment_size' ]}
slidingWinSize ${options_type[ 'sliding_window_size' ]}
movingStep ${options_type[ 'moving_step' ]}
isStrandSensitiveMode ${options_type[ 'is_strand_sensitive_mode' ]}
minCount ${options_type[ 'min_count' ]}
outputNum ${options_type[ 'output_num' ]}
randomSeed ${options_type[ 'random_seed' ]}
minScore ${options_type[ 'min_score' ]}
bootstrapPass ${options_type[ 'bootstrap_pass' ]}
#end if</configfile>
</configfiles>
<tests>
<test>
<param name="input_tag_file" value="chipseq_enriched.bed.gz" ftype="bed" dbkey="hg18" />
<param name="input_control_file" value="chipseq_input.bed.gz" ftype="bed" dbkey="hg18" />
<param name="options_type_selector" value="basic" />
<param name="input_config_file" value="ccat_2.0_histone_config" />
<output name="output_peak_file" file="peakcalling_ccat2/ccat2_test_peak_out_1.interval" />
<output name="output_region_file" file="peakcalling_ccat2/ccat2_test_region_out_1.interval" />
<output name="output_top_file" file="peakcalling_ccat2/ccat2_test_top_out_1.interval" />
<output name="output_log_file" file="peakcalling_ccat2/ccat2_test_log_out_1.interval" />
</test>
<test>
<param name="input_tag_file" value="chipseq_enriched.bed.gz" ftype="bed" dbkey="hg18" />
<param name="input_control_file" value="chipseq_input.bed.gz" ftype="bed" dbkey="hg18" />
<param name="options_type_selector" value="advanced" />
<param name="fragment_size" value="200" />
<param name="sliding_window_size" value="500" />
<param name="moving_step" value="50" />
<param name="is_strand_sensitive_mode" value="0" />
<param name="min_count" value="4" />
<param name="output_num" value="100000" />
<param name="random_seed" value="123456" />
<param name="min_score" value="3.0" />
<param name="bootstrap_pass" value="50" />
<output name="output_peak_file" file="peakcalling_ccat2/ccat2_test_peak_out_1.interval" />
<output name="output_region_file" file="peakcalling_ccat2/ccat2_test_region_out_1.interval" />
<output name="output_top_file" file="peakcalling_ccat2/ccat2_test_top_out_1.interval" />
<output name="output_log_file" file="peakcalling_ccat2/ccat2_test_log_out_1.interval" />
</test>
</tests>
<help>
**What it does**
This tool allows ChIP-seq peak/region calling using CCAT.
View the original CCAT documentation: http://cmb.gis.a-star.edu.sg/ChIPSeq/paperCCAT.htm.
</help>
</tool>