curl -s ' http://bgtdemo.herokuapp.com/ '
curl -s ' http://bgtdemo.herokuapp.com/?a=(impact=="HIGH")&s=(population=="FIN")&f=(AC>0) '
curl -s ' http://bgtdemo.herokuapp.com/?t=CHROM,POS,END,REF,ALT,AC/AN&f=(AC>1)&r=20 '
بالنسبة للاستعلام الأخير، السطر الأخير هو "*"، مما يشير إلى أن النتيجة غير مكتملة. لاحظ أن تطبيق الويب هذا يستخدم الطبقة المجانية من Heroku. يقتصر على وحدة معالجة مركزية واحدة فقط ويتم وضعه في وضع السكون عندما يكون التطبيق خاملاً. هناك النفقات العامة للاستيقاظ. يفرض Heroku أيضًا على التطبيقات المجانية وضع السكون لمدة "6 ساعات خلال 24 ساعة". لا أعرف كيف يعمل هذا بالضبط.
# Installation
git clone https://github.com/lh3/bgt.git
cd bgt ; make
# Download demo BCF (1st 1Mbp of chr11 from 1000g), and convert to BGT
wget -O- http://bit.ly/BGTdemo | tar xf -
./bgt import 1kg11-1M.bgt 1kg11-1M.raw.bcf
gzip -dc 1kg11-1M.raw.samples.gz > 1kg11-1M.bgt.spl # sample meta data
# Get all sample genotypes
./bgt view -C 1kg11-1M.bgt | less -S
# Get genotypes of HG00171 and HG00173 in region 11:100,000-200,000
./bgt view -s,HG00171,HG00173 -f ' AC>0 ' -r 11:100000-200000 1kg11-1M.bgt
# Get alleles high-frequency in CEU but absent from YRI
./bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1/AN1>=0.1&&AC2==0 ' -G 1kg11-1M.bgt
# Select high-impact sites (var annotation provided with -d)
./bgt view -d anno11-1M.fmf.gz -a ' impact=="HIGH" ' -CG 1kg11-1M.bgt
# Compile the server; Go compiler required
make bgt-server
GOMAXPROCS=4 ./bgt-server -d anno11-1M.fmf.gz 1kg11-1M.bgt 2> server.log &
curl -s ' 0.0.0.0:8000 ' | less -S # help
curl -s ' 0.0.0.0:8000/?a=(impact=="HIGH")&s=(population=="FIN")&f=(AC>0) '
BGT هو تنسيق ملف مضغوط لتخزين الأنماط الجينية الكاملة للجينوم والاستعلام عنها بكفاءة من عشرات إلى مئات الآلاف من العينات. ويمكن اعتباره بديلاً للنمط الجيني BCFv2 فقط. BGT أكثر إحكاما في الحجم، وأكثر كفاءة في المعالجة، وأكثر مرونة في الاستعلام.
يأتي BGT مزودًا بأداة سطر أوامر وتطبيق ويب يعكس إلى حد كبير استخدامات سطر الأوامر. تدعم الأداة بناء جملة استعلام معبر وقوي. يعرض قسم "البدء" بعض الأمثلة.
تقوم BGT بنمذجة مجموعة بيانات النمط الوراثي كمصفوفة من الأنماط الجينية مع صفوف مفهرسة حسب الموقع والأعمدة حسب العينة. تحتفظ كل قاعدة بيانات BGT بمصفوفة النوع الجيني ونموذج ملف التعليقات التوضيحية. يتم الاحتفاظ بالتعليقات التوضيحية للموقع في ملف منفصل مخصص لمشاركته عبر قواعد بيانات BGT المتعددة. يختلف هذا النموذج عن VCF في أن VCF 1) يحتفظ بمعلومات العينة في الرأس و2) يخزن التعليقات التوضيحية للموقع في INFO جنبًا إلى جنب مع الأنماط الجينية التي لا يُقصد مشاركتها عبر VCFs.
تحتوي قاعدة بيانات BGT دائمًا على مصفوفة النمط الجيني وأسماء العينات، والتي يتم الحصول عليها من VCF/BCF. تعتبر التعليقات التوضيحية للموقع والنماذج الظاهرية اختيارية ولكن يوصى بها. يعد الاستعلام المرن عن بيانات التعريف سمة مميزة لـ BGT.
# Import BCFv2
bgt import prefix.bgt in.bcf
# Import VCF with "##contig" header lines
bgt import -S prefix.bgt in.vcf.gz
# Import VCF without "##contig" header lines
bgt import -St ref.fa.fai prefix.bgt in.vcf.gz
أثناء الاستيراد، يقوم BGT بفصل الأليلات المتعددة على سطر VCF واحد. فهو يتجاهل كافة حقول INFO وحقول FORMAT باستثناء GT. راجع القسم 2.3 حول كيفية استخدام التعليقات التوضيحية المتغيرة مع BGT.
بعد استيراد VCF/BCF، يقوم BGT بإنشاء ملف نصي prefix.bgt.spl
، والذي يحتوي حاليًا على عمود واحد فقط من أسماء النماذج. يمكنك إضافة بيانات النمط الظاهري إلى هذا الملف بتنسيق مثل (الحقول المحددة بـ TAB):
sample1 gender:Z:M height:f:1.73 region:Z:WestEurasia foo:i:10
sample2 gender:Z:F height:f:1.64 region:Z:WestEurasia bar:i:20
حيث يأخذ كل تعليق توضيحي key:type:value
مع type
Z
لسلسلة، f
لرقم حقيقي، و i
لعدد صحيح. نحن نسمي هذا التنسيق تنسيق البيانات الوصفية المسطحة أو FMF باختصار. يمكنك الحصول على عينات مطابقة لشروط معينة مع:
bgt fmf prefix.bgt.spl ' height>1.7&®ion=="WestEurasia" '
bgt fmf prefix.bgt.spl ' mass/height**2>25&®ion=="WestEurasia" '
يمكنك استخدام العوامل الحسابية والمنطقية الأكثر شيوعًا في الشرط.
يتم أيضًا الاحتفاظ بالتعليقات التوضيحية للموقع في ملف FMF مثل:
11:209621:1:T effect:Z:missense_variant gene:Z:RIC8A CCDS:Z:CCDS7690.1 CDSpos:i:347
11:209706:1:T effect:Z:synonymous_variant gene:Z:RIC8A CCDS:Z:CCDS7690.1 CDSpos:i:432
نحن نقدم برنامج نصي misc/vep2fmf.pl
لتحويل مخرجات VEP باستخدام خيار --pick
إلى FMF.
لاحظ أنه نظرًا لوجود قيود على التنفيذ، نوصي باستخدام مجموعة فرعية من المتغيرات "المهمة" مع BGT، على سبيل المثال:
gzip -dc vep-all.fmf.gz | grep -v " effect:Z:MODIFIER " | gzip > vep-important.fmf.gz
يعد استخدام المجموعة الكاملة من المتغيرات أمرًا جيدًا، ولكنه أبطأ بكثير مع التنفيذ الحالي.
يتكون استعلام BGT من المخرجات والشروط. الإخراج هو VCF افتراضيًا أو يمكن أن يكون جدولًا محددًا بعلامات التبويب (TAB) إذا طلب ذلك. تتضمن الشروط اختيار موقع مستقل عن النمط الجيني مع الخيار -r
و -a
(على سبيل المثال المتغيرات في المنطقة)، واختيار عينة مستقلة عن النمط الجيني مع الخيار -s
(على سبيل المثال، قائمة العينات)، واختيار الموقع المعتمد على النمط الجيني مع الخيار -f
( على سبيل المثال، تردد الأليل بين العينات المختارة أعلى من العتبة). يتمتع BGT بدعم محدود لاختيار العينات المعتمدة على النمط الجيني (على سبيل المثال، العينات التي تحتوي على أليل).
لدى BGT مفهوم مهم وهو "مجموعة العينة". في سطر الأوامر، يقوم كل خيار -s
بإنشاء مجموعة عينة. يقوم الخيار #-th -s
بملء زوج من المتغيرات التجميعية AC#
و AN#
. يمكن استخدام هذه المتغيرات في الإخراج أو اختيار الموقع المعتمد على النمط الجيني.
# Select by a region
bgt view -r 11:100,000-200,000 1kg11-1M.bgt > out.vcf
# Select by regions in a BED (BGT will read through the entire BGT)
bgt view -B regions.bed 1kg11-1M.bgt > out.vcf
# Select a list of alleles (if on same chr, use random access)
bgt view -a,11:151344:1:G,11:110992:AACTT:A,11:160513::G 1kg11-1M.bgt
# Select by annotations (-d specifies the site annotation database)
bgt view -d anno11-1M.fmf.gz -a ' impact=="HIGH" ' -CG 1kg11-1M.bgt
تجدر الإشارة إلى أنه في سطر الأوامر الأخير، سيقرأ BGT ملف التعليقات التوضيحية بالكامل للعثور على قائمة الأليلات المطابقة. قد يستغرق الأمر عدة دقائق إذا كانت ملفات التعليقات التوضيحية للموقع تحتوي على 100 مليون سطر. ولهذا السبب نوصي باستخدام مجموعة فرعية من الأليلات المهمة (القسم 2.3).
# Select a list of samples
bgt view -s,HG00171,HG00173 1kg11-1M.bgt
# Select by phenotypes (see also section 2.2)
bgt view -s ' population=="CEU" ' 1kg11-1M.bgt
# Create sample groups (there will be AC1/AN1 and AC2/AN2 in VCF INFO)
bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -G 1kg11-1M.bgt
# Select by allele frequency
bgt view -f ' AN>0&&AC/AN>.05 ' 1kg11-1M.bgt
# Select by group frequnecy
bgt view -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1>10&&AC2==0 ' -G 1kg11-1M.bgt
بالطبع، يمكننا مزج جميع أنواع الشروط الثلاثة في سطر أوامر واحد:
bgt view -G -s ' population=="CEU" ' -s ' population=="YRI" ' -f ' AC1/AN1>.1&&AC2==0 '
-r 11:100,000-500,000 -d anno11-1M.fmf.gz -a ' CDSpos>0 ' 1kg11-1M.bgt
# Output position, sequence and allele counts
bgt view -t CHROM,POS,REF,ALT,AC1,AC2 -s ' population=="CEU" ' -s ' population=="YRI" ' 1kg11-1M.bgt
# Get samples having a set of alleles (option -S)
bgt view -S -a,11:151344:1:G,11:110992:AACTT:A,11:160513::G -s ' population=="CEU" ' 1kg11-1M.bgt
# Count haplotypes
bgt view -Hd anno11-1M.fmf.gz -a ' gene=="SIRT3" ' -f ' AC/AN>.01 ' 1kg11-1M.bgt
# Count haplotypes in multiple populations
bgt view -Hd anno11-1M.fmf.gz -a ' gene=="SIRT3" ' -f ' AC/AN>.01 '
-s ' region=="Africa" ' -s ' region=="EastAsia" ' 1kg11-1M.bgt
بالإضافة إلى أداة سطر الأوامر، نقدم أيضًا نموذجًا أوليًا لتطبيق الويب للاستعلام عن النمط الجيني. يشبه بناء جملة الاستعلام bgt view
كما هو موضح في "البدء"، ولكن مع بعض الاختلافات الملحوظة:
.and.
للمشغل المنطقي AND &&
(حيث أن &
هو حرف خاص لـ HTML).g
مطلوب للخادم). يطبق خادم BGT آلية بسيطة للحفاظ على خصوصية العينات أو مجموعة فرعية من العينات. يتم التحكم فيه بواسطة معلمة واحدة: الحد الأدنى لحجم مجموعة العينة أو MGS. يرفض الخادم إنشاء مجموعة عينة إذا كان حجم المجموعة أصغر من MGS لإحدى العينات الموجودة في المجموعة. على وجه الخصوص، إذا كانت MGS أعلى من واحد، فلن يقوم الخادم بالإبلاغ عن اسم العينة أو الأنماط الجينية للعينات. قد تحتوي كل عينة على MGS مختلف كما هو محدد بعلامة العدد الصحيح _mgs
في prefix.bgt.spl
. بالنسبة للعينات التي لا تحتوي على هذه العلامة، يتم تطبيق MGS افتراضي.
BGT vs PBWT. يستخدم BGT نفس بنية البيانات مثل PBWT وهو مستوحى من PBWT. يدعم PBWT الاستعلام المتقدم مثل مطابقة النمط الفرداني، والمراحل، والاحتساب، بينما يركز BGT بشكل أكبر على الوصول العشوائي السريع واسترجاع البيانات.
BGT مقابل BCF2. يعتبر BCF أكثر تنوعًا. إنه قادر على الاحتفاظ بالمعلومات الوصفية لكل نمط جيني (على سبيل المثال، عمق القراءة لكل نمط وراثي واحتمالية النمط الجيني). BGT بشكل عام أكثر كفاءة وأصغر مرات. إنه يتناسب بشكل أفضل مع العديد من العينات. يدعم BGT أيضًا استعلامات أكثر مرونة، على الرغم من أنه من الناحية الفنية، لا شيء يمنعنا من تنفيذ وظائف مماثلة فوق BCF.
BGT vs GQT. يجب أن يكون GQT أسرع بكثير في عبور المواقع عبر الكروموسومات بأكملها دون النظر إلى LD. ومع ذلك، فمن غير الفعال استرداد البيانات في المناطق الصغيرة أو الحصول على معلومات النمط الفرداني بسبب تصميمها. لهذا السبب، يعتبر GQT مكملاً لـ BCF أو BGT، وليس بديلاً. في حجم الملف، يكون GQT عادةً أكبر من BCF للنمط الوراثي فقط، وبالتالي فهو أكبر من BGT.
يتم إجراء الاختبار على الإصدار الأول من بيانات Haplotype Reference Consortium (HRC). يوجد حوالي 39 مليون تعدد الأشكال على مراحل في 32488 عينة. لقد أنشأنا BGT لمجموعة البيانات بأكملها، ولكننا نقوم فقط بتشغيل الأدوات في المنطقة chr11:10,000,001-20,000,000. ويبين الجدول التالي الوقت وسطر الأوامر. لاحظ أن الجدول يحذف الخيار -r 11:10,000,001-20,000,000
والذي تم تطبيقه على جميع أسطر الأوامر أدناه.
وقت | سطر الأوامر |
---|---|
11 ثانية | عرض bgt -G HRC-r1.bgt |
13 ثانية | عرض bcftools -Gu HRC-r1.bcf |
30 ثانية | عرض bgt-GC HRC-r1.bgt |
4s | عرض bgt -GC -s'source=="1000G"' |
19 ثانية | عرض bcftools -Gu -S 1000G.txt HRC-r1.bcf |
8 ثانية | عرض bgt -G -s 'source=="UK10K"' -s 'source=="1000G"&&population!="GBK"' |
بالنسبة لأحجام الملفات، تبلغ قاعدة بيانات BGT لـ HRC-r1 7.4 جيجابايت (1 جيجابايت = 1024*1024*1024 بايت). بالمقارنة، يأخذ BCFv2 لنفس البيانات 65 جيجابايت، وGQT 93 جيجابايت، وPBWT 4.4 جيجابايت. BGT وPBWT، اللذان يعتمدان على نفس بنية البيانات، أكثر إحكاما بكثير. BGT أكبر من PBWT في المقام الأول لأن BGT يحتفظ ببت إضافي لكل نمط فرداني للتمييز بين المرجع والأليلات المتعددة، ويخزن العلامات لتمكين الوصول العشوائي السريع.