Source code for lib5c.tools.visualize_splines
from lib5c.tools.parents import parallelization_parser, \
region_parser, primerfile_parser
[docs]def add_visualize_splines_tool(parser):
visualize_splines_parser = parser.add_parser(
'visualize-splines',
prog='lib5c plot visualize-splines',
help='visualize splines compared to raw data',
parents=[primerfile_parser, parallelization_parser, region_parser]
)
visualize_splines_parser.add_argument(
'observed',
type=str,
help='''Countsfile containing observed counts to compare to spline.''')
visualize_splines_parser.add_argument(
'splines',
type=str,
help='''Pickle file containing splines fit by 'lib5c spline'.''')
visualize_splines_parser.add_argument(
'bias_factor',
type=str,
help='''The bias factor to plot the spline for.''')
visualize_splines_parser.add_argument(
'-g', '--grid_points',
type=int,
default=10,
help='''The number of grid points to use for the wireframe
representation of the spline. The default is 10.''')
visualize_splines_parser.add_argument(
'-s', '--sampling_rate',
type=int,
default=100,
help='''Only scatterplot every nth point. The default is 100.''')
visualize_splines_parser.add_argument(
'-U', '--unlog',
action='store_true',
help='''Pass this flag to fit the splines on unlogged counts. By
default, they will be fit to logged counts.''')
visualize_splines_parser.add_argument(
'-A', '--asymmetric',
action='store_true',
help='''Pass this flag to consider only the upper triangular entries of
the contact matrices.''')
visualize_splines_parser.set_defaults(func=visualize_splines_tool)
[docs]def visualize_splines_tool(parser, args):
import pickle
from lib5c.tools.helpers import resolve_parallel, resolve_primerfile
from lib5c.plotters.splines import visualize_spline
from lib5c.parsers.primers import load_primermap
from lib5c.parsers.counts import load_counts
# resolve primerfile and parallel
primerfile = resolve_primerfile(args.observed, args.primerfile)
resolve_parallel(parser, args, subcommand='plot visualize-splines',
key_arg='observed')
# load counts
print('loading counts')
primermap = load_primermap(primerfile)
counts = load_counts(args.observed, primermap)
# load pickle
with open(args.splines, 'rb') as handle:
splines = pickle.load(handle)
# visualize
print('visualizing')
visualize_spline([counts], primermap, args.bias_factor,
splines[args.bias_factor], grid_points=args.grid_points,
sample_rate=args.sampling_rate, log=not args.unlog,
asymmetric=args.asymmetric)