[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)

引言

在下文中,我们将重点讨论PrediXcan的个人级实现。
该方法最初是在这个存储库中实现的。但是,维护和新特性很难实现,因此我们重新实现了该方法,以便与最新的MetaXcan特性集成。

PrediXcan包括两个步骤:

  • 在具有可用基因型的队列中预测基因表达(或模型预测的任何生物学)
  • 运行与队列中测量的特征的关联

第一步在Predict.py中实现。第二步在PrediXcanAssociation.py中实现。这两个步骤都封装在PrediXcan.py中,尽管我发现一次运行每个步骤更方便。一步一步来运行更容易让我们去排查故障。
预测模型在特定的数据集上进行训练和预编译,这些数据集具有自己的人类基因组发布和变体定义。我们实现了一些规则来支持基于不同变异定义的基因型的变异匹配。在下文中,mapping(映射)是指将模型variant(变异)分配给基因型变异的过程。
最初,PrediXcan应用于基因,所以我们经常说“基因表达”,因为这是我们最初研究的机制。但从概念上讲,这里所说的一切都适用于任何中间/分子机制,如剪接或大脑形态。每当我们说到“基因”时,它通常可以指剪接内含子等事件。
你可以在下面找到命令行参数的规范。我们还展示了一些运行predixcan的示例。

Features(特征)

  • 处理多种输入基因型格式(vcf, bgen,text format)
  • 对于bgen,只加载模型可用的那些变异,从而节省了大量时间
  • 输出可以存储在HDF5中,以便进行粒度和高效的访问。
  • 支持基于不同版本的人类基因组建立的预测模型
    • 如果你的基因型在hg19中,并且使用hg38上定义的最新模型之一,那么基因型变异可以在后台从hg19提升到hg38。
  • 如果使用非标准变异,你可以提供从基因型变异到PrediXcan模型的表映射。
  • 它一次加载一个变异,因此内存消耗由预测的表达矩阵限定(大致是genotype sample size(基因型样本量)number of genes(基因数量)float size(浮动大小))。当使用HDF5存储时,这个矩阵存储在磁盘中,因此内存可以忽略不计。

Command line overview(命令行概述)

In the following, mapping refers to implemented rules to match genotype variants to model variants.(下面,映射是指将基因型变异与模型变异相匹配的实现规则。)

Predict.py:

  • --model_db_path:path to a sqlite(一个轻量级别数据库) file containing prediction models包含预测模型的sqlite文件的路径.
  • --model_db_snp_key:optional. If provided, will load variant ids from an alternative column in the db. By default, PrediXcan uses rsids, and this works with Elastic Net models. For the more sophisticated MASHR models, --model_db_snp_key varID must be specified with this argument.可选的。如果提供,将从数据库中的替代列加载变量id。默认情况下,PrediXcan使用rsid,这适用于Elastic Net模型(弹性网:一种用于线性回归模型的正则化方法,结合了L1和L2正则化,旨在减少模型的复杂性和防止过拟合)。对于更复杂的MASHR模型,必须用这个参数指定——model_db_snp_key varID。
  • --liftover:Optional. Path to liftover chain. If provided, genomic coordinates will be mapped with liftover.可选的。通往升降链的路径。如果提供,基因组坐标将被绘制为liftover。
  • --zero_based_positions:Optional flag. Lets PrediXcan note that genomic coordinates start at 0 (genome browser starts at 1).可选的标记。让predix可以注意到基因组坐标从0开始(基因组浏览器从1开始)。
  • --skip_palindromic:Optional flag. Palindromic/ambiguous snv (such as C/G or A/T) from the genotype will be ignored.可选的标记。来自基因型的回文/模糊snv(如C/G或A/T)将被忽略。
  • --bgen_genotypes: pattern of files with genotypes in bgen format (e.g. data/ukb/chr*.bgen)bgen格式基因型文件的模式
    • --bgen_use_rsid:Load rsid as variant id, otherwise load id. Rsids are convenient for some models where each variant is guaranteed to have an rsid. Not so much for other models.加载rsid作为变量id,否则加载id。对于保证每个变量都有一个rsid的某些模型来说,rsid很方便。但其他型号就不一样了。
    • --force_colon:Some files have mixed separators in variant ids such as chr1:100_A_T. This converts on-the-fly to chr1:100:A:T.有些文件在诸如chr1:100_A_T之类的变异id中有混合分隔符。这可以将其转换成1A:T。
  • --vcf_genotypes: pattern of vcf genotype files.VCF基因型文件的模式
  • --vcf_mode
    • genotyped is meant for phased, genotyped vcfs that contain counts of each allele at each chromosome pair.用于阶段性,基因型VCFS,包含每对染色体上每个等位基因的计数。
    • imputed will load DS field as dosage. This is meant to work with imputed vcfs as generated by the Michigan Imputation Server.imputed将加载DS字段作为剂量。这意味着使用由Michigan Imputation Server生成的imputed(估算) vfs。
  • --force_mapped_metadata:Optional. Mapping variants is inherently heuristic; uses the mapped variants definitions (coordinates and alleles) instead of the genotyped properites. i.e. a genotype variant might be chr1 100 C T and end up mapped to chr1_100_T_C_b38; this option tells PrediXcan to use T C instead of C T, and swaps allele dosages and frequencies appropriately, before matching to the model. This option is mostly meant for development purposes, as the PrediXcan method will match alleles of genotype and model variants anyway.可选的。映射变异本质上是启发式的;使用映射的变异定义(坐标和等位基因)而不是基因型属性。即基因型变异可能是chr1100ct,最终映射到chr1_100_T_C_b38;这个选项告诉PrediXcan使用tc而不是ct,并在与模型匹配之前适当地交换等位基因剂量和频率。这个选项主要用于开发目的,因为PrediXcan方法无论如何都会匹配基因型和模型变体的等位基因。
  • --text_genotypes:use the text format as specified below 使用下面指定的文本格式
  • --text_sample_ids:a file specifying samples. If specified alongside bgen or vcf, will use the file’s IDs instead of the ones in the vcf or bgen.指定示例的文件。如果在bgen或vcf旁边指定,将使用文件的id而不是vcf或bgen中的id。
  • --generate_sample_ids:Optional. Provide a number here to generate ids programmatically based on sample size.可选的。在这里提供一个数字,以便根据样本大小以编程方式生成id。
  • --prediction_output: specify output (and output type) of predicted expression matrix (e.g. --prediction_output results/vcf_1000G_hg37_en_c/Whole_Blood__predict.h5 HDF5)指定预测表达式矩阵的输出(和输出类型)(比如 --prediction_output results/vcf_1000G_hg37_en_c/Whole_Blood__predict.h5 HDF5)
  • --prediction_summary_output:Optional. A separate file that will contain some additional information on the predictions (such as number of snps in the gene’s models, number of snps used, etc).可选的。一个单独的文件,将包含一些关于预测的额外信息(如基因模型中的snps数量,使用的snps数量等)。
  • --variant_mapping:Optional. Specify a way to map from genotype variant to model variants. This argument takes three values:可选的。指定一种从基因型变异映射到模型变异的方法。这个参数有三个值:
    • A file with a table that states how to convert from genotype variants to model variants带有表格的文件,说明如何从基因型变体转换为模型变体
    • name of column with genotype variant ids具有基因型变异id的列名
    • name of column with model target variant ids具有模型目标变量id的列的名称
  • --on_the_fly_mapping:Optional. Specify a pattern to build a variant id from genotype variant properties. e.g. --on_the_fly_mapping METADATA "chr{}_{}_{}_{}_b38" will take the genotype variant’s chromosome, position, alleles to build a variant id like chr1_123_A_G_b38. This will use the genotype properties, or if liftover is specified, the lifted coordinates.可选的。指定一个模式,从基因型变异属性构建一个变异id。“chr{}{}}{}} __b38”将采用基因型变体的染色体,位置,等位基因来构建像chr1_123_A_G_b38这样的变体id。这将使用基因型属性,或者如果指定了提升,则使用提升坐标。
  • --only_entries:Optional. This convenience argument specifies a whitelist of genes/splicing/etc to be computed, anything else will be disregarded.可选的。这个方便的参数指定了要计算的基因/剪接等的白名单,其他任何东西都将被忽略。

PrediXcanAssociation.py:
[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第1张图片

[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第2张图片
PrediXcanAssociation.py和Predict.py接受相同的参数。如果没有指定预测输出,则不会存储预测的转录组矩阵。这是不推荐的,矩阵包含有用的信息。
所有脚本都支持--throw选项:如果出现错误,将打印完整的软件堆栈跟踪,而不是用户友好的错误消息。

Predict.py Arguments(参数)

Prediction models are SQLite databases with two tables, weights and extra. The weights table has columns gene rsid varID ref_allele eff_allele weight, where each variant has an ID with the format chr_pos_ref_eff_build. For example, the snp rs115095900 has variant ID chr10_101056744_G_C_b37. GTEx v8 model variants have the string chr in front, but some GTEx v7 models do not, so it’s best to check the varID format beforehand by querying the weights table. By default, Predict.py predicts expression by matching the rsids in the genotype files to the rsids in the prediction model. However, for genotype files without rsids models, there are arguments that change it to varIDs.
预测模型是带有两个表的SQLite数据库,权重和其他。权重表有列gene rsid varID ref_allele eff_allele weight,其中每个变体都有一个格式为chr_pos_ref_eff_build的ID。例如,snp rs115095900的变体ID为chr10_101056744_G_C_b37。GTEx v8模型变体在前面有字符串chr,但一些GTEx v7模型没有,因此最好事先通过查询权重表来检查varID格式。默认情况下,Predict.py通过将基因型文件中的rsid与预测模型中的rsid进行匹配来预测表达式。然而,对于没有rsid模型的基因型文件,有一些参数将其更改为varIDs。

Case 1: Same build genotype and model with rsids(相同构建基因型和模型,带有rsids)

[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第3张图片
最简单的情况是在同一构建中定义基因型和预测模型变体,并且基因型文件具有rsids(示例1和2)。对VCF基因型文件使用以下参数:——model_db_path,——vcf_genotypes,——vcf_mode,——prediction_output,——prediction_summary_output。对于bgen,——model_db_path,——bgen_genotypes,——bgen_use_rsid,——prediction_output,——prediction_summary_output。文本剂量:——model_db_path,——text_genotypes,——text_sample_ids,——prediction_output,——prediction_summary_output。

Case 2: Same build genotype and model without rsids(相同构建基因型和模型,无rsid)

Some VCFs have rsids, and others don’t (Example 3). You can check by querying:
一些vcf有rsid,而另一些没有(例3)。你可以通过查询来检查:

bcftools query -f '%ID\n' /Users/sabrinami/Desktop/1000G_test/ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz | head -3
rs367896724
rs540431307
rs555500075

bcftools query -f '%ID\n' /Users/sabrinami/Desktop/geuvadis_test/GEUVADIS.chr1.PH1PH2_465.IMPFRQFILT_BIALLELIC_PH.annotv2.genotypes.vcf.gz  | head -3
snp_1_10583
snp_1_10611
snp_1_13302

[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第4张图片
或者该模型可能有一些没有sid的变体,例如,MASHR模型。因此GEUVADIS基因型和MASHR模型将需要使用变量来预测表达。参数——on_the_fly_mapping METADATA为VCF中的每个变量构建一个ID,该ID可以与预测模型中的变量匹配。——model_db_snp_key varID指定应该使用varID列而不是rsid列来匹配基因型变体。如果基因型和模型都在hg37中,使用参数——model_db_path,——model_db_snp_key varID,——vcf_genotypes,——vcf_mode,——on_the_fly_mapping METADATA "{}_{}

Case 3: Different build genotype and model

[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第5张图片
[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第6张图片

Text dosage format文本剂量格式

剂量格式包括gzip,制表符分隔的文本文件,没有标题。每一行看起来像:
[TWAS]individual-level implementation of PrediXcan(实现PrediXcan)_第7张图片
它通常需要一个示例文件,这是一个无标题的、由制表符分隔的文件,包含列:家族id和个人id。如果没有家庭id,复制个人id列。例子:

HG00096 HG00096
HG00097 HG00097
HG00099 HG00099
HG00100 HG00100
...

Examples

You can try PrediXcan by downloading the following example data from Zenodo. The package contains minimalist example cases to show in the following tutorials. To unpack, run the following in a UNIX-like command line:
您可以通过从Zenodo下载以下 示例数据 来尝试PrediXcan。该包包含在以下教程中显示的最简单的示例案例。要解包,在类似unix的命令行中运行以下命令:

tar -xvpf predixcan_sample_data.tar

Prerequisites(预备知识)

In the following, we assume that you have downloaded the MetaXcan software software and all dependencies (such as Python 3.5 or later) as listed in MetaXcan’s readme.在下文中,我们假设您已经下载了MetaXcan软件和MetaXcan自述文件中列出的所有依赖项(如Python 3.5或更高版本)。
For convenience we assume that the path to MetaXcan is exposed to to your environment like so:为方便起见,我们假设将MetaXcan的路径像这样暴露给您的环境:

export $METAXCAN=/path/to/code/MetaXcan/software

In the following, python3 stands for a valid python 3.5 (or greater) installation with all dependencies.在下面,python3代表有效的python 3.5(或更高版本)安装以及所有依赖项

你可能感兴趣的:(Linux生信小菜鸡,生信方法,R语言,算法,python3.11,生物信息学)