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 จำกัดไว้เพียง CPU ตัวเดียวเท่านั้น และเข้าสู่โหมดสลีปเมื่อแอปไม่ได้ใช้งาน มีค่าใช้จ่ายในการตื่นตัว 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 พร้อมกับจีโนไทป์ที่ไม่ได้ตั้งใจจะแชร์ระหว่าง VCF
ฐานข้อมูล 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
สำหรับจำนวนเต็ม เราเรียกรูปแบบนี้ว่า Flat Metadata Format หรือ 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 เริ่มต้น
บีจีที กับ PBWT BGT ใช้โครงสร้างข้อมูลเดียวกันกับ PBWT และได้รับแรงบันดาลใจจาก PBWT PBWT รองรับการสืบค้นขั้นสูง เช่น การจับคู่ haplotype การวางขั้นตอน และการใส่ข้อมูล ในขณะที่ BGT ให้ความสำคัญกับการเข้าถึงแบบสุ่มและการเรียกข้อมูลที่รวดเร็วยิ่งขึ้น
บีจีที vs BCF2 BCF มีความหลากหลายมากกว่า สามารถเก็บข้อมูลเมตาต่อจีโนไทป์ได้ (เช่น ความลึกในการอ่านต่อจีโนไทป์ และความน่าจะเป็นของจีโนไทป์) โดยทั่วไป BGT จะมีประสิทธิภาพมากกว่าและน้อยกว่าเท่าตัว มันปรับขนาดได้ดีกว่าตัวอย่างจำนวนมาก BGT ยังรองรับการสืบค้นที่ยืดหยุ่นมากขึ้น แม้ว่าในทางเทคนิคแล้ว ไม่มีอะไรขัดขวางเราไม่ให้ใช้ฟังก์ชันที่คล้ายกันนอกเหนือจาก BCF
บีจีที กับ GQT GQT ควรเร็วกว่ามากในการเคลื่อนที่ข้ามไซต์ข้ามโครโมโซมทั้งหมดโดยไม่คำนึงถึง LD อย่างไรก็ตาม การดึงข้อมูลในพื้นที่เล็กๆ หรือรับข้อมูล haplotype เนื่องจากการออกแบบนั้นไม่มีประสิทธิภาพ ด้วยเหตุนี้ GQT จึงถือเป็นส่วนเสริมของ BCF หรือ BGT ไม่ใช่สิ่งทดแทน สำหรับขนาดไฟล์ GQT มักจะใหญ่กว่า BCF เฉพาะจีโนไทป์ และดังนั้นจึงใหญ่กว่า BGT
การทดสอบดำเนินการกับข้อมูล Haplotype Reference Consortium (HRC) รุ่นแรก มี SNP แบบค่อยเป็นค่อยไปประมาณ 39 ล้านตัวอย่างใน 32,488 ตัวอย่าง เราได้สร้าง 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 |
30s | มุมมอง bgt -GC HRC-r1.bgt |
4ส | มุมมอง 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.4GB (1GB=1024*1024*1024 ไบต์) ในการเปรียบเทียบ BCFv2 สำหรับข้อมูลเดียวกันจะใช้เวลา 65GB, GQT 93GB และ PBWT 4.4GB BGT และ PBWT ซึ่งใช้โครงสร้างข้อมูลเดียวกันจะมีขนาดกะทัดรัดกว่ามาก BGT มีขนาดใหญ่กว่า PBWT โดยหลักแล้ว เนื่องจาก BGT เก็บบิตเพิ่มเติมต่อ haplotype เพื่อแยกแยะการอ้างอิงและอัลลีลหลายตัว และจัดเก็บเครื่องหมายเพื่อให้สามารถเข้าถึงการเข้าถึงแบบสุ่มได้อย่างรวดเร็ว