Mercurial > repos > iuc > bbtools_bbnorm
changeset 5:770bceda7785 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bbtools commit cd59ba2c349865259b92302a1d70e103b8a5e3cb
author | iuc |
---|---|
date | Tue, 27 Aug 2024 10:14:11 +0000 |
parents | 1baa4ad1ac2f |
children | |
files | bbnorm.xml macros.xml test-data/cv_output.gff test-data/cv_output.txt test-data/cv_output.vcf test-data/cv_qualityhist_output.tabular test-data/cv_scorehist_output.tabular test-data/cv_zygosityhist_output.tabular |
diffstat | 8 files changed, 88 insertions(+), 87 deletions(-) [+] |
line wrap: on
line diff
--- a/bbnorm.xml Sat May 18 19:13:59 2024 +0000 +++ b/bbnorm.xml Tue Aug 27 10:14:11 2024 +0000 @@ -145,22 +145,22 @@ <param name="read2" type="data" format="fastqsanger,fastqsanger.gz" label="Reverse reads"/> </when> <when value="paired"> - <param name="reads_collection" type="data_collection" format="fastqsanger,fastqsanger.gz" collection_type="paired" label="Collection of forward and reverse reads"/> + <param name="reads_collection" type="data_collection" format="fastqsanger,fastqsanger.gz" label="Collection of forward and reverse reads" collection_type="paired"/> </when> </conditional> - <param argument="target" type="integer" value="100" min="1" label="Target normalization depth" help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> + <param argument="target" type="integer" min="1" value="100" label="Target normalization depth" help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> <section name="norm_params" title="Normalization parameters"> - <param argument="maxdepth" type="integer" value="-1" min="-1" label="Reads will not be downsampled when below this depth, even if they are above the target depth." help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> - <param argument="mindepth" type="integer" value="5" min="0" label="kmers with depth below this number will not be included when calculating the depth of a read." help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> - <param argument="minkmers" type="integer" value="15" min="0" label="Reads must have at least this many kmers over min depth to be retained."/> - <param argument="percentile" type="integer" value="54" min="1" max="100" label="Percentile to infer read depth" help="Read depth is by default inferred from the 54th percentile of kmer depth, but this may be changed to any number 1-100."/> + <param argument="maxdepth" type="integer" min="-1" value="-1" label="Reads will not be downsampled when below this depth, even if they are above the target depth." help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> + <param argument="mindepth" type="integer" min="0" value="5" label="kmers with depth below this number will not be included when calculating the depth of a read." help="All depth parameters control kmer depth, not read depth. For kmer depth Dk, read depth Dr, read length R, and kmer size K: Dr=Dk*(R/(R-K+1))"/> + <param argument="minkmers" type="integer" min="0" value="15" label="Reads must have at least this many kmers over min depth to be retained."/> + <param argument="percentile" type="integer" min="1" max="100" value="54" label="Percentile to infer read depth" help="Read depth is by default inferred from the 54th percentile of kmer depth, but this may be changed to any number 1-100."/> <param argument="uselowerdepth" type="boolean" checked="true" label="For pairs, use the depth of the lower read as the depth proxy."/> <param argument="deterministic" type="boolean" checked="true" label="Generate random numbers deterministically" help="This would ensure identical output between multiple runs. May decrease speed with a huge number of threads."/> <param argument="fixspikes" type="boolean" checked="false" label="Do a slower, high-precision bloom filter lookup of kmers that appear to have an abnormally high depth due to collisions."/> <param argument="passes" type="integer" value="2" label="Number of passes to perform" help=" pass is the basic mode. 2 passes allows greater accuracy, error detection, better contol of output depth."/> </section> <section name="hashing_params" title="Hashing parameters"> - <param argument="k" type="integer" value="31" min="1" label="kmer length" help="Values under 32 are most efficient, but arbitrarily high values are supported."/> + <param argument="k" type="integer" min="1" value="31" label="kmer length" help="Values under 32 are most efficient, but arbitrarily high values are supported."/> <param argument="bits" type="select" label="Bits per cell in bloom filter" help="Maximum kmer depth recorded is 2^c bits. Large values decrease accuracy for a fixed amount of memory, so use the lowest number you can that will still capture highest-depth kmers."> <option value="2">2</option> <option value="4">4</option> @@ -168,7 +168,7 @@ <option value="16" selected="true">16</option> <option value="32">32</option> </param> - <param argument="hashes" type="integer" value="3" min="1" label="Number of times each kmer is hashed and stored." help="Higher is slower. Higher is more accurate if there is enough memory, but less accurate if there is not enough memory."/> + <param argument="hashes" type="integer" min="1" value="3" label="Number of times each kmer is hashed and stored." help="Higher is slower. Higher is more accurate if there is enough memory, but less accurate if there is not enough memory."/> <conditional name="prefilter"> <param argument="prefilter" type="select" label="Use a prefilter to eliminate low-depth kmers" help="True is slower, but generally more accurate; filters out low-depth kmers from the main hashtable. The prefilter is more memory-efficient because it uses 2-bit cells."> <option value="true">Yes</option> @@ -176,46 +176,44 @@ </param> <when value="false"/> <when value="true"> - <param argument="prehashes" type="integer" value="2" min="1" label="Number of hashes for the prefilter"/> - <param argument="prefilterbits" type="integer" value="2" min="1" label="Bits per cell in prefilter"/> - <param argument="prefiltersize" type="float" value="0.35" min="0" max="1" label="Fraction of memory to allocate for the prefilter."/> + <param argument="prehashes" type="integer" min="1" value="2" label="Number of hashes for the prefilter"/> + <param argument="prefilterbits" type="integer" min="1" value="2" label="Bits per cell in prefilter"/> + <param argument="prefiltersize" type="float" min="0" max="1" value="0.35" label="Fraction of memory to allocate for the prefilter."/> </when> - </conditional> - <param argument="buildpasses" type="integer" value="1" min="1" label="Number of passes" help="More passes can sometimes increase accuracy by iteratively removing low-depth kmers"/> - <param argument="minq" type="integer" value="6" min="0" label="Ignore kmers containing bases with quality below this threshold"/> - <param argument="minprob" type="float" value="0.5" min="0" max="1" label="Ignore kmers with overall probability of correctness below this threshold"/> + </conditional> + <param argument="buildpasses" type="integer" min="1" value="1" label="Number of passes" help="More passes can sometimes increase accuracy by iteratively removing low-depth kmers"/> + <param argument="minq" type="integer" min="0" value="6" label="Ignore kmers containing bases with quality below this threshold"/> + <param argument="minprob" type="float" min="0" max="1" value="0.5" label="Ignore kmers with overall probability of correctness below this threshold"/> <param argument="rdk" type="boolean" checked="true" label="Remove duplicate kmers" help="When true, a kmer's count will only be incremented once per read pair, even if that kmer occurs more than once."/> </section> <section name="error_det_params" title="Error detection parameters"> - <param argument="hdp" type="integer" value="90" min="0" max="100" label="highdepthpercentile" help="Position in sorted kmer depth array used as proxy of a read's high kmer depth."/> - <param argument="ldp" type="integer" value="25" min="0" max="100" label="lowdepthpercentile" help="Position in sorted kmer depth array used as proxy of a read's low kmer depth."/> + <param argument="hdp" type="integer" min="0" max="100" value="90" label="highdepthpercentile" help="Position in sorted kmer depth array used as proxy of a read's high kmer depth."/> + <param argument="ldp" type="integer" min="0" max="100" value="25" label="lowdepthpercentile" help="Position in sorted kmer depth array used as proxy of a read's low kmer depth."/> <param argument="tossbadreads" type="boolean" checked="false" label="Throw away reads detected as containing errors."/> <param argument="requirebothbad" type="boolean" checked="false" label="Only toss bad pairs if both reads are bad."/> - <param argument="errordetectratio" type="integer" value="125" min="0" label="Error detection ratio" help="Reads with a ratio of at least this much between their high and low depth kmers will be classified as error reads."/> - <param argument="highthresh" type="integer" value="12" min="0" label="Threshold for high kmer" help="A high kmer at this or above are considered non-error."/> - <param argument="lowthresh" type="integer" value="3" min="0" label="Threshold for low kmer" help="Kmers at this and below are always considered errors."/> + <param argument="errordetectratio" type="integer" min="0" value="125" label="Error detection ratio" help="Reads with a ratio of at least this much between their high and low depth kmers will be classified as error reads."/> + <param argument="highthresh" type="integer" min="0" value="12" label="Threshold for high kmer" help="A high kmer at this or above are considered non-error."/> + <param argument="lowthresh" type="integer" min="0" value="3" label="Threshold for low kmer" help="Kmers at this and below are always considered errors."/> </section> - <section name="error_corr_params" title="Error correction parameters"> <conditional name="ecc"> <param argument="ecc" type="select" label="What should be done with detected errors?" help="Tadpole is now preferred for error correction, as it does a better job."> - <option value="true" >Correct errors when possible</option> + <option value="true">Correct errors when possible</option> <option value="false" selected="true">Do not attempt to correct errors</option> </param> <when value="false"/> <when value="true"> - <param argument="ecclimit" type="integer" value="3" min="1" label="Correct up to this many errors per read." help="If more are detected, the read will remain unchanged."/> - <param argument="errorcorrectratio" type="integer" value="140" min="0" label="Depth ratio" help="Adjacent kmers with a depth ratio of at least this much between will be classified as an error."/> - <param argument="echighthresh" type="integer" value="22" min="0" label="Threshold for high kmer" help="A kmer at this or above may be considered non-error."/> - <param argument="eclowthresh" type="integer" value="2" min="0" label="Threshold for low kmer." help="kmers at this depth or below will be considered as errors."/> - <param argument="eccmaxqual" type="integer" value="127" min="0" label="Do not correct bases with quality above this value."/> + <param argument="ecclimit" type="integer" min="1" value="3" label="Correct up to this many errors per read." help="If more are detected, the read will remain unchanged."/> + <param argument="errorcorrectratio" type="integer" min="0" value="140" label="Depth ratio" help="Adjacent kmers with a depth ratio of at least this much between will be classified as an error."/> + <param argument="echighthresh" type="integer" min="0" value="22" label="Threshold for high kmer" help="A kmer at this or above may be considered non-error."/> + <param argument="eclowthresh" type="integer" min="0" value="2" label="Threshold for low kmer." help="kmers at this depth or below will be considered as errors."/> + <param argument="eccmaxqual" type="integer" min="0" value="127" label="Do not correct bases with quality above this value."/> <param argument="meo" type="boolean" checked="false" label="Marks errors by reducing quality value of suspected errors; does not correct anything."/> <param argument="mue" type="boolean" checked="true" label="Mark errors only on uncorrectable reads."/> <param argument="overlap" type="boolean" checked="false" label="Correct errors by read overlap."/> </when> </conditional> </section> - <section name="output_options" title="Output options"> <param name="save_discarded_reads" type="boolean" checked="false" label="Save the reads that were eliminated from the input datasets to the history"/> <param name="save_kmer_hists" type="boolean" checked="false" label="Save the kmer histograms (in tabular format) for the input and output datasets to the history"/> @@ -247,7 +245,7 @@ <!-- Single end sequencing --> <test expect_num_outputs="1"> <param name="input_type" value="single_end"/> - <param name="read1" ftype="fastqsanger" value="bbnorm/input_R1.fastq"/> + <param name="read1" value="bbnorm/input_R1.fastq" ftype="fastqsanger"/> <param name="target" value="4"/> <section name="norm_params"> <param name="deterministic" value="true"/> @@ -258,7 +256,7 @@ <!-- Single end sequencing, compressed --> <test expect_num_outputs="1"> <param name="input_type" value="single_end"/> - <param name="read1" ftype="fastqsanger.gz" value="bbnorm/input_R1.fastq.gz"/> + <param name="read1" value="bbnorm/input_R1.fastq.gz" ftype="fastqsanger.gz"/> <param name="target" value="4"/> <section name="norm_params"> <param name="deterministic" value="true"/> @@ -269,7 +267,7 @@ <!-- PE as an interleaved file --> <test expect_num_outputs="4"> <param name="input_type" value="PE_1file"/> - <param name="read1" ftype="fastqsanger" value="bbnorm/input_interleaved.fastq"/> + <param name="read1" value="bbnorm/input_interleaved.fastq" ftype="fastqsanger"/> <param name="target" value="4"/> <section name="norm_params"> <param name="deterministic" value="true"/> @@ -287,8 +285,8 @@ <!-- PE as 2 files --> <test expect_num_outputs="2"> <param name="input_type" value="PE_2files"/> - <param name="read1" ftype="fastqsanger" value="bbnorm/input_R1.fastq"/> - <param name="read2" ftype="fastqsanger" value="bbnorm/input_R2.fastq"/> + <param name="read1" value="bbnorm/input_R1.fastq" ftype="fastqsanger"/> + <param name="read2" value="bbnorm/input_R2.fastq" ftype="fastqsanger"/> <param name="target" value="4"/> <section name="norm_params"> <param name="deterministic" value="true"/> @@ -390,4 +388,3 @@ </help> <expand macro="citations"/> </tool> -
--- a/macros.xml Sat May 18 19:13:59 2024 +0000 +++ b/macros.xml Tue Aug 27 10:14:11 2024 +0000 @@ -1,15 +1,19 @@ <macros> - <token name="@TOOL_VERSION@">39.06</token> - <token name="@VERSION_SUFFIX@">2</token> + <token name="@TOOL_VERSION@">39.08</token> + <token name="@VERSION_SUFFIX@">0</token> <token name="@PROFILE@">22.01</token> <xml name="edam_ontology"> <edam_topics> - <edam_topic>topic_0622</edam_topic> <!-- Genomics --> - <edam_topic>topic_0091</edam_topic> <!-- Bioinformatics --> + <edam_topic>topic_0622</edam_topic> + <!-- Genomics --> + <edam_topic>topic_0091</edam_topic> + <!-- Bioinformatics --> </edam_topics> <edam_operations> - <edam_operation>operation_0496</edam_operation> <!-- Global alignment --> - <edam_operation>operation_0491</edam_operation> <!-- Pairwise sequence alignment --> + <edam_operation>operation_0496</edam_operation> + <!-- Global alignment --> + <edam_operation>operation_0491</edam_operation> + <!-- Pairwise sequence alignment --> </edam_operations> </xml> <xml name="bio.tools"> @@ -20,7 +24,8 @@ <xml name="requirements"> <requirements> <requirement type="package" version="@TOOL_VERSION@">bbmap</requirement> - <requirement type="package" version="1.19.2">samtools</requirement> <!-- automatic solving installs 1.6 in some cases, instead --> + <requirement type="package" version="1.20">samtools</requirement> + <!-- automatic solving installs 1.6 in some cases, instead --> </requirements> </xml> <macro name="dbKeyActionsBBMap"> @@ -62,7 +67,7 @@ <param name="read2" type="data" format="fastqsanger.gz,fastqsanger" label="Reverse reads fastq file"/> </when> <when value="paired"> - <param name="reads_collection" type="data_collection" format="fastqsanger,fastqsanger.gz" collection_type="paired" label="Collection of fastqsanger paired read files"/> + <param name="reads_collection" type="data_collection" format="fastqsanger,fastqsanger.gz" label="Collection of fastqsanger paired read files" collection_type="paired"/> </when> </conditional> </macro> @@ -87,18 +92,18 @@ </macro> <macro name="ktrim_cond"> <conditional name="ktrim_cond"> - <param name="ktrim_select" type="select" label="Trim reads to remove bases matching reference kmers?"> + <param name="ktrim_select" type="select" label="Trim reads to remove bases matching reference kmers?"> <option value="no" selected="true">No</option> <option value="yes">Yes</option> </param> <when value="no"/> <when value="yes"> - <param argument="ktrim" type="select" label="Select trimming position"> + <param argument="ktrim" type="select" label="Select trimming position"> <option value="r">Trim to the right</option> <option value="l">Trim to the left</option> </param> <param argument="minlength" type="integer" value="10" label="Minimum read length" help="Trimmed reads shorter than this will be discarded, pairs will be discarded if both are shorter."/> - </when> + </when> </conditional> </macro> <xml name="citations"> @@ -109,4 +114,3 @@ </citations> </xml> </macros> -
--- a/test-data/cv_output.gff Sat May 18 19:13:59 2024 +0000 +++ b/test-data/cv_output.gff Tue Aug 27 10:14:11 2024 +0000 @@ -1,18 +1,18 @@ -##gff-version -#BBMapVersion +##gff-version 3 +#BBMapVersion 39.08 #ploidy 2 #rarity 1.00000 #minAlleleFraction 0.1000 #reads 2207 #pairedReads 0 #properlyPairedReads 0 -#readLengthAvg +#readLengthAvg 145.46 #properPairRate 0.0000 -#totalQualityAvg -#mapqAvg -#reference +#totalQualityAvg 36.5800 +#mapqAvg 43.35 +#reference /home/bag/projects/code/tools-iuc/tools/bbtools/test-data/NC_002945v4.fasta #seqid source type start end score strand phase attributes -NC_002945.4 . sequence_variant_obs 976327 976327 -NC_002945.4 . sequence_variant_obs 1501932 1501932 -NC_002945.4 . sequence_variant_obs 3380579 3380579 -NC_002945.4 . sequence_variant_obs 3646293 3646293 +NC_002945.4 . sequence_variant_obs 976327 976327 0.87 + . ID=SUB T +NC_002945.4 . sequence_variant_obs 1501932 1501932 0.92 + . ID=SUB C +NC_002945.4 . sequence_variant_obs 3380579 3380579 0.92 + . ID=SUB G +NC_002945.4 . sequence_variant_obs 3646293 3646293 0.89 + . ID=SUB A
--- a/test-data/cv_output.txt Sat May 18 19:13:59 2024 +0000 +++ b/test-data/cv_output.txt Tue Aug 27 10:14:11 2024 +0000 @@ -1,18 +1,18 @@ -#fileformat -#BBMapVersion +#fileformat Var_1.3 +#BBMapVersion 39.08 #ploidy 2 #rarity 1.00000 #minAlleleFraction 0.1000 #reads 2207 #pairedReads 0 #properlyPairedReads 0 -#readLengthAvg -#properPairRate -#totalQualityAvg -#mapqAvg -#reference +#readLengthAvg 145.46 +#properPairRate 0.0000 +#totalQualityAvg 36.5800 +#mapqAvg 43.35 +#reference /home/bag/projects/code/tools-iuc/tools/bbtools/test-data/NC_002945v4.fasta #scaf start stop type call r1p r1m r2p r2m paired lengthSum mapq mapqMax baseq baseqMax edist edistMax id idMax cov minusCov nearbyVarCount flagged contigEndDist phredScore readCount alleleFraction revisedAF strandRatio baseqAvg mapqAvg edistAvg identityAvg edistScore identityScore qualityScore pairedScore biasScore coverageScore homopolymerScore score -0 976326 976327 SUB T -0 1501931 1501932 SUB C -0 3380578 3380579 SUB G -0 3646292 3646293 SUB A +0 976326 976327 SUB T 2 0 0 0 0 292 77 40 48 24 111 65 1930 972 0 -1 0 0 0 22.21 2 1 1 0.5000 24 38.50 55.50 965 0.9972 0.9932 0.7489 0.9800 0.9737 0.7143 1 0.8725 +0 1501931 1501932 SUB C 0 2 0 0 0 292 88 44 64 39 74 38 1986 993 0 -1 0 0 0 27.20 2 1 1 0.5000 32 44 37 993 0.9851 0.9994 0.9831 0.9800 0.9737 0.7143 1 0.9202 +0 3380578 3380579 SUB G 0 2 0 0 0 289 87 44 75 38 105 63 1986 993 0 -1 0 0 0 27.85 2 1 1 0.5000 37.50 43.50 52.50 993 0.9968 0.9994 0.9972 0.9800 0.9737 0.7143 1 0.9250 +0 3646292 3646293 SUB A 1 1 0 0 0 291 86 44 76 38 44 31 1986 993 0 -1 0 0 0 23.34 2 1 1 1 38 43 22 993 0.7996 0.9994 0.9975 0.9800 0.9747 0.7143 1 0.8853
--- a/test-data/cv_output.vcf Sat May 18 19:13:59 2024 +0000 +++ b/test-data/cv_output.vcf Tue Aug 27 10:14:11 2024 +0000 @@ -1,16 +1,16 @@ ##fileformat=VCFv4.2 -##BBMapVersion= +##BBMapVersion=39.08 ##ploidy=2 ##rarity=1.00000 ##minallelefraction=0.10000 ##reads=2207 ##pairedReads=0 ##properlyPairedReads=0 -##readLengthAvg= +##readLengthAvg=145.462 ##properPairRate=0.00000 -##totalQualityAvg= +##totalQualityAvg=36.580 ##mapqAvg=43.348 -##reference= +##reference=/home/bag/projects/code/tools-iuc/tools/bbtools/test-data/NC_002945v4.fasta ##contig=<ID=NC_002945.4,length=7000> ##FILTER=<ID=FAIL,Description="Fail"> ##FILTER=<ID=PASS,Description="Pass"> @@ -53,8 +53,8 @@ ##FORMAT=<ID=SB,Number=1,Type=Float,Description="Strand Bias"> ##FORMAT=<ID=SC,Number=1,Type=Float,Description="Score"> ##FORMAT=<ID=PF,Number=1,Type=String,Description="Pass Filter"> -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT -NC_002945.4 976327 . N T 22.21 PASS SN=0;STA=976326;STO=976327;TYP=SUB;R1P=2;R1M=0;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1.0000;RAF=1.0000;LS=292;MQS=77;MQM=40;BQS=48;BQM=24;EDS=111;EDM=65;IDS=1930;IDM=972;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1.0000:1.0000:0:0:0.9980:22.21:PASS -NC_002945.4 1501932 . N C 27.20 PASS SN=0;STA=1501931;STO=1501932;TYP=SUB;R1P=0;R1M=2;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1.0000;RAF=1.0000;LS=292;MQS=88;MQM=44;BQS=64;BQM=39;EDS=74;EDM=38;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1.0000:1.0000:0:0:0.9980:27.20:PASS -NC_002945.4 3380579 . N G 27.85 PASS SN=0;STA=3380578;STO=3380579;TYP=SUB;R1P=0;R1M=2;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1.0000;RAF=1.0000;LS=289;MQS=87;MQM=44;BQS=75;BQM=38;EDS=105;EDM=63;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1.0000:1.0000:0:0:0.9980:27.85:PASS -NC_002945.4 3646293 . N A 23.34 PASS SN=0;STA=3646292;STO=3646293;TYP=SUB;R1P=1;R1M=1;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1.0000;RAF=1.0000;LS=291;MQS=86;MQM=44;BQS=76;BQM=38;EDS=44;EDM=31;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=1.0000 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1.0000:1.0000:0:0:1.0000:23.34:PASS +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT dataset_4f1db038-76fe-46bc-a222-dfc4894a8ff2.dat +NC_002945.4 976327 . N T 22.21 PASS SN=0;STA=976326;STO=976327;TYP=SUB;R1P=2;R1M=0;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1;RAF=1;LS=292;MQS=77;MQM=40;BQS=48;BQM=24;EDS=111;EDM=65;IDS=1930;IDM=972;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1:1:0:0:0.9980:22.21:PASS +NC_002945.4 1501932 . N C 27.20 PASS SN=0;STA=1501931;STO=1501932;TYP=SUB;R1P=0;R1M=2;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1;RAF=1;LS=292;MQS=88;MQM=44;BQS=64;BQM=39;EDS=74;EDM=38;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1:1:0:0:0.9980:27.20:PASS +NC_002945.4 3380579 . N G 27.85 PASS SN=0;STA=3380578;STO=3380579;TYP=SUB;R1P=0;R1M=2;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1;RAF=1;LS=289;MQS=87;MQM=44;BQS=75;BQM=38;EDS=105;EDM=63;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=0.9980 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1:1:0:0:0.9980:27.85:PASS +NC_002945.4 3646293 . N A 23.34 PASS SN=0;STA=3646292;STO=3646293;TYP=SUB;R1P=1;R1M=1;R2P=0;R2M=0;AD=2;DP=2;MCOV=-1;PPC=0;AF=1;RAF=1;LS=291;MQS=86;MQM=44;BQS=76;BQM=38;EDS=44;EDM=31;IDS=1986;IDM=993;NVC=0;FLG=0;CED=0;HMP=0;SB=1 GT:DP:AD:AF:RAF:NVC:FLG:SB:SC:PF 1/1:2:2:1:1:0:0:1:23.34:PASS
--- a/test-data/cv_qualityhist_output.tabular Sat May 18 19:13:59 2024 +0000 +++ b/test-data/cv_qualityhist_output.tabular Tue Aug 27 10:14:11 2024 +0000 @@ -1,8 +1,8 @@ #BaseQualityHist -#Vars -#Mean -#Median -#Mode +#Vars 4 +#Mean 32.75 +#Median 32 +#Mode 32 #Quality AvgCount MaxCount 0 0 0 1 0 0