@@ -54,7 +54,7 @@ function try_append_new_estimands!(
54
54
end
55
55
end
56
56
57
- function estimands_from_variants (
57
+ function genome_wide_estimands (
58
58
variants,
59
59
dataset,
60
60
estimand_constructor,
@@ -70,10 +70,11 @@ function estimands_from_variants(
70
70
71
71
if isempty (extra_treatments)
72
72
treatments = treatments_from_variant (variant, dataset)
73
- elseif length (extra_treatments) == 1
74
- treatments = Dict (treatments_from_variant (variant, dataset)... , treatments_from_variant (string (extra_treatments[1 ]), dataset)... )
75
73
else
76
- error (" GWIS mode only supports pairwise interaction with one extra treatment." )
74
+ treatments = Dict (
75
+ treatments_from_variant (variant, dataset)... ,
76
+ (pair for extra in extra_treatments for pair in treatments_from_variant (string (extra), dataset)). ..
77
+ )
77
78
end
78
79
79
80
local Ψ
172
173
"""
173
174
treatment_from_variant(variant, dataset)
174
175
175
- Generate a key-value pair (dicitionary ) for treatment structs.
176
+ Generate a key-value pair (dictionary ) for treatment structs.
176
177
"""
177
178
function treatments_from_variant (variant:: String , dataset:: DataFrame )
178
179
variant_levels = sort (levels (dataset[! , variant], skipmissing= true ))
@@ -187,7 +188,7 @@ function estimands_from_gwas(dataset, variants, outcomes, confounders;
187
188
)
188
189
variants_groups = Iterators. partition (variants, length (variants) ÷ Threads. nthreads ())
189
190
estimands_tasks = map (variants_groups) do variants
190
- Threads. @spawn estimands_from_variants (variants, dataset, ATE, outcomes, confounders;
191
+ Threads. @spawn genome_wide_estimands (variants, dataset, ATE, outcomes, confounders;
191
192
extra_treatments= extra_treatments,
192
193
outcome_extra_covariates= outcome_extra_covariates,
193
194
positivity_constraint= positivity_constraint,
@@ -198,15 +199,15 @@ function estimands_from_gwas(dataset, variants, outcomes, confounders;
198
199
return vcat (estimands_partitions... )
199
200
end
200
201
201
- function estimands_from_gwis (dataset, variants, outcomes, confounders;
202
+ function estimands_from_gweis (dataset, variants, outcomes, confounders;
202
203
extra_treatments= extra_treatments,
203
204
outcome_extra_covariates = [],
204
205
positivity_constraint= 0. ,
205
206
verbosity= 0
206
207
)
207
208
variants_groups = Iterators. partition (variants, length (variants) ÷ Threads. nthreads ())
208
209
estimands_tasks = map (variants_groups) do variants
209
- Threads. @spawn estimands_from_variants (variants, dataset, AIE, outcomes, confounders;
210
+ Threads. @spawn genome_wide_estimands (variants, dataset, AIE, outcomes, confounders;
210
211
extra_treatments= extra_treatments,
211
212
outcome_extra_covariates= outcome_extra_covariates,
212
213
positivity_constraint= positivity_constraint,
@@ -239,7 +240,7 @@ function get_genotypes_from_beds(bedprefix)
239
240
end
240
241
241
242
function make_genotypes (genotype_prefix, config, call_threshold)
242
- genotypes = if config[" type" ] == " gwas" || config[" type" ] == " gwis "
243
+ genotypes = if config[" type" ] == " gwas" || config[" type" ] == " gweis "
243
244
get_genotypes_from_beds (genotype_prefix)
244
245
else
245
246
variants_set = Set (retrieve_variants_list (config[" variants" ]))
@@ -297,9 +298,9 @@ function inputs_from_config(config_file, genotypes_prefix, traits_file, pcs_file
297
298
positivity_constraint= positivity_constraint,
298
299
verbosity= verbosity
299
300
)
300
- elseif config_type == " gwis "
301
+ elseif config_type == " gweis "
301
302
variants = filter (!= (" SAMPLE_ID" ), names (genotypes))
302
- estimands_from_gwis (dataset, variants, outcomes, confounders;
303
+ estimands_from_gweis (dataset, variants, outcomes, confounders;
303
304
extra_treatments= extra_treatments,
304
305
outcome_extra_covariates= outcome_extra_covariates,
305
306
positivity_constraint= positivity_constraint,
0 commit comments