Source code for rail.projects.path_funcs

"""A set of utility functions to extract data for plotting from rail files"""

from __future__ import annotations

import glob
import os

from rail.projects import RailProject


[docs] def get_z_true_path( project: RailProject, selection: str, flavor: str, tag: str, ) -> str: """Get the path to the the file with true redshfits for a particualar analysis selection and flavor Parameters ---------- project: RailProject Object with information about the structure of the current project selection: str Data selection in question, e.g., 'gold', or 'blended' flavor: str Analysis flavor in question, e.g., 'baseline' or 'zCosmos' tag: str File tag, e.g., 'test' or 'train', or 'train_zCosmos' Returns ------- path: str Path to the file in question """ return project.get_file_for_flavor(flavor, tag, selection=selection)
[docs] def get_ceci_pz_output_path( project: RailProject, selection: str, flavor: str, algo: str, ) -> str | None: """Get the paths to the file with redshfit estimates for a particualar analysis selection and flavor Parameters ---------- project: RailProject Object with information about the structure of the current project selection: str Data selection in question, e.g., 'gold', or 'blended' flavor: str Analysis flavor in question, e.g., 'baseline' or 'zCosmos' algo: str Algorithm we want the estimates for, e.g., 'knn', 'bpz', etc.. Returns ------- path: str | None Path to the file in question, if it exists, otherwise None """ outdir = project.get_path("ceci_output_dir", selection=selection, flavor=flavor) basename = f"output_estimate_{algo}.hdf5" outpath = os.path.join(outdir, basename) return outpath if os.path.exists(outpath) else None
[docs] def get_ceci_pz_model_paths( project: RailProject, selection: str, flavor: str, algo: str | None = None, ) -> list[str]: """Get the paths to the file with pz model for a particualar analysis selection and flavor Parameters ---------- project: Object with information about the structure of the current project selection: Data selection in question, e.g., 'gold', or 'blended' flavor: Analysis flavor in question, e.g., 'baseline' or 'zCosmos' algo: Algorithm we want the estimates for, e.g., 'knn', 'bpz', etc.. None will find all the existing model files. Returns ------- path: str | None Path to the file in question, if it exists, otherwise None """ outdir = project.get_path("ceci_output_dir", selection=selection, flavor=flavor) if algo is None: basepath = os.path.join(outdir, "model_inform_*.pkl") paths = sorted(glob.glob(basepath)) return [output for output in paths if os.path.exists(output)] basename = f"model_inform_{algo}.pkl" outpath = os.path.join(outdir, basename) return [outpath] if os.path.exists(outpath) else []
[docs] def get_ceci_nz_output_paths( project: RailProject, selection: str, flavor: str, algo: str, classifier: str, summarizer: str, ) -> list[str]: """Get the paths to the file with n(z) estimates for a particualar analysis selection and flavor Parameters ---------- project: RailProject Object with information about the structure of the current project selection: str Data selection in question, e.g., 'gold', or 'blended' flavor: str Analysis flavor in question, e.g., 'baseline' or 'zCosmos' algo: str Algorithm we want the estimates for, e.g., 'knn', 'bpz'], etc... classifier: str Algorithm we use to make tomograpic bin summarizer: str Algorithm we use to go from p(z) to n(z) Returns ------- paths: list[str] Paths to data """ outdir = project.get_path("ceci_output_dir", selection=selection, flavor=flavor) basename = f"single_NZ_summarize_{algo}_{classifier}_bin*_{summarizer}.hdf5" outpath = os.path.join(outdir, basename) paths = sorted(glob.glob(outpath)) return paths
[docs] def get_ceci_true_nz_output_paths( project: RailProject, selection: str, flavor: str, algo: str, classifier: str, ) -> list[str]: """Get the paths to the file with n(z) estimates for a particualar analysis selection and flavor Parameters ---------- project: RailProject Object with information about the structure of the current project selection: str Data selection in question, e.g., 'gold', or 'blended' flavor: str Analysis flavor in question, e.g., 'baseline' or 'zCosmos' algo: str Algorithm we want the estimates for, e.g., 'knn', 'bpz'], etc... classifier: str Algorithm we use to make tomograpic bin Returns ------- paths: list[str] Paths to data """ outdir = project.get_path("ceci_output_dir", selection=selection, flavor=flavor) basename = f"true_NZ_true_nz_{algo}_{classifier}_bin*.hdf5" outpath = os.path.join(outdir, basename) paths = sorted(glob.glob(outpath)) return paths