Skip to content
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
190300d
gaussian distribution reformat
lionelkusch Aug 29, 2025
b576522
fix knockoff
lionelkusch Aug 29, 2025
8f4e032
move conditional sampler in statistical tools
lionelkusch Aug 29, 2025
9429418
move test from knockoff
lionelkusch Aug 29, 2025
81f2fb0
move test in right folder
lionelkusch Aug 29, 2025
17eabee
remove gaussian
lionelkusch Aug 29, 2025
0bac34a
remove unsed import
lionelkusch Aug 29, 2025
b965f13
fix center to knockoff
lionelkusch Aug 29, 2025
7e29c97
Change name of GaussianDistribution
lionelkusch Sep 1, 2025
8654269
remove parameter assumed_centerd of tests
lionelkusch Sep 1, 2025
afe9915
change the way of using the randomgenerator
lionelkusch Sep 3, 2025
bd3b77a
Apply suggestions from code review
lionelkusch Sep 4, 2025
d8e9f5c
reformat docstring
lionelkusch Sep 4, 2025
013bd63
Update test/statistical_tools/test_gaussian_knockoffs.py
lionelkusch Sep 4, 2025
140dc6e
improve tests
lionelkusch Sep 4, 2025
7d04afd
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Sep 4, 2025
d26ce91
Apply suggestions from code review
lionelkusch Sep 5, 2025
87c4e6e
add assert
lionelkusch Sep 5, 2025
90f8455
fix tests
lionelkusch Sep 5, 2025
785eebc
Improve test
lionelkusch Sep 8, 2025
72eb6e8
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Sep 8, 2025
22bdd4b
remove not necessary test
lionelkusch Sep 9, 2025
9429c2a
Update the conditioal sampler for new fit signature
lionelkusch Sep 24, 2025
846f1ca
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Oct 10, 2025
4dfd677
fix test
lionelkusch Oct 10, 2025
c5e1e76
fix isort
lionelkusch Oct 10, 2025
45bb053
fix examples
lionelkusch Oct 10, 2025
7e73c2a
fix documentation
lionelkusch Oct 10, 2025
8936703
fix documentation
lionelkusch Oct 10, 2025
03f914c
update the user guide.
lionelkusch Oct 10, 2025
a18fa8f
try to fix the end of file
lionelkusch Oct 10, 2025
53b36d9
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Oct 10, 2025
8ef5c06
Apply suggestion from @bthirion
lionelkusch Oct 13, 2025
82e50e5
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Oct 13, 2025
720cf44
update makefile
lionelkusch Oct 13, 2025
410cefc
Add comment
lionelkusch Oct 13, 2025
8b96194
update command
lionelkusch Oct 13, 2025
dde7b47
[skip tests]
lionelkusch Oct 13, 2025
611d0ec
fix makefile
lionelkusch Oct 13, 2025
c92911f
[skip tests]
lionelkusch Oct 13, 2025
46b8358
change signature of sample
lionelkusch Oct 13, 2025
bd7ace1
remove fix
lionelkusch Oct 13, 2025
0b67d3c
Merge branch 'main' into PR_gaussian_reformat
lionelkusch Oct 14, 2025
5cd94f3
remove documentation
lionelkusch Oct 14, 2025
e3450ec
Update src/hidimstat/statistical_tools/gaussian_knockoffs.py
lionelkusch Oct 15, 2025
b5847a1
Update src/hidimstat/statistical_tools/gaussian_knockoffs.py
lionelkusch Oct 15, 2025
9f1ca5a
Update src/hidimstat/statistical_tools/gaussian_knockoffs.py
lionelkusch Oct 15, 2025
285690c
Update src/hidimstat/statistical_tools/gaussian_knockoffs.py
lionelkusch Oct 15, 2025
2f8b0ba
format file
lionelkusch Oct 15, 2025
43be183
add test with repeat
lionelkusch Oct 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/src/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ Samplers
:toctree: ./generated/api/class/
:template: class.rst

conditional_sampling.ConditionalSampler
statistical_tools.conditional_sampling.ConditionalSampler
statistical_tools.gaussian_knockoffs.GaussianKnockoffs

Helper Functions
================
Expand Down
1 change: 0 additions & 1 deletion docs/src/user_guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,3 @@ Table of contents
visualization.rst
grouping.rst
high_dimension.rst

2 changes: 1 addition & 1 deletion examples/plot_pitfalls_permutation_importance.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@

from matplotlib.lines import Line2D

from hidimstat.conditional_sampling import ConditionalSampler
from hidimstat.statistical_tools.conditional_sampling import ConditionalSampler

X_train, X_test = train_test_split(
X,
Expand Down
2 changes: 1 addition & 1 deletion src/hidimstat/conditional_feature_importance.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from sklearn.metrics import root_mean_squared_error

from hidimstat.base_perturbation import BasePerturbation
from hidimstat.conditional_sampling import ConditionalSampler
from hidimstat.statistical_tools.conditional_sampling import ConditionalSampler


class CFI(BasePerturbation):
Expand Down
187 changes: 0 additions & 187 deletions src/hidimstat/gaussian_knockoff.py

This file was deleted.

37 changes: 6 additions & 31 deletions src/hidimstat/knockoffs.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,8 @@
from sklearn.preprocessing import StandardScaler
from sklearn.utils.validation import check_memory

from hidimstat._utils.utils import check_random_state
from hidimstat.gaussian_knockoff import (
gaussian_knockoff_generation,
repeat_gaussian_knockoff_generation,
)
from hidimstat.statistical_tools.aggregation import quantile_aggregation
from hidimstat.statistical_tools.gaussian_knockoffs import GaussianKnockoffs
from hidimstat.statistical_tools.multiple_testing import fdr_threshold


Expand Down Expand Up @@ -188,36 +184,15 @@ def model_x_knockoff(
n_jobs = min(n_bootstraps, n_jobs)
parallel = Parallel(n_jobs, verbose=joblib_verbose)

# get the seed for the different run
rng = check_random_state(random_state)
children_rng = rng.spawn(n_bootstraps)

if centered:
X = StandardScaler().fit_transform(X)

# estimation of X distribution
# original implementation:
# https://github.com/msesia/knockoff-filter/blob/master/R/knockoff/R/create_second_order.R
mu = X.mean(axis=0)
sigma = cov_estimator.fit(X).covariance_

# Create knockoff variables
X_tilde, mu_tilde, sigma_tilde_decompose = memory.cache(
gaussian_knockoff_generation
)(X, mu, sigma, random_state=children_rng[0], tol=tol_gauss)

if n_bootstraps == 1:
X_tildes = [X_tilde]
else:
X_tildes = parallel(
delayed(repeat_gaussian_knockoff_generation)(
mu_tilde,
sigma_tilde_decompose,
random_state=seed,
)
for seed in children_rng[1:]
)
X_tildes.insert(0, X_tilde)
conditionnal_sampler = GaussianKnockoffs(cov_estimator, tol=tol_gauss)
conditionnal_sampler.fit(X)
X_tildes = conditionnal_sampler.sample(
n_repeats=n_bootstraps, random_state=random_state
)

results = parallel(
delayed(memory.cache(_stat_coefficient_diff))(
Expand Down
File renamed without changes.
Loading