Readme file Manuscript: Choi, Jurgens, et al. Rare Coding Variants Associated with Electrocardiographic Intervals Identify Monogenic Arrhythmia Susceptibility Genes- a Multi-ancestry Analysis ######## file type 1: TOPMed_freeze6_common_singlevariant_*.tsv Single variant association test results from common variants (MAF > 0.01) RR: RR interval Pdur: maximum P-wave duration PR: PR interval QRS: QRS duration QTc: Bazett's corrected QT interval Column Description variant.id variant ID (chr:position:reference allele:alternative allele) chr Chromosome pos Position (b38) ref Reference allele alt Alternative allele freq Alternative allele frequency Est Effect size Est.SE Standard Error Wald.Stat Test statistics Wald.pval Pvalue ######## file type 2: TOPMed_freeze6_lowfreq_singlevariant_*.tsv Single variant association test results from low frequency variants at coding region (0.001 <= MAF < 0.01) RR: RR interval Pdur: maximum P-wave duration PR: PR interval QRS: QRS duration QTc: Bazett's corrected QT interval Column Description variant.id variant ID (chr:position:reference allele:alternative allele) chr Chromosome pos Position (b38) ref Reference allele alt Alternative allele freq Alternative allele frequency Est Effect size Est.SE Standard Error Wald.Stat Test statistics Wald.pval Pvalue ######## file type 3: TOPMed_freeze6_rare_genebased_*.tsv Gene-based association test results from rare deleterious variants (MAF < 0.01) RR: RR interval Pdur: maximum P-wave duration PR: PR interval QRS: QRS duration QTc: Bazett's corrected QT interval Column Description(https://rdrr.io/github/hanchenphd/GMMAT/man/SMMAT.html) geneid Ensembl geneid genename gene name chr Chromosome n.variants the number of variants used in a test B.score Burden test score statistic B.var variance of burden test score statistic. B.pval burden test p-value. S.pval SKAT p-value. E.pval SMMAT efficient hybrid test of the burden test and SKAT p-value. ###### ###### R-scripts for result files #### #### ECG GWAS portal traits<-c("rr_interval","p_duration","pr_interval","qrs_duration2","qtcB") traits2<-c("RR","Pdur","PR","QRS","QTc") library(data.table) for (phen in 1:5){ trait<-traits[phen] folder<-paste0("/medpop/afib/schoi/projects/TOPMed/Freeze6/Result/ECG/singlevariant/",trait,"/v2") setwd(folder) filename<-paste0("TOPMed_ECG_",trait,"_Gpop_chrall_maf0.01.tsv") dat0<-fread(filename,header=T,data.table=F,sep="\t") dat1<-dat0[,c("variant.id","chr","pos","ref","alt","freq","Est","Est.SE","Wald.Stat","Wald.pval")] dat1$variant.id<-paste0(dat1$chr,":",dat1$pos,":",dat1$ref,":",dat1$alt) trait2<-traits2[phen] outfile<-paste0("/medpop/afib/uploads/ecg/TOPMed_freeze6_common_singlevariant_",trait2,".tsv") fwrite(dat1,outfile,sep="\t",col.names=T,row.names=F,quote=F) } #### #### ECG rare gene-based test portal ######## ######## target regions setwd("/medpop/afib/schoi/projects/TOPMed/Freeze6/Result/ECG/singlevariant/candidateloci") tgene1<-NULL for( phen in 1:5){ traits<-c("rr_interval","pr_interval","qrs_duration2","qtcB","p_duration") trait<-traits[phen] setwd("/medpop/afib/schoi/projects/TOPMed/Freeze6/Result/ECG/singlevariant/candidateloci") tgene0<-fread(paste0("TOPMed_Freeze6_ECG_GWS_MAF0.001_candidate_genes_",trait,"_v2.tsv"),header=T,data.table=F,sep="\t") tgene1<-rbind(tgene1,tgene0) } tgene2<-tgene1[!duplicated(tgene1$geneid),] tgeneid<-c(tgene2$geneid,"ENSG00000145730") library(data.table) setwd("/medpop/afib/schoi/projects/TOPMed/Freeze6/Data/ECG/annotation/Ensembl/protein_coding_gene") chrinfo0<-NULL for ( num in 1:22){ chrinfo<-fread(paste0("Ensembl_protein_coding_gene_in_chr",num,".tsv"),header=T,data.table=F,sep="\t") chrinfo0<-rbind(chrinfo0,chrinfo) } tgene<-chrinfo0[chrinfo0$geneid %in% tgeneid,] traits<-c("rr_interval","pr_interval","qrs_duration2","qtcB","p_duration") traits2<-c("RR","Pdur","PR","QRS","QTc") for( phen in 1:5){ trait<-traits[phen] path0<-paste0("/medpop/afib/schoi/projects/TOPMed/Freeze6/Result/ECG/rarevariant/lof_HC_missense_dbNSFPscore/",trait,"/") setwd(path0) file0<-paste0(trait,"_chrall_all_lof_HC_missense_dbNSFPscore_inclusive_any11_result.tsv") res0<-fread(file0,header=T,data.table=F,sep="\t") gsplit0<-unlist(strsplit(res0$group,"_")) res0$gene<-gsplit0[seq(1,length(gsplit0),by=2)] res0$del_group<-gsplit0[seq(2,length(gsplit0),by=2)] groups<-c("HC","any11") res1<-subset(res0,del_group==groups[2] & CMC>=10) res2<-res1[,c("gene","n.variants","B.score","B.var","B.pval","S.pval","E.pval")] res3<-merge(tgene,res2,by.x="geneid",by.y="gene") res3<-res3[order(res3$chr,res3$start),] res4<-res3[,c(c("geneid","genename","chr","n.variants","B.score","B.var","B.pval","S.pval","E.pval"))] trait2<-traits2[phen] outfile<-paste0("/medpop/afib/uploads/ecg/TOPMed_freeze6_rare_genebased_",trait2,".tsv") fwrite(res4,outfile,sep="\t",col.names=T,row.names=F,quote=F) } ##### ##### low frequency variants traits<-c("rr_interval","pr_interval","qrs_duration2","qtcB","p_duration") traits2<-c("RR","Pdur","PR","QRS","QTc") setwd("/medpop/afib/schoi/projects/TOPMed/Freeze6/Data/ECG/annotation/Ensembl/codingregion/") for (phen in 1:5){ trait<-traits[phen] filename3<-paste0("/medpop/afib/schoi/projects/TOPMed/Freeze6/Result/ECG/singlevariant/",trait,"/v2/TOPMed_ECG_",trait,"_Gpop_chrall_maf0.001_0.01_coding_v2.tsv") dat0<-fread(filename3,header=T,data.table=F,sep="\t") dat0$variant.id<-dat0$varid dat1<-dat0[,c("variant.id","chr","pos","ref","alt","freq","Est","Est.SE","Wald.Stat","Wald.pval")] trait2<-traits2[phen] outfile<-paste0("/medpop/afib/uploads/ecg/TOPMed_freeze6_lowfreq_singlevariant_",trait2,".tsv") fwrite(res4,outfile,sep="\t",col.names=T,row.names=F,quote=F) }