{"adoption": {"forks": 172, "observed_at": "2026-08-28T04:03:51.376829+00:00", "stars": 1170}, "canonical_url": "https://ross.abutalabs.com/products/ppscore", "card": {"archived": false, "artifact_type": "library", "description": "Predictive Power Score (PPS) in Python", "domain": ["data-science", "analytics"], "enriched": true, "function": ["data-science", "machine-learning"], "health_score": 63, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["8080labs/ppscore"], "name": "8080labs/ppscore", "platform": ["python"], "pushed_at": "2026-03-11T12:17:07+00:00", "repo": "8080labs/ppscore", "stars": 1170, "tags": ["predictive-power-score", "correlation-alternative", "pandas", "feature-analysis", "feature-selection", "statistics"], "topics": [], "urls": [], "use_cases": ["find non-linear relationships between dataframe columns", "alternative to correlation matrix in pandas", "rank predictors for a target variable", "detect predictive power of features", "compute PPS matrix for feature analysis", "replace correlation with a data-type-agnostic score"], "what_it_is": "ppscore is a Python library implementing the Predictive Power Score (PPS), an asymmetric, data-type-agnostic metric that detects linear and non-linear relationships between dataframe columns. It serves as an alternative to correlation matrices, offering score, predictors, and matrix APIs for pandas DataFrames.", "when_to_avoid": ["you need statistically rigorous dependence measures with p-values", "you work outside pandas/Python dataframes", "you need fast computation on very wide datasets, since PPS trains models per column pair"], "when_to_choose": ["you need to detect non-linear or asymmetric relationships that correlation misses", "your data mixes numeric and categorical columns", "you want a quick feature-relevance ranking against a target"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ppscore", "repo": "8080labs/ppscore", "role": "main", "score": 55}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.376829+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:28:34.504965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7d3b21ad97f75a1ae325a865cf969090a46bc5e22d2010d72053bfbb7a44c0a0", "fetched_at": "2026-08-28T04:03:51.376829+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/ppscore"}, {"content_hash": "818c75a2397dc62f8496f1872ab11e8b9cbb11d203f364347f16042a9612b487", "fetched_at": "2026-08-29T12:34:22.468055+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/ppscore/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 71, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2329, "days_push": 175, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 55, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}