Skip to content

Commit 5bbac93

Browse files
authored
Merge pull request #155 from StochasticTree/sampler-cleanup-hotfix
Fix post-sampler cleanup issues in BART and BCF for R and Python
2 parents e091740 + fc24040 commit 5bbac93

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

R/bart.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -826,13 +826,13 @@ bart <- function(X_train, y_train, leaf_basis_train = NULL, rfx_group_ids_train
826826
if ((!keep_gfr) && (num_gfr > 0)) {
827827
for (i in 1:num_gfr) {
828828
if (include_mean_forest) {
829-
forest_samples_mean$delete_sample(i-1)
829+
forest_samples_mean$delete_sample(0)
830830
}
831831
if (include_variance_forest) {
832-
forest_samples_variance$delete_sample(i-1)
832+
forest_samples_variance$delete_sample(0)
833833
}
834834
if (has_rfx) {
835-
rfx_samples$delete_sample(i-1)
835+
rfx_samples$delete_sample(0)
836836
}
837837
}
838838
if (sample_sigma_global) {

R/bcf.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,13 +1214,13 @@ bcf <- function(X_train, Z_train, y_train, propensity_train = NULL, rfx_group_id
12141214
# Remove GFR samples if they are not to be retained
12151215
if ((!keep_gfr) && (num_gfr > 0)) {
12161216
for (i in 1:num_gfr) {
1217-
forest_samples_mu$delete_sample(i-1)
1218-
forest_samples_tau$delete_sample(i-1)
1217+
forest_samples_mu$delete_sample(0)
1218+
forest_samples_tau$delete_sample(0)
12191219
if (include_variance_forest) {
1220-
forest_samples_variance$delete_sample(i-1)
1220+
forest_samples_variance$delete_sample(0)
12211221
}
12221222
if (has_rfx) {
1223-
rfx_samples$delete_sample(i-1)
1223+
rfx_samples$delete_sample(0)
12241224
}
12251225
}
12261226
if (sample_sigma_global) {

stochtree/bart.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,10 @@ def sample(self, X_train: Union[np.array, pd.DataFrame], y_train: np.array, basi
226226
keep_vars_variance = variance_forest_params_updated['keep_vars']
227227
drop_vars_variance = variance_forest_params_updated['drop_vars']
228228

229+
# Override keep_gfr if there are no MCMC samples
230+
if num_mcmc == 0:
231+
keep_gfr = True
232+
229233
# Check that num_chains >= 1
230234
if not isinstance(num_chains, Integral) or num_chains < 1:
231235
raise ValueError("num_chains must be an integer greater than 0")
@@ -680,9 +684,9 @@ def sample(self, X_train: Union[np.array, pd.DataFrame], y_train: np.array, basi
680684
if not keep_gfr and num_gfr > 0:
681685
for i in range(num_gfr):
682686
if self.include_mean_forest:
683-
self.forest_container_mean.delete_sample(i)
687+
self.forest_container_mean.delete_sample(0)
684688
if self.include_variance_forest:
685-
self.forest_container_variance.delete_sample(i)
689+
self.forest_container_variance.delete_sample(0)
686690
if self.sample_sigma_global:
687691
self.global_var_samples = self.global_var_samples[num_gfr:]
688692
if self.sample_sigma_leaf:

stochtree/bcf.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@ def sample(self, X_train: Union[pd.DataFrame, np.array], Z_train: np.array, y_tr
299299
keep_vars_variance = variance_forest_params_updated['keep_vars']
300300
drop_vars_variance = variance_forest_params_updated['drop_vars']
301301

302+
# Override keep_gfr if there are no MCMC samples
303+
if num_mcmc == 0:
304+
keep_gfr = True
305+
302306
# Variable weight preprocessing (and initialization if necessary)
303307
if variable_weights is None:
304308
if X_train.ndim > 1:
@@ -1051,10 +1055,10 @@ def sample(self, X_train: Union[pd.DataFrame, np.array], Z_train: np.array, y_tr
10511055
# Remove GFR samples if they are not to be retained
10521056
if not keep_gfr and num_gfr > 0:
10531057
for i in range(num_gfr):
1054-
self.forest_container_mu.delete_sample(i)
1055-
self.forest_container_tau.delete_sample(i)
1058+
self.forest_container_mu.delete_sample(0)
1059+
self.forest_container_tau.delete_sample(0)
10561060
if self.include_variance_forest:
1057-
self.forest_container_variance.delete_sample(i)
1061+
self.forest_container_variance.delete_sample(0)
10581062
if self.adaptive_coding:
10591063
self.b1_samples = self.b1_samples[num_gfr:]
10601064
self.b0_samples = self.b0_samples[num_gfr:]

0 commit comments

Comments
 (0)