<ol>
<li><p>Given issues I've had in various programming languages that use numbers at the start of a variable, the tag issue might be related to it starting with a numeric value. Is it possible to change that from <code>1KG</code> to something like <code>ph3_1KG</code>?</p>
</li>
<li><p>According to the information in the VCF header, the SA field should have 4 values:</p>
<pre><code>##FORMAT=&lt;ID=SA,Number=4,Type=Integer,Description=&quot;Number of 1) forward ref alleles; 2) reverse ref; 3) forward non-ref; 4) reverse non-ref alleles, used in variant calling&quot;&gt;
</code></pre>
<p>While that location does have four numerical values in the actual data for that variant location, it seems like the validation code isn't expecting the forward and reverse alleles to be separated by <code>/</code>:</p>
<pre><code>#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  TN21-116928
chr1    6197766 rs2294714   T   C   0.0 rs  DP=1931;TI=NM_000983.3;GI=RPL22;FC=Silent;DC=c.13-10A&gt;G;LO=INTRON;EXON=2    GT:VF:AD:SB:SA:SP:SO    0/1:0.483:999,932:883/1048:451/548,432/500:2:0.0
                                                                                                                                 ^^                                     ^^^^^^^^^^^^^^^
</code></pre>
</li>
</ol>
<p>Whether or not these errors are actually important will depend on the program that this VCF file is used for.</p>

CC BY-SA 4.0
2023-08-15T00:09:14.617Z
2023-08-15T00:09:14.617Z
gringer
<p>I have a VCF file that is of the following format:</p>
<pre><code>##fileformat=VCFv4.1
##fileDate=20210329-231145
##AnalysisPipelineName=NGS5
##AnalysisPipelineVersion=V5.2.1
##AnalysisConfigurationName=NGS5_Exome
##AnalysisConfigurationVersion=5.2.1
##NGSPanelName=SureSelect_ExomeV7_plus_720G
##NGSPanelVersion=V1.0
##BatchID=WES_032721_A
##Lane=Lane1
##reference=hg38
##PathogenicSilentFile=Pathogenic_Silent.20200730.vcf
##FlowcellName=210327_A01233_0050_AHYFJHDSXY
##VariantDefDateTime=20210323-070701
##FORMAT=&lt;ID=GT,Number=1,Type=String,Description=&quot;Genotype&quot;&gt;
##FORMAT=&lt;ID=VF,Number=1,Type=Float,Description=&quot;Variant Frequency&quot;&gt;
##FORMAT=&lt;ID=AD,Number=.,Type=Integer,Description=&quot;Allele Depth&quot;&gt;
##FORMAT=&lt;ID=SB,Number=1,Type=String,Description=&quot;Strand Bias with read numbers (Fw/Rv)&quot;&gt;
##FORMAT=&lt;ID=SA,Number=4,Type=Integer,Description=&quot;Number of 1) forward ref alleles; 2) reverse ref; 3) forward non-ref; 4) reverse non-ref alleles, used in variant calling&quot;&gt;
##FORMAT=&lt;ID=SP,Number=1,Type=Float,Description=&quot;Phred of Chi-square p-value for strand bias&quot;&gt;
##FORMAT=&lt;ID=SO,Number=1,Type=String,Description=&quot;abs(log10( (RefFw*AltRv)/(RefRv*AltFw) )) for strand bias&quot;&gt;
##INFO=&lt;ID=DP,Number=1,Type=Integer,Description=&quot;Total Depth&quot;&gt;
##INFO=&lt;ID=TI,Number=.,Type=String,Description=&quot;Transcript ID&quot;&gt;
##INFO=&lt;ID=GI,Number=.,Type=String,Description=&quot;Gene ID&quot;&gt;
##INFO=&lt;ID=LO,Number=.,Type=String,Description=&quot;Genetic location&quot;&gt;
##INFO=&lt;ID=FC,Number=.,Type=String,Description=&quot;Functional Consequence&quot;&gt;
##INFO=&lt;ID=PC,Number=.,Type=String,Description=&quot;Protein level change&quot;&gt;
##INFO=&lt;ID=DC,Number=.,Type=String,Description=&quot;DNA level change&quot;&gt;
##INFO=&lt;ID=EXON,Number=.,Type=String,Description=&quot;Exon number&quot;&gt;
##INFO=&lt;ID=CI,Number=.,Type=String,Description=&quot;Clinical impact&quot;&gt;
##INFO=&lt;ID=dbSNP,Number=.,Type=String,Description=&quot;dbSNP version&quot;&gt;
##INFO=&lt;ID=1KG,Number=0,Type=String,Description=&quot;Existing in the 1000 Genome phase 3 data&quot;&gt;
##FILTER=&lt;ID=R8,Description=&quot;IndelRepeatLength is greater than 8&quot;&gt;
##FILTER=&lt;ID=R8.1,Description=&quot;IndelRepeatLength of a monomer is greater than 8&quot;&gt;
##FILTER=&lt;ID=R8.2,Description=&quot;IndelRepeatLength of a dimer is greater than 8&quot;&gt;
##FILTER=&lt;ID=sb,Description=&quot;Variant strand bias high&quot;&gt;
##FILTER=&lt;ID=sb.s,Description=&quot;Variant strand bias significantly high (only for SNV)&quot;&gt;
##FILTER=&lt;ID=rs,Description=&quot;Variant with rs (dbSNP) number in a non-core gene&quot;&gt;
##FILTER=&lt;ID=FP,Description=&quot;Possibly false positives due to high similarity to off-target regions&quot;&gt;
##FILTER=&lt;ID=NC,Description=&quot;Noncoding INDELs on non-core genes&quot;&gt;
##FILTER=&lt;ID=lowDP,Description=&quot;low depth variant&quot;&gt;
##FILTER=&lt;ID=Benign,Description=&quot;Benign variant&quot;&gt;
##contig=&lt;ID=chrM,length=16569&gt;
##contig=&lt;ID=chr1,length=248956422&gt;
##contig=&lt;ID=chr2,length=242193529&gt;
##contig=&lt;ID=chr3,length=198295559&gt;
##contig=&lt;ID=chr4,length=190214555&gt;
##contig=&lt;ID=chr5,length=181538259&gt;
##contig=&lt;ID=chr6,length=170805979&gt;
##contig=&lt;ID=chr7,length=159345973&gt;
##contig=&lt;ID=chr8,length=145138636&gt;
##contig=&lt;ID=chr9,length=138394717&gt;
##contig=&lt;ID=chr10,length=133797422&gt;
##contig=&lt;ID=chr11,length=135086622&gt;
##contig=&lt;ID=chr12,length=133275309&gt;
##contig=&lt;ID=chr13,length=114364328&gt;
##contig=&lt;ID=chr14,length=107043718&gt;
##contig=&lt;ID=chr15,length=101991189&gt;
##contig=&lt;ID=chr16,length=90338345&gt;
##contig=&lt;ID=chr17,length=83257441&gt;
##contig=&lt;ID=chr18,length=80373285&gt;
##contig=&lt;ID=chr19,length=58617616&gt;
##contig=&lt;ID=chr20,length=64444167&gt;
##contig=&lt;ID=chr21,length=46709983&gt;
##contig=&lt;ID=chr22,length=50818468&gt;
##contig=&lt;ID=chrX,length=156040895&gt;
##contig=&lt;ID=chrY,length=57227415&gt;
##contig=&lt;ID=chrUn_GL000195v1,length=182896&gt;
##contig=&lt;ID=chrUn_GL000213v1,length=164239&gt;
##contig=&lt;ID=chrUn_GL000214v1,length=137718&gt;
##contig=&lt;ID=chrUn_GL000216v2,length=176608&gt;
##contig=&lt;ID=chrUn_GL000218v1,length=161147&gt;
##contig=&lt;ID=chrUn_GL000219v1,length=179198&gt;
##contig=&lt;ID=chrUn_GL000220v1,length=161802&gt;
##contig=&lt;ID=chrUn_GL000224v1,length=179693&gt;
##contig=&lt;ID=chrUn_GL000226v1,length=15008&gt;
##contig=&lt;ID=chrUn_KI270302v1,length=2274&gt;
##contig=&lt;ID=chrUn_KI270303v1,length=1942&gt;
##contig=&lt;ID=chrUn_KI270304v1,length=2165&gt;
##contig=&lt;ID=chrUn_KI270305v1,length=1472&gt;
##contig=&lt;ID=chrUn_KI270310v1,length=1201&gt;
##contig=&lt;ID=chrUn_KI270311v1,length=12399&gt;
##contig=&lt;ID=chrUn_KI270312v1,length=998&gt;
##contig=&lt;ID=chrUn_KI270315v1,length=2276&gt;
##contig=&lt;ID=chrUn_KI270316v1,length=1444&gt;
##contig=&lt;ID=chrUn_KI270317v1,length=37690&gt;
##contig=&lt;ID=chrUn_KI270320v1,length=4416&gt;
##contig=&lt;ID=chrUn_KI270322v1,length=21476&gt;
##contig=&lt;ID=chrUn_KI270329v1,length=1040&gt;
##contig=&lt;ID=chrUn_KI270330v1,length=1652&gt;
##contig=&lt;ID=chrUn_KI270333v1,length=2699&gt;
##contig=&lt;ID=chrUn_KI270334v1,length=1368&gt;
##contig=&lt;ID=chrUn_KI270335v1,length=1048&gt;
##contig=&lt;ID=chrUn_KI270336v1,length=1026&gt;
##contig=&lt;ID=chrUn_KI270337v1,length=1121&gt;
##contig=&lt;ID=chrUn_KI270338v1,length=1428&gt;
##contig=&lt;ID=chrUn_KI270340v1,length=1428&gt;
##contig=&lt;ID=chrUn_KI270362v1,length=3530&gt;
##contig=&lt;ID=chrUn_KI270363v1,length=1803&gt;
##contig=&lt;ID=chrUn_KI270364v1,length=2855&gt;
##contig=&lt;ID=chrUn_KI270366v1,length=8320&gt;
##contig=&lt;ID=chrUn_KI270371v1,length=2805&gt;
##contig=&lt;ID=chrUn_KI270372v1,length=1650&gt;
##contig=&lt;ID=chrUn_KI270373v1,length=1451&gt;
##contig=&lt;ID=chrUn_KI270374v1,length=2656&gt;
##contig=&lt;ID=chrUn_KI270375v1,length=2378&gt;
##contig=&lt;ID=chrUn_KI270376v1,length=1136&gt;
##contig=&lt;ID=chrUn_KI270378v1,length=1048&gt;
##contig=&lt;ID=chrUn_KI270379v1,length=1045&gt;
##contig=&lt;ID=chrUn_KI270381v1,length=1930&gt;
##contig=&lt;ID=chrUn_KI270382v1,length=4215&gt;
##contig=&lt;ID=chrUn_KI270383v1,length=1750&gt;
##contig=&lt;ID=chrUn_KI270384v1,length=1658&gt;
##contig=&lt;ID=chrUn_KI270385v1,length=990&gt;
##contig=&lt;ID=chrUn_KI270386v1,length=1788&gt;
##contig=&lt;ID=chrUn_KI270387v1,length=1537&gt;
##contig=&lt;ID=chrUn_KI270388v1,length=1216&gt;
##contig=&lt;ID=chrUn_KI270389v1,length=1298&gt;
##contig=&lt;ID=chrUn_KI270390v1,length=2387&gt;
##contig=&lt;ID=chrUn_KI270391v1,length=1484&gt;
##contig=&lt;ID=chrUn_KI270392v1,length=971&gt;
##contig=&lt;ID=chrUn_KI270393v1,length=1308&gt;
##contig=&lt;ID=chrUn_KI270394v1,length=970&gt;
##contig=&lt;ID=chrUn_KI270395v1,length=1143&gt;
##contig=&lt;ID=chrUn_KI270396v1,length=1880&gt;
##contig=&lt;ID=chrUn_KI270411v1,length=2646&gt;
##contig=&lt;ID=chrUn_KI270412v1,length=1179&gt;
##contig=&lt;ID=chrUn_KI270414v1,length=2489&gt;
##contig=&lt;ID=chrUn_KI270417v1,length=2043&gt;
##contig=&lt;ID=chrUn_KI270418v1,length=2145&gt;
##contig=&lt;ID=chrUn_KI270419v1,length=1029&gt;
##contig=&lt;ID=chrUn_KI270420v1,length=2321&gt;
##contig=&lt;ID=chrUn_KI270422v1,length=1445&gt;
##contig=&lt;ID=chrUn_KI270423v1,length=981&gt;
##contig=&lt;ID=chrUn_KI270424v1,length=2140&gt;
##contig=&lt;ID=chrUn_KI270425v1,length=1884&gt;
##contig=&lt;ID=chrUn_KI270429v1,length=1361&gt;
##contig=&lt;ID=chrUn_KI270435v1,length=92983&gt;
##contig=&lt;ID=chrUn_KI270438v1,length=112505&gt;
##contig=&lt;ID=chrUn_KI270442v1,length=392061&gt;
##contig=&lt;ID=chrUn_KI270448v1,length=7992&gt;
##contig=&lt;ID=chrUn_KI270465v1,length=1774&gt;
##contig=&lt;ID=chrUn_KI270466v1,length=1233&gt;
##contig=&lt;ID=chrUn_KI270467v1,length=3920&gt;
##contig=&lt;ID=chrUn_KI270468v1,length=4055&gt;
##contig=&lt;ID=chrUn_KI270507v1,length=5353&gt;
##contig=&lt;ID=chrUn_KI270508v1,length=1951&gt;
##contig=&lt;ID=chrUn_KI270509v1,length=2318&gt;
##contig=&lt;ID=chrUn_KI270510v1,length=2415&gt;
##contig=&lt;ID=chrUn_KI270511v1,length=8127&gt;
##contig=&lt;ID=chrUn_KI270512v1,length=22689&gt;
##contig=&lt;ID=chrUn_KI270515v1,length=6361&gt;
##contig=&lt;ID=chrUn_KI270516v1,length=1300&gt;
##contig=&lt;ID=chrUn_KI270517v1,length=3253&gt;
##contig=&lt;ID=chrUn_KI270518v1,length=2186&gt;
##contig=&lt;ID=chrUn_KI270519v1,length=138126&gt;
##contig=&lt;ID=chrUn_KI270521v1,length=7642&gt;
##contig=&lt;ID=chrUn_KI270522v1,length=5674&gt;
##contig=&lt;ID=chrUn_KI270528v1,length=2983&gt;
##contig=&lt;ID=chrUn_KI270529v1,length=1899&gt;
##contig=&lt;ID=chrUn_KI270530v1,length=2168&gt;
##contig=&lt;ID=chrUn_KI270538v1,length=91309&gt;
##contig=&lt;ID=chrUn_KI270539v1,length=993&gt;
##contig=&lt;ID=chrUn_KI270544v1,length=1202&gt;
##contig=&lt;ID=chrUn_KI270548v1,length=1599&gt;
##contig=&lt;ID=chrUn_KI270579v1,length=31033&gt;
##contig=&lt;ID=chrUn_KI270580v1,length=1553&gt;
##contig=&lt;ID=chrUn_KI270581v1,length=7046&gt;
##contig=&lt;ID=chrUn_KI270582v1,length=6504&gt;
##contig=&lt;ID=chrUn_KI270583v1,length=1400&gt;
##contig=&lt;ID=chrUn_KI270584v1,length=4513&gt;
##contig=&lt;ID=chrUn_KI270587v1,length=2969&gt;
##contig=&lt;ID=chrUn_KI270588v1,length=6158&gt;
##contig=&lt;ID=chrUn_KI270589v1,length=44474&gt;
##contig=&lt;ID=chrUn_KI270590v1,length=4685&gt;
##contig=&lt;ID=chrUn_KI270591v1,length=5796&gt;
##contig=&lt;ID=chrUn_KI270593v1,length=3041&gt;
##contig=&lt;ID=chrUn_KI270741v1,length=157432&gt;
##contig=&lt;ID=chrUn_KI270742v1,length=186739&gt;
##contig=&lt;ID=chrUn_KI270743v1,length=210658&gt;
##contig=&lt;ID=chrUn_KI270744v1,length=168472&gt;
##contig=&lt;ID=chrUn_KI270745v1,length=41891&gt;
##contig=&lt;ID=chrUn_KI270746v1,length=66486&gt;
##contig=&lt;ID=chrUn_KI270747v1,length=198735&gt;
##contig=&lt;ID=chrUn_KI270748v1,length=93321&gt;
##contig=&lt;ID=chrUn_KI270749v1,length=158759&gt;
##contig=&lt;ID=chrUn_KI270750v1,length=148850&gt;
##contig=&lt;ID=chrUn_KI270751v1,length=150742&gt;
##contig=&lt;ID=chrUn_KI270752v1,length=27745&gt;
##contig=&lt;ID=chrUn_KI270753v1,length=62944&gt;
##contig=&lt;ID=chrUn_KI270754v1,length=40191&gt;
##contig=&lt;ID=chrUn_KI270755v1,length=36723&gt;
##contig=&lt;ID=chrUn_KI270756v1,length=79590&gt;
##contig=&lt;ID=chrUn_KI270757v1,length=71251&gt;
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  TN21-116928
chr1    6197766 rs2294714   T   C   0.0 rs  DP=1931;TI=NM_000983.3;GI=RPL22;FC=Silent;DC=c.13-10A&gt;G;LO=INTRON;EXON=2    GT:VF:AD:SB:SA:SP:SO    0/1:0.483:999,932:883/1048:451/548,432/500:2:0.0
chr1    7677739 rs3011926   A   G   0.0 rs  DP=851;TI=NM_015215.3;GI=CAMTA1;FC=Silent;DC=c.2914+6A&gt;G;LO=INTRON;EXON=11  GT:VF:AD:SB:SA:SP:SO    1/1:0.999:1,850:309/542:0/1,309/541:0:INF
chr1    9724365 rs11121484  C   T   0.0 rs  DP=1664;TI=NM_005026.4;GI=PIK3CD;FC=Synonymous;PC=Y936=;DC=c.2808C&gt;T;LO=EXON;EXON=22    GT:VF:AD:SB:SA:SP:SO    0/1:0.455:907,757:842/822:448/459,394/363:6:0.0
chr1    10258594    rs12402052  C   G   0.0 rs  DP=1400;TI=NM_015074.3;GI=KIF1B;FC=Synonymous;PC=A95=;DC=c.285C&gt;G;LO=EXON;EXON=4    GT:VF:AD:SB:SA:SP:SO    0/1:0.462:751,647:678/722:375/376,302/345:6:0.1
chr1    10295776    rs3753037   C   T   0.0 rs  DP=1050;TI=NM_015074.3;GI=KIF1B;FC=Silent;DC=c.1639+10C&gt;T;LO=INTRON;EXON=17 GT:VF:AD:SB:SA:SP:SO    0/1:0.477:549,501:395/655:211/338,184/317:2:0.0
chr1    10375266    rs11121552  C   A   0.0 rs  DP=1487;TI=NM_015074.3;GI=KIF1B;FC=Synonymous;PC=T1721=;DC=c.5163C&gt;A;LO=EXON;EXON=46    GT:VF:AD:SB:SA:SP:SO    0/1:0.484:767,719:870/617:443/324,427/292:3:0.0
chr1    11121270    rs11121691  C   T   0.0 .   DP=1092;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=L2303=;DC=c.6909G&gt;A;LO=EXON;EXON=49 GT:VF:AD:SB:SA:SP:SO    0/1:0.483:565,527:664/428:346/219,318/209:1:0.0
chr1    11130589    rs2275527   G   A   0.0 .   DP=1048;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=S1851=;DC=c.5553C&gt;T;LO=EXON;EXON=39 GT:VF:AD:SB:SA:SP:SO    0/1:0.509:515,533:572/476:275/240,297/236:3:0.0
chr1    11145001    rs1057079   C   T   0.0 .   DP=1392;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=A1577=;DC=c.4731G&gt;A;LO=EXON;EXON=33 GT:VF:AD:SB:SA:SP:SO    0/1:0.511:681,711:703/689:352/329,351/360:4:0.0
chr1    11228701    rs1064261   G   A   0.0 .   DP=1859;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=N999=;DC=c.2997C&gt;T;LO=EXON;EXON=19  GT:VF:AD:SB:SA:SP:SO    0/1:0.490:948,911:1059/800:536/412,523/388:2:0.0
chr1    11241657    rs1135172   A   G   0.0 .   DP=1643;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=D479=;DC=c.1437T&gt;C;LO=EXON;EXON=10  GT:VF:AD:SB:SA:SP:SO    0/1:0.512:801,842:793/850:376/425,417/425:5:0.0
</code></pre>
<p>Unfortunately, when I try to utilize the following Python code to validate my VCF file:</p>
<pre class="lang-py prettyprint-override"><code>import pysam

def validate_vcf(vcf_file_path):
    try:
        # Open the VCF file
        vcf_file = pysam.VariantFile(vcf_file_path)

        # Iterate through the records to check if they can be read
        for record in vcf_file:
            pass

        print(&quot;VCF file is valid.&quot;)
    except Exception as e:
        print(f&quot;Error validating VCF file: {str(e)}&quot;)

# Path to the VCF file you want to validate
vcf_file_path = &quot;path/to/yourfile.vcf&quot;

validate_vcf(vcf_file_path)
</code></pre>
<p>I receive the following error:</p>
<pre><code>[W::bcf_hrec_check] Invalid tag name: &quot;1KG&quot;
[E::vcf_parse_format] Invalid character '/' in 'SA' FORMAT field at chr1:6197766
</code></pre>
<p>Does anyone know what I can do to fix this?</p>

CC BY-SA 4.0
2023-08-15T00:09:11.167Z
It looks like the validator is working, in that it's producing messages about validation. Why do you need this validator? What are you trying to use the VCF file for?
gringer
<python><ngs><vcf>
Invalid tag name: "1KG" and Invalid character '/' in 'SA' FORMAT field at chr1:6197766
# Invalid tag name: "1KG" and Invalid character '/' in 'SA' FORMAT field at chr1:6197766

(Asked by: username_0 on 2023-08-14)

I have a VCF file that is of the following format:
##fileformat=VCFv4.1
##fileDate=20210329-231145
##AnalysisPipelineName=NGS5
##AnalysisPipelineVersion=V5.2.1
##AnalysisConfigurationName=NGS5_Exome
##AnalysisConfigurationVersion=5.2.1
##NGSPanelName=SureSelect_ExomeV7_plus_720G
##NGSPanelVersion=V1.0
##BatchID=WES_032721_A
##Lane=Lane1
##reference=hg38
##PathogenicSilentFile=Pathogenic_Silent.20200730.vcf
##FlowcellName=210327_A01233_0050_AHYFJHDSXY
##VariantDefDateTime=20210323-070701
##FORMAT=
##FORMAT=
##FORMAT=
##FORMAT=
##FORMAT=
##FORMAT=
##FORMAT=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##INFO=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##FILTER=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
##contig=
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  TN21-116928
chr1    6197766 rs2294714   T   C   0.0 rs  DP=1931;TI=NM_000983.3;GI=RPL22;FC=Silent;DC=c.13-10A>G;LO=INTRON;EXON=2    GT:VF:AD:SB:SA:SP:SO    0/1:0.483:999,932:883/1048:451/548,432/500:2:0.0
chr1    7677739 rs3011926   A   G   0.0 rs  DP=851;TI=NM_015215.3;GI=CAMTA1;FC=Silent;DC=c.2914+6A>G;LO=INTRON;EXON=11  GT:VF:AD:SB:SA:SP:SO    1/1:0.999:1,850:309/542:0/1,309/541:0:INF
chr1    9724365 rs11121484  C   T   0.0 rs  DP=1664;TI=NM_005026.4;GI=PIK3CD;FC=Synonymous;PC=Y936=;DC=c.2808C>T;LO=EXON;EXON=22    GT:VF:AD:SB:SA:SP:SO    0/1:0.455:907,757:842/822:448/459,394/363:6:0.0
chr1    10258594    rs12402052  C   G   0.0 rs  DP=1400;TI=NM_015074.3;GI=KIF1B;FC=Synonymous;PC=A95=;DC=c.285C>G;LO=EXON;EXON=4    GT:VF:AD:SB:SA:SP:SO    0/1:0.462:751,647:678/722:375/376,302/345:6:0.1
chr1    10295776    rs3753037   C   T   0.0 rs  DP=1050;TI=NM_015074.3;GI=KIF1B;FC=Silent;DC=c.1639+10C>T;LO=INTRON;EXON=17 GT:VF:AD:SB:SA:SP:SO    0/1:0.477:549,501:395/655:211/338,184/317:2:0.0
chr1    10375266    rs11121552  C   A   0.0 rs  DP=1487;TI=NM_015074.3;GI=KIF1B;FC=Synonymous;PC=T1721=;DC=c.5163C>A;LO=EXON;EXON=46    GT:VF:AD:SB:SA:SP:SO    0/1:0.484:767,719:870/617:443/324,427/292:3:0.0
chr1    11121270    rs11121691  C   T   0.0 .   DP=1092;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=L2303=;DC=c.6909G>A;LO=EXON;EXON=49 GT:VF:AD:SB:SA:SP:SO    0/1:0.483:565,527:664/428:346/219,318/209:1:0.0
chr1    11130589    rs2275527   G   A   0.0 .   DP=1048;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=S1851=;DC=c.5553C>T;LO=EXON;EXON=39 GT:VF:AD:SB:SA:SP:SO    0/1:0.509:515,533:572/476:275/240,297/236:3:0.0
chr1    11145001    rs1057079   C   T   0.0 .   DP=1392;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=A1577=;DC=c.4731G>A;LO=EXON;EXON=33 GT:VF:AD:SB:SA:SP:SO    0/1:0.511:681,711:703/689:352/329,351/360:4:0.0
chr1    11228701    rs1064261   G   A   0.0 .   DP=1859;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=N999=;DC=c.2997C>T;LO=EXON;EXON=19  GT:VF:AD:SB:SA:SP:SO    0/1:0.490:948,911:1059/800:536/412,523/388:2:0.0
chr1    11241657    rs1135172   A   G   0.0 .   DP=1643;TI=NM_004958.3;GI=MTOR;FC=Synonymous;PC=D479=;DC=c.1437T>C;LO=EXON;EXON=10  GT:VF:AD:SB:SA:SP:SO    0/1:0.512:801,842:793/850:376/425,417/425:5:0.0

Unfortunately, when I try to utilize the following Python code to validate my VCF file:
import pysam

def validate_vcf(vcf_file_path):
    try:
        # Open the VCF file
        vcf_file = pysam.VariantFile(vcf_file_path)

        # Iterate through the records to check if they can be read
        for record in vcf_file:
            pass

        print("VCF file is valid.")
    except Exception as e:
        print(f"Error validating VCF file: {str(e)}")

# Path to the VCF file you want to validate
vcf_file_path = "path/to/yourfile.vcf"

validate_vcf(vcf_file_path)

I receive the following error:
[W::bcf_hrec_check] Invalid tag name: "1KG"
[E::vcf_parse_format] Invalid character '/' in 'SA' FORMAT field at chr1:6197766

Does anyone know what I can do to fix this?

**Tags:** python, ngs, vcf
> **Comments:**
> **username_1**: It looks like the validator is working, in that it's producing messages about validation. Why do you need this validator? What are you trying to use the VCF file for?  

---

## 1 answers

### Answer by username_1 on 2023-08-15. Score: 1

Given issues I've had in various programming languages that use numbers at the start of a variable, the tag issue might be related to it starting with a numeric value. Is it possible to change that from 1KG to something like ph3_1KG?

According to the information in the VCF header, the SA field should have 4 values:
##FORMAT=

While that location does have four numerical values in the actual data for that variant location, it seems like the validation code isn't expecting the forward and reverse alleles to be separated by /:
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  TN21-116928
chr1    6197766 rs2294714   T   C   0.0 rs  DP=1931;TI=NM_000983.3;GI=RPL22;FC=Silent;DC=c.13-10A>G;LO=INTRON;EXON=2    GT:VF:AD:SB:SA:SP:SO    0/1:0.483:999,932:883/1048:451/548,432/500:2:0.0
                                                                                                                                 ^^                                     ^^^^^^^^^^^^^^^



Whether or not these errors are actually important will depend on the program that this VCF file is used for.


---

