LSST Applications g07dc498a13+cb17356775,g1409bbee79+cb17356775,g1a7e361dbc+cb17356775,g1fd858c14a+d1a2a640a9,g33399d78f5+fe6948661d,g35bb328faa+e55fef2c71,g3bd4b5ce2c+cac9e18807,g3c79e8cd92+2359a18b76,g43bc871e57+a58ba40925,g53246c7159+e55fef2c71,g60b5630c4e+8133a3545f,g78460c75b0+8427c4cc8f,g78619a8342+55305cb8f0,g786e29fd12+307f82e6af,g8534526c7b+8e1c6b434f,g89139ef638+cb17356775,g8b49a6ea8e+8133a3545f,g8ffcb69f3d+818ab6c36e,g9125e01d80+e55fef2c71,g97b8272a79+98425f45f6,g989de1cb63+cb17356775,g9f33ca652e+4245ceb508,gaaedd4e678+cb17356775,gabe3b4be73+9c0c3c7524,gb1101e3267+3e5ef1d639,gb58c049af0+28045f66fd,gc1fe0db326+8133a3545f,gca43fec769+e55fef2c71,gcf25f946ba+fe6948661d,gd397e13551+64039f84ea,gd6cbbdb0b4+f6e5445f66,gde0f65d7ad+7eb368c542,ge278dab8ac+b4c2c8faf7,geab183fbe5+8133a3545f,gecb8035dfe+1f480bec5e,gefa07fa684+e7bc33f3ea,gf58bf46354+e55fef2c71,gfe7187db8c+e55afb4430,w.2025.03
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux Class Reference
Inheritance diagram for lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux:
lsst.meas.base.diaCalculation.DiaObjectCalculationPlugin lsst.meas.base.catalogCalculation.CatalogCalculationPlugin lsst.meas.base.pluginsBase.BasePlugin

Public Member Functions

 getExecutionOrder (cls)
 
 calculate (self, diaObjects, diaSources, filterDiaSources, band, **kwargs)
 

Static Public Attributes

 ConfigClass = LinearFitDiaPsfFluxConfig
 
list inputCols = ["psfFluxMean"]
 
list outputCols = ["psfFluxStetsonJ"]
 
str plugType = "multi"
 
bool needsFilter = True
 

Protected Member Functions

 _stetson_J (self, fluxes, errors, mean=None)
 
 _stetson_mean (self, values, errors, mean=None, alpha=2., beta=2., n_iter=20, tol=1e-6)
 

Detailed Description

Compute the StetsonJ statistic on the DIA point source fluxes.

Definition at line 887 of file diaCalculationPlugins.py.

Member Function Documentation

◆ _stetson_J()

lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux._stetson_J ( self,
fluxes,
errors,
mean = None )
protected
Compute the single band stetsonJ statistic.

Parameters
----------
fluxes : `numpy.ndarray` (N,)
    Calibrated lightcurve flux values.
errors : `numpy.ndarray` (N,)
    Errors on the calibrated lightcurve fluxes.
mean : `float`
    Starting mean from previous plugin.

Returns
-------
stetsonJ : `float`
    stetsonJ statistic for the input fluxes and errors.

References
----------
.. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
   Parameters for Cepheid Variables", PASP, 108, 851S, 1996

Definition at line 949 of file diaCalculationPlugins.py.

949 def _stetson_J(self, fluxes, errors, mean=None):
950 """Compute the single band stetsonJ statistic.
951
952 Parameters
953 ----------
954 fluxes : `numpy.ndarray` (N,)
955 Calibrated lightcurve flux values.
956 errors : `numpy.ndarray` (N,)
957 Errors on the calibrated lightcurve fluxes.
958 mean : `float`
959 Starting mean from previous plugin.
960
961 Returns
962 -------
963 stetsonJ : `float`
964 stetsonJ statistic for the input fluxes and errors.
965
966 References
967 ----------
968 .. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
969 Parameters for Cepheid Variables", PASP, 108, 851S, 1996
970 """
971 n_points = len(fluxes)
972 flux_mean = self._stetson_mean(fluxes, errors, mean)
973 delta_val = (
974 np.sqrt(n_points / (n_points - 1)) * (fluxes - flux_mean) / errors)
975 p_k = delta_val ** 2 - 1
976
977 return np.mean(np.sign(p_k) * np.sqrt(np.fabs(p_k)))
978

◆ _stetson_mean()

lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux._stetson_mean ( self,
values,
errors,
mean = None,
alpha = 2.,
beta = 2.,
n_iter = 20,
tol = 1e-6 )
protected
Compute the stetson mean of the fluxes which down-weights outliers.

Weighted biased on an error weighted difference scaled by a constant
(1/``a``) and raised to the power beta. Higher betas more harshly
penalize outliers and ``a`` sets the number of sigma where a weighted
difference of 1 occurs.

Parameters
----------
values : `numpy.dnarray`, (N,)
    Input values to compute the mean of.
errors : `numpy.ndarray`, (N,)
    Errors on the input values.
mean : `float`
    Starting mean value or None.
alpha : `float`
    Scalar down-weighting of the fractional difference. lower->more
    clipping. (Default value is 2.)
beta : `float`
    Power law slope of the used to down-weight outliers. higher->more
    clipping. (Default value is 2.)
n_iter : `int`
    Number of iterations of clipping.
tol : `float`
    Fractional and absolute tolerance goal on the change in the mean
    before exiting early. (Default value is 1e-6)

Returns
-------
mean : `float`
    Weighted stetson mean result.

References
----------
.. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
   Parameters for Cepheid Variables", PASP, 108, 851S, 1996

Definition at line 979 of file diaCalculationPlugins.py.

986 tol=1e-6):
987 """Compute the stetson mean of the fluxes which down-weights outliers.
988
989 Weighted biased on an error weighted difference scaled by a constant
990 (1/``a``) and raised to the power beta. Higher betas more harshly
991 penalize outliers and ``a`` sets the number of sigma where a weighted
992 difference of 1 occurs.
993
994 Parameters
995 ----------
996 values : `numpy.dnarray`, (N,)
997 Input values to compute the mean of.
998 errors : `numpy.ndarray`, (N,)
999 Errors on the input values.
1000 mean : `float`
1001 Starting mean value or None.
1002 alpha : `float`
1003 Scalar down-weighting of the fractional difference. lower->more
1004 clipping. (Default value is 2.)
1005 beta : `float`
1006 Power law slope of the used to down-weight outliers. higher->more
1007 clipping. (Default value is 2.)
1008 n_iter : `int`
1009 Number of iterations of clipping.
1010 tol : `float`
1011 Fractional and absolute tolerance goal on the change in the mean
1012 before exiting early. (Default value is 1e-6)
1013
1014 Returns
1015 -------
1016 mean : `float`
1017 Weighted stetson mean result.
1018
1019 References
1020 ----------
1021 .. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
1022 Parameters for Cepheid Variables", PASP, 108, 851S, 1996
1023 """
1024 n_points = len(values)
1025 n_factor = np.sqrt(n_points / (n_points - 1))
1026 inv_var = 1 / errors ** 2
1027
1028 if mean is None:
1029 mean = np.average(values, weights=inv_var)
1030 for iter_idx in range(n_iter):
1031 chi = np.fabs(n_factor * (values - mean) / errors)
1032 tmp_mean = np.average(
1033 values,
1034 weights=inv_var / (1 + (chi / alpha) ** beta))
1035 diff = np.fabs(tmp_mean - mean)
1036 mean = tmp_mean
1037 if diff / mean < tol and diff < tol:
1038 break
1039 return mean
1040
1041

◆ calculate()

lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.calculate ( self,
diaObjects,
diaSources,
filterDiaSources,
band,
** kwargs )
Compute the StetsonJ statistic on the DIA point source fluxes.

Parameters
----------
diaObject : `dict`
    Summary object to store values in.
diaSources : `pandas.DataFrame`
    DataFrame representing all diaSources associated with this
    diaObject.
filterDiaSources : `pandas.DataFrame`
    DataFrame representing diaSources associated with this
    diaObject that are observed in the band pass ``band``.
band : `str`
    Simple, string name of the filter for the flux being calculated.
**kwargs
    Any additional keyword arguments that may be passed to the plugin.

Reimplemented from lsst.meas.base.diaCalculation.DiaObjectCalculationPlugin.

Definition at line 904 of file diaCalculationPlugins.py.

909 **kwargs):
910 """Compute the StetsonJ statistic on the DIA point source fluxes.
911
912 Parameters
913 ----------
914 diaObject : `dict`
915 Summary object to store values in.
916 diaSources : `pandas.DataFrame`
917 DataFrame representing all diaSources associated with this
918 diaObject.
919 filterDiaSources : `pandas.DataFrame`
920 DataFrame representing diaSources associated with this
921 diaObject that are observed in the band pass ``band``.
922 band : `str`
923 Simple, string name of the filter for the flux being calculated.
924 **kwargs
925 Any additional keyword arguments that may be passed to the plugin.
926 """
927 meanName = "{}_psfFluxMean".format(band)
928
929 def _stetsonJ(df):
930 tmpDf = df[~np.logical_or(np.isnan(df["psfFlux"]),
931 np.isnan(df["psfFluxErr"]))]
932 if len(tmpDf) < 2:
933 return np.nan
934 fluxes = tmpDf["psfFlux"].to_numpy()
935 errors = tmpDf["psfFluxErr"].to_numpy()
936
937 return self._stetson_J(
938 fluxes,
939 errors,
940 diaObjects.at[tmpDf.diaObjectId.iat[0], meanName])
941
942 column = "{}_psfFluxStetsonJ".format(band)
943 if column in diaObjects:
944 dtype = diaObjects[column].dtype
945 diaObjects.loc[:, column] = filterDiaSources.apply(_stetsonJ).astype(dtype)
946 else:
947 diaObjects.loc[:, column] = filterDiaSources.apply(_stetsonJ)
948

◆ getExecutionOrder()

lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.getExecutionOrder ( cls)
Used to set the relative order of plugin execution.

    The values returned by `getExecutionOrder` are compared across all
    plugins, and smaller numbers run first.

    Notes
    -----
    `CatalogCalculationPlugin`\s must run with
    `BasePlugin.DEFAULT_CATALOGCALCULATION` or higher.

    All plugins must implement this method with an appropriate run level

Reimplemented from lsst.meas.base.catalogCalculation.CatalogCalculationPlugin.

Definition at line 901 of file diaCalculationPlugins.py.

901 def getExecutionOrder(cls):
902 return cls.FLUX_MOMENTS_CALCULATED
903

Member Data Documentation

◆ ConfigClass

lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.ConfigClass = LinearFitDiaPsfFluxConfig
static

Definition at line 891 of file diaCalculationPlugins.py.

◆ inputCols

list lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.inputCols = ["psfFluxMean"]
static

Definition at line 894 of file diaCalculationPlugins.py.

◆ needsFilter

bool lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.needsFilter = True
static

Definition at line 898 of file diaCalculationPlugins.py.

◆ outputCols

list lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.outputCols = ["psfFluxStetsonJ"]
static

Definition at line 896 of file diaCalculationPlugins.py.

◆ plugType

str lsst.meas.base.diaCalculationPlugins.StetsonJDiaPsfFlux.plugType = "multi"
static

Definition at line 897 of file diaCalculationPlugins.py.


The documentation for this class was generated from the following file: