摘自文献: Benner, C. et al. Prospects of fine-papping trait-associated genomic regions by using summary statistics from genome-wide association studies. Am. J. Hum. Genet. (2017).
LDstore是一个用于估计和存储连锁不平衡(SNP相关性)高效计算的程序。通过使用OPENMP实现并行处理,结合了RAREMETALWORKER和PLINK的一些最佳特性,并将SNP相关性与SNP的相关信息存储在同一个二进制文件中,以便快速查找。因此,LDstore是在全基因组关联研究的大规模meta分析中共享SNP相关性的理想工具,也是在web portals中进行实时计算查询的理想工具。
LDstore是一个程序,可用于
压缩测序数据
将基因型概率转换为dosage data
计算SNP相关性
命令行参数说明
--bcor-file,用于指定 BCOR 文件的选项,与 --bcor-to-text使用。
--bcor-to-text,将 BCOR 文件转换为文本文件,子程序。
--bdose-version,设置 BDOSE 文件版本的选项 ,与 --write-bdose使用
--compression ,将 BDOSE/BCOR 文件压缩, 与 --write-bcor 和 --write-bdose使用。
--dataset ,用于指定master文件中给定的以分隔符分隔的数据集列表的选项(例如 1,2 或 1|2) 默认处理所有数据集。
--in-files,master文件,与 --bcor-to-text、--write-bcor、--write-bdose 和 --write-text使用。
--ld-file,用于指定 LD 文件的选项,与--bcor-to-text使用。
--memory,用于限制计算 SNP 相关性时可使用的内存量,默认为 1Gb 当使用 --read-bdose或 --write-bdose时与 --write-bcor 或 --write-text使用 。
--n-threads,用于设置并行线程数, 默认为 1,与--write-bcor、--write-bdose 或 --write-text使用
--range,在将 BCOR 文件转换为 LD 文件时,指定基因组xx-yy范围。其中 xx 和 yy 是碱基对中的开始和结束坐标,与--bcor-to-text使用。
--read-bdose,从 BDOSE 文件中读取dosage data,与--write-bcor 或 --write-text使用。
--read-only-bgen 从 BGEN 文件中读取基因型概率并将剂量数据存储在内存中 结合 --write-bcor 或 --write-text。
--rsids ,指定与Z文件中相应的rsid列的逗号分割的SNP标识符列,结合--bcor-to-text 或 --write-text。
--sample-miss 用于在 0 和 1 之间设置缺失数据阈值的选项。如果 SNP 的缺失数据率高于指定阈值,则包含该 SNP 的任何 SNP 对的相关性设置为 NA。如果 SNP 的缺失数据率低于指定阈值,则缺失数据为均值估算。默认值为 0.1。 结合--write-bcor 或 --write-text。
--write-bcor ,将SNP 相关性写入 BCOR 文件,子程序。
--write-bdose ,将剂量数据写入 BDOSE 文件,子程序,结合--write-bcor或--write-text。
--write-text,将 SNP 相关性写入文本文件,子程序。
输入文件
master文件
master文件是以分号分隔的文本文件,不包含空格。它包含以下必需列名和每行一个数据集。
z 列包含 Z 文件的名称(输入)
bgen 列包含 BGEN 文件的名称(输入)
bgi 列包含BGI文件的名称(输入)
bcor 列包含使用 --write-bcor(输出)时 BCOR 文件的名称
ld 列包含使用 --bcor 到文本(输出)时 LD 文件的名称
n_samples列包含在任何处理中的样本数
bdose 列包含使用 --write-bdose 时可选 BDOSE 文件的名称(可选输出)
sample 列包含使用 --write-bdose 和 --bdose-version 1.1(可选输入)时可选示例文件的名称
incl 列包含可选样本包含文件的名称(可选输入)
文件扩展名必须与标题行中的列名对应
master文件可以同时包含列ld和bcor。当在任何处理中包含的样本少于BGEN文件中可用的样本时,需要列sample和incll。当使用--bcor-file-to-text从BCOR文件中提取SNP相关性时,通过直接指定--bcor-file和--ld-file,master文件可以忽略。
带有两个数据集的master文件,用于将SNP相关性写入bcor或文本文件,如下所示:
z;bgen;bgi;bcor;ld;n_samples
dataset1.z;dataset1.bgen;dataset1.bgen.bgi;dataset1.bcor;;5363
dataset2.z;dataset2.bgen;dataset2.bgen.bgi;;dataset2.ld;5363
Z文件
dataset.z 文件是一个空格分隔的文本文件,包含有关 SNP 的meta information,每行一个 SNP。它按以下顺序包含必需的列名。
rsid 列包含 SNP 标识符。标识符可以是 rsID 编号或染色体名称和基因组位置的组合(例如 XXX:yyy)。
chromosome列包含染色体名称。
position列包含碱基对位置。
allele1列包含SNP的“第一个”等位基因。
allele2列包含SNP的“第二个”等位基因。
可以在allele2列之后插入其他列,以便可以使用FINEMAP中的Z文件。
每个 SNP 的 rsid、染色体、位置、allele1 和allele 2 需要与 BGEN 文件中的信息相对应。染色体列可能必须包含 X = 1,...,9 的“0X”,其中 X 是染色体数。
SNP不必按基因组位置排序,可以驻留在不同的染色体上。
具有三个 SNP 的 dataset.z 文件可能如下所示:
rsid chromosome position allele1 allele2
rs1 10 1 T C
rs2 10 1 A G
rs3 10 1 G A
BGEN文件
A compressed binary format for typed and imputed genotype data.
现代遗传关联研究通常使用数万至数十万个个体的数据,基因分型或imputed全基因组数千万个markers。基于这些数据的文本表示的传统数据格式(例如由IMPUTE输出的GEN格式或VCF格式)有时不太适合这些数据量。实际上,对于简单的程序,解析这些格式会花费大量时间。
BGEN是一种强大的格式,是用于大型的,可能被imputed的遗传数据集。主要功能包括:
存储直接typed和imputed的数据。
能够存储unphased genotypes and phased haplotype data。
通过使用高效、可变精度的打包位表示和压缩变成小文件。
使用每个variant压缩使格式易于index和catalogue。
有关BGEN文件详细说明可看这里。
BGI
bgi格式文件由BGEN生成
To use bgenix with your bgen file (say myfile.bgen) you use the following process.
first, use bgenix -index -g myfile.bgen to create an index file. The index file will be named myfile.bgen.bgi
then, use bgenix -g myfile.bgen with additional options below to extract ranges of variants.
SAMPLE
sample文件可以用qctool v2来处理,可在这里下载。
sample文件以空格为分隔的文件格式,具有两行标题行,后面再接数据行,具体参考这里。包含内容如下所示:
标题行
包含每列的列名,列名可以是任意可打印字符,不包括空格。
列类型行
此行列出了每列的“类型”,qctool使用它以适当的方式处理数据。每列必须有一种类型。允许的列类型包括:
0(对于第一个标识符列)
D(对于包含离散值的列,例如一组字符串)
P 或 C - 对于包含连续值的列,每个值必须是数值或缺失值。
B 表示包含二元特征的列。此列中的值必须为“0”、“1”、“control”或“case”。
除了第一列之外,qctool还可选地允许有一个名为“ID_2”的列和/或一个名为“missing”的列,其类型为“0”。在内部,这些列被视为类型为“D”的列。
数据行
每个样本的数据。基因型文件中每个样本应该有一行,并且这些数据行的出现顺序必须与它们在基因型文件中出现的顺序相同。
默认情况下,“NA”用于示例文件中的缺失值。任何列中与“NA”相等(作为字符串文本)的任何值都将被视为缺失。(选项 -missing-code 可用于更改被视为缺失值的内容。
示例文件中的第一列必须始终为“0”类型,并且始终被视为示例标识符。我们强烈建议选择使用的标识符在项目中是唯一的。
相对于SNPTEST中使用的传统格式,qctool允许进行一些修改:
唯一的必列为第一列,其类型必须为“0”,并包含示例标识符。
样本文件的实例如下:
ID sex case covariate
0 D B C
sample1 M control 0.1
sample2 F control 0.2
sample3 F control -0.15
sample4 F case -0.01
sample4 NA NA 0.025
INCL文件
dataset.incll文件是一个文本文件,是可选的输入文件。用于指定在任何处理中包含的样本。每行包含一个sample ID。LDstore希望有二倍体基因型概率数据。将X染色体数据从PLINK文件转换为BGEN文件时,需要将雄性样本重新编码为雌性样本后,才能强制PLINK输出二倍体数据。
输出文件
可以直接输出ld文件
输出的文件可以是BCORV1.1文件,后面有需要的话再转换为ld文件。
可以将BGEN文件转换为两种类型的dosage data类型。BDOSE v1.0和BDOSE v1.1.
(1) BCOR v1.1 file
BCOR v1.1文件是二进制文件,用于存储SNP相关性以及在同一文件中关于SNP的信息,以便快速查找。BCOR v1.1文件可与FINEMAP v1.4一起使用,还包括比精细定位更多snp的相关性。这里描述了bor v1.1文件格式。
(2) BDOSE v1.0 file
BDOSE v1.0文件是二进制文件,用于在内存有限的情况下加速基因组区域SNP相关性的一次性计算。LDstore将基因型概率从BGEN文件转换为dosage data,并以浮点格式将该数据写入BDOSE v1.0文件(可能是并行的)。I/O加速是通过BDOSE v1.0文件的内存映射实现的,内存限制是通过按block方式计算SNP相关性来满足的。这里描述了BDOSE v1.0文件格式。
(3) BDOSE v1.1 file
BDOSE v1.1文件为二进制文件,用于压缩测序数据和存储全染色体剂量数据(dosage data)。LDstore 1)基因型的概率从BGEN文件转换为剂量数据,2)剂量数据从浮点格式转换为整数格式,以整数格式3)压缩剂量数据根据Zstandard压缩算法,和4)写压缩剂量数据BDOSE v1.1文件并行(可能)。内存限制通过以block为单位的方式计算SNP相关性来满足。这里描述了BDOSE v1.1文件格式。
(4) LD file
LD文件是空格分隔的文本文件,包含SNP相关矩阵。包含三个snp的LD文件可以如下所示。
1.00 0.95 0.98
0.95 1.00 0.96
0.97 0.96 1.00
参考示例
转变BGEN 为 BDOSE v1.1 文件
BGEN格式的55个snp和5363个个体的基因型数据可以转换为BDOSE v1.1格式的剂量数据,如下所示。
./ldstore_v2.0_x86_64 --in-files example/data --write-bdose --bdose-version 1.1
可以使用以下方法压缩BDOSE v1.1文件中的剂量数据
./ldstore_v2.0_x86_64 --in-files example/data --write-bdose --bdose-version 1.1 --compression low
计算SNPs相关性
上面示例中相同数据的SNP相关性可以计算并写入BCOR v1.1文件。以下有几个选项:1)将中间剂量数据存储在内存中;2)首先将剂量数据写入BDOSE文件(可以写入两个版本的BDOSE文件);3)从现有的BDOSE文件中读取。
# 将dosage data存入在内存中
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --read-only-bgen
# 可以将dosage data写入两个不同版本的bdose文件中
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --write-bdose --bdose-version 1.0
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --write-bdose --bdose-version 1.1
# 从现有bdose文件中读取
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --read-bdose
可以通过指定以逗号分隔的SNP标识符列表或在——rsid之后每行一个SNP标识符的文本文件来计算SNP子集的SNP相关性并将其写入LD文件。处理剂量数据的方法与上面的示例相同。
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --read-only-bgen --rsids rs30,rs11
./ldstore_v2.0_x86_64 --in-files example/data --write-bcor --read-only-bgen --rsids rsids.txt
BCOR v1.1 文件转换为 LD 文件
BCOR v1.1文件中的SNP相关性可以按照如下方法提取并写入LD文件
# 1. 计算ld时直接将bcor写成文本文件
./ldstore_v2.0_x86_64 --in-files example/data --bcor-to-text
# 2. 使用--bcor-to-text,将原本生成的BCOR文件转换成ld文件。这一步可以省略master文件
./ldstore_v2.0_x86_64 --bcor-to-text --bcor-file example/data.bcor --ld-file example/data.ld
# 还没有BCOR文件时,生成对应ld文件的方法:需要有master文件
# 示例1:挑选几个SNPs来计算相关性,直接生成ld文件
./ldstore_v2.0_x86_64 --in-files example/data --bcor-to-text --rsids rs30,rs11
# 示例2:提供一个包含SNP标识符的文本文件,直接生成ld文件
./ldstore_v2.0_x86_64 --in-files example/data --bcor-to-text --rsids rsids.txt
# 示例3:选定范围生成ld文件
./ldstore_v2.0_x86_64 --in-files example/data --bcor-to-text --range 5-10
# 已有BCOR文件,可直接将BCOR文件转换成ld文件
# 示例1:rsids指定SNP标识符
./ldstore_v2.0_x86_64 --bcor-to-text --bcor-file example/data.bcor --ld-file example/data.ld --rsids rs30,rs11
# 示例2:rsids后接一个存储了SNP标识符的文本文件
./ldstore_v2.0_x86_64 --bcor-to-text --bcor-file example/data.bcor --ld-file example/data.ld --rsids rsids.txt
# 示例3:range指定生成范围
./ldstore_v2.0_x86_64 --bcor-to-text --bcor-file example/data.bcor --ld-file example/data.ld --range 5-10