diff --git a/alembic/latiss/versions/535c454d7311_add_quicklook.py b/alembic/latiss/versions/535c454d7311_add_quicklook.py new file mode 100644 index 0000000..1777a72 --- /dev/null +++ b/alembic/latiss/versions/535c454d7311_add_quicklook.py @@ -0,0 +1,652 @@ +"""add quicklook + +Revision ID: 535c454d7311 +Revises: 13a360a555ca +Create Date: 2024-06-18 09:51:14.715422+00:00 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql +from sqlalchemy.dialects import oracle +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = "535c454d7311" +down_revision: Union[str, None] = "13a360a555ca" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "visit1_quicklook", + sa.Column( + "visit_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "n_inputs", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of CCDs used to compute the visit aggregates.", + ), + sa.Column( + "astrom_offset_mean", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches.", + ), + sa.Column( + "astrom_offset_std", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches.", + ), + sa.Column( + "eff_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time.", + ), + sa.Column( + "eff_time_psf_sigma_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale.", + ), + sa.Column( + "eff_time_sky_bg_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky background scale.", + ), + sa.Column( + "eff_time_zero_point_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale.", + ), + sa.Column( + "max_dist_to_nearest_psf", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star.", + ), + sa.Column( + "mean_var", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane.", + ), + sa.Column( + "n_psf_star", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model.", + ), + sa.Column( + "psf_area", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area.", + ), + sa.Column( + "psf_ixx", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment.", + ), + sa.Column( + "psf_ixy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment.", + ), + sa.Column( + "psf_iyy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment", + ), + sa.Column( + "psf_sigma", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF sigma.", + ), + sa.Column( + "psf_star_delta_e1_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e1_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars.", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared.", + ), + sa.Column( + "psf_trace_radius_delta", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels.", + ), + sa.Column( + "sky_bg", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background.", + ), + sa.Column( + "sky_noise", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background.", + ), + sa.Column( + "seeing_zenith_500nm", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1.", + ), + sa.Column( + "zero_point", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point.", + ), + sa.Column( + "low_snr_source_count", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of low signal-to-noise-ratio sources.", + ), + sa.Column( + "high_snr_source_count", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of high signal-to-noise-ratio sources.", + ), + sa.ForeignKeyConstraint(["visit_id"], ["cdb_latiss.exposure.exposure_id"], name="fk_obs_id"), + sa.PrimaryKeyConstraint("visit_id"), + schema="cdb_latiss", + ) + op.create_table( + "ccdvisit1_quicklook", + sa.Column( + "ccdvisit_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "s_ra", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Computed right ascension of CCD center.", + ), + sa.Column( + "s_dec", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Computed declination of CCD center.", + ), + sa.Column( + "zenith_distance", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Zenith distance at observation mid-point.", + ), + sa.Column( + "photometric_calib", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Conversion from DN to nanojansky.", + ), + sa.Column( + "psf_sigma", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF model second-moments determinant radius (center of chip).", + ), + sa.Column( + "sky_bg", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background.", + ), + sa.Column( + "sky_noise", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background.", + ), + sa.Column( + "zero_point", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point.", + ), + sa.Column( + "seeing_zenith_500nm", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1.", + ), + sa.Column( + "astrom_offset_mean", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches.", + ), + sa.Column( + "astrom_offset_std", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches.", + ), + sa.Column( + "eff_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time.", + ), + sa.Column( + "eff_time_psf_sigma_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale.", + ), + sa.Column( + "eff_time_psf_sky_bg_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky backgroundscale.", + ), + sa.Column( + "eff_time_psf_zero_point_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale.", + ), + sa.Column( + "mean_var", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane.", + ), + sa.Column( + "n_psf_star", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model.", + ), + sa.Column( + "psf_area", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area.", + ), + sa.Column( + "psf_ixx", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment.", + ), + sa.Column( + "psf_ixy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment.", + ), + sa.Column( + "psf_iyy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment.", + ), + sa.Column( + "psf_star_delta_e1_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e1_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars.", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared.", + ), + sa.Column( + "psf_trace_radius_delta", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels.", + ), + sa.Column( + "max_dist_to_nearest_psf", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star.", + ), + sa.ForeignKeyConstraint(["ccdvisit_id"], ["cdb_latiss.ccdexposure.ccdexposure_id"], name="fk_obs_id"), + sa.PrimaryKeyConstraint("ccdvisit_id"), + schema="cdb_latiss", + ) + op.alter_column( + "exposure", + "band", + existing_type=sa.VARCHAR(length=32), + comment="Name of the band used to take the exposure. Abstract filter that is not associated with a particular instrument.", + existing_comment="Name of the band used to take the exposure where this source was. measured. Abstract filter that is not associated with a particular instrument.", + existing_nullable=True, + schema="cdb_latiss", + ) + op.drop_column("exposure", "shutter_close_end", schema="cdb_latiss") + op.drop_column("exposure", "shutter_close_begin", schema="cdb_latiss") + op.drop_column("exposure", "shutter_open_begin", schema="cdb_latiss") + op.drop_column("exposure", "shutter_open_end", schema="cdb_latiss") + op.execute("CREATE VIEW cdb_latiss.ccdvisit1 AS SELECT * FROM cdb_latiss.ccdexposure") + op.execute("ALTER TABLE cdb_latiss.ccdvisit1 RENAME COLUMN ccdexposure_id TO ccdvisit_id") + op.execute("CREATE VIEW cdb_latiss.visit1 AS SELECT * FROM cdb_latiss.exposure") + op.execute("ALTER TABLE cdb_latiss.visit1 RENAME COLUMN exposure_id TO visit_id") + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "exposure", + sa.Column( + "shutter_open_end", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + comment="End of shutter opening. TAI, accurate to 10ms.", + ), + schema="cdb_latiss", + ) + op.add_column( + "exposure", + sa.Column( + "shutter_open_begin", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + comment="Start of shutter opening. TAI, accurate to 10ms.", + ), + schema="cdb_latiss", + ) + op.add_column( + "exposure", + sa.Column( + "shutter_close_begin", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + comment="Start of shutter closing. TAI, accurate to 10ms.", + ), + schema="cdb_latiss", + ) + op.add_column( + "exposure", + sa.Column( + "shutter_close_end", + postgresql.TIMESTAMP(), + autoincrement=False, + nullable=True, + comment="End of shutter opening. TAI, accurate to 10ms.", + ), + schema="cdb_latiss", + ) + op.alter_column( + "exposure", + "band", + existing_type=sa.VARCHAR(length=32), + comment="Name of the band used to take the exposure where this source was. measured. Abstract filter that is not associated with a particular instrument.", + existing_comment="Name of the band used to take the exposure. Abstract filter that is not associated with a particular instrument.", + existing_nullable=True, + schema="cdb_latiss", + ) + op.drop_table("ccdvisit1_quicklook", schema="cdb_latiss") + op.drop_table("visit1_quicklook", schema="cdb_latiss") + op.execute("DROP VIEW cdb_latiss.visit1") + op.execute("DROP VIEW cdb_latiss.ccdvisit1") + # ### end Alembic commands ### diff --git a/alembic/lsstcomcam/versions/334168d54b40_initial_version.py b/alembic/lsstcomcam/versions/334168d54b40_initial_version.py new file mode 100644 index 0000000..8067991 --- /dev/null +++ b/alembic/lsstcomcam/versions/334168d54b40_initial_version.py @@ -0,0 +1,1741 @@ +"""initial version + +Revision ID: 334168d54b40 +Revises: +Create Date: 2024-06-18 10:11:27.736157+00:00 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql +from sqlalchemy.dialects import oracle + +# revision identifiers, used by Alembic. +revision: str = "334168d54b40" +down_revision: Union[str, None] = None +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "ccdexposure_flexdata_schema", + sa.Column( + "key", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=False, + comment="Name of key.", + ), + sa.Column( + "dtype", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=False, + comment="Name of the data type of the value, one of bool, int, float, str.", + ), + sa.Column( + "doc", + sa.TEXT() + .with_variant(mysql.LONGTEXT(), "mysql") + .with_variant(sa.CLOB(), "oracle") + .with_variant(sa.TEXT(), "postgresql"), + nullable=False, + comment="Documentation string.", + ), + sa.Column( + "unit", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=True, + comment="Unit for the value. Should be from the IVOA (https://www.ivoa.net/documents/VOUnits/) or astropy.", + ), + sa.Column( + "ucd", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=True, + comment="IVOA Unified Content Descriptor (https://www.ivoa.net/documents/UCD1+/).", + ), + sa.PrimaryKeyConstraint("key"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "exposure", + sa.Column( + "exposure_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "exposure_name", + sa.VARCHAR(length=20) + .with_variant(mysql.VARCHAR(length=20), "mysql") + .with_variant(oracle.VARCHAR2(length=20), "oracle") + .with_variant(sa.VARCHAR(length=20), "postgresql"), + nullable=False, + comment="Official name of the exposure.", + ), + sa.Column( + "controller", + sa.VARCHAR(length=1) + .with_variant(mysql.VARCHAR(length=1), "mysql") + .with_variant(oracle.VARCHAR2(length=1), "oracle") + .with_variant(sa.VARCHAR(length=1), "postgresql"), + nullable=False, + comment="The abbreviation of the controller used for the observation (O, C).", + ), + sa.Column( + "day_obs", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=False, + comment="Day of observation.", + ), + sa.Column( + "seq_num", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=False, + comment="Sequence number.", + ), + sa.Column( + "physical_filter", + sa.VARCHAR(length=32) + .with_variant(mysql.VARCHAR(length=32), "mysql") + .with_variant(oracle.VARCHAR2(length=32), "oracle") + .with_variant(sa.VARCHAR(length=32), "postgresql"), + nullable=True, + comment="ID of physical filter, the filter associated with a particular instrument.", + ), + sa.Column( + "band", + sa.VARCHAR(length=32) + .with_variant(mysql.VARCHAR(length=32), "mysql") + .with_variant(oracle.VARCHAR2(length=32), "oracle") + .with_variant(sa.VARCHAR(length=32), "postgresql"), + nullable=True, + comment="Name of the band used to take the exposure. Abstract filter that is not associated with a particular instrument.", + ), + sa.Column( + "s_ra", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Right ascension of targeted focal plane center.", + ), + sa.Column( + "s_dec", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Declination of targeted focal plane center.", + ), + sa.Column( + "sky_rotation", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Targeted sky rotation angle.", + ), + sa.Column( + "azimuth_start", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Azimuth of focal plane center at the start of the exposure.", + ), + sa.Column( + "azimuth_end", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Azimuth of focal plane center at the end of the exposure.", + ), + sa.Column( + "azimuth", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Azimuth of focal plane center at the middle of the exposure.", + ), + sa.Column( + "altitude_start", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Altitude of focal plane center at the start of the exposure.", + ), + sa.Column( + "altitude_end", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Altitude of focal plane center at the end of the exposure.", + ), + sa.Column( + "altitude", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Altitude of focal plane center at the middle of the exposure.", + ), + sa.Column( + "zenith_distance_start", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Zenith distance at the start of the exposure.", + ), + sa.Column( + "zenith_distance_end", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Zenith distance at the end of the exposure.", + ), + sa.Column( + "zenith_distance", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Zenith distance at the middle of the exposure.", + ), + sa.Column( + "airmass", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Airmass of the observed line of sight at the middle of the exposure.", + ), + sa.Column( + "exp_midpt", + sa.TIMESTAMP(), + nullable=True, + comment="Midpoint time for exposure at the fiducial center of the focal plane. array. TAI, accurate to 10ms.", + ), + sa.Column( + "exp_midpt_mjd", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Midpoint time for exposure at the fiducial center of the focal plane. array in MJD. TAI, accurate to 10ms.", + ), + sa.Column( + "obs_start", + sa.TIMESTAMP(), + nullable=True, + comment="Start time of the exposure at the fiducial center of the focal plane. array, TAI, accurate to 10ms.", + ), + sa.Column( + "obs_start_mjd", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Start of the exposure in MJD, TAI, accurate to 10ms.", + ), + sa.Column( + "obs_end", + sa.TIMESTAMP(), + nullable=True, + comment="End time of the exposure at the fiducial center of the focal plane. array, TAI, accurate to 10ms.", + ), + sa.Column( + "obs_end_mjd", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="End of the exposure in MJD, TAI, accurate to 10ms.", + ), + sa.Column( + "exp_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Spatially-averaged duration of exposure, accurate to 10ms.", + ), + sa.Column( + "shut_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Spatially-averaged shutter-open duration, accurate to 10ms.", + ), + sa.Column( + "dark_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Duration from last clear to readout, accurate to 10ms.", + ), + sa.Column( + "group_id", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=True, + comment="Identifier for the group that this exposure is part of.", + ), + sa.Column( + "cur_index", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number (1-based) of the observation within its group.", + ), + sa.Column( + "max_index", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Expected number of observations within the group.", + ), + sa.Column( + "img_type", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=True, + comment="Type of exposure taken.", + ), + sa.Column( + "emulated", + sa.BOOLEAN() + .with_variant(sa.BOOLEAN(), "mysql") + .with_variant(oracle.NUMBER(precision=1, asdecimal=False), "oracle") + .with_variant(sa.BOOLEAN(), "postgresql"), + nullable=True, + comment="True if the exposure was taken in emulation mode.", + ), + sa.Column( + "science_program", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=True, + comment="Science program.", + ), + sa.Column( + "observation_reason", + sa.VARCHAR(length=68) + .with_variant(mysql.VARCHAR(length=68), "mysql") + .with_variant(oracle.VARCHAR2(length=68), "oracle") + .with_variant(sa.VARCHAR(length=68), "postgresql"), + nullable=True, + comment="Reason for the observation.", + ), + sa.Column( + "target_name", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=True, + comment="Target of the observation.", + ), + sa.Column( + "air_temp", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Outside air temperature in degC.", + ), + sa.Column( + "pressure", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Outside air pressure.", + ), + sa.Column( + "humidity", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Outside relative humidity.", + ), + sa.Column( + "wind_speed", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Outside wind speed.", + ), + sa.Column( + "wind_dir", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Wind direction.", + ), + sa.Column( + "dimm_seeing", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Seeing as measured by external DIMM (FWHM).", + ), + sa.Column( + "focus_z", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Focus Z position.", + ), + sa.Column( + "simulated", + sa.BOOLEAN() + .with_variant(sa.BOOLEAN(), "mysql") + .with_variant(oracle.NUMBER(precision=1, asdecimal=False), "oracle") + .with_variant(sa.BOOLEAN(), "postgresql"), + nullable=True, + comment="Were any control system components simulated?", + ), + sa.Column( + "s_region", + sa.VARCHAR(length=1024) + .with_variant(mysql.VARCHAR(length=1024), "mysql") + .with_variant(oracle.VARCHAR2(length=1024), "oracle") + .with_variant(sa.VARCHAR(length=1024), "postgresql"), + nullable=True, + comment="Sky region in STC-S format (https://www.ivoa.net/documents/STC-S/20130917/index.html).", + ), + sa.PrimaryKeyConstraint("exposure_id"), + sa.UniqueConstraint("day_obs", "seq_num", name="un_day_obs_seq_num"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "exposure_flexdata_schema", + sa.Column( + "key", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=False, + comment="Name of key.", + ), + sa.Column( + "dtype", + sa.VARCHAR(length=64) + .with_variant(mysql.VARCHAR(length=64), "mysql") + .with_variant(oracle.VARCHAR2(length=64), "oracle") + .with_variant(sa.VARCHAR(length=64), "postgresql"), + nullable=False, + comment="Name of the data type of the value, one of bool, int, float, str.", + ), + sa.Column( + "doc", + sa.TEXT() + .with_variant(mysql.LONGTEXT(), "mysql") + .with_variant(sa.CLOB(), "oracle") + .with_variant(sa.TEXT(), "postgresql"), + nullable=False, + comment="Documentation string.", + ), + sa.Column( + "unit", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=True, + comment="Unit for the value. Should be from the IVOA (https://www.ivoa.net/documents/VOUnits/) or astropy.", + ), + sa.Column( + "ucd", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=True, + comment="IVOA Unified Content Descriptor (https://www.ivoa.net/documents/UCD1+/).", + ), + sa.PrimaryKeyConstraint("key"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "ccdexposure", + sa.Column( + "ccdexposure_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "exposure_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Identifier of the exposure.", + ), + sa.Column( + "detector", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=False, + comment="Number of the detector in the focal plane.", + ), + sa.Column( + "s_region", + sa.VARCHAR(length=1024) + .with_variant(mysql.VARCHAR(length=1024), "mysql") + .with_variant(oracle.VARCHAR2(length=1024), "oracle") + .with_variant(sa.VARCHAR(length=1024), "postgresql"), + nullable=True, + comment="Sky region in STC-S format (https://www.ivoa.net/documents/STC-S/20130917/index.html).", + ), + sa.ForeignKeyConstraint( + ["exposure_id"], ["cdb_lsstcomcam.exposure.exposure_id"], name="fk_exposure_id" + ), + sa.PrimaryKeyConstraint("ccdexposure_id"), + sa.UniqueConstraint("exposure_id", "detector", name="un_exposure_id_detector"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "exposure_flexdata", + sa.Column( + "obs_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "key", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=False, + comment="Name of key.", + ), + sa.Column( + "value", + sa.TEXT() + .with_variant(mysql.LONGTEXT(), "mysql") + .with_variant(sa.CLOB(), "oracle") + .with_variant(sa.TEXT(), "postgresql"), + nullable=True, + comment="Content of value as a string.", + ), + sa.ForeignKeyConstraint(["key"], ["cdb_lsstcomcam.exposure_flexdata_schema.key"], name="fk_key"), + sa.ForeignKeyConstraint(["obs_id"], ["cdb_lsstcomcam.exposure.exposure_id"], name="fk_obs_id"), + sa.PrimaryKeyConstraint("obs_id", "key"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "visit1_quicklook", + sa.Column( + "visit_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "n_inputs", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of CCDs used to compute the visit aggregates.", + ), + sa.Column( + "astrom_offset_mean_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches (minimum across all detectors).", + ), + sa.Column( + "astrom_offset_mean_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches (maximum across all detectors).", + ), + sa.Column( + "astrom_offset_mean_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches (median across all detectors).", + ), + sa.Column( + "astrom_offset_std_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches (minimum across all detectors).", + ), + sa.Column( + "astrom_offset_std_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches (maximum across all detectors).", + ), + sa.Column( + "astrom_offset_std_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches (median across all detectors).", + ), + sa.Column( + "eff_time_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time (minimum across all detectors).", + ), + sa.Column( + "eff_time_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time (maximum across all detectors).", + ), + sa.Column( + "eff_time_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time (median across all detectors).", + ), + sa.Column( + "eff_time_psf_sigma_scale_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale (minimum across all detectors).", + ), + sa.Column( + "eff_time_psf_sigma_scale_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale (maximum across all detectors).", + ), + sa.Column( + "eff_time_psf_sigma_scale_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale (median across all detectors).", + ), + sa.Column( + "eff_time_sky_bg_scale_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky background scale (minimum across all detectors).", + ), + sa.Column( + "eff_time_sky_bg_scale_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky background scale (maximum across all detectors).", + ), + sa.Column( + "eff_time_sky_bg_scale_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky background scale (median across all detectors).", + ), + sa.Column( + "eff_time_zero_point_scale_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale (minimum across all detectors).", + ), + sa.Column( + "eff_time_zero_point_scale_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale (maximum across all detectors).", + ), + sa.Column( + "eff_time_zero_point_scale_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale (median across all detectors).", + ), + sa.Column( + "max_dist_to_nearest_psf_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star (minimum across all detectors).", + ), + sa.Column( + "max_dist_to_nearest_psf_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star (maximum across all detectors).", + ), + sa.Column( + "max_dist_to_nearest_psf_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star (median across all detectors).", + ), + sa.Column( + "mean_var_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane (minimum across all detectors).", + ), + sa.Column( + "mean_var_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane (maximum across all detectors).", + ), + sa.Column( + "mean_var_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane (median across all detectors).", + ), + sa.Column( + "n_psf_star_min", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model (minimum across all detectors).", + ), + sa.Column( + "n_psf_star_max", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model (maximum across all detectors).", + ), + sa.Column( + "n_psf_star_median", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model (median across all detectors).", + ), + sa.Column( + "n_psf_star_total", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model (total across all detectors).", + ), + sa.Column( + "psf_area_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area (minimum across all detectors).", + ), + sa.Column( + "psf_area_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area (maximum across all detectors).", + ), + sa.Column( + "psf_area_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area (median across all detectors).", + ), + sa.Column( + "psf_ixx_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment (minimum across all detectors).", + ), + sa.Column( + "psf_ixx_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment (maximum across all detectors).", + ), + sa.Column( + "psf_ixx_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment (median across all detectors).", + ), + sa.Column( + "psf_ixy_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment (minimum across all detectors).", + ), + sa.Column( + "psf_ixy_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment (maximum across all detectors).", + ), + sa.Column( + "psf_ixy_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment (median across all detectors).", + ), + sa.Column( + "psf_iyy_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment (minimum across all detectors).", + ), + sa.Column( + "psf_iyy_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment (maximum across all detectors).", + ), + sa.Column( + "psf_iyy_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment (median across all detectors).", + ), + sa.Column( + "psf_sigma_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF sigma (minimum across all detectors).", + ), + sa.Column( + "psf_sigma_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF sigma (maximum across all detectors).", + ), + sa.Column( + "psf_sigma_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF sigma (median across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_median_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_median_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_median_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars (median across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_scatter_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_scatter_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_e1_scatter_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars (median across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_median_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_median_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_median_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars (median across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_scatter_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_scatter_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_e2_scatter_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars (median across all detectors).", + ), + sa.Column( + "psf_star_delta_size_median_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_size_median_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_size_median_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars (median across all detectors).", + ), + sa.Column( + "psf_star_delta_size_scatter_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars (minimum across all detectors).", + ), + sa.Column( + "psf_star_delta_size_scatter_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars (maximum across all detectors).", + ), + sa.Column( + "psf_star_delta_size_scatter_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars (median across all detectors).", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared (minimum across all detectors).", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared (maximum across all detectors).", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared (median across all detectors).", + ), + sa.Column( + "psf_trace_radius_delta_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels (minimum across all detectors).", + ), + sa.Column( + "psf_trace_radius_delta_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels (maximum across all detectors).", + ), + sa.Column( + "psf_trace_radius_delta_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels (median across all detectors).", + ), + sa.Column( + "sky_bg_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background (minimum across all detectors).", + ), + sa.Column( + "sky_bg_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background (maximum across all detectors).", + ), + sa.Column( + "sky_bg_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background (median across all detectors).", + ), + sa.Column( + "sky_noise_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background (minimum across all detectors).", + ), + sa.Column( + "sky_noise_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background (maximum across all detectors).", + ), + sa.Column( + "sky_noise_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background (median across all detectors).", + ), + sa.Column( + "seeing_zenith_500nm_min", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1 (minimum across all detectors).", + ), + sa.Column( + "seeing_zenith_500nm_max", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1 (maximum across all detectors).", + ), + sa.Column( + "seeing_zenith_500nm_median", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1 (median across all detectors).", + ), + sa.Column( + "zero_point_min", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point (minimum across all detectors).", + ), + sa.Column( + "zero_point_max", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point (maximum across all detectors).", + ), + sa.Column( + "zero_point_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point (median across all detectors).", + ), + sa.Column( + "low_snr_source_count_min", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of low signal-to-noise-ratio sources (minimum across all detectors).", + ), + sa.Column( + "low_snr_source_count_max", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of low signal-to-noise-ratio sources (maximum across all detectors).", + ), + sa.Column( + "low_snr_source_count_median", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of low signal-to-noise-ratio sources (median across all detectors).", + ), + sa.Column( + "low_snr_source_count_total", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of low signal-to-noise-ratio sources (total across all detectors).", + ), + sa.Column( + "high_snr_source_count_min", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of high signal-to-noise-ratio sources (minimum across all detectors).", + ), + sa.Column( + "high_snr_source_count_max", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of high signal-to-noise-ratio sources (maximum across all detectors).", + ), + sa.Column( + "high_snr_source_count_median", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of high signal-to-noise-ratio sources (median across all detectors).", + ), + sa.Column( + "high_snr_source_count_total", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Count of high signal-to-noise-ratio sources (total across all detectors).", + ), + sa.ForeignKeyConstraint(["visit_id"], ["cdb_lsstcomcam.exposure.exposure_id"], name="fk_obs_id"), + sa.PrimaryKeyConstraint("visit_id"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "ccdexposure_camera", + sa.Column( + "ccdexposure_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "temp_set", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Temperature setpoint of CCD in degC.", + ), + sa.Column( + "ccd_temp", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Temperature of CCD in degC.", + ), + sa.ForeignKeyConstraint( + ["ccdexposure_id"], ["cdb_lsstcomcam.ccdexposure.ccdexposure_id"], name="fk_ccdexposure_id" + ), + sa.PrimaryKeyConstraint("ccdexposure_id"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "ccdexposure_flexdata", + sa.Column( + "obs_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "key", + sa.VARCHAR(length=128) + .with_variant(mysql.VARCHAR(length=128), "mysql") + .with_variant(oracle.VARCHAR2(length=128), "oracle") + .with_variant(sa.VARCHAR(length=128), "postgresql"), + nullable=False, + comment="Name of key.", + ), + sa.Column( + "value", + sa.TEXT() + .with_variant(mysql.LONGTEXT(), "mysql") + .with_variant(sa.CLOB(), "oracle") + .with_variant(sa.TEXT(), "postgresql"), + nullable=True, + comment="Content of value as a string.", + ), + sa.ForeignKeyConstraint(["key"], ["cdb_lsstcomcam.ccdexposure_flexdata_schema.key"], name="fk_key"), + sa.ForeignKeyConstraint(["obs_id"], ["cdb_lsstcomcam.ccdexposure.ccdexposure_id"], name="fk_obs_id"), + sa.PrimaryKeyConstraint("obs_id", "key"), + schema="cdb_lsstcomcam", + ) + op.create_table( + "ccdvisit1_quicklook", + sa.Column( + "ccdvisit_id", + sa.BIGINT() + .with_variant(mysql.BIGINT(), "mysql") + .with_variant(oracle.NUMBER(precision=38, scale=0, asdecimal=False), "oracle") + .with_variant(sa.BIGINT(), "postgresql"), + nullable=False, + comment="Unique identifier.", + ), + sa.Column( + "s_ra", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Computed right ascension of CCD center.", + ), + sa.Column( + "s_dec", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Central Spatial Position in ICRS; Computed declination of CCD center.", + ), + sa.Column( + "zenith_distance", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Zenith distance at observation mid-point.", + ), + sa.Column( + "photometric_calib", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Conversion from DN to nanojansky.", + ), + sa.Column( + "psf_sigma", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF model second-moments determinant radius (center of chip).", + ), + sa.Column( + "sky_bg", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Average sky background.", + ), + sa.Column( + "sky_noise", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="RMS noise of the sky background.", + ), + sa.Column( + "zero_point", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Photometric zero point.", + ), + sa.Column( + "seeing_zenith_500nm", + sa.DOUBLE() + .with_variant(mysql.DOUBLE(asdecimal=True), "mysql") + .with_variant(oracle.BINARY_DOUBLE(), "oracle") + .with_variant(sa.DOUBLE_PRECISION(), "postgresql"), + nullable=True, + comment="Measured PSF sigma, corrected to 500nm and an airmass of 1.", + ), + sa.Column( + "astrom_offset_mean", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean offset of astrometric calibration matches.", + ), + sa.Column( + "astrom_offset_std", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Standard deviation of offsets of astrometric calibration matches.", + ), + sa.Column( + "eff_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time.", + ), + sa.Column( + "eff_time_psf_sigma_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale.", + ), + sa.Column( + "eff_time_psf_sky_bg_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky backgroundscale.", + ), + sa.Column( + "eff_time_psf_zero_point_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale.", + ), + sa.Column( + "mean_var", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Mean of the variance plane.", + ), + sa.Column( + "n_psf_star", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of stars used for PSF model.", + ), + sa.Column( + "psf_area", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area.", + ), + sa.Column( + "psf_ixx", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment.", + ), + sa.Column( + "psf_ixy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment.", + ), + sa.Column( + "psf_iyy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment.", + ), + sa.Column( + "psf_star_delta_e1_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e1_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E1 residual (starE1 - psfE1) for PSF stars.", + ), + sa.Column( + "psf_star_delta_e2_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of E2 residual (starE2 - psfE2) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_median", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Median size residual (starSize - psfSize) for PSF stars.", + ), + sa.Column( + "psf_star_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual (starSize - psfSize) for stars.", + ), + sa.Column( + "psf_star_scaled_delta_size_scatter", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Scatter (via MAD) of size residual scaled by median size squared.", + ), + sa.Column( + "psf_trace_radius_delta", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Delta (max - min) of model PSF trace radius values evaluated on a grid of unmasked pixels.", + ), + sa.Column( + "max_dist_to_nearest_psf", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Maximum distance of an unmasked pixel to its nearest model PSF star.", + ), + sa.ForeignKeyConstraint( + ["ccdvisit_id"], ["cdb_lsstcomcam.ccdexposure.ccdexposure_id"], name="fk_obs_id" + ), + sa.PrimaryKeyConstraint("ccdvisit_id"), + schema="cdb_lsstcomcam", + ) + op.execute("CREATE VIEW cdb_lsstcomcam.ccdvisit1 AS SELECT * FROM cdb_lsstcomcam.ccdexposure") + op.execute("ALTER TABLE cdb_lsstcomcam.ccdvisit1 RENAME COLUMN ccdexposure_id TO ccdvisit_id") + op.execute("CREATE VIEW cdb_lsstcomcam.visit1 AS SELECT * FROM cdb_lsstcomcam.exposure") + op.execute("ALTER TABLE cdb_lsstcomcam.visit1 RENAME COLUMN exposure_id TO visit_id") + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table("ccdvisit1_quicklook", schema="cdb_lsstcomcam") + op.drop_table("ccdexposure_flexdata", schema="cdb_lsstcomcam") + op.drop_table("ccdexposure_camera", schema="cdb_lsstcomcam") + op.drop_table("visit1_quicklook", schema="cdb_lsstcomcam") + op.drop_table("exposure_flexdata", schema="cdb_lsstcomcam") + op.drop_table("ccdexposure", schema="cdb_lsstcomcam") + op.drop_table("exposure_flexdata_schema", schema="cdb_lsstcomcam") + op.drop_table("exposure", schema="cdb_lsstcomcam") + op.drop_table("ccdexposure_flexdata_schema", schema="cdb_lsstcomcam") + op.execute("DROP VIEW cdb_lsstcomcam.ccdvisit1") + op.execute("DROP VIEW cdb_lsstcomcam.visit1") + # ### end Alembic commands ### diff --git a/alembic/lsstcomcamsim/versions/c07a817a5c95_tweak_quicklook.py b/alembic/lsstcomcamsim/versions/c07a817a5c95_tweak_quicklook.py new file mode 100644 index 0000000..c0b6214 --- /dev/null +++ b/alembic/lsstcomcamsim/versions/c07a817a5c95_tweak_quicklook.py @@ -0,0 +1,153 @@ +"""tweak quicklook + +Revision ID: c07a817a5c95 +Revises: 6d5561651761 +Create Date: 2024-06-18 10:02:09.572578+00:00 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql +from sqlalchemy.dialects import oracle + +# revision identifiers, used by Alembic. +revision: str = "c07a817a5c95" +down_revision: Union[str, None] = "6d5561651761" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "eff_time", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "eff_time_psf_sigma_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, PSF sigma scale.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "eff_time_psf_sky_bg_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, sky backgroundscale.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "eff_time_psf_zero_point_scale", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="Effective exposure time, zero point scale.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "psf_area", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF area.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "psf_ixx", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixx moment.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "psf_ixy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Ixy moment.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "ccdvisit1_quicklook", + sa.Column( + "psf_iyy", + sa.FLOAT() + .with_variant(mysql.FLOAT(), "mysql") + .with_variant(oracle.BINARY_FLOAT(), "oracle") + .with_variant(sa.FLOAT(), "postgresql"), + nullable=True, + comment="PSF Iyy moment.", + ), + schema="cdb_lsstcomcamsim", + ) + op.add_column( + "visit1_quicklook", + sa.Column( + "n_inputs", + sa.INTEGER().with_variant(mysql.INTEGER(), "mysql").with_variant(sa.INTEGER(), "postgresql"), + nullable=True, + comment="Number of CCDs used to compute the visit aggregates.", + ), + schema="cdb_lsstcomcamsim", + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("visit1_quicklook", "n_inputs", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "psf_iyy", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "psf_ixy", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "psf_ixx", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "psf_area", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "eff_time_psf_zero_point_scale", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "eff_time_psf_sky_bg_scale", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "eff_time_psf_sigma_scale", schema="cdb_lsstcomcamsim") + op.drop_column("ccdvisit1_quicklook", "eff_time", schema="cdb_lsstcomcamsim") + # ### end Alembic commands ###