# 定义染色体列表,包含 1 到 22 号染色体
chromosomes = list(range(1, 23))
# 获取组学暴露数据文件的名称
(MRname,) = glob_wildcards("../dataset/组学暴露数据/{file}.rds")
# 获取 SMR 数据文件的名称
GTExname = glob_wildcards("../dataset/SMR/{file}.besd").file
# 获取 GWAS 数据文件的名称
GWASfilename = glob_wildcards("../../SMR/input/{file}").file
# 定义 all 规则,用于指定整个流程的最终输出文件
rule all:
input:
expand("result/GTEx的{GTEx}之{file}.smr", GTEx=GTExname, file=GWASfilename),
#expand("result/MR的{file}之{MR}.csv", MR=MRname, file=GWASfilename),
expand("result/{file}.gsa.out.txt",file=GWASfilename),
#expand("result/Gene_disease_association/{file}.fusion_twas.txt",file=GWASfilename), #TWAS 若全部49个组织非常慢10小时
# 定义 trans 规则,用于将输入文件转换为输出文件
rule trans: #OK
input:
# 输入文件路径
"../../SMR/input/{file}"
output:
# 输出文件路径
"tmp/{file}.ma",
"tmp/{file}.sumstats.gz",
"tmp/{file}.mendelR.txt"
# 规则执行时使用的线程数
threads: 6
shell:
# 调用 R 脚本进行文件转换
"r -f tools/trans.R --args {wildcards.file}"
rule run_GTEx: #OK
input:
"tmp/{file}.ma",
output:
"result/GTEx的{GTEx}之{file}.smr"
threads: 5
shell:
"tools\\smr.exe --gwas-summary {input} --out result/GTEx的{wildcards.GTEx}之{wildcards.file} --bfile ../dataset/EUR --beqtl-summary ../dataset/SMR/{wildcards.GTEx} --maf 0.01 --thread-num 18 --diff-freq-prop 1.000000"
rule run_MAGMA: #OK
input:
"tmp/{file}.ma",
output:
"result/{file}.gsa.out.txt",
shell:
"r -f tools/run_MAGMA.R --args {wildcards.file}"
rule run_MR: #OK
input:
"tmp/{file}.ma",
output:
"result/MR的{file}之{MR}.csv",
threads: 2
shell:
"r -f tools/run_MR.R --args {wildcards.file} {wildcards.MR}"