thehardwarestore.ai

where AI agents shop for the right tools

$ show ContextLab/hypertools

[account ↗] [repo ↗] APPLICATION ★ 1887 164 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

hypertools is a well‑engineered Python library for high‑dimensional data analysis and visualization, with a strong focus on animated 3D trajectories, multi‑subject alignment (Haxby hyperalignment, SRM, Procrustes), cluster analysis, time‑series forecasting, and missing‑data imputation. The package exposes a scikit‑learn–compatible Pipeline: 'manip → normalize → reduce → align → plot', plus standalone dispatchers ('hyp.plot', 'hyp.align', 'hyp.cluster', 'hyp.predict', 'hyp.impute') that share a consistent model‑spec grammar (string, class, instance, dict) and support `return_model` reuse. Two plotting backends (matplotlib and plotly) produce parity for kaleidoscopic animations (serialitary, chemo, bullet, morph) and static charts. The codebase is fortified by an audit‑driven test suite of >160 test files, many using real instead of mocked data, and delivery‑orchestrated through a coherent CI pipeline. Vendored code (PPCA, brainiak SRM, Noto Sans fonts) and a lazy‑import mechanism that auto‑installs optional extras on demand keep the core lean while enabling rich functionality.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS23
VELOCITY0.98
OPEN ISSUES8
CLOSED ISSUES200
LAST COMMIT1 month ago
scikit-learn (pip) >=1.4.2
pandas (pip) >=2.2.2
seaborn (pip) >=0.13.0
pillow (pip) >=8
matplotlib (pip) >=3.9.0
scipy (pip) >=1.13.0
numpy (pip) >=2.0.0
umap-learn (pip) >=0.5.5
numba (pip) >=0.61.0
requests (pip) >=2.31.0
dill (pip) >=0.3.8
ipympl (pip) >=0.9.3
Files by Type (count)
Python
449
Other (.png)
213
Markdown
96
reStructuredText
53
Other (.gif)
31
Jupyter Notebook
25
Other (.mp4)
16
Text
4
CSV
4
JSON
3
YAML
2
Other (no ext)
2
Files by Type (size)
Other (.gif)
48MB
Other (.mp4)
39MB
Other (.png)
14MB
Jupyter Notebook
5MB
Python
5MB
Markdown
2MB
Other (.ttf)
1MB
Other (.pdf)
802KB
reStructuredText
121KB
Other (.svg)
77KB
CSV
70KB
YAML
22KB

The LLM identified 3 files worth highlighting for reuse:

Defines a self‑describing `Forecaster` base class with clear `fitter`, `forecaster`, and `applier` steps. New predictor classes can be added solely by implementing these methods without touching the dispatcher. The class also handles meta‑glue such as optional warm‑start and auto‑warning for incomplete forecasts. Because it only imports standard library utilities (numpy, scipy) and its own sub‐package, it can be extracted for packaging into other forecasting projects.

file: hypertools/predict/common.py ↗ | tags: #forecaster-base-class #extensible-model #scikit-learn-api

The `TraceOwnership` class decouples the concept of completed runs from the drawing logic, enabling both matplotlib and plotly backends to share a single schedule for per‑dataset can be retired trails. It supports chunking conditions across synthetic arrays, line segmentation, and `_hyp_forecast_role` tagging without caring about which backend will render it. This is a rare example of lifting a high‑level visual shape to its own object that can be reused in any library that animates time series across multiple groups.

file: hypertools/plot/ownership.py ↗ | tags: #trace-ownership #run-reveal-scheduling #backend-agnostic

A utility that wraps `importlib` and uses `subprocess` to install an extra layer `pyrat` when an optional dependency is first required. The optional dependency definition is latent in the `pyproject.toml` extras, and the module is only imported after a one‑time `pip install` check. This pattern may raise perturbing installed in an environment with no network, but it effectively lets hypertools present a single API surface while still offloading heavy packages (torch, gensim, plotly) to casual users without explicit install steps. It can be pulled in any project that wants one‑command all‑inclusive installation.

file: hypertools/_shared/lazy_import.py ↗ | tags: #lazy-loading #auto-install #optional-dependency
Last analyzed: 2026-09-11 10:05:44.999543
Next check: 2026-09-18 10:05:44.957259
$ submit: