Spaces:
Runtime error
Runtime error
# --- | |
# jupyter: | |
# jupytext: | |
# formats: ipynb,py:percent | |
# text_representation: | |
# extension: .py | |
# format_name: percent | |
# format_version: '1.3' | |
# jupytext_version: 1.16.2 | |
# kernelspec: | |
# display_name: temps | |
# language: python | |
# name: temps | |
# --- | |
# %% [markdown] | |
# # FIGURE METRICS | |
# %% [markdown] | |
# ## METRICS FOR THE DIFFERENT METHODS ON THE WIDE FIELD SAMPLE | |
# %% [markdown] | |
# ### LOAD PYTHON MODULES | |
# %% | |
# %load_ext autoreload | |
# %autoreload 2 | |
# %% | |
import pandas as pd | |
import numpy as np | |
import os | |
from astropy.io import fits | |
from astropy.table import Table | |
import torch | |
from pathlib import Path | |
# %% | |
# matplotlib settings | |
from matplotlib import rcParams | |
import matplotlib.pyplot as plt | |
rcParams["mathtext.fontset"] = "stix" | |
rcParams["font.family"] = "STIXGeneral" | |
# %% | |
import temps | |
# %% | |
from temps.archive import Archive | |
from temps.utils import nmad | |
from temps.temps_arch import EncoderPhotometry, MeasureZ | |
from temps.temps import TempsModule | |
from temps.plots import plot_photoz | |
# %% | |
eval_methods = True | |
# %% [markdown] | |
# ### LOAD DATA | |
# %% | |
# define here the directory containing the photometric catalogues | |
parent_dir = Path( | |
"/data/astro/scratch/lcabayol/insight/data/Euclid_EXT_MER_PHZ_DC2_v1.5" | |
) | |
modules_dir = Path("../data/models/") | |
filename_calib = "euclid_cosmos_DC2_S1_v2.1_calib_clean.fits" | |
filename_valid = "euclid_cosmos_DC2_S1_v2.1_valid_matched.fits" | |
# %% | |
path_file = parent_dir / filename_valid # Creating the path to the file | |
hdu_list = fits.open(path_file) | |
cat = Table(hdu_list[1].data).to_pandas() | |
cat = cat[cat["FLAG_PHOT"] == 0] | |
cat = cat[cat["mu_class_L07"] == 1] | |
cat = cat[(cat["z_spec_S15"] > 0) | (cat["photo_z_L15"] > 0)] | |
cat = cat[cat["MAG_VIS"] < 25] | |
# %% | |
ztarget = [ | |
cat["z_spec_S15"].values[ii] | |
if cat["z_spec_S15"].values[ii] > 0 | |
else cat["photo_z_L15"].values[ii] | |
for ii in range(len(cat)) | |
] | |
specz_or_photo = [ | |
0 if cat["z_spec_S15"].values[ii] > 0 else 1 for ii in range(len(cat)) | |
] | |
ID = cat["ID"] | |
VISmag = cat["MAG_VIS"] | |
zsflag = cat["reliable_S15"] | |
# %% | |
photoz_archive = Archive( | |
path_calib=parent_dir / filename_calib, | |
path_valid=parent_dir / filename_valid, | |
only_zspec=False, | |
) | |
f = photoz_archive._extract_fluxes(catalogue=cat) | |
col = photoz_archive._to_colors(f) | |
# %% [markdown] | |
# ### EVALUATE USING TRAINED MODELS | |
# %% | |
if eval_methods: | |
dfs = {} | |
for il, lab in enumerate(["z", "L15", "DA"]): | |
nn_features = EncoderPhotometry() | |
nn_features.load_state_dict( | |
torch.load( | |
modules_dir / f"modelF_{lab}.pt", map_location=torch.device("cpu") | |
) | |
) | |
nn_z = MeasureZ(num_gauss=6) | |
nn_z.load_state_dict( | |
torch.load( | |
modules_dir / f"modelZ_{lab}.pt", map_location=torch.device("cpu") | |
) | |
) | |
temps_module = TempsModule(nn_features, nn_z) | |
z, pz, odds = temps_module.get_pz( | |
input_data=torch.Tensor(col), return_pz=True, return_flag=True | |
) | |
# Create a DataFrame with the desired columns | |
df = pd.DataFrame( | |
np.c_[ID, VISmag, z, odds, ztarget, zsflag, specz_or_photo], | |
columns=["ID", "VISmag", "z", "odds", "ztarget", "zsflag", "S15_L15_flag"], | |
) | |
# Calculate additional columns or operations if needed | |
df["zwerr"] = (df.z - df.ztarget) / (1 + df.ztarget) | |
# Drop any rows with NaN values | |
df = df.dropna() | |
# Assign the DataFrame to a key in the dictionary | |
dfs[lab] = df | |
# %% | |
dfs["z"]["zwerr"] = (dfs["z"].z - dfs["z"].ztarget) / (1 + dfs["z"].ztarget) | |
dfs["L15"]["zwerr"] = (dfs["L15"].z - dfs["L15"].ztarget) / (1 + dfs["L15"].ztarget) | |
dfs["DA"]["zwerr"] = (dfs["DA"].z - dfs["DA"].ztarget) / (1 + dfs["DA"].ztarget) | |
# %% [markdown] | |
# ### LOAD CATALOGUES FROM PREVIOUS TRAINING | |
# %% | |
if not eval_methods: | |
dfs = {} | |
dfs["z"] = pd.read_csv(parent_dir / "predictions_specztraining.csv", header=0) | |
dfs["L15"] = pd.read_csv(parent_dir / "predictions_speczL15training.csv", header=0) | |
dfs["DA"] = pd.read_csv(parent_dir / "predictions_speczDAtraining.csv", header=0) | |
# %% [markdown] | |
# ### MAKE PLOT | |
# %% | |
df_list = [dfs["z"], dfs["L15"], dfs["DA"]] | |
# %% | |
plot_photoz( | |
df_list, | |
nbins=8, | |
xvariable="VISmag", | |
metric="nmad", | |
type_bin="bin", | |
label_list=["zs", "zs+L15", r"TEMPS"], | |
save=False, | |
samp="L15", | |
) | |
# %% | |