🚀 Features
- Transitioning from AnnData to EHRData
EHRDatareplacesAnnDataas ehrapy's core data structure to better support time-series electronic health record data.
The key enhancement is native support for 3D tensors (observations × variables × timesteps) alongside the existing 2D matrices, enabling efficient storage of longitudinal patient data.
A new.temDataFrame provides time-point annotations, complementing the existing.obsand.varannotations for comprehensive temporal data description.
WhileEHRDatamaintains full backward compatibility with AnnData's API, users can now seamlessly work with time-series data and leverage specialized methods for temporal analysis.
Existing code usingAnnDataobjects will continue to work, but migration toEHRDatais strongly recommended to access enhanced time-series functionality. - The preferred central data object is now
EHRData(#908) @eroell - The
layersargument is now available for all functions operating on X or layers (#908) @eroell - Update expected behaviour of
io.read_fhir(#922) @eroell - Move
mimic_2,mimic_2_preprocessed,diabetes_130_raw,diabetes_130_fairlearntoehrdata.dt(#908) - Deprecate all
ep.dt.*, refer to datasets inehrdata(#908) @eroell - Support Python 3.14 (#996) @Zethson
- Move kaplan_meier & cox_ph plots to holoviews (#995) @Zethson
- Longitudinal normalization (#958) @agerardy
- Add interactive
olsplot (#992) @Zethson - Longitudinal and new qc_metrics (#967) @sueoglu
- Simple Impute for timeseries (#975) @eroell
- Simple implementation of balanced sampling (#937) @sueoglu
- Add Sankey diagram visualization functions (#989) @sueoglu
- Add
ep.pl.timeseries()to visualize variables over time (#994) @sueoglu - Add GPU CI & skeleton (#998) @Zethson
- Add FAMD (#976) @Zethson
- 3D enabled implementation of ep.pp.filter_observations, ep.pp.filter_features (#953) @sueoglu
- Add time series distances (#954) @Zethson
🐛 Bug Fixes
- All green if GPU skipped (#1000) @Zethson
- Fix neighbors with timeseries (#973) @eroell
- Fix use_rep when X none (#969) @eroell
- Fix missing_values_barplot errors (#963) @sueoglu
- Fix CR notebook (#939) @Zethson
🧰 Maintenance
- Update actions (#977) @Zethson
- Cleanup simple_impute tests (#974) @eroell
- Move to ehrdata 0.0.10 (#971) @eroell
- Improved notebook CI (#959) @Zethson
- Switch to template (#960) @Zethson
- Tests for more plots (#919) @sueoglu
- Lowerbound cvxpy (#935) @Zethson
- Optimize var_metrics (#927) @Zethson
- Refactor Dask usage pattern (#926) @Zethson
- Add cover to README & remove some tokens (#923) @Zethson
- Update test coverage reporting (#918) @eroell
- Fix changelog links (#915) @Zethson
- Fixed structure of Returns in _rank_features_groups.py documentation (#911) @agerardy
- Add EHRData transition code (#897) @Zethson @eroell
- Make test that downloads dermatology dataset more robust (#906) @Zethson
- Update image source in README.md (#986) @eroell
- Fix plot docs formatting (#952) @Zethson
- Typo in the documentation of ehrapy.data.mimic_2_preprocessed (#917) @sueoglu