Mercurial > repos > iuc > purge_dups
changeset 3:76d4cbefff85 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/purge_dups commit 5d56aa02b0f905507e1d98a2d74f0629b7591cd3"
author | iuc |
---|---|
date | Mon, 14 Jun 2021 18:01:05 +0000 |
parents | 17b378303f2d |
children | a315c25dc813 |
files | hist_plot.py purge_dups.xml test-data/hist.png test-data/hist_options.png test-data/out_hist_options.cov test-data/out_hist_options.wig test-data/pbcstats.tabular test-data/pbcstats2.tabular test-data/pbcstats_hist_options.tabular test-data/tx_stats.tabular |
diffstat | 10 files changed, 3448 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hist_plot.py Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +# read depth histogram plot + +# imported from https://github.com/dfguan/purge_dups/blob/master/scripts/hist_plot.py + +import argparse + +import matplotlib as mpl +import matplotlib.pyplot as plt + +mpl.use("Agg") + + +def col_hist(stat_fn, delim): + hists = [] + # we consider the coverage histogram start with 0 + with open(stat_fn) as f: + for ln in f: + lnlist = ln.strip().split(delim) + hists.append(int(lnlist[1])) + return hists + + +def get_cutoffs(con): + if con: + lnlst = [] + with open(con) as f: + lnlst = f.readline().strip().split("\t") + if len(lnlst): + return [int(lnlst[0]), int(lnlst[3]), int(lnlst[5])] + else: + return [] + else: + return [] + + +def mk_plot(hists, cutoffs, ttle, xm, xM, ym, yM, out_fl): + + if ttle is None: + ttle = "read depth histogram" + if xm is None: + xm = 0 + if xM is None: + xM = len(hists) - 2 # ignore the last read depth count + if ym is None: + ym = 0 + if yM is None: + yM = 1.2 * max(hists) + x = [t for t in range(xm, xM)] + plt.axis([xm, xM, ym, yM]) + width = 8 + height = 6 + plt.figure(num=None, figsize=(width, height)) + plt.plot(x, hists[xm:xM], label="l", color="blue") # + plt.xticks([z for z in range(xm, xM, 10)], fontsize=3) + # cutoffs + colors = ["r", "g", "c"] + if len(cutoffs): + for i in range(len(cutoffs)): + plt.text(cutoffs[i], 0, str(cutoffs[i]), fontsize=5, color=colors[i]) + plt.axvline(x=cutoffs[i], linewidth=1, color=colors[i]) + + plt.title(ttle) + plt.gca().xaxis.grid(True, color="black", alpha=0.2) + + # plt.grid(True, color="black", alpha=0.2) + # plt.gca().get_legend().remove() + + plt.tight_layout() + plt.savefig(out_fl, dpi=300) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="read depth histogram plot") + + parser.add_argument( + "-c", + "--cutoffs", + type=str, + action="store", + dest="con", + help="read depth cutoffs", + ) + parser.add_argument( + "-y", "--ymin", type=int, action="store", dest="ymin", help="set ymin" + ) + parser.add_argument( + "-x", "--xmin", type=int, action="store", dest="xmin", help="set xmin" + ) + parser.add_argument( + "-Y", "--ymax", type=int, action="store", dest="ymax", help="set ymax" + ) + parser.add_argument( + "-X", "--xmax", type=int, action="store", dest="xmax", help="set xmax" + ) + parser.add_argument( + "-t", + "--title", + type=str, + action="store", + dest="title", + help="figure title [NULL]", + default="", + ) + parser.add_argument( + "-d", + "--delim", + type=str, + action="store", + dest="delim", + help="delimiter", + default="\t", + ) + parser.add_argument("-v", "--version", action="version", version="hist_plot 0.0.0") + parser.add_argument("stat_fn", type=str, action="store", help="stat file") + parser.add_argument("out_fn", type=str, action="store", help="output file") + opts = parser.parse_args() + hists = col_hist(opts.stat_fn, opts.delim) + cutoffs = get_cutoffs(opts.con) + mk_plot( + hists, + cutoffs, + opts.title, + opts.xmin, + opts.xmax, + opts.ymin, + opts.ymax, + opts.out_fn, + )
--- a/purge_dups.xml Tue Apr 27 20:48:51 2021 +0000 +++ b/purge_dups.xml Mon Jun 14 18:01:05 2021 +0000 @@ -2,13 +2,72 @@ <description>and haplotigs in an assembly based on read depth (purge_dups)</description> <macros> <token name="@TOOL_VERSION@">1.2.5</token> - <token name="@VERSION_SUFFIX@">2</token> + <token name="@VERSION_SUFFIX@">3</token> + <xml name="trimmers"> + <section name="section_hist" title="Histogram plot options" > + <!--<param name="cutoffs_his" type="data" optional="true" format="txt" label="Read depth cutoffs file" />--> + <param argument="--ymin" type="integer" optional="true" min="0" label="Specify a minimum for the Y axis"/> + <param argument="--ymax" type="integer" optional="true" label="Specify a maximum for the Y axis"/> + <param argument="--xmin" type="integer" optional="true" min="0" label="Specify a minimum for the X axis"/> + <param argument="--xmax" type="integer" optional="true" label="Specify a maximum for the X axis"/> + <param argument="--title" type="text" value="Read depth histogram plot" label="Histogram title"/> + </section> + </xml> + <token name="@HIST_PLOT@"><![CDATA[ + python '$__tool_directory__/hist_plot.py' + --cutoffs cutoffs.tsv + #if $function_select.section_hist.ymin + --ymin $function_select.section_hist.ymin + #end if + #if $function_select.section_hist.ymax + --ymax $function_select.section_hist.ymax + #end if + #if $function_select.section_hist.xmin + --xmin $function_select.section_hist.xmin + #end if + #if $function_select.section_hist.xmax + --xmax $function_select.section_hist.xmax + #end if + #if $function_select.section_hist.title + --title '${function_select.section_hist.title}' + #end if + depth.stat hist.png + ]]></token> + <token name="@CALCUTS@"><![CDATA[ + calcuts + #if $function_select.section_calcuts.min_depth: + -f $function_select.section_calcuts.min_depth + #end if + #if $function_select.section_calcuts.low_depth: + -l $function_select.section_calcuts.low_depth + #end if + #if $function_select.section_calcuts.transition: + -m $function_select.section_calcuts.transition + #end if + #if $function_select.section_calcuts.upper_depth: + -u $function_select.section_calcuts.upper_depth + #end if + $function_select.section_calcuts.ploidy + ]]></token> + <xml name="calcuts"> + <section name="section_calcuts" title="Calcuts options"> + <param name="min_depth" type="float" label="Minimum depth count fraction to maximum depth coun" min="0" max="1" argument="-f" optional="true" help="Default = 0.1"/> + <param name="low_depth" label="Lower bound for read depth" type="integer" argument="-l" optional="true"/> + <param name="transition" label="Transition between haploid and diploid" type="integer" argument="-m" optional="true"/> + <param name="upper_depth" label="Upper bound for read depth" type="integer" argument="-u" optional="true"/> + <param name="ploidy" argument="-d" type="select" label="Ploidy"> + <option value="-d 0" selected="true">Diploid [0]</option> + <option value="-d 1">Haploid [1]</option> + </param> + </section> + </xml> </macros> <requirements> <requirement type="package" version="@TOOL_VERSION@">purge_dups</requirement> + <requirement type="package" version="3.4.2">matplotlib-base</requirement> </requirements> <command detect_errors="exit_code"><![CDATA[ - #if $function_select.functions == "purge_dups": + #if $function_select.functions == 'purge_dups': #for $i, $file in enumerate($function_select.input): #if $file.is_of_type("paf"): gzip -c '${file}' > '${i}.gz' && @@ -18,10 +77,10 @@ #end for purge_dups #if $function_select.coverage: - -c '$function_select.coverage' + -c '${function_select.coverage}' #end if #if $function_select.cutoffs: - -T '$function_select.cutoffs' + -T '${function_select.cutoffs}' #end if #if $function_select.min_bad: -f $function_select.min_bad @@ -38,7 +97,7 @@ #if $function_select.max_gap: -M $function_select.max_gap #end if - #if $function_select.double_chain.chaining_rounds == "two": + #if $function_select.double_chain.chaining_rounds == 'two': -2 #if $function_select.double_chain.max_gap_2: -G $function_select.double_chain.max_gap_2 @@ -54,15 +113,15 @@ '${i}.gz' #end for > dups.bed 2> purge_dups.log - #else if $function_select.functions == "split_fa": + #else if $function_select.functions == 'split_fa': split_fa #if $function_select.split: -n $function_select.split #end if - '$function_select.input' > split.fasta - #else if $function_select.functions == "pbcstat": + '${function_select.input}' > split.fasta + #else if $function_select.functions == 'pbcstat': #for $i, $file in enumerate($function_select.input): - #if $file.is_of_type("paf"): + #if $file.is_of_type('paf'): gzip -c '${file}' > '${i}.gz' && #else ln -s '${file}' '${i}.gz' && @@ -82,10 +141,15 @@ -l $function_select.flank #end if $function_select.primary_alignments + #for $i, $file in enumerate($function_select.input): '${i}.gz' - #end for - #else if $function_select.functions == "ngscstat": + #end for + && mv PB.stat depth.stat + && @CALCUTS@ depth.stat > cutoffs.tsv 2>calcuts.log + && @HIST_PLOT@ + + #else if $function_select.functions == 'ngscstat': ngscstat #if $function_select.min_align_qual: -q $function_select.min_align_qual @@ -96,24 +160,15 @@ #if $function_select.max_insert: -L $function_select.max_insert #end if - '$function_select.input' - #else if $function_select.functions == "calcuts": - calcuts - #if $function_select.min_depth: - -f $function_select.min_depth - #end if - #if $function_select.low_depth: - -l $function_select.low_depth - #end if - #if $function_select.transition: - -m $function_select.transition - #end if - #if $function_select.upper_depth: - -u $function_select.upper_depth - #end if - $function_select.ploidy - '$function_select.input' > cutoffs.tsv 2>calcuts.log - #else if $function_select.functions == "get_seqs": + '${function_select.input}' + && mv TX.stat depth.stat + && @CALCUTS@ depth.stat > cutoffs.tsv 2>calcuts.log + && @HIST_PLOT@ + + #else if $function_select.functions == 'calcuts': + @CALCUTS@ '${function_select.input}' > cutoffs.tsv 2>calcuts.log + + #else if $function_select.functions == 'get_seqs': get_seqs $function_select.coverage $function_select.haplotigs @@ -128,18 +183,18 @@ #if $function_select.min_gap: -g $function_select.min_gap #end if - '$function_select.bed_input' '$function_select.fasta_input' + '${function_select.bed_input}' '${function_select.fasta_input}' #end if ]]></command> <inputs> <conditional name="function_select"> <param type="select" name="functions" label="Select the purge_dups function"> - <option value="purge_dups">purge haplotigs and overlaps for an assembly</option> - <option value="split_fa">split FASTA file by 'N's</option> - <option value="pbcstat">create read depth histogram and base-level read depth for pacbio data</option> - <option value="ngscstat">create read depth histogram and base-level read detph for illumina data</option> - <option value="calcuts">calculate coverage cutoffs</option> - <option value="get_seqs">obtain seqeuences after purging</option> + <option value="purge_dups">Purge haplotigs and overlaps for an assembly (purge_dups)</option> + <option value="split_fa">Split FASTA file by 'N's (split_fa)</option> + <option value="pbcstat">Calculate coverage cutoff and create read depth histogram and base-levelread depth for PacBio data (calcuts+pbcstats)</option> + <option value="ngscstat">Calculate coverage cutoff and create read depth histogram and base-level read detph for Illumina data (calcuts+ngscstat)</option> + <option value="calcuts">calculate coverage cutoffs (calcuts)</option> + <option value="get_seqs">Obtain seqeuences after purging (get_seqs)</option> </param> <when value="purge_dups"> <param name="input" type="data" format="paf,paf.gz" multiple="true" label="PAF input file"/> @@ -174,6 +229,8 @@ <param name="min_map_qual" type="integer" argument="-q" optional="true" label="Minimum mapping quality"/> <param name="flank" type="integer" argument="-l" optional="true" label="Flanking space" /> <param name="primary_alignments" argument="-p" type="boolean" truevalue="-p" falsevalue="" checked="true" label="Use only primary alignments" /> + <expand macro="calcuts" /> + <expand macro="trimmers"/> </when> <when value="ngscstat"> <param name="input" type="data" format="bam" label="BAM input file"/> @@ -181,18 +238,15 @@ <!-- Param exists in help text, but isn't actually part of the code. Maybe in the next release? --> <!-- <param name="max_depth" type="integer" label="Maximum read depth" argument="-M" optional="true"/> --> <param name="max_insert" type="integer" argument="-L" optional="true" label="Maximum insert size"/> + <expand macro="calcuts" /> + <expand macro="trimmers"/> </when> + <when value="calcuts"> <param name="input" type="data" format="tabular" label="STAT input file"/> - <param name="min_depth" type="float" label="Minimum depth count fraction to maximum depth coun" min="0" max="1" argument="-f" optional="true" help="Default = 0.1"/> - <param name="low_depth" label="Lower bound for read depth" type="integer" argument="-l" optional="true"/> - <param name="transition" label="Transition between haploid and diploid" type="integer" argument="-m" optional="true"/> - <param name="upper_depth" label="Upper bound for read depth" type="integer" argument="-u" optional="true"/> - <param name="ploidy" argument="-d" type="select" label="Ploidy"> - <option value="-d 0" selected="true">Diploid [0]</option> - <option value="-d 1">Haploid [1]</option> - </param> + <expand macro="calcuts" /> </when> + <when value="get_seqs"> <param name="fasta_input" type="data" format="fasta" label="Fasta input file"/> <param name="bed_input" type="data" format="bed" label="Bed input file"/> @@ -222,8 +276,8 @@ <data name="ngscstat_cov" format="tabular" from_work_dir="TX.base.cov" label="${tool.name} on ${on_string}: ngscstat base coverage file"> <filter>function_select['functions'] == 'ngscstat'</filter> </data> - <data name="ngscstat_stat" format="tabular" from_work_dir="TX.stat" label="${tool.name} on ${on_string}: ngscstat stat file"> - <filter>function_select['functions'] == 'ngscstat'</filter> + <data name="stat_file" format="tabular" from_work_dir="depth.stat" label="${tool.name} on ${on_string}: stat file"> + <filter>function_select['functions'] == 'ngscstat' or function_select['functions'] == 'pbcstat'</filter> </data> <!-- Pbcstat --> <data name="pbcstat_cov" format="tabular" from_work_dir="PB.base.cov" label="${tool.name} on ${on_string}: pbcstat base coverage file"> @@ -232,15 +286,17 @@ <data name="pbcstat_wig" format="wig" from_work_dir="PB.cov.wig" label="${tool.name} on ${on_string}: pbcstat base wig file"> <filter>function_select['functions'] == 'pbcstat'</filter> </data> - <data name="pbcstat_stat" format="tabular" from_work_dir="PB.stat" label="${tool.name} on ${on_string}: stat file"> - <filter>function_select['functions'] == 'pbcstat'</filter> + + <data name="hist" format="png" from_work_dir="hist.png" label="${tool.name} on ${on_string}: histogram plot"> + <filter>function_select['functions'] == 'pbcstat' or function_select['functions'] == 'ngscstat'</filter> </data> + <!-- Calcuts --> <data name="calcuts_log" format="txt" from_work_dir="calcuts.log" label="${tool.name} on ${on_string}: calcuts log file"> - <filter>function_select['functions'] == 'calcuts'</filter> + <filter>function_select['functions'] in ('pbcstat', 'ngscstat', 'calcuts')</filter> </data> <data name="calcuts_tab" format="tabular" from_work_dir="cutoffs.tsv" label="${tool.name} on ${on_string}: calcuts cutoff file"> - <filter>function_select['functions'] == 'calcuts'</filter> + <filter>function_select['functions'] in ('pbcstat', 'ngscstat', 'calcuts')</filter> </data> <!-- Purge dups --> <data name="purge_dups_log" format="txt" from_work_dir="purge_dups.log" label="${tool.name} on ${on_string}: purge_dups log file"> @@ -311,7 +367,7 @@ <output name="split_fasta" value="split_out.fasta"/> </test> <!-- pbcstat --> - <test expect_num_outputs="3"> + <test expect_num_outputs="6"> <conditional name="function_select"> <param name="functions" value="pbcstat"/> <param name="input" value="test.paf"/> @@ -320,12 +376,22 @@ <param name="min_map_qual" value="1"/> <param name="flank" value="1"/> <param name="primary_alignments" value="-p"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> </conditional> + <output name="calcuts_tab" value="calcuts_out.tsv"/> <output name="pbcstat_cov" value="out.cov"/> <output name="pbcstat_wig" value="out.wig"/> + <output name="stat_file" value="pbcstats.tabular"/> + <output name="hist" value="hist.png" ftype="png" compare="sim_size"/> </test> <!-- pbcstat gzip --> - <test expect_num_outputs="3"> + <test expect_num_outputs="6"> <conditional name="function_select"> <param name="functions" value="pbcstat"/> <param name="input" value="test.paf.gz" ftype="paf.gz"/> @@ -334,39 +400,68 @@ <param name="min_map_qual" value="1"/> <param name="flank" value="1"/> <param name="primary_alignments" value="-p"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> </conditional> + <output name="calcuts_tab" value="calcuts_out.tsv"/> <output name="pbcstat_cov" value="out.cov"/> <output name="pbcstat_wig" value="out.wig"/> </test> - <!-- Pbcstat multiple input --> - <test expect_num_outputs="3"> + <!-- Pbcstat multiple input --> + <test expect_num_outputs="6"> <conditional name="function_select"> <param name="functions" value="pbcstat"/> <param name="input" value="test.paf,test2.paf.gz"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> </conditional> + <output name="calcuts_tab" value="calcuts_out.tsv"/> <output name="pbcstat_cov" value="out2.cov"/> - <output name="pbcstat_wig" value="out2.wig"/> + <output name="stat_file" value="pbcstats2.tabular"/> + <output name="pbcstat_wig" value="out2.wig"/> </test> <!-- ngscstat --> - <test expect_num_outputs="2"> + <test expect_num_outputs="5"> <conditional name="function_select"> <param name="functions" value="ngscstat"/> <param name="input" value="test.bam"/> <param name="min_align_qual" value="10"/> <param name="max_insert" value="100"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> </conditional> + <output name="calcuts_tab" value="calcuts_out.tsv"/> <output name="ngscstat_cov" value="ngsc_out.cov"/> + <output name="stat_file" value="tx_stats.tabular"/> + <output name="hist" value="hist.png" ftype="png" compare="sim_size"/> </test> <!-- Calcuts --> <test expect_num_outputs="2"> <conditional name="function_select"> <param name="functions" value="calcuts"/> <param name="input" value="test.stat"/> - <param name="min_depth" value="0.01"/> - <param name="low_depth" value="1"/> - <param name="transition" value="1"/> - <param name="upper_depth" value="100"/> - <param name="ploidy" value="-d 0"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> </conditional> <output name="calcuts_tab" value="calcuts_out.tsv"/> </test> @@ -386,6 +481,35 @@ </conditional> <output name="get_seqs_purged" value="purged_out.fa"/> </test> + <!-- pbcstat histogram options--> + <test expect_num_outputs="6"> + <conditional name="function_select"> + <param name="functions" value="pbcstat"/> + <param name="input" value="test.paf"/> + <param name="max_cov" value="1000"/> + <param name="min_map_ratio" value="0.01"/> + <param name="min_map_qual" value="1"/> + <param name="flank" value="1"/> + <param name="primary_alignments" value="-p"/> + <section name="section_calcuts"> + <param name="min_depth" value="0.01"/> + <param name="low_depth" value="1"/> + <param name="transition" value="1"/> + <param name="upper_depth" value="100"/> + <param name="ploidy" value="-d 0"/> + </section> + <section name="section_hist"> + <param name="ymax" value="100"/> + <param name="xmax" value="100"/> + <param name="cutoffs_his" value="calcuts_out.tsv"/> + </section> + </conditional> + <output name="calcuts_tab" value="calcuts_out.tsv"/> + <output name="pbcstat_cov" value="out_hist_options.cov"/> + <output name="pbcstat_wig" value="out_hist_options.wig"/> + <output name="stat_file" value="pbcstats_hist_options.tabular"/> + <output name="hist" value="hist_options.png" ftype="png" compare="sim_size"/> + </test> </tests> <help><![CDATA[ .. class:: infomark
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/out_hist_options.cov Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,14 @@ +>gi|528476637:29857558-29915771 58214 +1 29093 0 +29094 29356 2 +29357 33376 0 +33377 41951 1 +41952 58214 0 +>gi|157734152:29655295-29712160 56866 +1 29214 0 +29215 29477 1 +29478 33498 0 +33499 42073 1 +42074 48471 0 +48472 56865 1 +56866 56866 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/out_hist_options.wig Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,116 @@ +track type="wiggle_0" name="PB" +fixedStep chrom=gi|528476637:29857558-29915771 start=1 step=1024 span=1024 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +variableStep chrom=gi|528476637:29857558-29915771 span=1894 +56321 0 +fixedStep chrom=gi|157734152:29655295-29712160 start=1 step=1024 span=1024 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +variableStep chrom=gi|157734152:29655295-29712160 span=1570 +55297 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/pbcstats.tabular Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,1001 @@ +0 89010 +1 25807 +2 263 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +10 0 +11 0 +12 0 +13 0 +14 0 +15 0 +16 0 +17 0 +18 0 +19 0 +20 0 +21 0 +22 0 +23 0 +24 0 +25 0 +26 0 +27 0 +28 0 +29 0 +30 0 +31 0 +32 0 +33 0 +34 0 +35 0 +36 0 +37 0 +38 0 +39 0 +40 0 +41 0 +42 0 +43 0 +44 0 +45 0 +46 0 +47 0 +48 0 +49 0 +50 0 +51 0 +52 0 +53 0 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 +62 0 +63 0 +64 0 +65 0 +66 0 +67 0 +68 0 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 +75 0 +76 0 +77 0 +78 0 +79 0 +80 0 +81 0 +82 0 +83 0 +84 0 +85 0 +86 0 +87 0 +88 0 +89 0 +90 0 +91 0 +92 0 +93 0 +94 0 +95 0 +96 0 +97 0 +98 0 +99 0 +100 0 +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +122 0 +123 0 +124 0 +125 0 +126 0 +127 0 +128 0 +129 0 +130 0 +131 0 +132 0 +133 0 +134 0 +135 0 +136 0 +137 0 +138 0 +139 0 +140 0 +141 0 +142 0 +143 0 +144 0 +145 0 +146 0 +147 0 +148 0 +149 0 +150 0 +151 0 +152 0 +153 0 +154 0 +155 0 +156 0 +157 0 +158 0 +159 0 +160 0 +161 0 +162 0 +163 0 +164 0 +165 0 +166 0 +167 0 +168 0 +169 0 +170 0 +171 0 +172 0 +173 0 +174 0 +175 0 +176 0 +177 0 +178 0 +179 0 +180 0 +181 0 +182 0 +183 0 +184 0 +185 0 +186 0 +187 0 +188 0 +189 0 +190 0 +191 0 +192 0 +193 0 +194 0 +195 0 +196 0 +197 0 +198 0 +199 0 +200 0 +201 0 +202 0 +203 0 +204 0 +205 0 +206 0 +207 0 +208 0 +209 0 +210 0 +211 0 +212 0 +213 0 +214 0 +215 0 +216 0 +217 0 +218 0 +219 0 +220 0 +221 0 +222 0 +223 0 +224 0 +225 0 +226 0 +227 0 +228 0 +229 0 +230 0 +231 0 +232 0 +233 0 +234 0 +235 0 +236 0 +237 0 +238 0 +239 0 +240 0 +241 0 +242 0 +243 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 +256 0 +257 0 +258 0 +259 0 +260 0 +261 0 +262 0 +263 0 +264 0 +265 0 +266 0 +267 0 +268 0 +269 0 +270 0 +271 0 +272 0 +273 0 +274 0 +275 0 +276 0 +277 0 +278 0 +279 0 +280 0 +281 0 +282 0 +283 0 +284 0 +285 0 +286 0 +287 0 +288 0 +289 0 +290 0 +291 0 +292 0 +293 0 +294 0 +295 0 +296 0 +297 0 +298 0 +299 0 +300 0 +301 0 +302 0 +303 0 +304 0 +305 0 +306 0 +307 0 +308 0 +309 0 +310 0 +311 0 +312 0 +313 0 +314 0 +315 0 +316 0 +317 0 +318 0 +319 0 +320 0 +321 0 +322 0 +323 0 +324 0 +325 0 +326 0 +327 0 +328 0 +329 0 +330 0 +331 0 +332 0 +333 0 +334 0 +335 0 +336 0 +337 0 +338 0 +339 0 +340 0 +341 0 +342 0 +343 0 +344 0 +345 0 +346 0 +347 0 +348 0 +349 0 +350 0 +351 0 +352 0 +353 0 +354 0 +355 0 +356 0 +357 0 +358 0 +359 0 +360 0 +361 0 +362 0 +363 0 +364 0 +365 0 +366 0 +367 0 +368 0 +369 0 +370 0 +371 0 +372 0 +373 0 +374 0 +375 0 +376 0 +377 0 +378 0 +379 0 +380 0 +381 0 +382 0 +383 0 +384 0 +385 0 +386 0 +387 0 +388 0 +389 0 +390 0 +391 0 +392 0 +393 0 +394 0 +395 0 +396 0 +397 0 +398 0 +399 0 +400 0 +401 0 +402 0 +403 0 +404 0 +405 0 +406 0 +407 0 +408 0 +409 0 +410 0 +411 0 +412 0 +413 0 +414 0 +415 0 +416 0 +417 0 +418 0 +419 0 +420 0 +421 0 +422 0 +423 0 +424 0 +425 0 +426 0 +427 0 +428 0 +429 0 +430 0 +431 0 +432 0 +433 0 +434 0 +435 0 +436 0 +437 0 +438 0 +439 0 +440 0 +441 0 +442 0 +443 0 +444 0 +445 0 +446 0 +447 0 +448 0 +449 0 +450 0 +451 0 +452 0 +453 0 +454 0 +455 0 +456 0 +457 0 +458 0 +459 0 +460 0 +461 0 +462 0 +463 0 +464 0 +465 0 +466 0 +467 0 +468 0 +469 0 +470 0 +471 0 +472 0 +473 0 +474 0 +475 0 +476 0 +477 0 +478 0 +479 0 +480 0 +481 0 +482 0 +483 0 +484 0 +485 0 +486 0 +487 0 +488 0 +489 0 +490 0 +491 0 +492 0 +493 0 +494 0 +495 0 +496 0 +497 0 +498 0 +499 0 +500 0 +501 0 +502 0 +503 0 +504 0 +505 0 +506 0 +507 0 +508 0 +509 0 +510 0 +511 0 +512 0 +513 0 +514 0 +515 0 +516 0 +517 0 +518 0 +519 0 +520 0 +521 0 +522 0 +523 0 +524 0 +525 0 +526 0 +527 0 +528 0 +529 0 +530 0 +531 0 +532 0 +533 0 +534 0 +535 0 +536 0 +537 0 +538 0 +539 0 +540 0 +541 0 +542 0 +543 0 +544 0 +545 0 +546 0 +547 0 +548 0 +549 0 +550 0 +551 0 +552 0 +553 0 +554 0 +555 0 +556 0 +557 0 +558 0 +559 0 +560 0 +561 0 +562 0 +563 0 +564 0 +565 0 +566 0 +567 0 +568 0 +569 0 +570 0 +571 0 +572 0 +573 0 +574 0 +575 0 +576 0 +577 0 +578 0 +579 0 +580 0 +581 0 +582 0 +583 0 +584 0 +585 0 +586 0 +587 0 +588 0 +589 0 +590 0 +591 0 +592 0 +593 0 +594 0 +595 0 +596 0 +597 0 +598 0 +599 0 +600 0 +601 0 +602 0 +603 0 +604 0 +605 0 +606 0 +607 0 +608 0 +609 0 +610 0 +611 0 +612 0 +613 0 +614 0 +615 0 +616 0 +617 0 +618 0 +619 0 +620 0 +621 0 +622 0 +623 0 +624 0 +625 0 +626 0 +627 0 +628 0 +629 0 +630 0 +631 0 +632 0 +633 0 +634 0 +635 0 +636 0 +637 0 +638 0 +639 0 +640 0 +641 0 +642 0 +643 0 +644 0 +645 0 +646 0 +647 0 +648 0 +649 0 +650 0 +651 0 +652 0 +653 0 +654 0 +655 0 +656 0 +657 0 +658 0 +659 0 +660 0 +661 0 +662 0 +663 0 +664 0 +665 0 +666 0 +667 0 +668 0 +669 0 +670 0 +671 0 +672 0 +673 0 +674 0 +675 0 +676 0 +677 0 +678 0 +679 0 +680 0 +681 0 +682 0 +683 0 +684 0 +685 0 +686 0 +687 0 +688 0 +689 0 +690 0 +691 0 +692 0 +693 0 +694 0 +695 0 +696 0 +697 0 +698 0 +699 0 +700 0 +701 0 +702 0 +703 0 +704 0 +705 0 +706 0 +707 0 +708 0 +709 0 +710 0 +711 0 +712 0 +713 0 +714 0 +715 0 +716 0 +717 0 +718 0 +719 0 +720 0 +721 0 +722 0 +723 0 +724 0 +725 0 +726 0 +727 0 +728 0 +729 0 +730 0 +731 0 +732 0 +733 0 +734 0 +735 0 +736 0 +737 0 +738 0 +739 0 +740 0 +741 0 +742 0 +743 0 +744 0 +745 0 +746 0 +747 0 +748 0 +749 0 +750 0 +751 0 +752 0 +753 0 +754 0 +755 0 +756 0 +757 0 +758 0 +759 0 +760 0 +761 0 +762 0 +763 0 +764 0 +765 0 +766 0 +767 0 +768 0 +769 0 +770 0 +771 0 +772 0 +773 0 +774 0 +775 0 +776 0 +777 0 +778 0 +779 0 +780 0 +781 0 +782 0 +783 0 +784 0 +785 0 +786 0 +787 0 +788 0 +789 0 +790 0 +791 0 +792 0 +793 0 +794 0 +795 0 +796 0 +797 0 +798 0 +799 0 +800 0 +801 0 +802 0 +803 0 +804 0 +805 0 +806 0 +807 0 +808 0 +809 0 +810 0 +811 0 +812 0 +813 0 +814 0 +815 0 +816 0 +817 0 +818 0 +819 0 +820 0 +821 0 +822 0 +823 0 +824 0 +825 0 +826 0 +827 0 +828 0 +829 0 +830 0 +831 0 +832 0 +833 0 +834 0 +835 0 +836 0 +837 0 +838 0 +839 0 +840 0 +841 0 +842 0 +843 0 +844 0 +845 0 +846 0 +847 0 +848 0 +849 0 +850 0 +851 0 +852 0 +853 0 +854 0 +855 0 +856 0 +857 0 +858 0 +859 0 +860 0 +861 0 +862 0 +863 0 +864 0 +865 0 +866 0 +867 0 +868 0 +869 0 +870 0 +871 0 +872 0 +873 0 +874 0 +875 0 +876 0 +877 0 +878 0 +879 0 +880 0 +881 0 +882 0 +883 0 +884 0 +885 0 +886 0 +887 0 +888 0 +889 0 +890 0 +891 0 +892 0 +893 0 +894 0 +895 0 +896 0 +897 0 +898 0 +899 0 +900 0 +901 0 +902 0 +903 0 +904 0 +905 0 +906 0 +907 0 +908 0 +909 0 +910 0 +911 0 +912 0 +913 0 +914 0 +915 0 +916 0 +917 0 +918 0 +919 0 +920 0 +921 0 +922 0 +923 0 +924 0 +925 0 +926 0 +927 0 +928 0 +929 0 +930 0 +931 0 +932 0 +933 0 +934 0 +935 0 +936 0 +937 0 +938 0 +939 0 +940 0 +941 0 +942 0 +943 0 +944 0 +945 0 +946 0 +947 0 +948 0 +949 0 +950 0 +951 0 +952 0 +953 0 +954 0 +955 0 +956 0 +957 0 +958 0 +959 0 +960 0 +961 0 +962 0 +963 0 +964 0 +965 0 +966 0 +967 0 +968 0 +969 0 +970 0 +971 0 +972 0 +973 0 +974 0 +975 0 +976 0 +977 0 +978 0 +979 0 +980 0 +981 0 +982 0 +983 0 +984 0 +985 0 +986 0 +987 0 +988 0 +989 0 +990 0 +991 0 +992 0 +993 0 +994 0 +995 0 +996 0 +997 0 +998 0 +999 0 +1000 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/pbcstats2.tabular Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,501 @@ +0 89000 +1 25815 +2 265 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +10 0 +11 0 +12 0 +13 0 +14 0 +15 0 +16 0 +17 0 +18 0 +19 0 +20 0 +21 0 +22 0 +23 0 +24 0 +25 0 +26 0 +27 0 +28 0 +29 0 +30 0 +31 0 +32 0 +33 0 +34 0 +35 0 +36 0 +37 0 +38 0 +39 0 +40 0 +41 0 +42 0 +43 0 +44 0 +45 0 +46 0 +47 0 +48 0 +49 0 +50 0 +51 0 +52 0 +53 0 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 +62 0 +63 0 +64 0 +65 0 +66 0 +67 0 +68 0 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 +75 0 +76 0 +77 0 +78 0 +79 0 +80 0 +81 0 +82 0 +83 0 +84 0 +85 0 +86 0 +87 0 +88 0 +89 0 +90 0 +91 0 +92 0 +93 0 +94 0 +95 0 +96 0 +97 0 +98 0 +99 0 +100 0 +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +122 0 +123 0 +124 0 +125 0 +126 0 +127 0 +128 0 +129 0 +130 0 +131 0 +132 0 +133 0 +134 0 +135 0 +136 0 +137 0 +138 0 +139 0 +140 0 +141 0 +142 0 +143 0 +144 0 +145 0 +146 0 +147 0 +148 0 +149 0 +150 0 +151 0 +152 0 +153 0 +154 0 +155 0 +156 0 +157 0 +158 0 +159 0 +160 0 +161 0 +162 0 +163 0 +164 0 +165 0 +166 0 +167 0 +168 0 +169 0 +170 0 +171 0 +172 0 +173 0 +174 0 +175 0 +176 0 +177 0 +178 0 +179 0 +180 0 +181 0 +182 0 +183 0 +184 0 +185 0 +186 0 +187 0 +188 0 +189 0 +190 0 +191 0 +192 0 +193 0 +194 0 +195 0 +196 0 +197 0 +198 0 +199 0 +200 0 +201 0 +202 0 +203 0 +204 0 +205 0 +206 0 +207 0 +208 0 +209 0 +210 0 +211 0 +212 0 +213 0 +214 0 +215 0 +216 0 +217 0 +218 0 +219 0 +220 0 +221 0 +222 0 +223 0 +224 0 +225 0 +226 0 +227 0 +228 0 +229 0 +230 0 +231 0 +232 0 +233 0 +234 0 +235 0 +236 0 +237 0 +238 0 +239 0 +240 0 +241 0 +242 0 +243 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 +256 0 +257 0 +258 0 +259 0 +260 0 +261 0 +262 0 +263 0 +264 0 +265 0 +266 0 +267 0 +268 0 +269 0 +270 0 +271 0 +272 0 +273 0 +274 0 +275 0 +276 0 +277 0 +278 0 +279 0 +280 0 +281 0 +282 0 +283 0 +284 0 +285 0 +286 0 +287 0 +288 0 +289 0 +290 0 +291 0 +292 0 +293 0 +294 0 +295 0 +296 0 +297 0 +298 0 +299 0 +300 0 +301 0 +302 0 +303 0 +304 0 +305 0 +306 0 +307 0 +308 0 +309 0 +310 0 +311 0 +312 0 +313 0 +314 0 +315 0 +316 0 +317 0 +318 0 +319 0 +320 0 +321 0 +322 0 +323 0 +324 0 +325 0 +326 0 +327 0 +328 0 +329 0 +330 0 +331 0 +332 0 +333 0 +334 0 +335 0 +336 0 +337 0 +338 0 +339 0 +340 0 +341 0 +342 0 +343 0 +344 0 +345 0 +346 0 +347 0 +348 0 +349 0 +350 0 +351 0 +352 0 +353 0 +354 0 +355 0 +356 0 +357 0 +358 0 +359 0 +360 0 +361 0 +362 0 +363 0 +364 0 +365 0 +366 0 +367 0 +368 0 +369 0 +370 0 +371 0 +372 0 +373 0 +374 0 +375 0 +376 0 +377 0 +378 0 +379 0 +380 0 +381 0 +382 0 +383 0 +384 0 +385 0 +386 0 +387 0 +388 0 +389 0 +390 0 +391 0 +392 0 +393 0 +394 0 +395 0 +396 0 +397 0 +398 0 +399 0 +400 0 +401 0 +402 0 +403 0 +404 0 +405 0 +406 0 +407 0 +408 0 +409 0 +410 0 +411 0 +412 0 +413 0 +414 0 +415 0 +416 0 +417 0 +418 0 +419 0 +420 0 +421 0 +422 0 +423 0 +424 0 +425 0 +426 0 +427 0 +428 0 +429 0 +430 0 +431 0 +432 0 +433 0 +434 0 +435 0 +436 0 +437 0 +438 0 +439 0 +440 0 +441 0 +442 0 +443 0 +444 0 +445 0 +446 0 +447 0 +448 0 +449 0 +450 0 +451 0 +452 0 +453 0 +454 0 +455 0 +456 0 +457 0 +458 0 +459 0 +460 0 +461 0 +462 0 +463 0 +464 0 +465 0 +466 0 +467 0 +468 0 +469 0 +470 0 +471 0 +472 0 +473 0 +474 0 +475 0 +476 0 +477 0 +478 0 +479 0 +480 0 +481 0 +482 0 +483 0 +484 0 +485 0 +486 0 +487 0 +488 0 +489 0 +490 0 +491 0 +492 0 +493 0 +494 0 +495 0 +496 0 +497 0 +498 0 +499 0 +500 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/pbcstats_hist_options.tabular Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,1001 @@ +0 89010 +1 25807 +2 263 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +10 0 +11 0 +12 0 +13 0 +14 0 +15 0 +16 0 +17 0 +18 0 +19 0 +20 0 +21 0 +22 0 +23 0 +24 0 +25 0 +26 0 +27 0 +28 0 +29 0 +30 0 +31 0 +32 0 +33 0 +34 0 +35 0 +36 0 +37 0 +38 0 +39 0 +40 0 +41 0 +42 0 +43 0 +44 0 +45 0 +46 0 +47 0 +48 0 +49 0 +50 0 +51 0 +52 0 +53 0 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 +62 0 +63 0 +64 0 +65 0 +66 0 +67 0 +68 0 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 +75 0 +76 0 +77 0 +78 0 +79 0 +80 0 +81 0 +82 0 +83 0 +84 0 +85 0 +86 0 +87 0 +88 0 +89 0 +90 0 +91 0 +92 0 +93 0 +94 0 +95 0 +96 0 +97 0 +98 0 +99 0 +100 0 +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +122 0 +123 0 +124 0 +125 0 +126 0 +127 0 +128 0 +129 0 +130 0 +131 0 +132 0 +133 0 +134 0 +135 0 +136 0 +137 0 +138 0 +139 0 +140 0 +141 0 +142 0 +143 0 +144 0 +145 0 +146 0 +147 0 +148 0 +149 0 +150 0 +151 0 +152 0 +153 0 +154 0 +155 0 +156 0 +157 0 +158 0 +159 0 +160 0 +161 0 +162 0 +163 0 +164 0 +165 0 +166 0 +167 0 +168 0 +169 0 +170 0 +171 0 +172 0 +173 0 +174 0 +175 0 +176 0 +177 0 +178 0 +179 0 +180 0 +181 0 +182 0 +183 0 +184 0 +185 0 +186 0 +187 0 +188 0 +189 0 +190 0 +191 0 +192 0 +193 0 +194 0 +195 0 +196 0 +197 0 +198 0 +199 0 +200 0 +201 0 +202 0 +203 0 +204 0 +205 0 +206 0 +207 0 +208 0 +209 0 +210 0 +211 0 +212 0 +213 0 +214 0 +215 0 +216 0 +217 0 +218 0 +219 0 +220 0 +221 0 +222 0 +223 0 +224 0 +225 0 +226 0 +227 0 +228 0 +229 0 +230 0 +231 0 +232 0 +233 0 +234 0 +235 0 +236 0 +237 0 +238 0 +239 0 +240 0 +241 0 +242 0 +243 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 +256 0 +257 0 +258 0 +259 0 +260 0 +261 0 +262 0 +263 0 +264 0 +265 0 +266 0 +267 0 +268 0 +269 0 +270 0 +271 0 +272 0 +273 0 +274 0 +275 0 +276 0 +277 0 +278 0 +279 0 +280 0 +281 0 +282 0 +283 0 +284 0 +285 0 +286 0 +287 0 +288 0 +289 0 +290 0 +291 0 +292 0 +293 0 +294 0 +295 0 +296 0 +297 0 +298 0 +299 0 +300 0 +301 0 +302 0 +303 0 +304 0 +305 0 +306 0 +307 0 +308 0 +309 0 +310 0 +311 0 +312 0 +313 0 +314 0 +315 0 +316 0 +317 0 +318 0 +319 0 +320 0 +321 0 +322 0 +323 0 +324 0 +325 0 +326 0 +327 0 +328 0 +329 0 +330 0 +331 0 +332 0 +333 0 +334 0 +335 0 +336 0 +337 0 +338 0 +339 0 +340 0 +341 0 +342 0 +343 0 +344 0 +345 0 +346 0 +347 0 +348 0 +349 0 +350 0 +351 0 +352 0 +353 0 +354 0 +355 0 +356 0 +357 0 +358 0 +359 0 +360 0 +361 0 +362 0 +363 0 +364 0 +365 0 +366 0 +367 0 +368 0 +369 0 +370 0 +371 0 +372 0 +373 0 +374 0 +375 0 +376 0 +377 0 +378 0 +379 0 +380 0 +381 0 +382 0 +383 0 +384 0 +385 0 +386 0 +387 0 +388 0 +389 0 +390 0 +391 0 +392 0 +393 0 +394 0 +395 0 +396 0 +397 0 +398 0 +399 0 +400 0 +401 0 +402 0 +403 0 +404 0 +405 0 +406 0 +407 0 +408 0 +409 0 +410 0 +411 0 +412 0 +413 0 +414 0 +415 0 +416 0 +417 0 +418 0 +419 0 +420 0 +421 0 +422 0 +423 0 +424 0 +425 0 +426 0 +427 0 +428 0 +429 0 +430 0 +431 0 +432 0 +433 0 +434 0 +435 0 +436 0 +437 0 +438 0 +439 0 +440 0 +441 0 +442 0 +443 0 +444 0 +445 0 +446 0 +447 0 +448 0 +449 0 +450 0 +451 0 +452 0 +453 0 +454 0 +455 0 +456 0 +457 0 +458 0 +459 0 +460 0 +461 0 +462 0 +463 0 +464 0 +465 0 +466 0 +467 0 +468 0 +469 0 +470 0 +471 0 +472 0 +473 0 +474 0 +475 0 +476 0 +477 0 +478 0 +479 0 +480 0 +481 0 +482 0 +483 0 +484 0 +485 0 +486 0 +487 0 +488 0 +489 0 +490 0 +491 0 +492 0 +493 0 +494 0 +495 0 +496 0 +497 0 +498 0 +499 0 +500 0 +501 0 +502 0 +503 0 +504 0 +505 0 +506 0 +507 0 +508 0 +509 0 +510 0 +511 0 +512 0 +513 0 +514 0 +515 0 +516 0 +517 0 +518 0 +519 0 +520 0 +521 0 +522 0 +523 0 +524 0 +525 0 +526 0 +527 0 +528 0 +529 0 +530 0 +531 0 +532 0 +533 0 +534 0 +535 0 +536 0 +537 0 +538 0 +539 0 +540 0 +541 0 +542 0 +543 0 +544 0 +545 0 +546 0 +547 0 +548 0 +549 0 +550 0 +551 0 +552 0 +553 0 +554 0 +555 0 +556 0 +557 0 +558 0 +559 0 +560 0 +561 0 +562 0 +563 0 +564 0 +565 0 +566 0 +567 0 +568 0 +569 0 +570 0 +571 0 +572 0 +573 0 +574 0 +575 0 +576 0 +577 0 +578 0 +579 0 +580 0 +581 0 +582 0 +583 0 +584 0 +585 0 +586 0 +587 0 +588 0 +589 0 +590 0 +591 0 +592 0 +593 0 +594 0 +595 0 +596 0 +597 0 +598 0 +599 0 +600 0 +601 0 +602 0 +603 0 +604 0 +605 0 +606 0 +607 0 +608 0 +609 0 +610 0 +611 0 +612 0 +613 0 +614 0 +615 0 +616 0 +617 0 +618 0 +619 0 +620 0 +621 0 +622 0 +623 0 +624 0 +625 0 +626 0 +627 0 +628 0 +629 0 +630 0 +631 0 +632 0 +633 0 +634 0 +635 0 +636 0 +637 0 +638 0 +639 0 +640 0 +641 0 +642 0 +643 0 +644 0 +645 0 +646 0 +647 0 +648 0 +649 0 +650 0 +651 0 +652 0 +653 0 +654 0 +655 0 +656 0 +657 0 +658 0 +659 0 +660 0 +661 0 +662 0 +663 0 +664 0 +665 0 +666 0 +667 0 +668 0 +669 0 +670 0 +671 0 +672 0 +673 0 +674 0 +675 0 +676 0 +677 0 +678 0 +679 0 +680 0 +681 0 +682 0 +683 0 +684 0 +685 0 +686 0 +687 0 +688 0 +689 0 +690 0 +691 0 +692 0 +693 0 +694 0 +695 0 +696 0 +697 0 +698 0 +699 0 +700 0 +701 0 +702 0 +703 0 +704 0 +705 0 +706 0 +707 0 +708 0 +709 0 +710 0 +711 0 +712 0 +713 0 +714 0 +715 0 +716 0 +717 0 +718 0 +719 0 +720 0 +721 0 +722 0 +723 0 +724 0 +725 0 +726 0 +727 0 +728 0 +729 0 +730 0 +731 0 +732 0 +733 0 +734 0 +735 0 +736 0 +737 0 +738 0 +739 0 +740 0 +741 0 +742 0 +743 0 +744 0 +745 0 +746 0 +747 0 +748 0 +749 0 +750 0 +751 0 +752 0 +753 0 +754 0 +755 0 +756 0 +757 0 +758 0 +759 0 +760 0 +761 0 +762 0 +763 0 +764 0 +765 0 +766 0 +767 0 +768 0 +769 0 +770 0 +771 0 +772 0 +773 0 +774 0 +775 0 +776 0 +777 0 +778 0 +779 0 +780 0 +781 0 +782 0 +783 0 +784 0 +785 0 +786 0 +787 0 +788 0 +789 0 +790 0 +791 0 +792 0 +793 0 +794 0 +795 0 +796 0 +797 0 +798 0 +799 0 +800 0 +801 0 +802 0 +803 0 +804 0 +805 0 +806 0 +807 0 +808 0 +809 0 +810 0 +811 0 +812 0 +813 0 +814 0 +815 0 +816 0 +817 0 +818 0 +819 0 +820 0 +821 0 +822 0 +823 0 +824 0 +825 0 +826 0 +827 0 +828 0 +829 0 +830 0 +831 0 +832 0 +833 0 +834 0 +835 0 +836 0 +837 0 +838 0 +839 0 +840 0 +841 0 +842 0 +843 0 +844 0 +845 0 +846 0 +847 0 +848 0 +849 0 +850 0 +851 0 +852 0 +853 0 +854 0 +855 0 +856 0 +857 0 +858 0 +859 0 +860 0 +861 0 +862 0 +863 0 +864 0 +865 0 +866 0 +867 0 +868 0 +869 0 +870 0 +871 0 +872 0 +873 0 +874 0 +875 0 +876 0 +877 0 +878 0 +879 0 +880 0 +881 0 +882 0 +883 0 +884 0 +885 0 +886 0 +887 0 +888 0 +889 0 +890 0 +891 0 +892 0 +893 0 +894 0 +895 0 +896 0 +897 0 +898 0 +899 0 +900 0 +901 0 +902 0 +903 0 +904 0 +905 0 +906 0 +907 0 +908 0 +909 0 +910 0 +911 0 +912 0 +913 0 +914 0 +915 0 +916 0 +917 0 +918 0 +919 0 +920 0 +921 0 +922 0 +923 0 +924 0 +925 0 +926 0 +927 0 +928 0 +929 0 +930 0 +931 0 +932 0 +933 0 +934 0 +935 0 +936 0 +937 0 +938 0 +939 0 +940 0 +941 0 +942 0 +943 0 +944 0 +945 0 +946 0 +947 0 +948 0 +949 0 +950 0 +951 0 +952 0 +953 0 +954 0 +955 0 +956 0 +957 0 +958 0 +959 0 +960 0 +961 0 +962 0 +963 0 +964 0 +965 0 +966 0 +967 0 +968 0 +969 0 +970 0 +971 0 +972 0 +973 0 +974 0 +975 0 +976 0 +977 0 +978 0 +979 0 +980 0 +981 0 +982 0 +983 0 +984 0 +985 0 +986 0 +987 0 +988 0 +989 0 +990 0 +991 0 +992 0 +993 0 +994 0 +995 0 +996 0 +997 0 +998 0 +999 0 +1000 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/tx_stats.tabular Mon Jun 14 18:01:05 2021 +0000 @@ -0,0 +1,501 @@ +0 0 +1 0 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +10 0 +11 0 +12 0 +13 0 +14 0 +15 0 +16 0 +17 0 +18 0 +19 0 +20 0 +21 0 +22 0 +23 0 +24 0 +25 0 +26 0 +27 0 +28 0 +29 0 +30 0 +31 0 +32 0 +33 0 +34 0 +35 0 +36 0 +37 0 +38 0 +39 0 +40 0 +41 0 +42 0 +43 0 +44 0 +45 0 +46 0 +47 0 +48 0 +49 0 +50 0 +51 0 +52 0 +53 0 +54 0 +55 0 +56 0 +57 0 +58 0 +59 0 +60 0 +61 0 +62 0 +63 0 +64 0 +65 0 +66 0 +67 0 +68 0 +69 0 +70 0 +71 0 +72 0 +73 0 +74 0 +75 0 +76 0 +77 0 +78 0 +79 0 +80 0 +81 0 +82 0 +83 0 +84 0 +85 0 +86 0 +87 0 +88 0 +89 0 +90 0 +91 0 +92 0 +93 0 +94 0 +95 0 +96 0 +97 0 +98 0 +99 0 +100 0 +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +122 0 +123 0 +124 0 +125 0 +126 0 +127 0 +128 0 +129 0 +130 0 +131 0 +132 0 +133 0 +134 0 +135 0 +136 0 +137 0 +138 0 +139 0 +140 0 +141 0 +142 0 +143 0 +144 0 +145 0 +146 0 +147 0 +148 0 +149 0 +150 0 +151 0 +152 0 +153 0 +154 0 +155 0 +156 0 +157 0 +158 0 +159 0 +160 0 +161 0 +162 0 +163 0 +164 0 +165 0 +166 0 +167 0 +168 0 +169 0 +170 0 +171 0 +172 0 +173 0 +174 0 +175 0 +176 0 +177 0 +178 0 +179 0 +180 0 +181 0 +182 0 +183 0 +184 0 +185 0 +186 0 +187 0 +188 0 +189 0 +190 0 +191 0 +192 0 +193 0 +194 0 +195 0 +196 0 +197 0 +198 0 +199 0 +200 0 +201 0 +202 0 +203 0 +204 0 +205 0 +206 0 +207 0 +208 0 +209 0 +210 0 +211 0 +212 0 +213 0 +214 0 +215 0 +216 0 +217 0 +218 0 +219 0 +220 0 +221 0 +222 0 +223 0 +224 0 +225 0 +226 0 +227 0 +228 0 +229 0 +230 0 +231 0 +232 0 +233 0 +234 0 +235 0 +236 0 +237 0 +238 0 +239 0 +240 0 +241 0 +242 0 +243 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 +256 0 +257 0 +258 0 +259 0 +260 0 +261 0 +262 0 +263 0 +264 0 +265 0 +266 0 +267 0 +268 0 +269 0 +270 0 +271 0 +272 0 +273 0 +274 0 +275 0 +276 0 +277 0 +278 0 +279 0 +280 0 +281 0 +282 0 +283 0 +284 0 +285 0 +286 0 +287 0 +288 0 +289 0 +290 0 +291 0 +292 0 +293 0 +294 0 +295 0 +296 0 +297 0 +298 0 +299 0 +300 0 +301 0 +302 0 +303 0 +304 0 +305 0 +306 0 +307 0 +308 0 +309 0 +310 0 +311 0 +312 0 +313 0 +314 0 +315 0 +316 0 +317 0 +318 0 +319 0 +320 0 +321 0 +322 0 +323 0 +324 0 +325 0 +326 0 +327 0 +328 0 +329 0 +330 0 +331 0 +332 0 +333 0 +334 0 +335 0 +336 0 +337 0 +338 0 +339 0 +340 0 +341 0 +342 0 +343 0 +344 0 +345 0 +346 0 +347 0 +348 0 +349 0 +350 0 +351 0 +352 0 +353 0 +354 0 +355 0 +356 0 +357 0 +358 0 +359 0 +360 0 +361 0 +362 0 +363 0 +364 0 +365 0 +366 0 +367 0 +368 0 +369 0 +370 0 +371 0 +372 0 +373 0 +374 0 +375 0 +376 0 +377 0 +378 0 +379 0 +380 0 +381 0 +382 0 +383 0 +384 0 +385 0 +386 0 +387 0 +388 0 +389 0 +390 0 +391 0 +392 0 +393 0 +394 0 +395 0 +396 0 +397 0 +398 0 +399 0 +400 0 +401 0 +402 0 +403 0 +404 0 +405 0 +406 0 +407 0 +408 0 +409 0 +410 0 +411 0 +412 0 +413 0 +414 0 +415 0 +416 0 +417 0 +418 0 +419 0 +420 0 +421 0 +422 0 +423 0 +424 0 +425 0 +426 0 +427 0 +428 0 +429 0 +430 0 +431 0 +432 0 +433 0 +434 0 +435 0 +436 0 +437 0 +438 0 +439 0 +440 0 +441 0 +442 0 +443 0 +444 0 +445 0 +446 0 +447 0 +448 0 +449 0 +450 0 +451 0 +452 0 +453 0 +454 0 +455 0 +456 0 +457 0 +458 0 +459 0 +460 0 +461 0 +462 0 +463 0 +464 0 +465 0 +466 0 +467 0 +468 0 +469 0 +470 0 +471 0 +472 0 +473 0 +474 0 +475 0 +476 0 +477 0 +478 0 +479 0 +480 0 +481 0 +482 0 +483 0 +484 0 +485 0 +486 0 +487 0 +488 0 +489 0 +490 0 +491 0 +492 0 +493 0 +494 0 +495 0 +496 0 +497 0 +498 0 +499 0 +500 0