1 from __future__
import annotations
3 __all__ = (
"SingleColumnAction",
"MultiColumnAction",
"CoordColumn",
"MagColumnDN",
"SumColumns",
"AddColumn",
4 "DivideColumns",
"SubtractColumns",
"MultiplyColumns",)
6 from typing
import Iterable
10 from astropy
import units
12 from ..configurableActions
import ConfigurableActionStructField, ConfigurableActionField
13 from ._baseDataFrameActions
import DataFrameAction
14 from ._evalColumnExpression
import makeColumnExpressionAction
20 column = Field(doc=
"Column to load for this action", dtype=str, optional=
False)
24 return (self.
columncolumn, )
26 def __call__(self, df, **kwargs):
27 return df[self.
columncolumn]
35 yield from (column
for action
in self.
actionsactions
for column
in action.columns)
39 inRadians = Field(doc=
"Return the column in radians if true", default=
True, dtype=bool)
41 def __call__(self, df):
42 col = super().__call__(df)
43 return col * 180 / np.pi
if self.
inRadiansinRadians
else col
47 coadd_zeropoint = Field(doc=
"Magnitude zero point", dtype=float, default=27)
49 def __call__(self, df: pd.DataFrame, **kwargs):
50 if not (fluxMag0 := kwargs.get(
'fluxMag0')):
53 with np.warnings.catch_warnings():
54 np.warnings.filterwarnings(
'ignore',
r'invalid value encountered')
55 np.warnings.filterwarnings(
'ignore',
r'divide by zero')
56 return -2.5 * np.log10(df[self.
columncolumn] / fluxMag0)
60 ab_flux_scale = Field(doc=
"Scaling of ab flux", dtype=float, default=(0*units.ABmag).to_value(units.nJy))
61 coadd_zeropoint = Field(doc=
"Magnitude zero point", dtype=float, default=27)
63 def __call__(self, df, **kwargs):
64 dataNumber = super().__call__(df, **kwargs)
65 if not (fluxMag0 := kwargs.get(
'fluxMag0')):
67 return self.
ab_flux_scaleab_flux_scale * dataNumber / fluxMag0
75 flux_mag_err = Field(doc=
"Error in the magnitude zeropoint", dtype=float, default=0)
77 default=NanoJansky, dtype=DataFrameAction)
83 def __call__(self, df, flux_column=None, flux_mag_err=None, **kwargs):
84 if flux_column
is None:
85 flux_column = self.
flux_actionflux_action(df, **kwargs)
86 if flux_mag_err
is None:
90 _docs =
"""This is a `DataFrameAction` that is designed to add two columns
91 together and return the result.
94 exprDefaults={
"colA": SingleColumnAction,
95 "colB": SingleColumnAction},
98 _docs =
"""This is a `MultiColumnAction` that is designed to subtract two columns
99 together and return the result.
102 exprDefaults={
"colA": SingleColumnAction,
103 "colB": SingleColumnAction},
106 _docs =
"""This is a `MultiColumnAction` that is designed to multiply two columns
107 together and return the result.
110 exprDefaults={
"colA": SingleColumnAction,
111 "colB": SingleColumnAction},
114 _docs =
"""This is a `MultiColumnAction` that is designed to multiply two columns
115 together and return the result.
118 exprDefaults={
"colA": SingleColumnAction,
119 "colB": SingleColumnAction},
125 "to create a new column", dtype=DataFrameAction)
126 newColumn = Field(doc=
"Name of the new column to add", dtype=str)
132 def __call__(self, df, **kwargs) -> pd.DataFrame:
Iterable[str] columns(self)
Iterable[str] columns(self)
Iterable[str] columns(self)
Type[DataFrameAction] makeColumnExpressionAction(str className, str expr, Optional[Mapping[str, Union[DataFrameAction, Type[DataFrameAction]]]] exprDefaults=None, str docstring=None)