# 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