#!/usr/bin/env python3
"""EXPLORATORY (not pre-registered): the SCORE cue test restricted to replications that collected new data
(repli_type == 'new data'), since many SCORE claims were re-analyses of existing data. Same estimator and band rule."""
import sys
import numpy as np, pandas as pd
sys.path.insert(0, ".")
import score_cue_test as S, fred_two_cues as F
o = pd.read_csv(S.ORIG, low_memory=False)
o["band"] = [F.p_band(S.TYPE_MAP.get(t), v) for t, v in zip(o["orig_p_value_type"], o["orig_p_value"])]
o["strong"] = o.apply(S.card_strong, axis=1); o["doi_o"] = o["paper_id"]
r = pd.read_csv(S.REPLI, low_memory=False)
ex = pd.read_csv(S.EXCL); r = r[~r["report_id"].isin(ex["report_id"])]
vor = r["repli_version_of_record"].map(S.truthy)
r = r[(vor == 1.0) | (~r["claim_id"].isin(r.loc[vor == 1.0, "claim_id"]))].sort_values("report_id").drop_duplicates("claim_id")
print("replication types (claims):", r["repli_type"].value_counts().to_dict())
r = r[r["repli_type"] == "new data"]
r["y"] = r["repli_score_criteria_met"].map(S.truthy)
d = o.merge(r[["claim_id", "y"]], on="claim_id").dropna(subset=["y"])
rng = np.random.default_rng(S.SEED)
a = F.run_h1(d, rng); b = F.diff_with_ci(d[d["strong"] == 1.0], d[d["strong"] == 0.0], rng)
print(f"EXPLORATORY · new-data replications only · {len(d)} claims, {d['paper_id'].nunique()} papers")
for k, v in (("A S vs W", a), ("B card strong vs weak", b)):
    print(f"  {k}: {F.pct(v['rate_a'])} ({v['n_a']}, {v['papers_a']}) vs {F.pct(v['rate_b'])} ({v['n_b']}, {v['papers_b']}) · {F.pp(v['diff'])} [{F.pp(v['ci95'][0])}, {F.pp(v['ci95'][1])}] -> {F.h1_verdict(v)}")
