标签:bin Parquet 一个 演示 mon ugo addition 工具 表达
PrediXcan , SPrediXcan,MetaXcan是近些年基于GWAS后续分析开发出来的工具。
主要功能是在组织和表达的层面预测影响表型的基因,弥补了GWAS只能在基因组层面解释表型的不足。
下面是这几个工具的工作流程:
今天给大家介绍一下如何使用SPrediXcan和MetaXcan工具进行全转录组分析(Transcriptome-Wide Analysis)
该工具最大的优点是不需要个体水平的基因型数据和表型数据,只需要提供GWAS的summary统计文件就可以预测影响表型的靶基因。
缺点是对电脑的配置要求比较高。
下载、解压MetaXcan
:
wget https://github.com/hakyimlab/MetaXcan/archive/master.zip
unzip master.zip
cd MetaXcan-master/software/
使用conda配置MetaXcan
的环境(没安装conda的请自行安装后再做这一步):
conda env create -n MetaXcan -f conda_env.yaml
激活MetaXcan
conda activate MetaXcan
下载、解压gwasimputation
:
wget https://github.com/hakyimlab/summary-gwas-imputation/archive/master.zip
unzip master.zip
配置环境:
conda env create -n gwasimputation -f conda_env.yaml
conda activate gwasimputation
conda install -c conda-forge pyliftover=0.4
conda install -c conda-forge pandas=0.25.3
conda install -c conda-forge scipy=1.4.1
conda install -c conda-forge numpy=1.18.1
conda install -c conda-forge bgen_reader=3.0.2
conda install -c conda-forge cyvcf2=0.20.0
conda install -c conda-forge pyarrow=0.9.0
各位仔细观察的话,会发现我指定了安装包的版本。
建议各位严格安装这个教程的版本安装,不然后面会出现各种因版本过高或过低的报错。
nohup wget https://zenodo.org/record/3657902/files/sample_data.tar?download=1 &
tar -xvpf sample_data.tar\?download\=1
解压以后,会出现如下的数据:
gwas文件夹包含GWAS结果文件的测试数据cad.add.160614.website.txt.gz
;
完成以上工作以后,我们就可以开始分析数据啦!
以下是全转录组分析的流程
原始GWAS结果文件cad.add.160614.website.txt.gz
的格式如下所示:
我们可以看到,这个文件的坐标是hg19版本的,但MetaXcan的最新版是hg38,因此我们需要先将GWAS结果文件cad.add.160614.website.txt.gz
的坐标转为hg38。
这里面,我们需要先定义几个文件夹:
GWAS_TOOLS=/chenwenyan/software/gwas-imputation-master/src #步骤二的gwas-imputation-master的路径
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data #步骤三下载的测试数据的路径
OUTPUT=/chenwenyan/test #这个自己定义:输出文件的路径
注意,以上路径用的是我自己的路径(比如
/chenwenyan/software/gwas-imputation-master/src
),不要照搬。请修改成你自己的路径。
定义完路径以后,在输出文件夹$OUTPUT(我的示例是/chenwenyan/test
)下新建一个文件夹创建文件夹harmonized_gwas
,输入命令:mkdir harmonized_gwas
随后,创建一个test.sh的文件,输入命令:
vi test.sh
在test.sh
文件输入以下内容:
#!/bin/bash
GWAS_TOOLS=/chenwenyan/software/gwas-imputation-master/src #gwas-imputation-master的路径
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data #下载的测试数据的路径
OUTPUT=/chenwenyan/test #输出文件的路径
python $GWAS_TOOLS/gwas_parsing.py -gwas_file $DATA/gwas/cad.add.160614.website.txt.gz -liftover $DATA/liftover/hg19ToHg38.over.chain.gz -snp_reference_metadata $DATA/reference_panel_1000G/variant_metadata.txt.gz METADATA -output_column_map markername variant_id -output_column_map noneffect_allele non_effect_allele -output_column_map effect_allele effect_allele -output_column_map beta effect_size -output_column_map p_dgc pvalue -output_column_map chr chromosome --chromosome_format -output_column_map bp_hg19 position -output_column_map effect_allele_freq frequency --insert_value sample_size 184305 --insert_value n_cases 60801 -output_order variant_id panel_variant_id chromosome position effect_allele non_effect_allele frequency pvalue zscore effect_size standard_error sample_size n_cases -output $OUTPUT/harmonized_gwas/CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz
GWAS结果文件的染色体用数值表示,不要用
chr+数值
的方式GWAS文件格式必须是gz压缩格式,分隔符为tab
运行:sh test.sh
顺利的话,会输入以下信息:
生成的新文件如下所示:
如截图的红框所示,此时坐标已变为hg38了。
先在输出文件夹$OUTPUT(我的示例是/chenwenyan/test
)下新建一个文件夹summary_imputation
,输入命令:mkdir summary_imputation
随后输入如下命令进行imputation:
GWAS_TOOLS=/chenwenyan/software/gwas-imputation-master/src
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data
OUTPUT=/chenwenyan/test
python $GWAS_TOOLS/gwas_summary_imputation.py -by_region_file $DATA/eur_ld.bed.gz -gwas_file $OUTPUT/harmonized_gwas/CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz -parquet_genotype $DATA/reference_panel_1000G/chr1.variants.parquet -parquet_genotype_metadata $DATA/reference_panel_1000G/variant_metadata.parquet -window 100000 -parsimony 7 -chromosome 1 -regularization 0.1 -frequency_filter 0.01 -sub_batches 10 -sub_batch 0 --standardise_dosages -output $OUTPUT/summary_imputation/CARDIoGRAM_C4D_CAD_ADDITIVE_chr1_sb0_reg0.1_ff0.01_by_region.txt.gz
出现如下页面说明顺利运行了:
上面示例只是对一号染色体上的第一个批次进行imputation,我们实际上要进行220次(22条染色体*10个批次)循环imputation。
因此跑完上面流程以后,需要继续跑剩下的119次imputation。
需要修改的地方有
$DATA/reference_panel_1000G/chr1.variants.parquet
、-chromosome 1
、-sub_batch 0
、$OUTPUT/summary_imputation/CARDIoGRAM_C4D_CAD_ADDITIVE_chr1_sb0_reg0.1_ff0.01_by_region.txt.gz
$DATA/reference_panel_1000G/chr1.variants.parquet
修改的数值是chr1,chr2,chr3,……,chr22;
-chromosome 1
修改的数值是:1,2,3,……,22;
-sub_batch 0
修改的数值是:0,1,2,……,9;
$OUTPUT/summary_imputation/CARDIoGRAM_C4D_CAD_ADDITIVE_chr1_sb0_reg0.1_ff0.01_by_region.txt.gz
是输出文件,建议修改chr1_sb0
为对应的染色体和批次。
举个例子,我现在想跑3号染色体的第十个批次,那么脚本应该如下所示:
GWAS_TOOLS=/chenwenyan/software/gwas-imputation-master/src
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data
OUTPUT=/chenwenyan/test
python $GWAS_TOOLS/gwas_summary_imputation.py -by_region_file $DATA/eur_ld.bed.gz -gwas_file $OUTPUT/harmonized_gwas/CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz -parquet_genotype $DATA/reference_panel_1000G/chr3.variants.parquet -parquet_genotype_metadata $DATA/reference_panel_1000G/variant_metadata.parquet -window 100000 -parsimony 7 -chromosome 3 -regularization 0.1 -frequency_filter 0.01 -sub_batches 10 -sub_batch 9 --standardise_dosages -output $OUTPUT/summary_imputation/CARDIoGRAM_C4D_CAD_ADDITIVE_chr3_sb9_reg0.1_ff0.01_by_region.txt.gz
输入如下命令:
GWAS_TOOLS=/chenwenyan/software/gwas-imputation-master/src
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data
OUTPUT=/chenwenyan/test
python $GWAS_TOOLS/gwas_summary_imputation_postprocess.py -gwas_file $OUTPUT/harmonized_gwas/CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz -folder $OUTPUT/summary_imputation -pattern CARDIoGRAM_C4D_CAD_ADDITIVE.* -parsimony 7 -output $OUTPUT/processed_summary_imputation/imputed_CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz
和上面一样,路径不要照搬我的,请修改成你自己的路径。
正常运行的话,会出现如下界面:
在输出文件夹$OUTPUT(我的示例是/chenwenyan/test
)下新建一个文件夹spredixcan
,输入命令:mkdir spredixcan
在spredixcan
文件夹下新建文件夹eqtl
,输入命令:mkdir eqtl
建完后,输入如下命令:
DATA=/chenwenyan/anaconda2/envs/gwasimputation/data/data
METAXCAN=/chenwenyan/software/MetaXcan-master/software
python $METAXCAN/SPrediXcan.py --gwas_file $OUTPUT/processed_summary_imputation/imputed_CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz --snp_column panel_variant_id --effect_allele_column effect_allele --non_effect_allele_column non_effect_allele --zscore_column zscore --model_db_path $DATA/models/eqtl/mashr/mashr_Whole_Blood.db --covariance $DATA/models/eqtl/mashr/mashr_Whole_Blood.txt.gz --keep_non_rsid --additional_output --model_db_snp_key varID --throw --output_file $OUTPUT/spredixcan/eqtl/CARDIoGRAM_C4D_CAD_ADDITIVE__PM__Whole_Blood.csv
正常运行的话,会出现如下界面:
在输出文件夹$OUTPUT(我的示例是/chenwenyan/test
)下新建一个文件夹smultixcan
,输入命令:mkdir smultixcan
在smultixcan
文件夹下新建文件夹eqtl
,输入命令:mkdir eqtl
python $METAXCAN/SMulTiXcan.py --models_folder $DATA/models/eqtl/mashr --models_name_pattern "mashr_(.*).db" --snp_covariance $DATA/models/gtex_v8_expression_mashr_snp_covariance.txt.gz --metaxcan_folder $OUTPUT/spredixcan/eqtl/ --metaxcan_filter "CARDIoGRAM_C4D_CAD_ADDITIVE__PM__(.*).csv" --metaxcan_file_name_parse_pattern "(.*)__PM__(.*).csv" --gwas_file $OUTPUT/processed_summary_imputation/imputed_CARDIoGRAM_C4D_CAD_ADDITIVE.txt.gz --snp_column panel_variant_id --effect_allele_column effect_allele --non_effect_allele_column non_effect_allele --zscore_column zscore --keep_non_rsid --model_db_snp_key varID --cutoff_condition_number 30 --verbosity 7 --throw --output $OUTPUT/smultixcan/eqtl/CARDIoGRAM_C4D_CAD_ADDITIVE_smultixcan.txt
生成的结果如下所示:
结果文件标题所代表的意思:
gene: Ensembl id;
gene_name: HUGO gene name;
Z-score: S-PrediXcan‘s association result for the gene;
pvalue: P-value of the aforementioned statistic;
var_g: variance of the gene expression, calculated as W‘ * G * W (where W is the vector of SNP weights in a gene‘s model, W‘ is its transpose, and G is the covariance matrix);
pred_perf_r2: R2 of tissue model‘s correlation to gene‘s measured transcriptome (prediction performance); pred_perf_pval: pval of tissue model‘s correlation to gene‘s measured transcriptome (prediction performance);
n_snps_used: number of snps from GWAS that got used in S-PrediXcan analysis;
n_snps_in_cov: number of snps in the covariance matrix;
n_snps_in_model: number of snps in the model.
结果文件的pvalue值超过Bonferroni correction的阈值就说明该结果有意义。
Bonferroni correction定义:0.05/(N个基因*M个组织)
联合使用PrediXcan、MetaXcan基于GWAS结果预测靶基因及特异性组织的表达(又名全转录组分析Transcriptome-Wide AnalysisS)
标签:bin Parquet 一个 演示 mon ugo addition 工具 表达
原文地址:https://www.cnblogs.com/chenwenyan/p/13166529.html