def histogram(args):
    '\n    %prog histogram meryl.histogram species K\n\n    Plot the histogram based on meryl K-mer distribution, species and N are\n    only used to annotate the graphic.\n    '
    p = OptionParser(histogram.__doc__)
    p.add_option('--vmin', dest='vmin', default=1, type='int', help='minimum value, inclusive')
    p.add_option('--vmax', dest='vmax', default=100, type='int', help='maximum value, inclusive')
    p.add_option('--pdf', default=False, action='store_true', help='Print PDF instead of ASCII plot')
    p.add_option('--coverage', default=0, type='int', help='Kmer coverage [default: auto]')
    p.add_option('--nopeaks', default=False, action='store_true', help='Do not annotate K-mer peaks')
    (opts, args) = p.parse_args(args)
    if (len(args) != 3):
        sys.exit((not p.print_help()))
    (histfile, species, N) = args
    ascii = (not opts.pdf)
    peaks = (not opts.nopeaks)
    N = int(N)
    if (histfile.rsplit('.', 1)[(- 1)] in ('mcdat', 'mcidx')):
        logging.debug('CA kmer index found')
        histfile = merylhistogram(histfile)
    ks = KmerSpectrum(histfile)
    ks.analyze(K=N)
    Total_Kmers = int(ks.totalKmers)
    coverage = opts.coverage
    Kmer_coverage = (ks.max2 if (not coverage) else coverage)
    Genome_size = int(round(((Total_Kmers * 1.0) / Kmer_coverage)))
    Total_Kmers_msg = 'Total {0}-mers: {1}'.format(N, thousands(Total_Kmers))
    Kmer_coverage_msg = '{0}-mer coverage: {1}'.format(N, Kmer_coverage)
    Genome_size_msg = 'Estimated genome size: {0:.1f}Mb'.format((Genome_size / 1000000.0))
    Repetitive_msg = ks.repetitive
    SNPrate_msg = ks.snprate
    for msg in (Total_Kmers_msg, Kmer_coverage_msg, Genome_size_msg):
        print(msg, file=sys.stderr)
    (x, y) = ks.get_xy(opts.vmin, opts.vmax)
    title = '{0} {1}-mer histogram'.format(species, N)
    if ascii:
        asciiplot(x, y, title=title)
        return Genome_size
    plt.figure(1, (6, 6))
    plt.plot(x, y, 'g-', lw=2, alpha=0.5)
    ax = plt.gca()
    if peaks:
        t = (ks.min1, ks.max1, ks.min2, ks.max2, ks.min3)
        tcounts = [(x, y) for (x, y) in ks.counts if (x in t)]
        if tcounts:
            (x, y) = zip(*tcounts)
            tcounts = dict(tcounts)
            plt.plot(x, y, 'ko', lw=2, mec='k', mfc='w')
            ax.text(ks.max1, tcounts[ks.max1], 'SNP peak', va='top')
            ax.text(ks.max2, tcounts[ks.max2], 'Main peak')
    messages = [Total_Kmers_msg, Kmer_coverage_msg, Genome_size_msg, Repetitive_msg, SNPrate_msg]
    write_messages(ax, messages)
    (ymin, ymax) = ax.get_ylim()
    ymax = ((ymax * 7) / 6)
    ax.set_title(markup(title))
    ax.set_ylim((ymin, ymax))
    (xlabel, ylabel) = ('Coverage (X)', 'Counts')
    ax.set_xlabel(xlabel)
    ax.set_ylabel(ylabel)
    set_human_axis(ax)
    imagename = (histfile.split('.')[0] + '.pdf')
    savefig(imagename, dpi=100)
    return Genome_size
%prog histogram meryl.histogram species K

Plot the histogram based on meryl K-mer distribution, species and N are
only used to annotate the graphic.
def histogram(args):
    '\n    %prog histogram meryl.histogram species K\n\n    Plot the histogram based on meryl K-mer distribution, species and N are\n    only used to annotate the graphic.\n    '
    p = OptionParser(histogram.__doc__)
    p.add_option('--vmin', dest='vmin', default=1, type='int', help='minimum value, inclusive')
    p.add_option('--vmax', dest='vmax', default=100, type='int', help='maximum value, inclusive')
    p.add_option('--pdf', default=False, action='store_true', help='Print PDF instead of ASCII plot')
    p.add_option('--coverage', default=0, type='int', help='Kmer coverage [default: auto]')
    p.add_option('--nopeaks', default=False, action='store_true', help='Do not annotate K-mer peaks')
    (opts, args) = p.parse_args(args)
    if (len(args) != 3):
        sys.exit((not p.print_help()))
    (histfile, species, N) = args
    ascii = (not opts.pdf)
    peaks = (not opts.nopeaks)
    N = int(N)
    if (histfile.rsplit('.', 1)[(- 1)] in ('mcdat', 'mcidx')):
        logging.debug('CA kmer index found')
        histfile = merylhistogram(histfile)
    ks = KmerSpectrum(histfile)
    ks.analyze(K=N)
    Total_Kmers = int(ks.totalKmers)
    coverage = opts.coverage
    Kmer_coverage = (ks.max2 if (not coverage) else coverage)
    Genome_size = int(round(((Total_Kmers * 1.0) / Kmer_coverage)))
    Total_Kmers_msg = 'Total {0}-mers: {1}'.format(N, thousands(Total_Kmers))
    Kmer_coverage_msg = '{0}-mer coverage: {1}'.format(N, Kmer_coverage)
    Genome_size_msg = 'Estimated genome size: {0:.1f}Mb'.format((Genome_size / 1000000.0))
    Repetitive_msg = ks.repetitive
    SNPrate_msg = ks.snprate
    for msg in (Total_Kmers_msg, Kmer_coverage_msg, Genome_size_msg):
        print(msg, file=sys.stderr)
    (x, y) = ks.get_xy(opts.vmin, opts.vmax)
    title = '{0} {1}-mer histogram'.format(species, N)
    if ascii:
        asciiplot(x, y, title=title)
        return Genome_size
    plt.figure(1, (6, 6))
    plt.plot(x, y, 'g-', lw=2, alpha=0.5)
    ax = plt.gca()
    if peaks:
        t = (ks.min1, ks.max1, ks.min2, ks.max2, ks.min3)
        tcounts = [(x, y) for (x, y) in ks.counts if (x in t)]
        if tcounts:
            (x, y) = zip(*tcounts)
            tcounts = dict(tcounts)
            plt.plot(x, y, 'ko', lw=2, mec='k', mfc='w')
            ax.text(ks.max1, tcounts[ks.max1], 'SNP peak', va='top')
            ax.text(ks.max2, tcounts[ks.max2], 'Main peak')
    messages = [Total_Kmers_msg, Kmer_coverage_msg, Genome_size_msg, Repetitive_msg, SNPrate_msg]
    write_messages(ax, messages)
    (ymin, ymax) = ax.get_ylim()
    ymax = ((ymax * 7) / 6)
    ax.set_title(markup(title))
    ax.set_ylim((ymin, ymax))
    (xlabel, ylabel) = ('Coverage (X)', 'Counts')
    ax.set_xlabel(xlabel)
    ax.set_ylabel(ylabel)
    set_human_axis(ax)
    imagename = (histfile.split('.')[0] + '.pdf')
    savefig(imagename, dpi=100)
    return Genome_size