Mercurial > repos > greg > multigps
changeset 18:e3d9e74cae68 draft
Uploaded
author | greg |
---|---|
date | Tue, 13 Dec 2016 13:02:36 -0500 |
parents | 426f8753acb2 |
children | fc857bf96781 |
files | all_fasta.loc.sample macros.xml multigps.py multigps.xml multigps_macros.xml multigps_v0.5.jar test-data/exclude_file.txt test-data/reb1_chipexo.distrib.tabular tool-data/all_fasta.loc.sample tool_dependencies.xml |
diffstat | 10 files changed, 538 insertions(+), 489 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/all_fasta.loc.sample Tue Dec 13 13:02:36 2016 -0500 @@ -0,0 +1,18 @@ +#This file lists the locations and dbkeys of all the fasta files +#under the "genome" directory (a directory that contains a directory +#for each build). The script extract_fasta.py will generate the file +#all_fasta.loc. This file has the format (white space characters are +#TAB characters): +# +#<unique_build_id> <dbkey> <display_name> <file_path> +# +#So, all_fasta.loc could look something like this: +# +#apiMel3 apiMel3 Honeybee (Apis mellifera): apiMel3 /path/to/genome/apiMel3/apiMel3.fa +#hg19canon hg19 Human (Homo sapiens): hg19 Canonical /path/to/genome/hg19/hg19canon.fa +#hg19full hg19 Human (Homo sapiens): hg19 Full /path/to/genome/hg19/hg19full.fa +# +#Your all_fasta.loc file should contain an entry for each individual +#fasta file. So there will be multiple fasta files for each build, +#such as with hg19 above. +#
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Tue Dec 13 13:02:36 2016 -0500 @@ -0,0 +1,46 @@ +<?xml version='1.0' encoding='UTF-8'?> +<macros> + <xml name="requirements"> + <requirements> + <requirement type="package" version="3.14.0">bioconductor-edger</requirement> + <requirement type="package" version="4.11.1">meme</requirement> + <requirement type="package" version="0.5">multigps</requirement> + </requirements> + </xml> + <xml name="stdio"> + <stdio> + <exit_code range="1:"/> + <exit_code range=":-1"/> + <regex match="Error:"/> + <regex match="Exception:"/> + </stdio> + </xml> + <xml name="rd_cond"> + <conditional name="read_distribution_cond"> + <param name="read_distribution" type="select" label="Use read distribution file for this replicate?" help="Selecting No uses default distribution."> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <when value="yes"> + <param name="read_distribution_file" type="data" format="tabular" label="Read distribution file" /> + </when> + <when value="no" /> + </conditional> + </xml> + <xml name="frc_param"> + <param name="fixed_read_count" type="select" label="Use fixed per-base read count limit for this replicate?" help="Selecting No uses a global per-base limit that is estimated from a Poisson distribution."> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + </xml> + <xml name="motif_finding_params"> + <param name="memenmotifs" type="integer" min="0" value="3" label="Number of motifs MEME should find for each condition" /> + <param name="mememinw" type="integer" min="0" value="6" label="Minimum motif width for MEME" /> + <param name="mememaxw" type="integer" min="0" value="16" label="Maximum motif width for MEME" /> + </xml> + <xml name="citations"> + <citations> + <citation type="doi">10.1371/journal.pcbi.1003501</citation> + </citations> + </xml> +</macros>
--- a/multigps.py Fri Jan 15 10:07:58 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -import argparse -import os -import shutil -import subprocess -import sys -import tempfile - -BUFF_SIZE = 1048576 -DESIGN_FILE = 'design.tabular' - - -def generate_design_file(input_items, filename): - design_file = open(filename, 'wb') - for items in input_items: - filename, ext, signal_control, condition_name, replicate_name, read_distribution_file, fixed_read = items - # MultiGPS version 0.5 does not support the newer scidx datatype. - if ext == 'scidx': - datatype = 'IDX' - else: - datatype = ext.upper() - design_file.write('%s\n' % '\t'.join([filename, signal_control, datatype, condition_name, replicate_name, read_distribution_file, fixed_read])) - design_file.close() - - -def get_stderr_exception(tmp_err, tmp_stderr, tmp_out, tmp_stdout, include_stdout=False): - tmp_stderr.close() - # Get stderr, allowing for case where it's very large. - tmp_stderr = open(tmp_err, 'rb') - stderr_str = '' - buffsize = BUFF_SIZE - try: - while True: - stderr_str += tmp_stderr.read(buffsize) - if not stderr_str or len(stderr_str) % buffsize != 0: - break - except OverflowError: - pass - tmp_stderr.close() - if include_stdout: - tmp_stdout = open(tmp_out, 'rb') - stdout_str = '' - buffsize = BUFF_SIZE - try: - while True: - stdout_str += tmp_stdout.read(buffsize) - if not stdout_str or len(stdout_str) % buffsize != 0: - break - except OverflowError: - pass - tmp_stdout.close() - if include_stdout: - return 'STDOUT\n%s\n\nSTDERR\n%s\n' % (stdout_str, stderr_str) - return stderr_str - - -def stop_err(msg): - sys.stderr.write(msg) - sys.exit(1) - -parser = argparse.ArgumentParser() -parser.add_argument('--input_item', dest='input_items', action='append', nargs=7, help="Input datasets and associated parameters") -parser.add_argument('--threads', dest='threads', type=int, default=4, help='The number of threads to run') -parser.add_argument('--multigps_jar', dest='multigps_jar', help='Path to the MultiGPS jar file') -parser.add_argument('--geninfo', dest='geninfo', help='File listing the lengths of all chromosomes') -parser.add_argument('--use_motif', dest='use_motif', help='Perform motif-finding or use a motif-prior') -parser.add_argument('--seq_dir', dest='seq_dir', default=None, help='Directory containing fasta files corresponding to every named chromosome') -parser.add_argument('--positional_prior', dest='positional_prior', default=None, help='Perform inter-experiment positional prior') -parser.add_argument('--events_shared_probability', dest='events_shared_probability', type=float, default=0.9, help='Probability that events are shared across conditions') -parser.add_argument('--motifs', dest='motifs', default=None, help='Perform motif-finding and motif priors') -parser.add_argument('--motif_finding_only', dest='motif_finding_only', default=None, help='Perform motif-finding only') -parser.add_argument('--num_motifs', dest='num_motifs', type=int, default=None, help='Number of motifs MEME should find for each condition') -parser.add_argument('--mememinw', dest='mememinw', type=int, default=None, help='Minimum motif width for MEME') -parser.add_argument('--mememaxw', dest='mememaxw', type=int, default=None, help='Maximum motif width for MEME') -parser.add_argument('--fixedpb', dest='fixedpb', type=int, default=None, help='Fixed per-base limit') -parser.add_argument('--poissongausspb', dest='poissongausspb', type=int, default=None, help='Poisson threshold for filtering per base') -parser.add_argument('--non_unique_reads', dest='non_unique_reads', default=None, help='Use non-unique reads') -parser.add_argument('--minqvalue', dest='minqvalue', type=int, default=None, help='Minimum Q-value (corrected p-value) of reported binding events') -parser.add_argument('--minfold', dest='minfold', type=int, default=None, help='Minimum event fold-change vs scaled control') -parser.add_argument('--diff_enrichment_tests', dest='diff_enrichment_tests', help='Run differential enrichment tests') -parser.add_argument('--edgerod', dest='edgerod', type=int, default=None, help='EdgeR over-dispersion parameter value') -parser.add_argument('--diffp', dest='diffp', type=int, default=None, help='Minimum p-value for reporting differential enrichment') -parser.add_argument('--noscaling', dest='noscaling', default=None, help='Do not use signal vs control scaling') -parser.add_argument('--medianscale', dest='medianscale', default=None, help='Use the median signal/control ratio as the scaling factor') -parser.add_argument('--sesscale', dest='sesscale', default=None, help='Estimate scaling factor by SES') -parser.add_argument('--scalewin', dest='scalewin', type=int, default=None, help='Window size for estimating scaling ratios') -parser.add_argument('--max_training_rounds', dest='max_training_rounds', type=int, default=None, help='Maximum number of training rounds for updating binding event read distributions') -parser.add_argument('--exclude_file', dest='exclude_file', default=None, help='File containing a set of regions to ignore during MultiGPS training') -parser.add_argument('--binding_model_updates', dest='binding_model_updates', default=None, help='Perform binding model updates') -parser.add_argument('--minmodelupdateevents', dest='minmodelupdateevents', type=int, default=None, help='Minimum number of events to support an update of the read distribution') -parser.add_argument('--binding_model_smoothing', dest='binding_model_smoothing', default=None, help='Binding model smoothing') -parser.add_argument('--spline_smooth', dest='spline_smooth', type=int, default=None, help='Binding model smoothing value') -parser.add_argument('--gauss_smooth', dest='gauss_smooth', type=int, default=None, help='Gaussian smoothing std dev') -parser.add_argument('--joint_in_model', dest='joint_in_model', default=None, help='Allow joint events in model updates') -parser.add_argument('--ml_config_not_shared', dest='ml_config_not_shared', default=None, help='Share component configs in the ML step') -parser.add_argument('--output_html_path', dest='output_html_path', help='Output html results file') -parser.add_argument('--output_html_files_path', dest='output_html_files_path', help='Output html extra files') -parser.add_argument('--output_process_path', dest='output_process_path', default=None, help='Output file for capturing stdout') -args = parser.parse_args() - -try: - # Preparation. - tmp_dir = tempfile.mkdtemp(prefix="tmp-multigps-") - generate_design_file(args.input_items, DESIGN_FILE) - # Build the command line. - cmd_list = ['java -jar %s --verbose' % args.multigps_jar] - cmd_list.append('--threads %d' % args.threads) - cmd_list.append('--geninfo %s' % args.geninfo) - if args.use_motif == 'yes': - cmd_list.append('--seq %s' % args.seq_dir) - if args.positional_prior == 'no': - cmd_list.append('--noposprior') - cmd_list.append('--probshared %3f' % args.events_shared_probability) - if args.motifs == 'no': - cmd_list.append('--nomotifs') - if args.motif_finding_only == 'yes': - cmd_list.append('--nomotifprior') - if args.num_motifs is not None: - cmd_list.append('--memenmotifs %d' % args.num_motifs) - if args.mememinw is not None: - cmd_list.append('--mememinw %d' % args.mememinw) - if args.mememaxw is not None: - cmd_list.append('--mememaxw %d' % args.mememaxw) - if args.fixedpb is not None: - cmd_list.append('--fixedpb %d' % args.fixedpb) - if args.poissongausspb is not None: - cmd_list.append('--poissongausspb %d' % args.poissongausspb) - if args.non_unique_reads == 'yes': - cmd_list.append('--nonunique') - if args.minqvalue is not None: - cmd_list.append('--q %d' % args.minqvalue) - if args.minfold is not None: - cmd_list.append('--minfold %d' % args.minfold) - if args.diff_enrichment_tests == 'no': - cmd_list.append('--nodifftests') - if args.edgerod is not None: - cmd_list.append('--edgerod %d' % args.edgerod) - if args.diffp is not None: - cmd_list.append('--diffp %d' % args.diffp) - if args.noscaling == 'no': - cmd_list.append('--noscaling') - if args.medianscale == "yes": - cmd_list.append('--medianscale') - if args.sesscale == "yes": - cmd_list.append('--sesscale') - if args.scalewin is not None: - cmd_list.append('--scalewin %d' % args.scalewin) - if args.max_training_rounds is not None: - cmd_list.append('--r %d' % args.max_training_rounds) - if args.exclude_file not in [None, 'None']: - cmd_list.append('--exclude %s' % args.exclude_file) - if args.binding_model_updates == 'no': - cmd_list.append('--nomodelupdate') - if args.minmodelupdateevents is not None: - cmd_list.append('--minmodelupdateevents %d' % args.minmodelupdateevents) - if args.binding_model_smoothing == 'yes': - if args.spline_smooth is not None: - cmd_list.append('--splinesmoothparam %d' % args.spline_smooth) - else: - cmd_list.append('--nomodelsmoothing') - if args.gauss_smooth is not None: - cmd_list.append('--gaussmodelsmoothing') - cmd_list.append('--gausssmoothparam %d' % args.gauss_smooth) - if args.joint_in_model == 'yes': - cmd_list.append('--jointinmodel') - if args.ml_config_not_shared == 'no': - cmd_list.append('--mlconfignotshared') - cmd_list.append('--design %s' % DESIGN_FILE) - cmd_list.append('--out %s' % args.output_html_files_path) - if args.output_process_path is None: - cmd_list.append('2>/dev/null') - else: - cmd_list.append('2>%s' % args.output_process_path) - cmd = ' '.join(cmd_list) - # Define command response buffers. - tmp_out = tempfile.NamedTemporaryFile(dir=tmp_dir).name - tmp_stdout = open(tmp_out, 'wb') - tmp_err = tempfile.NamedTemporaryFile(dir=tmp_dir).name - tmp_stderr = open(tmp_err, 'wb') - tmp_filename = tempfile.NamedTemporaryFile(dir=tmp_dir).name - # Execute the command. - proc = subprocess.Popen(args=cmd, stderr=tmp_stderr, stdout=tmp_stdout, shell=True) - rc = proc.wait() - if rc != 0: - error_message = get_stderr_exception(tmp_err, tmp_stderr, tmp_out, tmp_stdout) - stop_err(error_message) - # Move the output HTML file to the output dataset path. - output_html_filename = 'multiGPS_%s_results.html' % os.path.split(args.output_html_files_path)[1] - shutil.move(os.path.join(args.output_html_files_path, output_html_filename), args.output_html_path) -except Exception, e: - stop_err('Error running MultiGPS\n%s\n' % str(e)) -finally: - if os.path.exists(tmp_dir): - shutil.rmtree(tmp_dir)
--- a/multigps.xml Fri Jan 15 10:07:58 2016 -0500 +++ b/multigps.xml Tue Dec 13 13:02:36 2016 -0500 @@ -1,14 +1,128 @@ -<tool id="multigps" name="MultiGPS" version="0.5.0.0"> +<tool id="multigps" name="MultiGPS" version="0.72.0"> <description>analyzes collections of multi-condition ChIP-seq data</description> <macros> - <import>multigps_macros.xml</import> + <import>macros.xml</import> </macros> <expand macro="requirements" /> + <command detect_errors="aggressive"> <command> <![CDATA[ + ## java -Xmx15G org.seqcode.projects.multigps.MultiGPS + ## --species "Saccharomyces cerevisiae;sacCer3" + ## --threads 2 + ## --expt $bampath/$name.bam + ## --ctrl $control + ## --format BAM + ## --scalewin 500 + ## --q 0.05 + ## --nodifftests + ## --verbose + ## --mappability + ## --jointinmodel + ## --fixedmodelrange + ## --gaussmodelsmoothing + ## --gausssmoothparam 1 + ## --minmodelupdateevents 50 + ## --memepath $memePath + ## --mememinw 6 + ## --mememaxw 18 + ## --seq $genome + ## --exclude $exclude + ## --out $name > $name.out 2>&1 + ## + + multigps + ############################ + ## General options + ############################ + --input "$input" + --format "$input.ext" + #if str($verbose) == 'yes': + --verbose + #end if + --threads="\${GALAXY_SLOTS:-4}" + ############################ + ## Advanced options + ############################ #set aoc = $advanced_options_cond #if str($aoc.advanced_options) == "display": + #set bmsc = $aoc.binding_model_smoothing_cond + #set gmsc = $aoc.gauss_model_smoothing_cond + #set rbec = $aoc.report_binding_events_cond + #set rloc = $aoc.reads_limits_options_cond + #set sdc = $aoc.scale_data_cond #set umc = $aoc.use_motif_cond + ############################ + ## Limits on how many reads + ############################ + #if str($rloc.reads_limits) == "yes": + --fixedpb $rloc.fixedpb + --poissongausspb $rloc.poissongausspb + #if str($rloc.nonunique) == "yes": + --nonunique + #end if + --mappability $rloc.mappability + #end if + #if str($rloc.nocache) == "yes": + --nocache + #end if + ############################ + ## Scaling data + ############################ + #if str($sdc.scale_data) == "yes": + #if str($sdc.scaling) == 'no': + --noscaling $sdc.scaling + #end if + #if str($sdc.medianscale) == 'yes': + --medianscale $sdc.medianscale + #end if + #if str($sdc.regressionscale) == 'yes': + --regressionscale $sdc.regressionscale + #endif + #if str($sdc.sessscale) == 'yes': + --sesscale $sdc.sesscale + #end if + #if $sdc.fixedscaling > 0: + ‒‒fixedscaling $sdc.fixedscaling + #end if + --scalewin $sdc.scalewin + #if str($sdc.plotscaling) == 'yes': + --plotscaling $sdc.plotscaling + #end if + #end if + ############################ + ## Running MultiGPS + ############################ + #if str($aoc.nomodelupdate) == "no": + --nomodelupdate + #end if + --minmodelupdateevents $aoc.minmodelupdateevents + #if str($bmsc.nomodelsmoothing) == "no": + --nomodelsmoothing + #end if + --splinesmoothparam $aoc.splinesmoothparam + #if str($gmsc.gaussmodelsmoothing) == "yes": + --gaussmodelsmoothing + --gausssmoothparam $gmsc.gausssmoothparam + #end if + #if str($aoc.jointinmodel) == "yes": + --jointinmodel + #end if + #if str($aoc.fixedmodelrange) == "yes": + --fixedmodelrange + #end if + --prlogconf $aoc.prlogconf + #if $aoc.fixedalpha > 0: + --fixedalpha $aoc.fixedalpha + #end if + --alphascale $aoc.alphascale + #if str($aoc.mlconfignotshared) == "no": + --mlconfignotshared + #end if + --exclude "$aoc.exclude" + ############################ + ## MultiGPS priors + ############################ #if str($umc.use_motif) == "yes": #set rgc = $umc.reference_genome_cond #if str($rgc.reference_genome_source) == "cached": @@ -23,165 +137,197 @@ #set tmp_seq_file = os.path.join($seq_dir, $tmp_filename) ln -f -s $tmp_seq_file $seq_file && #end if - #end if - #end if - python $__tool_directory__/multigps.py - --multigps_jar $__tool_directory__/multigps_v0.5.jar - #for $i in $input_items: - #set replicate_name = "" - #set read_distribution_file = "" - #set fixed_read = "" - #set sccond = $i.signal_control_cond - #set sorc = $sccond.signal_control - #if str($sorc) == "Signal": - #set replicate_name = $sccond.replicate_name - #set rdcond = $sccond.read_distribution_cond - #if str($rdcond.read_distribution) == "yes": - #set read_distribution_file = "$rdcond.read_distribution_file" - #end if - #if str($sccond.fixed_read_count) == "yes": - #set fixed_read = "P" - #end if - #else if str($sorc) == "Control": - #set rncond = $sccond.replicate_name_cond - #if str($rncond.specify_replicate_name) == "yes": - #set replicate_name = $rncond.replicate_name - #set rdcond = $rncond.read_distribution_cond - #if str($rdcond.read_distribution) == "yes": - #set read_distribution_file = "$rdcond.read_distribution_file" - #end if - #if str($rncond.fixed_read_count) == "yes": - #set fixed_read = "P" - #end if - #end if - #end if - --input_item "${i.input}" "${i.input.ext}" "${i.signal_control_cond.signal_control}" "${i.condition_name}" "$replicate_name" "$read_distribution_file" "$fixed_read" - #end for - --threads="\${GALAXY_SLOTS:-4}" - --geninfo $chromInfo - #if str($aoc.advanced_options) == "display": - #set rbec = $aoc.report_binding_events_cond - #set bmsc = $aoc.binding_model_smoothing_cond - #set rloc = $aoc.reads_limits_options_cond - #set sdc = $aoc.scale_data_cond - --use_motif $umc.use_motif - #if str($umc.use_motif) == "yes": #set mpc = $umc.multigps_priors_cond - --seq_dir $seq_dir + --seq $seq_dir + --geninfo ${chromInfo} #if str($mpc.multigps_priors) == "yes": #set bmc = $mpc.both_motifs_cond - --positional_prior $mpc.positional_prior - --events_shared_probability $mpc.events_shared_probability - --motifs $bmc.motifs - #if str($bmc.motifs) == "yes": - --num_motifs $bmc.num_motifs - --mememinw $bmc.min_motif_width - --mememaxw $bmc.max_motif_width + #if str($mpc.noposprior) == "no": + --noposprior + #end if + --probshared $mpc.probshared + #if str($bmc.nomotifs) == "yes": + --memenmotifs $bmc.memenmotifs + --mememinw $bmc.mememinw + --mememaxw $bmc.mememaxw #else: - #set mfoc = $bmc.motif_finding_only_cond - --motif_finding_only $mfoc.motif_finding_only - #if str($mfoc.motif_finding_only) == "yes": - --num_motifs $mfoc.num_motifs - --mememinw $mfoc.min_motif_width - --mememaxw $mfoc.max_motif_width + --nomotifs + #set mfoc = $bmc.nomotifprior_cond + --nomotifprior $mfoc.nomotifprior + #if str($mfoc.nomotifprior) == "yes": + --memenmotifs $mfoc.memenmotifs + --mememinw $mfoc.mememinw + --mememaxw $mfoc.mememaxw #end if #end if #end if #end if - --max_training_rounds $aoc.max_training_rounds - --exclude_file $aoc.exclude_file - --binding_model_updates $aoc.binding_model_updates - --minmodelupdateevents $aoc.minmodelupdateevents - --binding_model_smoothing $bmsc.binding_model_smoothing - #if str($bmsc.binding_model_smoothing) == "yes": - --spline_smooth $bmsc.spline_smooth - #else: - #set gmsc = $bmsc.gauss_model_smoothing_cond - #if str($gmsc.gauss_model_smoothing) == "yes": - --gauss_smooth $gmsc.gauss_smooth + ############################ + ## Reporting binding events + ############################ + #if str($rbec.report_binding_events) == "yes": + --q $rbec.minqvalue + --minfold $rbec.minfold + #if str($rbec.nodifftests) == "no": + --nodifftests #end if - #end if - --joint_in_model $aoc.joint_in_model - --ml_config_not_shared $aoc.ml_config_not_shared - #if str($rloc.reads_limits) == "yes": - --fixedpb $rloc.fixedpb - --poissongausspb $rloc.poissongausspb - --non_unique_reads $rloc.non_unique_reads - #end if - #if str($rbec.report_binding_events) == "yes": - --minqvalue $rbec.minqvalue - --minfold $rbec.minfold - --diff_enrichment_tests $rbec.diff_enrichment_tests --edgerod $rbec.edgerod --diffp $rbec.diffp #end if - #if str($sdc.scale_data) == "yes": - --noscaling $sdc.scaling - --medianscale $sdc.medianscale - --sesscale $sdc.sesscale - --scalewin $sdc.scalewin - #end if #end if - --output_html_path "$output_html" - --output_html_files_path "$output_html.files_path" - #if str($output_process_log) == "yes": - --output_process_path "$output_process" - #end if + --out "$output_html.files_path" + > "$output_html" + ##if str($output_process_log) == "yes": + ## --output_process_path "$output_process" + ###end if ]]> </command> <inputs> - <repeat name="input_items" title="Input files, attributes and options" min="1"> - <param name="input" type="data" format="bam,bed,scidx" label="Add input file" help="Supported formats are bam, bed and scidx"> - <validator type="unspecified_build" /> - </param> - <conditional name="signal_control_cond"> - <param name="signal_control" type="select" label="Is this experiment signal or control?"> - <option value="Signal" selected="True">Signal</option> - <option value="Control">Control</option> - </param> - <when value="Signal"> - <param name="replicate_name" type="text" label="Replicate name" /> - <expand macro="rd_cond" /> - <expand macro="frc_param" /> - </when> - <when value="Control"> - <conditional name="replicate_name_cond"> - <param name="specify_replicate_name" type="select" label="Specify replicate name?" help="Optional for control experiments. If used, the control will only be used for the corresponding named signal replicate"> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <when value="yes"> - <param name="replicate_name" type="text" optional="True" label="Replicate name" /> - <expand macro="rd_cond" /> - <expand macro="frc_param" /> - </when> - <when value="no" /> - </conditional> - </when> - </conditional> - <param name="condition_name" type="text" label="Condition name" /> - </repeat> + <param name="input" type="data" format="bam,bed,scidx" label="Add input file" help="Supported formats are bam, bed and scidx"> + <validator type="unspecified_build" /> + </param> + <param name="verbose" type="select" label="Generate intermediate files and extra output?" help="Verbose flag"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <!-- + ############################ + ## Advanced options + ############################ + --> <conditional name="advanced_options_cond"> <param name="advanced_options" type="select" label="Advanced options"> <option value="hide" selected="true">Hide</option> <option value="display">Display</option> </param> <when value="display"> + <!-- + ############################ + ## Limits on how many reads + ############################ + --> + <conditional name="reads_limits_options_cond"> + <param name="reads_limits" type="select" label="Set limits on how many reads can have their 5′ end at the same position in each replicate?" help="Default behavior is to estimate a global per-base limit from a Poisson distribution parameterized by the number of reads divided by the number of mappable bases in the genome. The per-base limit is set as the count corresponding to the 10^-7 probability level from the Poisson."> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <when value="no" /> + <when value="yes"> + <param name="fixedpb" type="integer" value="0" min="0" label="Fixed per-base limit" help="Zero value estimates from background model"/> + <param name="poissongausspb" type="integer" value="0" min="0" label="Poisson threshold for filtering per base" help="Filter per base using the specified Poisson threshold parameterized by a local Gaussian sliding window" /> + <param name="nonunique" type="select" label="Use non-unique reads?"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="mappability" type="float" value="0.0" min="0.8" label="Fraction of the genome that is mappable for these experiments" /> + <param name="nocache" type="select" label="Turn off caching of the entire set of experiments?" help="Run slower with less memory" > + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + </when> + </conditional> + <!-- + ############################ + ## Scaling data + ############################ + --> + <conditional name="scale_data_cond"> + <param name="scale_data" type="select" label="Set data scaling parameters?" help="Default behavior is to scale signal to corresponding controls using regression on the set of signal/control ratios in 10Kbp windows."> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <when value="yes"> + <param name="scaling" type="select" label="Use signal vs control scaling?"> + <option value="yes" selected="True">Yes</option> + <option value="no">No</option> + </param> + <param name="medianscale" type="select" label="Use the median signal/control ratio as the scaling factor?"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="regressionscale" type="select" label="Use scaling by regression on binned tag counts?"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="sesscale" type="select" label="Estimate scaling factor by SES?" help="SES: Diaz, et al. Stat Appl Genet Mol Biol. 2012"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="fixedscaling" type="float" value="0.0" min="0.0" label="Multiply control counts by total tag count ratio and then by this factor" help="Set as 0 to skip" /> + <param name="scalewin" type="integer" min="0" value="500" label="Window size for estimating scaling ratios" help="The value is the number of base pairs. Use something much smaller than the default if scaling via SES (e.g. 200)." /> + <param name="plotscaling" type="select" label="Plot diagnostic information for the chosen scaling method?"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + </when> + <when value="no" /> + </conditional> + <!-- + ############################ + ## Running MultiGPS + ############################ + --> + <param name="nomodelupdate" type="select" label="Perform binding model updates?"> + <option value="yes" selected="True">Yes</option> + <option value="no">No</option> + </param> + <param name="minmodelupdateevents" type="integer" value="500" min="0" label="Minimum number of events to support an update of the read distribution" /> + <param name="nomodelsmoothing" type="select" label="Perform binding model smoothing?" help="Smoothing performed with a cubic spline."> + <option value="yes" selected="True">Yes</option> + <option value="no">No</option> + </param> + <param name="splinesmoothparam" type="integer" value="30" min="0" label="Spline smoothing parameter" /> + <conditional name="gauss_model_smoothing_cond"> + <param name="gaussmodelsmoothing" type="select" label="Use Gaussian model smoothing?" help="Select No to smooth with a cubic spline."> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <when value="no" /> + <when value="yes"> + <param name="gausssmoothparam" type="integer" value="3" min="0" label="Smoothing factor" help="Gaussian smoothing standard deviation." /> + </when> + </conditional> + <param name="jointinmodel" type="select" label="Allow joint events in model updates?"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="fixedmodelrange" type="select" label="Keep binding model range fixed to inital size?" help="Select No to vary automatically"> + <option value="no" selected="True">No</option> + <option value="yes">Yes</option> + </param> + <param name="prlogconf" type="integer" value="-6" label="Poisson log threshold for potential region scanning" /> + <param name="fixedalpha" type="integer" value="0" min="0" label="Impose this alpha" help="This is a sparse prior on binding events in the MultiGPS model. It can be interpreted as a minimum number of reads that each binding event must be responsible for in the model. A zero value will estimate the alpha automatically." /> + <param name="alphascale" type="float" value="1.0" min="0" label="Alpha scaling factor" /> + <param name="mlconfignotshared" type="select" label="Share component configs in the ML step?" help="Mainly affects the quantification of binding levels for binding events that are not shared but are located at nearby locations across experiments."> + <option value="yes" selected="True">Yes</option> + <option value="no">No</option> + </param> + <param name="exclude" type="data" optional="True" format="txt" label="Optional file containing a set of regions to ignore during MultiGPS training" help="Ideally exclude the mitochondrial genome and other blacklisted regions that contain artifactual accumulations of reads in both ChIP-seq and control experiments." /> + <!-- + ############################ + ## MultiGPS priors + ############################ + --> <conditional name="use_motif_cond"> <param name="use_motif" type="select" label="Perform motif-finding or use a motif-prior?"> <option value="no" selected="True">No</option> <option value="yes">Yes</option> </param> <when value="yes"> + <!-- + ############################ + ## Specifying the genome + ############################ + --> <conditional name="reference_genome_cond"> <param name="reference_genome_source" type="select" label="Choose the source for the reference genome"> - <option value="cached">Locally Cached</option> - <option value="history">From History</option> + <option value="cached">locally cached</option> + <option value="history">from history</option> </param> <when value="cached"> <param name="reference_genome" type="select" label="Using reference genome"> <options from_data_table="all_fasta"> - <filter type="data_meta" key="dbkey" ref="input_items.input" column="1"/> + <filter type="data_meta" key="dbkey" ref="input" column="1"/> </options> <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/> </param> @@ -189,12 +335,17 @@ <when value="history"> <param name="reference_genome" type="data" format="fasta" label="Using reference genome"> <options> - <filter type="data_meta" key="dbkey" ref="input_items.input"/> + <filter type="data_meta" key="dbkey" ref="input"/> </options> <validator type="no_options" message="The current history does not include a fasta dataset with the build associated with the selected input file"/> </param> </when> </conditional> + <!-- + ############################ + ## MultiGPS priors options + ############################ + --> <conditional name="multigps_priors_cond"> <param name="multigps_priors" type="select" label="Specify MultiGPS priors options?"> <option value="no" selected="True">No</option> @@ -202,13 +353,13 @@ </param> <when value="no" /> <when value="yes"> - <param name="positional_prior" type="select" label="Perform inter-experiment positional prior?"> + <param name="noposprior" type="select" label="Perform inter-experiment positional prior?"> <option value="yes" selected="True">Yes</option> <option value="no">No</option> </param> - <param name="events_shared_probability" type="float" value="0.9" min="0.0" label="Probability that events are shared across conditions" /> + <param name="probshared" type="float" value="0.9" min="0.0" label="Probability that events are shared across conditions" /> <conditional name="both_motifs_cond"> - <param name="motifs" type="select" label="Perform both motif-finding and motif priors?"> + <param name="nomotifs" type="select" label="Perform both motif-finding and motif priors?"> <option value="yes" selected="True">Yes</option> <option value="no">No</option> </param> @@ -216,8 +367,8 @@ <expand macro="motif_finding_params" /> </when> <when value="no"> - <conditional name="motif_finding_only_cond"> - <param name="motif_finding_only" type="select" label="Perform motif-finding only?" help="Selecting Yes turns off motif priors."> + <conditional name="nomotifprior_cond"> + <param name="nomotifprior" type="select" label="Perform motif-finding only?" help="Selecting Yes turns off motif priors."> <option value="no" selected="True">No</option> <option value="yes">Yes</option> </param> @@ -233,79 +384,11 @@ </when> <when value="no" /> </conditional> - <param name="max_training_rounds" type="integer" value="3" min="0" label="Maximum number of training rounds for updating binding event read distributions" /> - <param name="exclude_file" type="data" optional="True" format="txt" label="Optional file containing a set of regions to ignore during MultiGPS training" help="Ideally exclude the mitochondrial genome and other blacklisted regions that contain artifactual accumulations of reads in both ChIP-seq and control experiments." /> - <param name="binding_model_updates" type="select" label="Perform binding model updates?"> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <param name="minmodelupdateevents" type="integer" value="0" min="0" label="Minimum number of events to support an update of the read distribution" /> - <conditional name="binding_model_smoothing_cond"> - <param name="binding_model_smoothing" type="select" label="Perform binding model smoothing?" help="Smoothing performed with a cubic spline."> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <when value="yes"> - <param name="spline_smooth" type="integer" value="0" min="0" label="Smoothing factor" /> - </when> - <when value="no"> - <conditional name="gauss_model_smoothing_cond"> - <param name="gauss_model_smoothing" type="select" label="Use Gaussian model smoothing?" help="Select No to smooth with a cubic spline."> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <when value="yes"> - <param name="gauss_smooth" type="integer" value="3" min="0" label="Smoothing factor" help="Gaussian smoothing standard deviation." /> - </when> - <when value="no" /> - </conditional> - </when> - </conditional> - <param name="joint_in_model" type="select" label="Allow joint events in model updates?"> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <param name="ml_config_not_shared" type="select" label="Share component configs in the ML step?"> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <conditional name="reads_limits_options_cond"> - <param name="reads_limits" type="select" label="Set limits on how many reads can have their 5′ end at the same position in each replicate?" help="Default behavior is to estimate a global per-base limit from a Poisson distribution parameterized by the number of reads divided by the number of mappable bases in the genome. The per-base limit is set as the count corresponding to the 10^-7 probability level from the Poisson."> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <when value="no" /> - <when value="yes"> - <param name="fixedpb" type="integer" value="0" min="0" label="Fixed per-base limit" /> - <param name="poissongausspb" type="integer" value="0" min="0" label="Poisson threshold for filtering per base" help="Filter per base using the specified Poisson threshold parameterized by a local Gaussian sliding window" /> - <param name="non_unique_reads" type="select" label="Use non-unique reads"> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - </when> - </conditional> - <conditional name="scale_data_cond"> - <param name="scale_data" type="select" label="Set data scaling parameters?" help="Default behavior is to scale signal to corresponding controls using regression on the set of signal/control ratios in 10Kbp windows."> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <when value="yes"> - <param name="scaling" type="select" label="Use signal vs control scaling?"> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <param name="medianscale" type="select" label="Use the median signal/control ratio as the scaling factor?"> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <param name="sesscale" type="select" label="Estimate scaling factor by SES?" help="SES: Diaz, et al. Stat Appl Genet Mol Biol. 2012"> - <option value="yes" selected="True">Yes</option> - <option value="no">No</option> - </param> - <param name="scalewin" type="integer" min="0" value="10000" label="Window size for estimating scaling ratios" help="The value is the number of base pairs. Use something much smaller than the default if scaling via SES (e.g. 200)." /> - </when> - <when value="no" /> - </conditional> + <!-- + ############################ + ## Reporting binding events + ############################ + --> <conditional name="report_binding_events_cond"> <param name="report_binding_events" type="select" label="Report binding events?"> <option value="no" selected="True">No</option> @@ -313,49 +396,46 @@ </param> <when value="no" /> <when value="yes"> - <param name="minqvalue" type="integer" min="0" value="0" label="Minimum Q-value (corrected p-value) of reported binding events" /> - <param name="minfold" type="integer" min="0" value="0" label="Minimum event fold-change vs scaled control" /> - <param name="diff_enrichment_tests" type="select" label="Run differential enrichment tests?"> + <param name="minqvalue" type="float" min="0" value="0.001" label="Minimum Q-value (corrected p-value) of reported binding events" /> + <param name="minfold" type="float" min="0" value="1.5" label="Minimum event fold-change vs scaled control" /> + <param name="nodifftests" type="select" label="Run differential enrichment tests?"> <option value="yes" selected="True">Yes</option> <option value="no">No</option> </param> - <param name="edgerod" type="integer" min="0" value="0" label="EdgeR over-dispersion parameter value" /> - <param name="diffp" type="integer" min="0" value="0" label="Minimum p-value for reporting differential enrichment" /> + <param name="edgerod" type="float" min="0" value="0.15" label="EdgeR over-dispersion parameter value" /> + <param name="diffp" type="float" min="0" value="0.01" label="Minimum p-value for reporting differential enrichment" /> </when> </conditional> </when> <when value="hide"/> </conditional> + <!-- <param name="output_process_log" type="select" label="Output MultiGPS process log?"> <option value="no" selected="True">No</option> <option value="yes">Yes</option> </param> + --> </inputs> <outputs> + <!-- <data name="output_process" format="txt" label="${tool.name} on ${on_string} (process log)"> <filter>output_process_log == "yes"</filter> </data> + --> <data name="output_html" format="html"/> </outputs> <tests> <test> - <repeat name="input_items"> - <param name="input" value="sacCer3_1.scidx" ftype="scidx" dbkey="sacCer3"/> - <param name="signal_control" value="Signal"/> - <param name="condition_name" value="Abf1"/> - <param name="replicate_name" value="1"/> - <param name="read_distribution" value="no"/> - <param name="fixed_read_count" value="no"/> - </repeat> + <param name="input" value="sacCer3_1.scidx" ftype="scidx" dbkey="sacCer3"/> <param name="binding_model_smoothing" value="no"/> - <param name="gauss_model_smoothing" value="yes"/> - <param name="gauss_smooth" value="3"/> + <param name="gaussmodelsmoothing" value="yes"/> + <param name="gausssmoothparam" value="3"/> <param name="use_motif" value="yes"/> <param name="reference_genome_source" value="history"/> <param name="reference_genome" value="phiX.fasta" dbkey="phiX"/> - <param name="num_motifs" value="3"/> - <param name="min_motif_width" value="6"/> - <param name="max_motif_width" value="16"/> + <param name="memenmotifs" value="3"/> + <param name="mememinw" value="6"/> + <param name="mememaxw" value="16"/> <param name="output_process_log" value="yes"/> <output name="output_process" file="output_process1.txt" ftype="txt" lines_diff="12"/> <output name="output_html" file="output_html1.html" ftype="html" lines_diff="12"/>
--- a/multigps_macros.xml Fri Jan 15 10:07:58 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<macros> - <xml name="requirements"> - <requirements> - <requirement type="package" version="4.11.0">meme</requirement> - <requirement type="package" version="3.11.0">edger</requirement> - </requirements> - </xml> - <xml name="stdio"> - <stdio> - <exit_code range="1:"/> - <exit_code range=":-1"/> - <regex match="Error:"/> - <regex match="Exception:"/> - </stdio> - </xml> - <xml name="rd_cond"> - <conditional name="read_distribution_cond"> - <param name="read_distribution" type="select" label="Use read distribution file for this replicate?" help="Selecting No uses default distribution."> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - <when value="yes"> - <param name="read_distribution_file" type="data" format="tabular" label="Read distribution file" /> - </when> - <when value="no" /> - </conditional> - </xml> - <xml name="frc_param"> - <param name="fixed_read_count" type="select" label="Use fixed per-base read count limit for this replicate?" help="Selecting No uses a global per-base limit that is estimated from a Poisson distribution."> - <option value="no" selected="True">No</option> - <option value="yes">Yes</option> - </param> - </xml> - <xml name="motif_finding_params"> - <param name="num_motifs" type="integer" min="0" value="3" label="Number of motifs MEME should find for each condition" /> - <param name="min_motif_width" type="integer" min="0" value="6" label="Minimum motif width for MEME" /> - <param name="max_motif_width" type="integer" min="0" value="16" label="Maximum motif width for MEME" /> - </xml> - <xml name="citations"> - <citations> - <citation type="doi">10.1371/journal.pcbi.1003501</citation> - </citations> - </xml> -</macros>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/exclude_file.txt Tue Dec 13 13:02:36 2016 -0500 @@ -0,0 +1,19 @@ +chrM:1-16299 +chrUn_random:2612635-5900358 +chr2:98502275-98507644 +chr4:70039119-70039374 +chr6:103599051-103599300 +chr9:2999747-3039282 +chr9:24346417-24346673 +chr9:35112714-35113200 +chr12:3109856-3110140 +chr15:74916289-74917568 +chr17:39978367-39992180 +chr17:13498782-13499104 +chr18:3004587-3011375 +chr18:40467612-40468123 +chr18:43135589-43135697 +chrX:73843909-73844533 +chrX:139917541-139917665 +chrX:166406859-166448047 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/reb1_chipexo.distrib.tabular Tue Dec 13 13:02:36 2016 -0500 @@ -0,0 +1,151 @@ +-75 5.127879107699016E-4 +-74 5.591849642345921E-4 +-73 5.978066901355474E-4 +-72 6.224861874065494E-4 +-71 6.356594284636885E-4 +-70 6.419131040936336E-4 +-69 6.458339050830534E-4 +-68 6.520085222186162E-4 +-67 6.642177211211218E-4 +-66 6.830185667478948E-4 +-65 7.08162198890391E-4 +-64 7.393997573400663E-4 +-63 7.764823818883762E-4 +-62 8.191343740323966E-4 +-61 8.669726820916808E-4 +-60 9.195874160914019E-4 +-59 9.765686860567337E-4 +-58 0.0010375066020128487 +-57 0.0011017330590527004 +-56 0.00116754709254036 +-55 0.0012329895229076788 +-54 0.0012961011705865087 +-53 0.0013549228560087003 +-52 0.0014098242005801068 +-51 0.0014704900296025876 +-50 0.0015489339693520027 +-49 0.0016571696461042138 +-48 0.0018072106861350802 +-47 0.0020044404349732823 +-46 0.002227721115158772 +-45 0.0024492846684843195 +-44 0.0026413630367426947 +-43 0.0027761881617266704 +-42 0.002836351287151588 +-41 0.002845880864423082 +-40 0.0028391646468693605 +-39 0.00285059038781863 +-38 0.0029145458405990974 +-37 0.003054999456921908 +-36 0.003254242482029955 +-35 0.003484146859549071 +-34 0.0037165845331050868 +-33 0.003923427446323833 +-32 0.004091558501282984 +-31 0.0042679044338675715 +-30 0.004514402938414466 +-29 0.004892991709260541 +-28 0.005465608440742671 +-27 0.006242892200593844 +-26 0.007030287550131535 +-25 0.007581940424069329 +-24 0.007651996757120818 +-23 0.006994602483999588 +-22 0.00556114033057625 +-21 0.004091940187349483 +-20 0.003524568735974988 +-19 0.004796592658108461 +-18 0.0088455786354056 +-17 0.016163107580678765 +-16 0.02545681733136696 +-15 0.034988359956065855 +-14 0.0430193875233711 +-13 0.04781155210187838 +-12 0.048136600329994075 +-11 0.044806657125367494 +-10 0.03914394197545865 +-9 0.032470674367727596 +-8 0.026109073789634344 +-7 0.021118332556040682 +-6 0.017505534291415395 +-5 0.015014735447629032 +-4 0.013389992476552141 +-3 0.012375361830055257 +-2 0.011749289178588132 +-1 0.011427777066917324 +0 0.0113612172583886 +1 0.011500001516347726 +2 0.011794521604140462 +3 0.012179966617556161 +4 0.012530714982158502 +5 0.012705942455954753 +6 0.012564824796952177 +7 0.01196653776315804 +8 0.010832880494232516 +9 0.009336145656447381 +10 0.007711249297727332 +11 0.00619310746599705 +12 0.005016636209181219 +13 0.004352368176832731 +14 0.0041133024250172585 +15 0.004148054611428677 +16 0.004305240393760864 +17 0.004433475429707692 +18 0.004414343407977009 +19 0.004261300141332552 +20 0.004020769473552029 +21 0.003739175248413146 +22 0.0034629413096936134 +23 0.0032292248729375262 +24 0.003038116640754531 +25 0.002880440687520661 +26 0.002747021087611949 +27 0.0026286819154044297 +28 0.0025185949491149514 +29 0.002419322782323626 +30 0.00233577571245138 +31 0.002272864036919143 +32 0.0022354980531478397 +33 0.0022249651042246296 +34 0.002228060715901593 +35 0.0022279574595970427 +36 0.002207827906729291 +37 0.0021508446287166493 +38 0.0020466541811146616 +39 0.0019107990560277952 +40 0.0017652957296977485 +41 0.00163216067836622 +42 0.0015334103782749082 +43 0.0014847743229281654 +44 0.0014768340748809537 +45 0.0014938842139508909 +46 0.0015202193199555926 +47 0.0015401339727126753 +48 0.0015409295209052893 +49 0.0015219343886787202 +50 0.0014854837690437867 +51 0.0014339128550113077 +52 0.0013695568395921023 +53 0.0012956931215641026 +54 0.0012193679227736943 +55 0.0011485696708343764 +56 0.0010912867933596476 +57 0.0010555077179630066 +58 0.00104649552274266 +59 0.0010586118877356464 +60 0.0010834931434637114 +61 0.0011127756204486014 +62 0.0011380956492120624 +63 0.0011531119928568795 +64 0.0011595731448099929 +65 0.0011612500310793827 +66 0.0011619135776730276 +67 0.001165334710598908 +68 0.001173884139795982 +69 0.00118433171092713 +70 0.0011920470535862109 +71 0.0011923997973670843 +72 0.001180759571863609 +73 0.0011542417959203714 +74 0.0011169450453848613 +75 0.001074713685355297
--- a/tool-data/all_fasta.loc.sample Fri Jan 15 10:07:58 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -#This file lists the locations and dbkeys of all the fasta files -#under the "genome" directory (a directory that contains a directory -#for each build). The script extract_fasta.py will generate the file -#all_fasta.loc. This file has the format (white space characters are -#TAB characters): -# -#<unique_build_id> <dbkey> <display_name> <file_path> -# -#So, all_fasta.loc could look something like this: -# -#apiMel3 apiMel3 Honeybee (Apis mellifera): apiMel3 /path/to/genome/apiMel3/apiMel3.fa -#hg19canon hg19 Human (Homo sapiens): hg19 Canonical /path/to/genome/hg19/hg19canon.fa -#hg19full hg19 Human (Homo sapiens): hg19 Full /path/to/genome/hg19/hg19full.fa -# -#Your all_fasta.loc file should contain an entry for each individual -#fasta file. So there will be multiple fasta files for each build, -#such as with hg19 above. -#
--- a/tool_dependencies.xml Fri Jan 15 10:07:58 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -<?xml version="1.0"?> -<tool_dependency> - <package name="meme" version="4.11.0"> - <repository changeset_revision="1c44baf77b0e" name="package_meme_4_11_0" owner="iuc" toolshed="https://testtoolshed.g2.bx.psu.edu" /> - </package> - <package name="edger" version="3.11.0"> - <repository changeset_revision="e53317231321" name="package_r_edger_3_11_0" owner="iuc" toolshed="https://testtoolshed.g2.bx.psu.edu" /> - </package> -</tool_dependency>