Build Master Table (Known vs Predicted, Z=1–118)


# Build Master Table (Known vs Predicted, Z=1–118)
import pandas as pd

# Load strict known and predicted ledgers
known_csv = "/mnt/data/isotope_master_summary_Z1-118_strict.csv"
pred_csv = "/mnt/data/isotope_predicted_only_Z1-118.csv"

df_known = pd.read_csv(known_csv)[["Element (Z)", "Isotopes Known", "Stable", "Unstable"]]
df_pred = pd.read_csv(pred_csv)[["Element (Z)", "Predicted Isotopes (est.)"]]

# Merge
df_master = pd.merge(df_known, df_pred, on="Element (Z)", how="left")

# Totals
totals_master = {
    "Total elements": len(df_master),
    "Known isotopes": int(df_master["Isotopes Known"].sum()),
    "Stable isotopes (strict)": int(df_master["Stable"].sum()),
    "Unstable isotopes": int(df_master["Unstable"].sum()),
    "Predicted isotopes": int(df_master["Predicted Isotopes (est.)"].sum()),
}

# Save outputs
master_csv = "/mnt/data/isotope_master_table_known_vs_predicted.csv"
master_md = "/mnt/data/isotope_master_table_known_vs_predicted.md"

df_master.to_csv(master_csv, index=False)

md_text = df_master.to_markdown(index=False)
with open(master_md, "w", encoding="utf-8") as f:
    f.write("# Master Isotope Table (Known vs Predicted, Z = 1 → 118)\n\n")
    f.write(md_text + "\n\n")
    f.write("## Totals\n")
    for k, v in totals_master.items():
        f.write(f"- {k}: {v}\n")

from caas_jupyter_tools import display_dataframe_to_user
display_dataframe_to_user("Master Isotope Table (Known vs Predicted, Z = 1–118)", df_master)

totals_master, master_csv, master_md