Skip to content

Commit

Permalink
feat: bootstrapper for pandas
Browse files Browse the repository at this point in the history
  • Loading branch information
nicrie committed Aug 17, 2022
1 parent 4eae075 commit a32b1d3
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
1 change: 1 addition & 0 deletions xeofs/pandas/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from .eof import EOF
from .rotator import Rotator
from .bootstrapper import Bootstrapper
73 changes: 73 additions & 0 deletions xeofs/pandas/bootstrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
from typing import Optional

import numpy as np
import pandas as pd

from ..models._base_bootstrapper import _BaseBootstrapper
from .eof import EOF
from ..utils.tools import squeeze


class Bootstrapper(_BaseBootstrapper):
'''Short summary.'''

def __init__(
self, n_boot : int,
alpha : float = 0.05,
test_type : Optional[str] = 'one-sided'
):
'''Short summary.
Parameters
----------
n_boot : int
Description of parameter `n_boot`.
alpha : float
Description of parameter `alpha` (the default is 0.05).
test_type : Optional[str]
Description of parameter `test_type` (the default is 'one-sided').
Returns
-------
type
Description of returned object.
'''
super().__init__(n_boot=n_boot, alpha=alpha, test_type=test_type)

def bootstrap(self, model : EOF):
super().bootstrap(model)

def get_params(self):
return super().get_params()

def n_significant_modes(self):
return super().n_significant_modes()

def explained_variance(self):
expvar, expvar_mask = super().explained_variance()
expvar = pd.DataFrame(
expvar.T,
columns=pd.Index(self._params['quantiles'], name='quantile'),
index=self._model._idx_mode,
)
expvar_mask = pd.DataFrame(
expvar_mask,
columns=['is_significant'],
index=self._model._idx_mode[:-1]
)

return expvar, expvar_mask

def eofs(self):
eofs, eofs_mask = super().eofs()
eofs = [squeeze(self._model._tf.back_transform_eofs(e)) for e in eofs]
eofs_mask = squeeze(self._model._tf.back_transform_eofs(eofs_mask))

return eofs, eofs_mask

def pcs(self):
pcs, pcs_mask = super().pcs()
pcs = [squeeze(self._model._tf.back_transform_pcs(q)) for q in pcs]
pcs_mask = squeeze(self._model._tf.back_transform_pcs(pcs_mask))
return pcs, pcs_mask

0 comments on commit a32b1d3

Please sign in to comment.