Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewwardrop committed Apr 5, 2022
1 parent 3240212 commit dd6266f
Show file tree
Hide file tree
Showing 8 changed files with 1,230 additions and 394 deletions.
4 changes: 2 additions & 2 deletions formulaic/materializers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ def _encode_evaled_factor(
drop_rows: set,
reduced_rank: bool = False,
) -> Dict[str, Any]:
if not isinstance(factor.values, dict) or not factor.metadata.encoded:
if not factor.metadata.encoded:
if factor.expr in self.encoded_cache:
encoded = self.encoded_cache[factor.expr]
elif (factor.expr, reduced_rank) in self.encoded_cache:
Expand Down Expand Up @@ -596,7 +596,7 @@ def wrapped(values, metadata, state, *args, **kwargs):

self.encoded_cache[cache_key] = encoded
else:
encoded = factor.values
encoded = as_columns(factor.values)

encoded = FactorValues(
encoded,
Expand Down
10 changes: 8 additions & 2 deletions formulaic/materializers/pandas.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import pandas
import scipy.sparse as spsparse
from interface_meta import override
from formulaic.materializers.types.factor_values import FactorValues

from formulaic.utils.cast import as_columns

from .base import FormulaMaterializer
from .types import NAAction
Expand Down Expand Up @@ -78,13 +81,17 @@ def _encode_categorical(

if drop_rows:
values = values.drop(index=values.index[drop_rows])
return contrasts(
encoded = contrasts(
values,
reduced_rank=False,
_metadata=metadata,
_state=encoder_state,
_spec=spec,
)
return FactorValues(
as_columns(encoded),
metadata=encoded.__formulaic_metadata__,
)

@override
def _get_columns_for_term(self, factors, spec, scale=1):
Expand Down Expand Up @@ -132,7 +139,6 @@ def _get_columns_for_term(self, factors, spec, scale=1):

@override
def _combine_columns(self, cols, spec, drop_rows):

# If we are outputing a pandas DataFrame, explicitly override index
# in case transforms/etc have lost track of it.
if spec.output == "pandas":
Expand Down
3 changes: 2 additions & 1 deletion formulaic/transforms/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from .basis_spline import basis_spline
from .identity import identity
from .contrasts import contrasts
from .contrasts import contrasts, ContrastsRegistry
from .poly import poly
from .scale import center, scale

Expand All @@ -22,5 +22,6 @@
"poly": poly,
"scale": scale,
"C": contrasts,
"contr": ContrastsRegistry,
"I": identity,
}
Loading

0 comments on commit dd6266f

Please sign in to comment.