Source code for lib5c.tools.subtract

from lib5c.tools.parents import level_parser, parallelization_parser, \
    primerfile_parser


[docs]def add_subtract_tool(parser): subtract_parser = parser.add_parser( 'subtract', prog='lib5c subtract', help='subtract countsfiles', parents=[primerfile_parser, level_parser, parallelization_parser] ) subtract_parser.add_argument( 'minuend', type=str, help='''Countsfile to subtract from, or a glob-expandable string to subtract from multiple countsfiles in parallel.''') subtract_parser.add_argument( 'subtrahend', type=str, help='''Countsfile to subtract, or a pattern containing %%s which will be replaced by the replicate name if multiple countsfiles are specified in minuend.''') subtract_parser.add_argument( 'difference', type=str, help='''Countsfile to write output to, or a pattern containing %%s which will be replaced by the replicate name if multiple countsfiles are specified in minuend.''') subtract_parser.set_defaults(func=subtract_tool)
[docs]def subtract_tool(parser, args): from lib5c.tools.helpers import resolve_primerfile, resolve_parallel from lib5c.parsers.primers import load_primermap from lib5c.parsers.counts import load_counts from lib5c.util.counts import parallel_subtract_counts from lib5c.writers.counts import write_counts # resolve primerfile and parallel primerfile = resolve_primerfile(args.minuend, args.primerfile) resolve_parallel(parser, args, subcommand='subtract', key_arg='minuend') # load counts print('loading counts') primermap = load_primermap(primerfile) minuend = load_counts(args.minuend, primermap) subtrahend = load_counts(args.subtrahend, primermap) # subtract print('subtracting counts') difference = parallel_subtract_counts(minuend, subtrahend) # write output print('writing counts') write_counts(difference, args.difference, primermap)