Repository 'tbvcfreport'
hg clone https://toolshed.g2.bx.psu.edu/repos/iuc/tbvcfreport

Changeset 2:4934c0ac6197 (2022-03-17)
Previous changeset 1:adc0645b945c (2021-07-07) Next changeset 3:42818629ec4c (2024-05-31)
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/blob/master/tools/tbvcfreport commit eb93304c3aef325f02a62675d53c69a2b73c0fef"
modified:
tbvcfreport.xml
test-data/rif_resistant_drug_resistance_report.html
test-data/rif_resistant_drug_resistance_report.txt
added:
test-data/vcf_with_no_protein.vcf
test-data/vcf_with_no_protein_report.html
test-data/vcf_with_no_protein_report.txt
b
diff -r adc0645b945c -r 4934c0ac6197 tbvcfreport.xml
--- a/tbvcfreport.xml Wed Jul 07 09:22:44 2021 +0000
+++ b/tbvcfreport.xml Thu Mar 17 07:33:00 2022 +0000
[
@@ -2,7 +2,7 @@
 <tool id="tbvcfreport" name="TB Variant Report" version="@TOOL_VERSION@+galaxy0">
   <description>- generate HTML report from SnpEff annotated M.tb VCF(s)</description>
   <macros>
-    <token name="@TOOL_VERSION@">0.1.8</token>
+    <token name="@TOOL_VERSION@">0.1.10</token>
   </macros>
   <requirements>
     <requirement type="package" version="@TOOL_VERSION@">tbvcfreport</requirement>
@@ -64,7 +64,7 @@
     <param name="tbprofiler_json" type="data" format="json" optional="true" label="TBProfiler Drug Resistance Report (Optional)" help="--tbprofiler-report" />
     <param name="filter_udi" argument="--filter-udi" type="boolean" truevalue="--filter-udi" falsevalue="--no-filter-udi" checked="true" label="Filter UPSTREAM, DOWNSTREAM and INTERGENIC variants" />
     <section name="adv" title="Advanced options" expanded="false">
-      <param name="database_uri" type="text" optional="true" value="neodb.sanbi.ac.za" label="Specify on-premise COMBAT-TB-NeoDB URI" help="For people with an on-premise deployment of COMBAT-TB-NeoDB" />
+      <param name="database_uri" type="text" optional="true" value="neodb.sanbi.ac.za" label="Specify COMBAT-TB-NeoDB URI" help="For people with their own deployment of COMBAT-TB-NeoDB" />
     </section>
   </inputs>
   <outputs>
@@ -78,12 +78,12 @@
     </data>
   </outputs>
   <tests>
-    <test>
+    <test expect_num_outputs="2">
       <param name="input_vcf" value="rif_resistant.vcf" ftype="vcf" />
       <output name="variants_report_html" compare="diff" lines_diff="2" file="rif_resistant_variants_report.html" ftype="html" />
       <output name="variants_report_txt" compare="diff" lines_diff="2" file="rif_resistant_variants_report.txt" ftype="txt" />
     </test>
-    <test>
+    <test expect_num_outputs="4">
       <param name="input_vcf" value="rif_resistant.vcf" ftype="vcf" />
       <param name="tbprofiler_json" value="rif_resistant.results.json" ftype="json" />
       <output name="variants_report_html" compare="diff" lines_diff="2" file="rif_resistant_variants_report_with_lineage.html" ftype="html" />
@@ -91,6 +91,12 @@
       <output name="drug_resistance_report_html" file="rif_resistant_drug_resistance_report.html" lines_diff="2" ftype="html" />
       <output name="drug_resistance_report_txt" compare="diff" lines_diff="2" file="rif_resistant_drug_resistance_report.txt" ftype="txt" />
     </test>
+    <test expect_num_outputs="2">
+      <!-- test for bug fixed in 0.1.9 onwards: a gene with no protein product -->
+      <param name="input_vcf" value="vcf_with_no_protein.vcf" ftype="vcf" />
+      <output name="variants_report_html" compare="diff" lines_diff="2" file="vcf_with_no_protein_report.html" ftype="html" />
+      <output name="variants_report_txt" compare="diff" lines_diff="2" file="vcf_with_no_protein_report.txt" ftype="txt" />      
+    </test>
   </tests>
   <help>
     <![CDATA[
b
diff -r adc0645b945c -r 4934c0ac6197 test-data/rif_resistant_drug_resistance_report.html
--- a/test-data/rif_resistant_drug_resistance_report.html Wed Jul 07 09:22:44 2021 +0000
+++ b/test-data/rif_resistant_drug_resistance_report.html Thu Mar 17 07:33:00 2022 +0000
b
@@ -127,6 +127,13 @@
             <td>S</td>
             <td></td>
         </tr>
+        </tr>
+                <tr>
+            <td>Aminoglycosides</td>
+            <td>S</td>
+            <td></td>
+        </tr>
+
             </table>
 </div>
                 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
b
diff -r adc0645b945c -r 4934c0ac6197 test-data/rif_resistant_drug_resistance_report.txt
--- a/test-data/rif_resistant_drug_resistance_report.txt Wed Jul 07 09:22:44 2021 +0000
+++ b/test-data/rif_resistant_drug_resistance_report.txt Thu Mar 17 07:33:00 2022 +0000
b
@@ -23,5 +23,6 @@
 Delaminid S
 Clofazimine S
 Bedaquiline S
+Aminoglycosides S
 
 #Drug resistance predictions are for research purposes only and are produced by the TBProfiler software.
b
diff -r adc0645b945c -r 4934c0ac6197 test-data/vcf_with_no_protein.vcf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/vcf_with_no_protein.vcf Thu Mar 17 07:33:00 2022 +0000
b
b'@@ -0,0 +1,88 @@\n+##fileformat=VCFv4.2\n+##fileDate=20220316\n+##source=freeBayes v1.1.0-dirty\n+##reference=reference/ref.fa\n+##contig=<ID=Chromosome,length=4411532>\n+##phasing=none\n+##commandline="freebayes -p 1 -q 20 -m 60 --min-coverage 10 -V -f reference/ref.fa snps.bam --region Chromosome:0-1121280"\n+##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of samples with data">\n+##INFO=<ID=DP,Number=1,Type=Integer,Description="Total read depth at the locus">\n+##INFO=<ID=DPB,Number=1,Type=Float,Description="Total read depth per bp at the locus; bases in reads overlapping / bases in haplotype">\n+##INFO=<ID=AC,Number=A,Type=Integer,Description="Total number of alternate alleles in called genotypes">\n+##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes">\n+##INFO=<ID=AF,Number=A,Type=Float,Description="Estimated allele frequency in the range (0,1]">\n+##INFO=<ID=RO,Number=1,Type=Integer,Description="Count of full observations of the reference haplotype.">\n+##INFO=<ID=AO,Number=A,Type=Integer,Description="Count of full observations of this alternate haplotype.">\n+##INFO=<ID=PRO,Number=1,Type=Float,Description="Reference allele observation count, with partial observations recorded fractionally">\n+##INFO=<ID=PAO,Number=A,Type=Float,Description="Alternate allele observations, with partial observations recorded fractionally">\n+##INFO=<ID=QR,Number=1,Type=Integer,Description="Reference allele quality sum in phred">\n+##INFO=<ID=QA,Number=A,Type=Integer,Description="Alternate allele quality sum in phred">\n+##INFO=<ID=PQR,Number=1,Type=Float,Description="Reference allele quality sum in phred for partial observations">\n+##INFO=<ID=PQA,Number=A,Type=Float,Description="Alternate allele quality sum in phred for partial observations">\n+##INFO=<ID=SRF,Number=1,Type=Integer,Description="Number of reference observations on the forward strand">\n+##INFO=<ID=SRR,Number=1,Type=Integer,Description="Number of reference observations on the reverse strand">\n+##INFO=<ID=SAF,Number=A,Type=Integer,Description="Number of alternate observations on the forward strand">\n+##INFO=<ID=SAR,Number=A,Type=Integer,Description="Number of alternate observations on the reverse strand">\n+##INFO=<ID=SRP,Number=1,Type=Float,Description="Strand balance probability for the reference allele: Phred-scaled upper-bounds estimate of the probability of observing the deviation between SRF and SRR given E(SRF/SRR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=SAP,Number=A,Type=Float,Description="Strand balance probability for the alternate allele: Phred-scaled upper-bounds estimate of the probability of observing the deviation between SAF and SAR given E(SAF/SAR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=AB,Number=A,Type=Float,Description="Allele balance at heterozygous sites: a number between 0 and 1 representing the ratio of reads showing the reference allele to all reads, considering only reads from individuals called as heterozygous">\n+##INFO=<ID=ABP,Number=A,Type=Float,Description="Allele balance probability at heterozygous sites: Phred-scaled upper-bounds estimate of the probability of observing the deviation between ABR and ABA given E(ABR/ABA) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=RUN,Number=A,Type=Integer,Description="Run length: the number of consecutive repeats of the alternate allele in the reference genome">\n+##INFO=<ID=RPP,Number=A,Type=Float,Description="Read Placement Probability: Phred-scaled upper-bounds estimate of the probability of observing the deviation between RPL and RPR given E(RPL/RPR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=RPPR,Number=1,Type=Float,Description="Read Placement Probability for reference observations: Phred-scaled upper-bounds estimate of the probability of observing the deviation between RPL and RPR given E(RPL/RPR) ~ 0.5, derived using Hoeffding\'s inequality">\n+##INFO=<ID=RPL,Number=A,Type=Float,Description="Reads Placed Left: number '..b'SAF=92;SAP=6.87188;SAR=111;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=C|missense_variant|MODERATE|Rv3793|Rv3793|transcript|TRANSCRIPT_Rv3793|protein_coding|1/1|c.809T>C|p.Ile270Thr|809/3285|809/3285|270/1094||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:203:0,203:0:0:203:7143:-642.863,0\n+Chromosome\t4247429\t.\tA\tG\t6696.64\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=211;CIGAR=1X;DP=212;DPB=212;DPRA=0;EPP=5.32585;EPPR=0;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=1541.96;PAIRED=0.990521;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=7445;QR=0;RO=0;RPL=118;RPP=9.44239;RPPR=0;RPR=93;RUN=1;SAF=99;SAP=4.74954;SAR=112;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=G|missense_variant|MODERATE|Rv3795|Rv3795|transcript|TRANSCRIPT_Rv3795|protein_coding|1/1|c.916A>G|p.Met306Val|916/3297|916/3297|306/1098||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:212:0,211:0:0:211:7445:-669.664,0\n+Chromosome\t4247646\t.\tC\tA\t6787.39\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=223;CIGAR=1X;DP=224;DPB=224;DPRA=0;EPP=9.09627;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=1562.85;PAIRED=0.982063;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=7580;QR=35;RO=1;RPL=106;RPP=4.18854;RPPR=5.18177;RPR=117;RUN=1;SAF=120;SAP=5.82445;SAR=103;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;ANN=A|missense_variant|MODERATE|Rv3795|Rv3795|transcript|TRANSCRIPT_Rv3795|protein_coding|1/1|c.1133C>A|p.Ala378Glu|1133/3297|1133/3297|378/1098||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:224:1,223:1:35:223:7580:-678.739,0\n+Chromosome\t4251297\t.\tC\tG\t6197.38\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=193;CIGAR=1X;DP=194;DPB=194;DPRA=0;EPP=3.29158;EPPR=0;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=1427;PAIRED=0.984456;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=6891;QR=0;RO=0;RPL=96;RPP=3.02155;RPPR=0;RPR=97;RUN=1;SAF=91;SAP=4.37169;SAR=102;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=G|synonymous_variant|LOW|Rv3797|Rv3797|transcript|TRANSCRIPT_Rv3797|protein_coding|1/1|c.213C>G|p.Gly71Gly|213/1782|213/1782|71/593||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:194:0,193:0:0:193:6891:-619.738,0\n+Chromosome\t4254290\t.\tT\tG\t2461.94\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=79;CIGAR=1X;DP=79;DPB=79;DPRA=0;EPP=12.9331;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=566.884;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=2733;QR=0;RO=0;RPL=0;RPP=174.557;RPPR=0;RPR=79;RUN=1;SAF=30;SAP=12.9331;SAR=49;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=G|missense_variant|MODERATE|Rv3798|Rv3798|transcript|TRANSCRIPT_Rv3798|protein_coding|1/1|c.1298T>G|p.Leu433Arg|1298/1335|1298/1335|433/444||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:79:0,79:0:0:79:2733:-246.194,0\n+Chromosome\t4254478\t.\tG\tA\t7180.38\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=227;CIGAR=1X;DP=227;DPB=227;DPRA=0;EPP=3.09639;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=1653.34;PAIRED=0.986784;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=7979;QR=0;RO=0;RPL=103;RPP=7.22889;RPPR=0;RPR=124;RUN=1;SAF=135;SAP=20.6978;SAR=92;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=A|missense_variant|MODERATE|Rv3799c|Rv3799c|transcript|TRANSCRIPT_Rv3799c|protein_coding|1/1|c.1471C>T|p.His491Tyr|1471/1569|1471/1569|491/522||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:227:0,227:0:0:227:7979:-718.038,0\n+Chromosome\t4261499\t.\tA\tG\t5307.9\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=171;CIGAR=1X;DP=171;DPB=171;DPRA=0;EPP=7.59452;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=1;NUMALT=1;ODDS=1222.19;PAIRED=0.982456;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=5897;QR=0;RO=0;RPL=88;RPP=3.32777;RPPR=0;RPR=83;RUN=1;SAF=83;SAP=3.32777;SAR=88;SRF=0;SRP=0;SRR=0;TYPE=snp;ANN=G|missense_variant|MODERATE|Rv3801c|Rv3801c|transcript|TRANSCRIPT_Rv3801c|protein_coding|1/1|c.1568T>C|p.Val523Ala|1568/1914|1568/1914|523/637||\tGT:DP:AD:RO:QR:AO:QA:GL\t1:171:0,171:0:0:171:5897:-530.79,0\n+Chromosome\t4263279\t.\tG\tA\t6207.29\tPASS\tAB=0;ABP=0;AC=1;AF=1;AN=1;AO=196;CIGAR=1X;DP=198;DPB=198;DPRA=0;EPP=9.39177;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=1429.28;PAIRED=0.994898;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=6971;QR=70;RO=2;RPL=100;RPP=3.18756;RPPR=7.35324;RPR=96;RUN=1;SAF=102;SAP=3.71935;SAR=94;SRF=1;SRP=3.0103;SRR=1;TYPE=snp\tGT:DP:AD:RO:QR:AO:QA:GL\t1:198:2,196:2:70:196:6971:-620.729,0\n'
b
diff -r adc0645b945c -r 4934c0ac6197 test-data/vcf_with_no_protein_report.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/vcf_with_no_protein_report.html Thu Mar 17 07:33:00 2022 +0000
[
b'@@ -0,0 +1,661 @@\n+<!DOCTYPE html>\n+<html>\n+\n+<head>\n+        <title></title>\n+    <meta charset="utf-8">\n+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">\n+    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"\n+        integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">\n+    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css">\n+    <link rel="stylesheet" type="text/css"\n+        href="https://cdn.datatables.net/buttons/1.5.2/css/buttons.bootstrap4.min.css">\n+    <link rel="stylesheet" type="text/css"\n+        href="https://cdn.datatables.net/buttons/1.5.2/css/buttons.dataTables.min.css">\n+    </head>\n+\n+<body>\n+    <div class="container">\n+        <div class="row">\n+            <h2 class="mt-5">\n+                vcf_with_no_protein Report\n+            </h2>\n+        </div>\n+                        <hr>\n+        <div class="row justify-content-center align-items-center">\n+    <table id="vcfreport" class="table table-bordered table-striped table-hover table-sm" cellspacing="0">\n+        <thead class="thead-light">\n+            <tr>\n+                <th scope="col">CHR</th>\n+                <th scope="col">GENE</th>\n+                <th scope="col">LOCUS</th>\n+                <th scope="col">PRODUCT</th>\n+                <th scope="col">TYPE</th>\n+                <th scope="col">EFFECT</th>\n+                <th scope="col">POS</th>\n+                <th scope="col">REF</th>\n+                <th scope="col">ALT</th>\n+                <th scope="col">BIOTYPE</th>\n+                <th scope="col">NUCLEOTIDE</th>\n+                <th scope="col">CONSEQUENCE</th>\n+                <th scope="col">IMPACT</th>\n+                <th scope="col">PATHWAY</th>\n+            </tr>\n+        </thead>\n+        <tbody>\n+\n+                        <tr>\n+                <td>Chromosome</td>\n+                <td>Rv3753c</td>\n+                <td>\n+                                        <a href="https://explorer.sanbi.ac.za/gene?q=Rv3753c" target="_blank"\n+                        rel="noreferrer noopener">Rv3753c</a>\n+                                    </td>\n+                <td>\n+                                        <a href="https://explorer.sanbi.ac.za/search?q=O69720"\n+                        target="_blank" rel="noreferrer noopener">O69720</a>\n+                                    </td>\n+                <td>snp</td>\n+                <td>missense_variant</td>\n+                <td>\n+                    <a href="https://explorer.sanbi.ac.za/jbrowse/?loc=NC_000962.3%3A4200220..4200220&tracks=DNA%2CGenes&highlight=NC_000962.3%3A4200220..4200220"\n+                        target="_blank" rel="noreferrer noopener">4200220</a>\n+                </td>\n+                <td>G</td>\n+                <td>A</td>\n+                <td>protein_coding</td>\n+                <td>c.2C>T</td>\n+                <td>p.Thr1Met</td>\n+                <td>MODERATE</td>\n+                <td>\n+                                        <p>NA</p>\n+                                    </td>\n+            </tr>\n+                        <tr>\n+                <td>Chromosome</td>\n+                <td>Rv3756c</td>\n+                <td>\n+                                        <a href="https://explorer.sanbi.ac.za/gene?q=Rv3756c" target="_blank"\n+                        rel="noreferrer noopener">Rv3756c</a>\n+                                    </td>\n+                <td>\n+                                        <a href="https://explorer.sanbi.ac.za/search?q=O69722"\n+                        target="_blank" rel="noreferrer noopener">O69722</a>\n+                                    </td>\n+                <td>snp</td>\n+                <td>synonymous_variant</td>\n+                <td>\n+                    <a href="https://explorer.sanbi.ac.za/jbrowse/?loc=NC_000962.3%3A4202383..4202383&t'..b'1568T>C</td>\n+                <td>p.Val523Ala</td>\n+                <td>MODERATE</td>\n+                <td>\n+                                        <p>NA</p>\n+                                    </td>\n+            </tr>\n+                    </tbody>\n+        <tfoot class="thead-light">\n+            <tr>\n+                <th scope="col">CHR</th>\n+                <th scope="col">GENE</th>\n+                <th scope="col">LOCUS</th>\n+                <th scope="col">PRODUCT</th>\n+                <th scope="col">TYPE</th>\n+                <th scope="col">EFFECT</th>\n+                <th scope="col">POS</th>\n+                <th scope="col">REF</th>\n+                <th scope="col">ALT</th>\n+                <th scope="col">BIOTYPE</th>\n+                <th scope="col">NUCLEOTIDE</th>\n+                <th scope="col">CONSEQUENCE</th>\n+                <th scope="col">IMPACT</th>\n+                <th scope="col">PATHWAY</th>\n+            </tr>\n+        </tfoot>\n+    </table>\n+</div>\n+</main>\n+<div class="mt-5">\n+</div>\n+                <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"\n+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous">\n+        </script>\n+        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"\n+            integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous">\n+        </script>\n+        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"\n+            integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous">\n+        </script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.bootstrap4.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.flash.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.html5.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.print.min.js"></script>\n+        <script type="text/javascript" charset="utf8"\n+            src="https://cdn.datatables.net/buttons/1.5.2/js/buttons.colVis.min.js"></script>\n+        <script type="text/javascript" language="javascript" class="init">\n+            $(function () {\n+                var table = $(\'#vcfreport\').DataTable({\n+                    lengthChange: false,\n+                    buttons: [{\n+                        extend: \'csv\',\n+                        text: \'Download CSV\',\n+                        filename: \'vcf_with_no_protein\'\n+                    }]\n+                });\n+                table.buttons().container().appendTo(\'#vcfreport_wrapper .col-md-6:eq(0)\');\n+            });\n+        </script>\n+            </div>\n+</body>\n+\n+</html>\n\\ No newline at end of file\n'
b
diff -r adc0645b945c -r 4934c0ac6197 test-data/vcf_with_no_protein_report.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/vcf_with_no_protein_report.txt Thu Mar 17 07:33:00 2022 +0000
b
@@ -0,0 +1,22 @@
+#Vcf_with_no_protein Report
+#Lineage Family Spoligotype RD Agreement
+
+#CHR GENE IDENTIFIER PRODUCT TYPE ANNOTATION POS REF ALT CONSEQUENCE IMPACT PATHWAY
+Chromosome Rv3753c Rv3753c O69720 snp missense_variant 4200220 G A p.Thr1Met MODERATE
+Chromosome Rv3756c Rv3756c O69722 snp synonymous_variant 4202383 C A p.Val77Val LOW ABC transporters
+Chromosome Rv3759c Rv3759c O69725 snp missense_variant 4205120 G A p.Pro85Leu MODERATE ABC transporters
+Chromosome Rv3764c Rv3764c O69729 snp missense_variant 4210876 C T p.Arg45His MODERATE
+Chromosome Rv3769 Rv3769 P72036 snp missense_variant 4214747 C T p.His45Tyr MODERATE
+Chromosome Rv3770c Rv3770c P72037 snp missense_variant 4215484 C G p.Ala98Pro MODERATE
+Chromosome Rv3772 Rv3772 P9WML5 snp missense_variant 4217557 G A p.Ala142Thr MODERATE Phenylalanine, tyrosine and tryptophan biosynthesis,Phenylalanine metabolism,Histidine metabolism,Tyrosine metabolism
+Chromosome Rv3777 Rv3777 P72043 snp missense_variant 4223172 C T p.Ala160Val MODERATE
+Chromosome Rv3785 Rv3785 P9WKX1 snp synonymous_variant 4232327 G A p.Arg336Arg LOW
+Chromosome Rv3792 Rv3792 P9WN03 snp synonymous_variant 4238963 C T p.His344His LOW Arabinogalactan biosynthesis - Mycobacterium
+Chromosome Rv3792 Rv3792 P9WN03 snp missense_variant 4239274 C G p.Pro448Arg MODERATE Arabinogalactan biosynthesis - Mycobacterium
+Chromosome Rv3793 Rv3793 P9WNL5 snp missense_variant 4240671 T C p.Ile270Thr MODERATE Lipoarabinomannan (LAM) biosynthesis
+Chromosome Rv3795 Rv3795 P9WNL7 snp missense_variant 4247429 A G p.Met306Val MODERATE Arabinogalactan biosynthesis - Mycobacterium
+Chromosome Rv3795 Rv3795 P9WNL7 snp missense_variant 4247646 C A p.Ala378Glu MODERATE Arabinogalactan biosynthesis - Mycobacterium
+Chromosome Rv3797 Rv3797 O53577 snp synonymous_variant 4251297 C G p.Gly71Gly LOW
+Chromosome Rv3798 Rv3798 NOPROTEIN snp missense_variant 4254290 T G p.Leu433Arg MODERATE
+Chromosome Rv3799c Rv3799c O53578 snp missense_variant 4254478 G A p.His491Tyr MODERATE
+Chromosome Rv3801c Rv3801c O53580 snp missense_variant 4261499 A G p.Val523Ala MODERATE