From ae1be9081b617b1d99e151869856375a71ff953b Mon Sep 17 00:00:00 2001 From: Masato Onodera Date: Tue, 4 Aug 2026 14:33:00 +0900 Subject: [PATCH 1/2] Fix FK violation from unnormalized filter columns and add flux/filter consistency check Missing filter_* values (NaN from masked ecsv columns, or empty strings from CSV columns read with keep_default_na=False) were only normalized to None in the uploader-specific target code path. Any other insert path (fluxstd, sky, user_pointing, and target without --from-uploader) went through add_backref_values, which had no such normalization, so a bare NaN was sent to the database and coerced to the literal string "NaN", violating the filter_name foreign key constraint. Centralize the normalization in add_backref_values so it covers every insert path, and add check_filter_flux_consistency to reject rows where a flux value is present but its filter is missing, since that combination is not physically meaningful. Co-Authored-By: Claude Sonnet 5 --- src/targetdb/utils.py | 108 ++++++++++++++++++++++++++++++++++++++---- tests/test_utils.py | 69 +++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 tests/test_utils.py diff --git a/src/targetdb/utils.py b/src/targetdb/utils.py index 78c8d97..9b75dce 100644 --- a/src/targetdb/utils.py +++ b/src/targetdb/utils.py @@ -371,6 +371,101 @@ def draw_diagram( raise ValueError(f"Unsupported generator: {generator}") +FILTER_BANDS = ["u", "v", "g", "r", "i", "z", "y", "j"] + + +def normalize_filter_columns(df): + """ + Normalize filter_* columns (e.g., filter_g, filter_i) in place so that + missing values are stored as None instead of being passed through to the + database as-is. + + filter_* columns are ForeignKey columns referencing filter_name.filter_name. + Depending on how the input was loaded, a missing value may show up as a + float NaN (e.g., from a masked ecsv column) or as an empty string (e.g., + from a CSV column read with keep_default_na=False). Either one fails the + foreign key constraint if inserted as-is (NaN is even coerced to the + literal string "NaN" by the database driver), so both are normalized to + None here. + + Parameters + ---------- + df : pandas.DataFrame + The DataFrame to normalize. Modified in place. + + Returns + ------- + df : pandas.DataFrame + The same DataFrame, for convenience. + """ + for band in FILTER_BANDS: + col = f"filter_{band}" + if col not in df.columns: + continue + df.loc[df[col].isna() | (df[col] == ""), col] = None + return df + + +FLUX_COLUMN_PREFIXES = ["", "psf_", "total_"] + + +def check_filter_flux_consistency(df): + """ + Raise an error if a band has a flux value but no filter. + + A flux (or flux error) measurement is meaningless without knowing which + filter it was measured through, so filter_{band} being None while + flux_{band} (or psf_flux_{band}, total_flux_{band}, and their + *_error_* counterparts) is set indicates a problem upstream in the input + data rather than something to silently accept. + + Parameters + ---------- + df : pandas.DataFrame + The DataFrame to check. filter_* columns are expected to already be + normalized (see `normalize_filter_columns`), i.e., missing filters + are represented as None rather than NaN or "". + + Returns + ------- + df : pandas.DataFrame + The same DataFrame, unmodified, for convenience. + + Raises + ------ + ValueError + If any row has a flux value for a band whose filter is None. + """ + for band in FILTER_BANDS: + filter_col = f"filter_{band}" + if filter_col not in df.columns: + continue + + missing_filter = df[filter_col].isna() + if not missing_filter.any(): + continue + + for prefix in FLUX_COLUMN_PREFIXES: + for kind in ["flux", "flux_error"]: + flux_col = f"{prefix}{kind}_{band}" + if flux_col not in df.columns: + continue + + inconsistent = missing_filter & df[flux_col].notna() + if inconsistent.any(): + bad_indices = df.index[inconsistent].tolist() + logger.error( + f"{flux_col} has values but {filter_col} is missing " + f"for rows {bad_indices}." + ) + raise ValueError( + f"{flux_col} has values but {filter_col} is missing " + f"for rows {bad_indices}. A flux value without a " + "filter is not allowed." + ) + return df + + def join_backref_values(df, db=None, table=None, key=None, check_key=None): """ Joins a DataFrame with a table from a database on a specified key and checks for non-existing keys. @@ -445,6 +540,8 @@ def add_backref_values(df, db=None, table=None, upload_id=None): """ df_tmp = df.copy() + normalize_filter_columns(df_tmp) + check_filter_flux_consistency(df_tmp) backref_tables, backref_keys, backref_check_keys = [], [], [] if table == "target": @@ -649,15 +746,10 @@ def make_target_df_from_uploader( logger.error(f"flux_type must be 'total' or 'psf'. {flux_type=}") raise ValueError(f"flux_type must be 'total' or 'psf'. {flux_type=}") - # fill missing values with None or NaN for filters and fluxes + normalize_filter_columns(df) + + # rename flux columns to match the flux_type for band in ["g", "r", "i", "z", "y", "j"]: - if f"filter_{band}" in df.columns: - # if the table is a masked table, fill the masked values with None for filters - # if the table is not a masked table, just pass - try: - df.loc[df[f"filter_{band}"].isna(), f"filter_{band}"] = None - except AttributeError: - pass if f"flux_{band}" in df.columns: logger.info(f"flux_{band} is renamed to {flux_type}_flux_{band}") df.rename( diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..f22856e --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +import numpy as np +import pandas as pd +import pytest + +from targetdb.utils import add_backref_values, check_filter_flux_consistency + + +def test_add_backref_values_normalizes_missing_filter_values_for_fluxstd(): + # filter_g/filter_i are ForeignKey columns to filter_name.filter_name. + # Empty entries in the input (NaN from a masked ecsv column, or an empty + # string from a CSV column read with keep_default_na=False) must be + # normalized to None, otherwise the literal "NaN"/"" is sent to the + # database and violates the foreign key constraint. This must hold for + # any table that goes through add_backref_values (fluxstd, sky, + # user_pointing, and target when not coming from the uploader), not just + # for the uploader-specific target code path. + df = pd.DataFrame( + { + "input_catalog_id": [1, 1, 1], + "filter_g": ["g_sdss", np.nan, ""], + "filter_i": ["i_sdss", "i_sdss", "i_sdss"], + } + ) + + df_out = add_backref_values(df, db=None, table="fluxstd") + + assert df_out["filter_g"].tolist() == ["g_sdss", None, None] + assert df_out["filter_i"].tolist() == ["i_sdss", "i_sdss", "i_sdss"] + + # None must round-trip as None (not float NaN) through to_dict, since + # that is what actually gets handed to bulk_insert_mappings. + records = df_out.to_dict(orient="records") + assert records[1]["filter_g"] is None + assert records[2]["filter_g"] is None + + +def test_add_backref_values_raises_when_flux_present_without_filter(): + # A flux value is meaningless without knowing which filter it was + # measured through, so filter_g missing while psf_flux_g is set must be + # rejected rather than silently inserted. + df = pd.DataFrame( + { + "input_catalog_id": [1, 1], + "filter_g": ["g_sdss", np.nan], + "psf_flux_g": [123.4, 56.7], + } + ) + + with pytest.raises(ValueError, match="psf_flux_g"): + add_backref_values(df, db=None, table="fluxstd") + + +@pytest.mark.parametrize( + "flux_col", ["flux_g", "psf_flux_g", "total_flux_g", "psf_flux_error_g"] +) +def test_check_filter_flux_consistency_raises_for_each_flux_column_kind(flux_col): + df = pd.DataFrame({"filter_g": [None], flux_col: [1.0]}) + + with pytest.raises(ValueError, match=flux_col): + check_filter_flux_consistency(df) + + +def test_check_filter_flux_consistency_allows_missing_filter_and_flux(): + df = pd.DataFrame({"filter_g": [None, "g_sdss"], "psf_flux_g": [np.nan, 1.0]}) + + # should not raise + check_filter_flux_consistency(df) From f0a0b947c10091bae223080e752e3619b5236072 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 4 Aug 2026 05:34:46 +0000 Subject: [PATCH 2/2] chore: update ER diagrams [skip ci] --- diagrams/erdiagram_targetdb_latest.pdf | Bin 47907 -> 47900 bytes docs/tbls/public.fluxstd.md | 2 +- docs/tbls/public.sky.md | 2 +- docs/tbls/public.target.md | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/diagrams/erdiagram_targetdb_latest.pdf b/diagrams/erdiagram_targetdb_latest.pdf index 0091ba30257568fa299bc88626e8ff20a2397b0e..1a76a9e18532419c073d1ee84208b748cec3e6d3 100644 GIT binary patch delta 31234 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ⅇJ+tF=tn%B6P+r|!VS%$!^Y|*F*K6J@;EI{ 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 delta 31239 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 z