Skip to content

Commit 03bd48c

Browse files
committed
Add results property to delta_delta and mini_meta_delta dabest objects
1 parent 326b3a0 commit 03bd48c

2 files changed

Lines changed: 122 additions & 7 deletions

File tree

dabest/_delta_objects.py

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,29 @@ def to_dict(self):
209209
dictionary.
210210
"""
211211
# Only get public (user-facing) attributes.
212-
attrs = [a for a in dir(self) if not a.startswith(("_", "to_dict"))]
212+
attrs = [a for a in dir(self) if not a.startswith(("_", "to_dict", "results"))]
213213
out = {}
214214
for a in attrs:
215215
out[a] = getattr(self, a)
216216
return out
217+
218+
def __compute_results(self):
219+
# With some inspiration from @jungyangliao
220+
delta_delta_results_df = pd.Series(self.to_dict()).to_frame().T
221+
222+
column_index = ['control', 'test', 'difference', 'ci', 'bca_low', 'bca_high', 'bca_interval_idx',
223+
'pct_low', 'pct_high', 'pct_interval_idx', 'bootstraps_control', 'bootstraps_test',
224+
'bootstraps_delta_delta', 'permutations_control', 'permutations_test', 'permutations_delta_delta',
225+
'pvalue_permutation', 'permutation_count', 'bias_correction', 'jackknives'
226+
]
227+
delta_delta_results_df['bootstraps_control'] = [delta_delta_results_df['bootstraps'][0][0]]
228+
delta_delta_results_df['bootstraps_test'] = [delta_delta_results_df['bootstraps'][0][1]]
229+
delta_delta_results_df['permutations_control'] = [delta_delta_results_df['permutations'][0][0]]
230+
delta_delta_results_df['permutations_test'] = [delta_delta_results_df['permutations'][0][1]]
231+
delta_delta_results_df = delta_delta_results_df.reindex(columns=column_index)
232+
233+
self.__results = delta_delta_results_df
234+
return self.__results
217235

218236
@property
219237
def ci(self):
@@ -352,6 +370,17 @@ def permutations_delta_delta(self):
352370
except AttributeError:
353371
self.__permutation_test()
354372
return self.__permutations_delta_delta
373+
374+
@property
375+
def results(self):
376+
"""
377+
Return the results of the delta-delta analysis.
378+
"""
379+
try:
380+
return self.__results
381+
except AttributeError:
382+
self.__compute_results()
383+
return self.__results
355384

356385
# %% ../nbs/API/delta_objects.ipynb 10
357386
class MiniMetaDelta(object):
@@ -575,11 +604,30 @@ def to_dict(self):
575604
"""
576605
# Only get public (user-facing) attributes.
577606
attrs = [a for a in dir(self)
578-
if not a.startswith(("_", "to_dict"))]
607+
if not a.startswith(("_", "to_dict", "results"))]
579608
out = {}
580609
for a in attrs:
581610
out[a] = getattr(self, a)
582611
return out
612+
613+
614+
def __compute_results(self):
615+
# With some inspiration from @jungyangliao
616+
"""
617+
Returns all attributes of the `dabest.MiniMetaDelta` object as a
618+
DataFrame.
619+
"""
620+
mini_meta_delta_results_df = pd.Series(self.to_dict()).to_frame().T
621+
column_index = ['control', 'test', 'control_N', 'test_N', 'control_var', 'test_var', 'group_var',
622+
'difference', 'ci', 'bca_low', 'bca_high', 'bca_interval_idx',
623+
'pct_low', 'pct_high', 'pct_interval_idx', 'bootstraps', 'bootstraps_weighted_delta',
624+
'permutations', 'permutations_var', 'permutations_weighted_delta', 'pvalue_permutation',
625+
'permutation_count', 'bias_correction', 'jackknives']
626+
mini_meta_delta_results_df = mini_meta_delta_results_df.reindex(columns=column_index)
627+
mini_meta_delta_results_df.rename(columns={'bootstraps': 'bootstraps_deltas'}, inplace=True)
628+
629+
self.__results = mini_meta_delta_results_df
630+
return self.__results
583631

584632

585633
@property
@@ -801,4 +849,13 @@ def permutations_weighted_delta(self):
801849
self.__permutation_test()
802850
return self.__permutations_weighted_delta
803851

804-
852+
@property
853+
def results(self):
854+
"""
855+
Return the results of the mini-meta analysis.
856+
"""
857+
try:
858+
return self.__results
859+
except AttributeError:
860+
self.__compute_results()
861+
return self.__results

nbs/API/delta_objects.ipynb

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,29 @@
269269
" dictionary.\n",
270270
" \"\"\"\n",
271271
" # Only get public (user-facing) attributes.\n",
272-
" attrs = [a for a in dir(self) if not a.startswith((\"_\", \"to_dict\"))]\n",
272+
" attrs = [a for a in dir(self) if not a.startswith((\"_\", \"to_dict\", \"results\"))]\n",
273273
" out = {}\n",
274274
" for a in attrs:\n",
275275
" out[a] = getattr(self, a)\n",
276276
" return out\n",
277+
" \n",
278+
" def __compute_results(self):\n",
279+
" # With some inspiration from @jungyangliao\n",
280+
" delta_delta_results_df = pd.Series(self.to_dict()).to_frame().T\n",
281+
"\n",
282+
" column_index = ['control', 'test', 'difference', 'ci', 'bca_low', 'bca_high', 'bca_interval_idx', \n",
283+
" 'pct_low', 'pct_high', 'pct_interval_idx', 'bootstraps_control', 'bootstraps_test', \n",
284+
" 'bootstraps_delta_delta', 'permutations_control', 'permutations_test', 'permutations_delta_delta',\n",
285+
" 'pvalue_permutation', 'permutation_count', 'bias_correction', 'jackknives'\n",
286+
" ]\n",
287+
" delta_delta_results_df['bootstraps_control'] = [delta_delta_results_df['bootstraps'][0][0]]\n",
288+
" delta_delta_results_df['bootstraps_test'] = [delta_delta_results_df['bootstraps'][0][1]]\n",
289+
" delta_delta_results_df['permutations_control'] = [delta_delta_results_df['permutations'][0][0]]\n",
290+
" delta_delta_results_df['permutations_test'] = [delta_delta_results_df['permutations'][0][1]]\n",
291+
" delta_delta_results_df = delta_delta_results_df.reindex(columns=column_index)\n",
292+
"\n",
293+
" self.__results = delta_delta_results_df\n",
294+
" return self.__results\n",
277295
"\n",
278296
" @property\n",
279297
" def ci(self):\n",
@@ -411,7 +429,18 @@
411429
" return self.__permutations_delta_delta\n",
412430
" except AttributeError:\n",
413431
" self.__permutation_test()\n",
414-
" return self.__permutations_delta_delta"
432+
" return self.__permutations_delta_delta\n",
433+
" \n",
434+
" @property\n",
435+
" def results(self):\n",
436+
" \"\"\"\n",
437+
" Return the results of the delta-delta analysis.\n",
438+
" \"\"\"\n",
439+
" try:\n",
440+
" return self.__results\n",
441+
" except AttributeError:\n",
442+
" self.__compute_results()\n",
443+
" return self.__results"
415444
]
416445
},
417446
{
@@ -715,11 +744,30 @@
715744
" \"\"\"\n",
716745
" # Only get public (user-facing) attributes.\n",
717746
" attrs = [a for a in dir(self)\n",
718-
" if not a.startswith((\"_\", \"to_dict\"))]\n",
747+
" if not a.startswith((\"_\", \"to_dict\", \"results\"))]\n",
719748
" out = {}\n",
720749
" for a in attrs:\n",
721750
" out[a] = getattr(self, a)\n",
722751
" return out\n",
752+
" \n",
753+
"\n",
754+
" def __compute_results(self):\n",
755+
" # With some inspiration from @jungyangliao\n",
756+
" \"\"\"\n",
757+
" Returns all attributes of the `dabest.MiniMetaDelta` object as a\n",
758+
" DataFrame.\n",
759+
" \"\"\"\n",
760+
" mini_meta_delta_results_df = pd.Series(self.to_dict()).to_frame().T\n",
761+
" column_index = ['control', 'test', 'control_N', 'test_N', 'control_var', 'test_var', 'group_var',\n",
762+
" 'difference', 'ci', 'bca_low', 'bca_high', 'bca_interval_idx', \n",
763+
" 'pct_low', 'pct_high', 'pct_interval_idx', 'bootstraps', 'bootstraps_weighted_delta', \n",
764+
" 'permutations', 'permutations_var', 'permutations_weighted_delta', 'pvalue_permutation', \n",
765+
" 'permutation_count', 'bias_correction', 'jackknives']\n",
766+
" mini_meta_delta_results_df = mini_meta_delta_results_df.reindex(columns=column_index)\n",
767+
" mini_meta_delta_results_df.rename(columns={'bootstraps': 'bootstraps_deltas'}, inplace=True)\n",
768+
"\n",
769+
" self.__results = mini_meta_delta_results_df\n",
770+
" return self.__results\n",
723771
"\n",
724772
"\n",
725773
" @property\n",
@@ -940,7 +988,17 @@
940988
" except AttributeError:\n",
941989
" self.__permutation_test()\n",
942990
" return self.__permutations_weighted_delta\n",
943-
"\n"
991+
"\n",
992+
" @property\n",
993+
" def results(self):\n",
994+
" \"\"\"\n",
995+
" Return the results of the mini-meta analysis.\n",
996+
" \"\"\"\n",
997+
" try:\n",
998+
" return self.__results\n",
999+
" except AttributeError:\n",
1000+
" self.__compute_results()\n",
1001+
" return self.__results"
9441002
]
9451003
},
9461004
{

0 commit comments

Comments
 (0)