Skip to content

Commit f21d4d1

Browse files
Changes from GWIS to GWIES; Updated tests and generalized estimand creation to support higher order interactions
1 parent 4019b38 commit f21d4d1

File tree

6 files changed

+18
-139
lines changed

6 files changed

+18
-139
lines changed

Manifest.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
julia_version = "1.10.4"
44
manifest_format = "2.0"
5-
project_hash = "b1a916e4f68d2fb953c6eba21c0fc7546e7dc5c6"
5+
project_hash = "4182f1a89c1532988a40d605eeec69822a2af3fc"
66

77
[[deps.ARFFFiles]]
88
deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"]
@@ -1358,9 +1358,9 @@ weakdeps = ["ChainRulesCore", "SparseArrays", "Statistics"]
13581358

13591359
[[deps.LogExpFunctions]]
13601360
deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
1361-
git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea"
1361+
git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f"
13621362
uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
1363-
version = "0.3.28"
1363+
version = "0.3.29"
13641364

13651365
[deps.LogExpFunctions.extensions]
13661366
LogExpFunctionsChainRulesCoreExt = "ChainRulesCore"

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
1515
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1616
HypothesisTests = "09f84164-cd44-5f33-b23f-e6b0d136a0d5"
1717
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
18+
LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
1819
MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2"
1920
Mmap = "a63ad114-7e13-5084-954f-fe012c677804"
2021
OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
@@ -37,12 +38,12 @@ CairoMakie = "0.12"
3738
CategoricalArrays = "0.10"
3839
Combinatorics = "1.0"
3940
DataFrames = "1.2"
41+
MKL = "0.7"
4042
OrderedCollections = "1.6.3"
4143
PackageCompiler = "2.1.17"
4244
SnpArrays = "0.3"
4345
StableRNGs = "1.0.1"
4446
Statistics = "1.10"
4547
TMLE = "0.17"
46-
MKL = "0.7"
4748
YAML = "0.4.9"
4849
julia = "1.10, 1"

src/inputs_from_config.jl

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function try_append_new_estimands!(
5454
end
5555
end
5656

57-
function estimands_from_variants(
57+
function genome_wide_estimands(
5858
variants,
5959
dataset,
6060
estimand_constructor,
@@ -70,10 +70,11 @@ function estimands_from_variants(
7070

7171
if isempty(extra_treatments)
7272
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)...)
7573
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+
)
7778
end
7879

7980
local Ψ
@@ -172,7 +173,7 @@ end
172173
"""
173174
treatment_from_variant(variant, dataset)
174175
175-
Generate a key-value pair (dicitionary) for treatment structs.
176+
Generate a key-value pair (dictionary) for treatment structs.
176177
"""
177178
function treatments_from_variant(variant::String, dataset::DataFrame)
178179
variant_levels = sort(levels(dataset[!, variant], skipmissing=true))
@@ -187,7 +188,7 @@ function estimands_from_gwas(dataset, variants, outcomes, confounders;
187188
)
188189
variants_groups = Iterators.partition(variants, length(variants) ÷ Threads.nthreads())
189190
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;
191192
extra_treatments=extra_treatments,
192193
outcome_extra_covariates=outcome_extra_covariates,
193194
positivity_constraint=positivity_constraint,
@@ -198,15 +199,15 @@ function estimands_from_gwas(dataset, variants, outcomes, confounders;
198199
return vcat(estimands_partitions...)
199200
end
200201

201-
function estimands_from_gwis(dataset, variants, outcomes, confounders;
202+
function estimands_from_gweis(dataset, variants, outcomes, confounders;
202203
extra_treatments=extra_treatments,
203204
outcome_extra_covariates = [],
204205
positivity_constraint=0.,
205206
verbosity=0
206207
)
207208
variants_groups = Iterators.partition(variants, length(variants) ÷ Threads.nthreads())
208209
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;
210211
extra_treatments=extra_treatments,
211212
outcome_extra_covariates=outcome_extra_covariates,
212213
positivity_constraint=positivity_constraint,
@@ -239,7 +240,7 @@ function get_genotypes_from_beds(bedprefix)
239240
end
240241

241242
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"
243244
get_genotypes_from_beds(genotype_prefix)
244245
else
245246
variants_set = Set(retrieve_variants_list(config["variants"]))
@@ -297,9 +298,9 @@ function inputs_from_config(config_file, genotypes_prefix, traits_file, pcs_file
297298
positivity_constraint=positivity_constraint,
298299
verbosity=verbosity
299300
)
300-
elseif config_type == "gwis"
301+
elseif config_type == "gweis"
301302
variants = filter(!=("SAMPLE_ID"), names(genotypes))
302-
estimands_from_gwis(dataset, variants, outcomes, confounders;
303+
estimands_from_gweis(dataset, variants, outcomes, confounders;
303304
extra_treatments=extra_treatments,
304305
outcome_extra_covariates=outcome_extra_covariates,
305306
positivity_constraint=positivity_constraint,

test/data/config_gwis.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

test/inputs_from_gwis_config.jl

Lines changed: 0 additions & 113 deletions
This file was deleted.

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ TESTDIR = joinpath(pkgdir(TargeneCore), "test")
1010
@test include(joinpath(TESTDIR, "inputs_from_estimands.jl"))
1111
@test include(joinpath(TESTDIR, "inputs_from_config.jl"))
1212
@test include(joinpath(TESTDIR, "inputs_from_gwas_config.jl"))
13-
@test include(joinpath(TESTDIR, "inputs_from_gwis_config.jl"))
13+
@test include(joinpath(TESTDIR, "inputs_from_gweis_config.jl"))
1414
@test include(joinpath(TESTDIR, "sieve_variance.jl"))
1515
end

0 commit comments

Comments
 (0)