Files
hiffi-artist-intelligence/update_ranking_and_anomalies.py
Srilekha 12f0786be9
HIFFI Multi-Platform CI / test (3.11) (push) Failing after 39s
HIFFI Multi-Platform CI / test (3.12) (push) Failing after 39s
feat: complete Day 2 handoff with API service, PM2 process daemons, and test suites
2026-10-30 11:10:54 +05:30

56 lines
1.8 KiB
Python

"""
update_ranking_and_anomalies.py
Synchronizes all multi-platform metrics through HIFFIRankingEngine.
Re-computes XP scores, dynamic weights, statistical anomaly flags, and published ranks.
"""
from pathlib import Path
import pandas as pd
from core.ranking_engine import HIFFIRankingEngine
DATA_PATH = Path("data/hiffi_multiplatform_500.csv")
def run_ranking_update():
if not DATA_PATH.exists():
print(f"File not found: {DATA_PATH}")
return
df = pd.read_csv(DATA_PATH)
print(f"Loaded master dataset with {len(df)} artists.")
engine = HIFFIRankingEngine()
print("[1/4] Calculating baseline production rankings...")
df = engine.score_and_rank(df)
print("[2/4] Computing HIFFI-XP composite scores & dynamic weight redistribution...")
df = engine.calculate_hiffi_xp(df)
print("[3/4] Running statistical anomaly detection...")
df = engine.detect_metric_anomalies(df)
print("[4/4] Applying publication eligibility gates & tier constraints...")
df = engine.apply_publication_eligibility_gates(df)
# Clean display types
if "hiffi_xp_published_rank" in df.columns:
df["hiffi_xp_published_rank"] = df["hiffi_xp_published_rank"].astype(int)
df.to_csv(DATA_PATH, index=False)
anomaly_counts = (df["anomaly_flags"] != "CLEAN").sum()
tier_counts = df["platform_evidence_tier"].value_counts().to_dict()
print("\n==========================================")
print("Multi-Platform Ranking & Anomaly Sync Complete!")
print(f"Evidence Tiers Distribution: {tier_counts}")
print(f"Statistical Anomalies Detected: {anomaly_counts} (Auditable Outliers)")
print(f"Clean Normal Records: {len(df) - anomaly_counts}")
print(f"Master CSV updated: {DATA_PATH}")
print("==========================================")
if __name__ == "__main__":
run_ranking_update()