# HG changeset patch # User peterjc # Date 1502473058 14400 # Node ID 1cedf1262a023a6b31b27aa90fba596e9fb48e0f # Parent 86455d19abb80e0a9db044e07c7c7791c9732b88 planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/tools/coverage_stats commit c8728da7af624e34a57c9524af63caa0227a446c-dirty diff -r 86455d19abb8 -r 1cedf1262a02 tools/coverage_stats/README.rst --- a/tools/coverage_stats/README.rst Tue Jun 06 10:18:36 2017 -0400 +++ b/tools/coverage_stats/README.rst Fri Aug 11 13:37:38 2017 -0400 @@ -66,6 +66,7 @@ - Use ```` (internal change only). - Single quote command line arguments (internal change only). v0.0.6 - Python 3 compatibility fix. +v0.1.0 - Provide proper command line API for the Python script. ======= ====================================================================== diff -r 86455d19abb8 -r 1cedf1262a02 tools/coverage_stats/coverage_stats.py --- a/tools/coverage_stats/coverage_stats.py Tue Jun 06 10:18:36 2017 -0400 +++ b/tools/coverage_stats/coverage_stats.py Fri Aug 11 13:37:38 2017 -0400 @@ -22,25 +22,51 @@ import sys import tempfile -if "-v" in sys.argv or "--version" in sys.argv: +from optparse import OptionParser + +usage = """Example usage: + +$ python coverage_stats.py -b mapped.bam -i mapped.bai -o summary.tsv -d 10000 +""" + +parser = OptionParser(usage=usage) +parser.add_option('-b', '--bam', dest='input_bam', default=None, + help='Input BAM file', + metavar='FILE') +parser.add_option('-i', '--bai', dest='input_bai', default="-", + help='Input BAI file (BAM index, optional, default or - infer from BAM filename)', + metavar='FILE') +parser.add_option('-o', dest='output_tabular', default="-", + help='Output tabular file (optional, default stdout)', + metavar='FILE') +parser.add_option('-d', '--maxdepth', dest='max_depth', default=8000, + help='Max coverage depth (integer, default 8000)', + type='int') +parser.add_option('-v', '--version', dest='version', + default=False, action='store_true', + help='Show version and quit') + +options, args = parser.parse_args() + +if options.version: # Galaxy seems to invert the order of the two lines - print("BAM coverage statistics v0.0.6") + print("BAM coverage statistics v0.1.0") cmd = "samtools 2>&1 | grep -i ^Version" sys.exit(os.system(cmd)) -# TODO - Proper command line API -if len(sys.argv) == 4: - bam_filename, bai_filename, tabular_filename = sys.argv[1:] - max_depth = "8000" -elif len(sys.argv) == 5: - bam_filename, bai_filename, tabular_filename, max_depth = sys.argv[1:] -else: - sys.exit("Require 3 or 4 arguments: BAM, BAI, tabular filename, [max depth]") +bam_filename = options.input_bam +bai_filename = options.input_bai +tabular_filename = options.output_tabular +max_depth = options.max_depth +if args: + sys.exit("Sorry, the legacy API has been dropped.") + +if not bam_filename: + sys.exit("Input BAM filename is required.") if not os.path.isfile(bam_filename): sys.exit("Input BAM file not found: %s" % bam_filename) if bai_filename == "-": - # Make this optional for ease of use at the command line by hand: if os.path.isfile(bam_filename + ".bai"): bai_filename = bam_filename + ".bai" if not os.path.isfile(bai_filename): @@ -198,7 +224,10 @@ # Parse and combine the output -out_handle = open(tabular_filename, "w") +if tabular_filename == "-": + out_handle = sys.stdout +else: + out_handle = open(tabular_filename, "w") out_handle.write("#identifer\tlength\tmapped\tplaced\tmin_cov\tmax_cov\tmean_cov\n") idxstats_handle = open(idxstats_filename) @@ -241,7 +270,8 @@ idxstats_handle.close() depth_handle.close() -out_handle.close() +if tabular_filename != "-": + out_handle.close() print("Total reference length %i with overall mean coverage %0.2f" % (global_length, float(global_bases) / global_length)) diff -r 86455d19abb8 -r 1cedf1262a02 tools/coverage_stats/coverage_stats.xml --- a/tools/coverage_stats/coverage_stats.xml Tue Jun 06 10:18:36 2017 -0400 +++ b/tools/coverage_stats/coverage_stats.xml Fri Aug 11 13:37:38 2017 -0400 @@ -1,4 +1,4 @@ - + using samtools idxstats and depth samtools @@ -7,7 +7,11 @@ python $__tool_directory__/coverage_stats.py --version -python $__tool_directory__/coverage_stats.py '$input_bam' '${input_bam.metadata.bam_index}' '$out_tabular' '$max_depth' +python $__tool_directory__/coverage_stats.py +-b '$input_bam' +-i '${input_bam.metadata.bam_index}' +-o '$out_tabular' +-d '$max_depth'