- Remove
sparsedependency (#121)
- Update README to mention formulae supports Python>=3.8 (#121)
- Add
as_dataframe()method toGroupEffectsMatrix(#115) - Use sparse matrices for group-specific design matrices (#117, #118, #119)
- Fix pandas version check (#110)
- Test on Python 3.10, 3.11, and 3.12 (#113)
- Migrate development tooling and workflow to pixi (#116)
- Drop support for Python 3.7; Python ≥ 3.8 is now required (#110)
- Make sure model_description always returns a Model instance (#112)
- Make formulae reach transformations before outer names (#109)
- Update is_categorical_dtype for pandas >= 2.10 (#105)
- Add automatic versioning to the library (#106)
- Interpret True, False, and None as Python literals (#107)
- Fix bug when intercept is inserted after categorical variable (#102)
- The library now supports configuration variables (#95)
- Allow evaluations on new data with new categories (#96)
- Return ready to be used group-specific effects design matrix when there are new groups (#100)
- Fix typo in str (#99)
- Implement a @register_stateful_transform decorator to register new stateful transformations (#85)
- Fix evaluation of new offset terms with call arguments (#81)
- Multiple calls with unnamed attributes resulted in errors due to trying to hash unhashable types (#88)
- Term names with call components now use the proper lexeme when one argument is a string (#89)
- Detect stateful transformations by attribute instead of name (#90)
- Moved tests out of the
formulaedirectory (#91) - Use pyproject and improve deployment workflow (#92)
- Fixed a bug in the levels of interaction terms involving numeric terms with multiple columns (b4a1f73)
- Fixed a bug in
CategoricalBox. Now it considers the order of the categories ifdatais ordered andlevelsisNone(#73)
- Fixed a bug in
CategoricalBoxbecause it failed to convert categorical series to numpy arrays. Now it works. (#72)
- Renamed
ResponseVectortoResponseMatrix(#71) - Renamed
design_vectortodesign_matrixinResponseMatrix(#71) - Updated docstrings in
formulae/matrices.py(#71)
- Removed
binaryandsuccessattributes fromResponseMatrix(#71)
- We can create our own encodings such as Treatment or Sum encoding. These are subclasses of
Encoding. - Added two aliases
TandSthat are shorthands ofC(var, Treatment)andC(var, Sum)respectively. - DesignVector, CommonEffectsMatrix and GroupEffectsMatrix now retrieve their values when passed to
np.array()andnp.asarray(). - Add
poly()stateful transform. na_actionindesign_matrices()can be"pass"which means not to drop or raise error about missing values. It just keeps them (#69)design_matrices()gains a new argumentextra_namespace. It allows us to pass a dictionary of transformations that are made available in the environment where the formula is evaluated (#70)
- Fixed a bug in the addition of lower order terms when the original higher order term wasn't full-rank.
- Columns for categorical terms are integer by default. They are casted to float only if there are other float-valued columns in the design matrix.
- Updated str and repr methods of
ResponseVector,CommonEffectsMatrix, andGroupEffectsMatrix. - Added str and repr methods for
DesignMatrices. - Added get_item method for
DesignMatrices. - Added support for comparison operators within function calls.
- Added
bs(), a stateful transformation for basis splines (#52) - Subset notation in response terms can now be an identifier. It is interpreted as a string (#52)
True,FalseandNoneare correctly evaluated in function calls arguments now (#53)- The
.set_type()on each term used to be called twice. Now we call it once (#53) - Added the function
get_function_from_module(). Now we don't use Python'seval()anymore (#53)
- Revert changes back to v0.1.2
- Revert changes back to v0.1.1
- Added
prop()function to handle response terms that a proportion computed from two variables (#40) - Categorical responses can contain more than one level (#40)
- Added
binary()function to convert numeric/categorical variables into 0-1 variables (#41) - Modified
C()to make it simpler to obtain categorical variables and manipulate their levels (#41) - Added
offset()(#42)
- Fix group-specific effects matrix shape (#35)
- Add a Getting started section to webpage and remove that content from README.md (#36)
- Factor of group specific effect can be an interaction now (#31)
- Full interaction does not result in shared components anymore (#30)
- Add information about levels to interaction terms (#33)
- Added Internals section to documentation (#28)
- Nested stateful transofrmations now work as expected (#19)
- Added a changelog file to track changes (#20)
- Formulae now has a github pages website (#21)