Source code for lib5c.tools.log

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


[docs]def add_log_tool(parser): log_parser = parser.add_parser( 'log', prog='lib5c log', help='log countsfiles', parents=[primerfile_parser, parallelization_parser, simple_in_out_parser] ) log_parser.add_argument( '-b', '--log_base', type=str, default='e', help='''Specify what base to use when logging. The default is 'e' for natural log.''') log_parser.add_argument( '-s', '--pseudocount', type=float, default=1.0, help='''The pseudocount to add before logging. The default is 1.0.''') log_parser.add_argument( '-U', '--unlog', action='store_true', help='''Pass this flag to unlog instead of logging.''') log_parser.set_defaults(func=log_tool)
[docs]def log_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_log_counts, parallel_unlog_counts from lib5c.writers.counts import write_counts # resolve primerfile and parallel resolve_parallel(parser, args, subcommand='log') primerfile = resolve_primerfile(args.infile, args.primerfile) # resolve base resolved_base = args.log_base if resolved_base not in ['e', '2', '10']: resolved_base = float(resolved_base) # load counts print('loading counts') primermap = load_primermap(primerfile) counts = load_counts(args.infile, primermap) # divide if args.unlog: print('unlogging counts') counts = parallel_unlog_counts(counts, pseudocount=args.pseudocount, base=resolved_base) else: print('logging counts') counts = parallel_log_counts(counts, pseudocount=args.pseudocount, base=resolved_base) # write output print('writing counts') write_counts(counts, args.outfile, primermap)