
Read in English: How to Read a VCF File: A Practical Guide to Variant Call Format
دائرہ کار: تعلیمی اور تحقیقی استعمال۔ VCF فائل صرف یہ بتاتی ہے کہ pipeline نے کیا call کیا؛ یہ خود اس بات کا ثبوت نہیں کہ ویریئنٹ حقیقی، بیماری پیدا کرنے والا یا clinically اہم ہے۔
آخری جائزہ: 2 نومبر 2026
FASTQ کوالٹی کنٹرول اور reference genome پر alignment کے بعد زیادہ تر sequencing منصوبوں کا نتیجہ ایک VCF (Variant Call Format) فائل کی صورت میں نکلتا ہے۔ یہی فائل annotation tools میں جاتی ہے، variant browsers میں کھولی جاتی ہے، ساتھی محققین کو بھیجی جاتی ہے اور آخرکار review میٹنگ میں زیرِ بحث آتی ہے۔ لیکن پہلی بار VCF کھولنے والے کو اکثر ## سے شروع ہونے والی لائنوں، semicolons اور colon سے جُڑے اعداد کی ایک دیوار نظر آتی ہے۔
اس رہنما میں ہم دیکھیں گے کہ VCF کا ہر حصہ کیا معنی رکھتا ہے، genotype کیسے پڑھا جاتا ہے، کون سی غلطیاں سب سے زیادہ الجھن پیدا کرتی ہیں، اور فائل کی جانچ کے لیے bcftools کی چند مختصر اور قابلِ تکرار commands کیا ہیں۔ یہ مضمون GA4GH/samtools کے hts-specs منصوبے کی سرکاری VCF specification پر مبنی ہے، جس کا موجودہ canonical ورژن VCFv4.5 ہے۔
فہرست
VCF فائل کے تین حصے
VCF ایک tab-separated text فائل ہے، جو عموماً bgzip سے compress کی جاتی ہے (.vcf.gz) اور index کی جاتی ہے تاکہ tools کسی بھی region تک براہِ راست پہنچ سکیں۔ اس کے تین حصے ہوتے ہیں:
- Meta-information لائنیں جو
##سے شروع ہوتی ہیں۔ ان میں فارمیٹ کا ورژن، reference، contigs، اور فائل میں استعمال ہونے والی ہر INFO، FORMAT اور FILTER فیلڈ کی تعریف درج ہوتی ہے۔ - ایک header لائن جو ایک
#سے شروع ہوتی ہے اور کالموں کے نام دیتی ہے:#CHROM POS ID REF ALT QUAL FILTER INFO، اور اگر genotypes موجود ہوں تو اس کے بعدFORMATاور ہر sample کا ایک کالم۔ - Data لائنیں، ہر variant site کے لیے ایک۔
یہ ایک چھوٹی، فرضی مثال ہے:
##fileformat=VCFv4.5
##reference=GRCh38
##contig=<ID=chr1,length=248956422>
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total read depth">
##FILTER=<ID=LowQual,Description="Low variant quality">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=AD,Number=R,Type=Integer,Description="Allelic depths">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Sample read depth">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype quality">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE1
chr1 1234567 . A G 812.4 PASS DP=58 GT:AD:DP:GQ 0/1:30,28:58:99
chr1 1234890 . CTT C 45.1 LowQual DP=9 GT:AD:DP:GQ 0/1:6,3:9:38
## والے header کو سجاوٹ نہیں بلکہ ڈیٹا کا حصہ سمجھیں۔ یہی بتاتا ہے کہ coordinates کس reference build کے ہیں اور فائل لکھنے والے tool نے ہر فیلڈ کی تعریف کس طرح کی ہے۔
آٹھ مقررہ کالم
- CHROM اور POS: contig اور مقام۔ POS 1-based ہے، یعنی کروموسوم کا پہلا base مقام 1 پر ہے۔ (اس کے برعکس BED فائلیں 0-based ہوتی ہیں، جو off-by-one غلطیوں کا پرانا ذریعہ ہے۔) Coordinates کا مطلب صرف reference build کے ساتھ بنتا ہے، اس لیے GRCh38 کا
chr1اور GRCh37 کا1ایک دوسرے کی جگہ استعمال نہیں ہو سکتے۔ - ID: کوئی شناخت، جیسے dbSNP کا rs نمبر؛ اگر نہ ہو تو
.۔ - REF اور ALT: reference allele اور ایک یا زیادہ alternate alleles، جو commas سے الگ ہوتے ہیں۔ Insertions اور deletions میں دونوں alleles میں واقعے سے پہلے والا base بھی شامل ہوتا ہے، جسے padding base کہا جاتا ہے۔ دوسری مثال میں
CTT→Cکا مطلب ہے کہ مقام 1234890 والے C کے بعدTTکے دو bases حذف ہوئے ہیں۔ - QUAL: Phred-scaled اعتماد کہ ALT call غلط نہیں، یعنی وہی −10 log10 والا تصور جو FASTQ base quality میں ہے۔ یہ ہر caller کا اپنا ہوتا ہے اور مختلف tools کے درمیان قابلِ موازنہ نہیں۔
- FILTER: اگر site تمام filters پاس کر لے تو
PASS، ورنہ ناکام filters کی semicolon سے جُڑی فہرست (مثلاًLowQual)۔.کا مطلب ہے کہ filters لگائے ہی نہیں گئے، جو پاس ہونے کے برابر نہیں۔ - INFO: site کی سطح کی معلومات،
KEY=valueکی صورت میں اور semicolons سے الگ، جیسے کل depth یا call set میں allele frequency۔
Genotype کالم کیسے پڑھیں
FORMAT کالم ایک کلید ہے جو بتاتی ہے کہ ہر sample کالم کو کیسے تقسیم کرنا ہے۔ GT:AD:DP:GQ اور 0/1:30,28:58:99 کا مطلب ہے:
- GT = 0/1: REF allele (0) کی ایک کاپی اور پہلے ALT allele (1) کی ایک کاپی، یعنی heterozygous call۔
1/1homozygous ALT،0/0homozygous REF، اور1/2کا مطلب دو مختلف ALT alleles ہے۔ - AD = 30,28: 30 reads REF کی اور 28 ALT کی تائید کرتی ہیں، یعنی ALT کا تناسب تقریباً 0.48 ہے، جو germline heterozygote کے متوقع 0.5 کے قریب ہے۔
- DP = 58: اس sample میں اس مقام کو ڈھانپنے والی reads۔
- GQ = 99: خود genotype پر Phred-scaled اعتماد۔ بہت سے callers اسے 99 پر محدود کر دیتے ہیں۔
علامت اہم ہے: / کا مطلب unphased ہے (ہمیں معلوم نہیں کہ کون سا allele کس والدین کے کروموسوم پر ہے)، جبکہ | کا مطلب phased ہے۔ . گمشدہ allele کی علامت ہے، اس لیے ./. کا مطلب no-call ہے، reference call نہیں۔ Multi-sample VCF میں گمشدہ genotype اور پُراعتماد 0/0 بالکل مختلف باتیں ہیں۔
خاص alleles جو آپ کو ملیں گے
*(star allele): اس مقام پر allele اس لیے موجود نہیں کہ اوپر سے آنے والی ایک overlapping deletion نے اسے ختم کر دیا۔ یہ کوئی nucleotide نہیں۔- Symbolic alleles جیسے
<DEL>یا<DUP>ان structural variants کو ظاہر کرتے ہیں جن کی پوری sequence نہیں لکھی جاتی۔ <*>یا<NON_REF>: genome VCF (gVCF) فائلوں میں reference blocks کے اندر “کوئی بھی دوسرا allele” ظاہر کرنے کے لیے، تاکہ فائل یہ بھی درج کرے کہ sample کہاں پُراعتماد طور پر reference تھا۔
پانچ عام غلطیاں
- Reference builds کو ملا دینا۔ GRCh37 کا ایک مقام GRCh38 پر کسی اور base کی طرف اشارہ کرتا ہے۔ Merge یا annotate کرنے سے پہلے
##referenceاور##contigلائنیں دیکھیں۔ - Normalise کیے بغیر indels کا موازنہ۔ کسی repeat میں ایک ہی deletion کئی مختلف مقامات پر لکھی جا سکتی ہے۔ Call sets کا موازنہ یا databases سے ملان کرنے سے پہلے اسی reference FASTA کے مطابق left-align اور normalise کریں۔
- Multi-allelic site کو ایک ہی ویریئنٹ سمجھنا۔
ALT=G,Tوالی لائن میں دو alternate alleles ہیں۔ بہت سے annotation tools انہیں فی لائن ایک allele میں تقسیم کرنے کے بعد بہتر کام کرتے ہیں۔ - FILTER کو نظرانداز کرنا۔ ہر لائن کو ویریئنٹ گننے سے وہ calls بھی شامل ہو جاتی ہیں جنہیں خود pipeline نے مشکوک قرار دیا تھا۔
- QUAL کو allele frequency یا pathogenicity سمجھنا۔ QUAL صرف call پر اعتماد ہے؛ یہ نہیں بتاتا کہ ویریئنٹ کتنا عام ہے یا clinically اہم ہے یا نہیں۔
bcftools سے مختصر اور قابلِ تکرار جانچ
اگر bcftools اور htslib نصب ہوں (مثلاً WSL2 والے سیٹ اپ میں)، تو یہ commands ابتدائی جانچ کا بیشتر کام کر دیتی ہیں:
# Validate compression and index the file
bgzip -t sample.vcf.gz
bcftools index -t sample.vcf.gz
# Look at the header: version, reference, contigs and field definitions
bcftools view -h sample.vcf.gz | less -S
# Summary statistics: counts of SNVs, indels, Ts/Tv ratio
bcftools stats sample.vcf.gz > qc/sample.stats.txt
# Keep only PASS sites
bcftools view -f PASS -Oz -o sample.pass.vcf.gz sample.vcf.gz
# Split multi-allelic sites and left-align indels against the same reference
bcftools norm -m -any -f GRCh38.fa -Oz -o sample.norm.vcf.gz sample.pass.vcf.gz
# Export a readable table of selected fields
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%FILTER[\t%GT\t%AD\t%DP]\n' sample.norm.vcf.gz | head
Tools کے ورژن، reference FASTA اور اس کا checksum، اور ہر command نتائج کے ساتھ محفوظ رکھیں۔ bcftools stats سے ملنے والا Ts/Tv ratio انسانی germline SNVs کے لیے ایک مفید sanity اشارہ ہے، لیکن اس کی متوقع قدر اس پر منحصر ہے کہ آپ نے whole genome sequence کیا یا exome، اس لیے کسی ایک مقررہ عدد کے بجائے ملتے جلتے ڈیٹا سے موازنہ کریں۔
VCF کیا نہیں بتا سکتی
VCF دراصل aligned reads پر لگائے گئے ایک ماڈل کا نتیجہ ہے۔ اچھے QUAL والی PASS لائن ایک مضبوط call ہے، ثبوت نہیں۔ Low-complexity علاقے، segmental duplications، sample contamination اور reference کی غلطیاں سب پُراعتماد نظر آنے والی غلط calls پیدا کر سکتی ہیں۔ کسی ویریئنٹ کو clinical رپورٹ میں شامل کرنے سے پہلے لیبارٹریاں validated pipelines استعمال کرتی ہیں، read alignments کا معائنہ کرتی ہیں، بعض اوقات Sanger sequencing جیسے کسی دوسرے طریقے سے تصدیق کرتی ہیں، اور ACMG/AMP guidelines جیسے فریم ورک کے تحت تشریح کرتی ہیں۔ AlphaGenome جیسے tools کے computational scores اضافی شواہد دیتے ہیں، مگر اس عمل کا متبادل نہیں۔
عملی چیک لسٹ
- Header میں VCF ورژن، reference build اور contig names کی تصدیق کریں۔
- دیکھیں کہ فائل bgzip سے compressed اور indexed ہے۔
- اپنے caller کی لکھی ہوئی INFO، FORMAT اور FILTER تعریفیں پڑھیں۔
- واضح طور پر طے کریں کہ non-PASS sites اور no-calls کے ساتھ کیا کرنا ہے۔
- موازنہ یا annotation سے پہلے multi-allelic sites تقسیم کریں اور indels normalise کریں۔
- صرف GT نہیں، allele depth اور allele fraction بھی دیکھیں۔
- اصل VCF کو تبدیل نہ کریں اور ہر تبدیلی کو دستاویزی شکل دیں۔
تحقیقی و تعلیمی وضاحت: یہ مضمون ایک فائل فارمیٹ کی وضاحت ہے، طبی مشورہ نہیں۔ صرف VCF کی بنیاد پر تشخیص، علاج یا genetic counselling سے متعلق فیصلے نہ کریں۔
نمایاں تصویر: single nucleotide polymorphism، یعنی DNA کے دو مالیکیول جن میں صرف ایک base pair کا فرق ہے۔ “Dna-SNP.svg” از David Eccles (gringer)، Wikimedia Commons، CC BY 4.0؛ PNG میں تبدیل شدہ۔
حوالہ جات
- The Variant Call Format Specification, VCFv4.5 and BCFv2.2 (samtools/hts-specs)
- hts-specs: SAM/BAM/CRAM/VCF/BCF specifications
- Danecek P, et al. The variant call format and VCFtools. Bioinformatics. 2011;27(15):2156–2158. doi:10.1093/bioinformatics/btr330
- Danecek P, et al. Twelve years of SAMtools and BCFtools. GigaScience. 2021;10(2):giab008. doi:10.1093/gigascience/giab008
- Tan A, Abecasis GR, Kang HM. Unified representation of genetic variants. Bioinformatics. 2015;31(13):2202–2204. doi:10.1093/bioinformatics/btv112
- BCFtools manual
A molecular biologist and aspiring bioinformatician with a passion for genomics, rare diseases, and precision medicine. With an MPhil in Molecular Biology and experience in genetics and genomics, he has contributed to clinical research projects on rare genetic disorders. He’s passionate about making genomic data meaningful — and ultimately helpful — for patients and clinicians alike.



