LSST Applications g02d81e74bb+86cf3d8bc9,g180d380827+7a4e862ed4,g2079a07aa2+86d27d4dc4,g2305ad1205+e1ca1c66fa,g29320951ab+012e1474a1,g295015adf3+341ea1ce94,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+c429d67c83,g48712c4677+f88676dd22,g487adcacf7+27e1e21933,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+b41db86c35,g5a732f18d5+53520f316c,g64a986408d+86cf3d8bc9,g858d7b2824+86cf3d8bc9,g8a8a8dda67+585e252eca,g99cad8db69+84912a7fdc,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+a2b54eae19,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+6681f309db,gc120e1dc64+f0fcc2f6d8,gc28159a63d+0e5473021a,gcf0d15dbbd+c429d67c83,gdaeeff99f8+f9a426f77a,ge6526c86ff+0433e6603d,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+86cf3d8bc9,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
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 851 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 909 of file diaCalculationPlugins.py.

909 def _stetson_J(self, fluxes, errors, mean=None):
910 """Compute the single band stetsonJ statistic.
911
912 Parameters
913 ----------
914 fluxes : `numpy.ndarray` (N,)
915 Calibrated lightcurve flux values.
916 errors : `numpy.ndarray` (N,)
917 Errors on the calibrated lightcurve fluxes.
918 mean : `float`
919 Starting mean from previous plugin.
920
921 Returns
922 -------
923 stetsonJ : `float`
924 stetsonJ statistic for the input fluxes and errors.
925
926 References
927 ----------
928 .. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
929 Parameters for Cepheid Variables", PASP, 108, 851S, 1996
930 """
931 n_points = len(fluxes)
932 flux_mean = self._stetson_mean(fluxes, errors, mean)
933 delta_val = (
934 np.sqrt(n_points / (n_points - 1)) * (fluxes - flux_mean) / errors)
935 p_k = delta_val ** 2 - 1
936
937 return np.mean(np.sign(p_k) * np.sqrt(np.fabs(p_k)))
938

◆ _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 939 of file diaCalculationPlugins.py.

946 tol=1e-6):
947 """Compute the stetson mean of the fluxes which down-weights outliers.
948
949 Weighted biased on an error weighted difference scaled by a constant
950 (1/``a``) and raised to the power beta. Higher betas more harshly
951 penalize outliers and ``a`` sets the number of sigma where a weighted
952 difference of 1 occurs.
953
954 Parameters
955 ----------
956 values : `numpy.dnarray`, (N,)
957 Input values to compute the mean of.
958 errors : `numpy.ndarray`, (N,)
959 Errors on the input values.
960 mean : `float`
961 Starting mean value or None.
962 alpha : `float`
963 Scalar down-weighting of the fractional difference. lower->more
964 clipping. (Default value is 2.)
965 beta : `float`
966 Power law slope of the used to down-weight outliers. higher->more
967 clipping. (Default value is 2.)
968 n_iter : `int`
969 Number of iterations of clipping.
970 tol : `float`
971 Fractional and absolute tolerance goal on the change in the mean
972 before exiting early. (Default value is 1e-6)
973
974 Returns
975 -------
976 mean : `float`
977 Weighted stetson mean result.
978
979 References
980 ----------
981 .. [1] Stetson, P. B., "On the Automatic Determination of Light-Curve
982 Parameters for Cepheid Variables", PASP, 108, 851S, 1996
983 """
984 n_points = len(values)
985 n_factor = np.sqrt(n_points / (n_points - 1))
986 inv_var = 1 / errors ** 2
987
988 if mean is None:
989 mean = np.average(values, weights=inv_var)
990 for iter_idx in range(n_iter):
991 chi = np.fabs(n_factor * (values - mean) / errors)
992 tmp_mean = np.average(
993 values,
994 weights=inv_var / (1 + (chi / alpha) ** beta))
995 diff = np.fabs(tmp_mean - mean)
996 mean = tmp_mean
997 if diff / mean < tol and diff < tol:
998 break
999 return mean
1000
1001

◆ 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 868 of file diaCalculationPlugins.py.

873 **kwargs):
874 """Compute the StetsonJ statistic on the DIA point source fluxes.
875
876 Parameters
877 ----------
878 diaObject : `dict`
879 Summary object to store values in.
880 diaSources : `pandas.DataFrame`
881 DataFrame representing all diaSources associated with this
882 diaObject.
883 filterDiaSources : `pandas.DataFrame`
884 DataFrame representing diaSources associated with this
885 diaObject that are observed in the band pass ``band``.
886 band : `str`
887 Simple, string name of the filter for the flux being calculated.
888 **kwargs
889 Any additional keyword arguments that may be passed to the plugin.
890 """
891 meanName = "{}_psfFluxMean".format(band)
892
893 def _stetsonJ(df):
894 tmpDf = df[~np.logical_or(np.isnan(df["psfFlux"]),
895 np.isnan(df["psfFluxErr"]))]
896 if len(tmpDf) < 2:
897 return np.nan
898 fluxes = tmpDf["psfFlux"].to_numpy()
899 errors = tmpDf["psfFluxErr"].to_numpy()
900
901 return self._stetson_J(
902 fluxes,
903 errors,
904 diaObjects.at[tmpDf.diaObjectId.iat[0], meanName])
905
906 diaObjects.loc[:, "{}_psfFluxStetsonJ".format(band)] = \
907 filterDiaSources.apply(_stetsonJ)
908

◆ 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 865 of file diaCalculationPlugins.py.

865 def getExecutionOrder(cls):
866 return cls.FLUX_MOMENTS_CALCULATED
867

Member Data Documentation

◆ ConfigClass

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

Definition at line 855 of file diaCalculationPlugins.py.

◆ inputCols

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

Definition at line 858 of file diaCalculationPlugins.py.

◆ needsFilter

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

Definition at line 862 of file diaCalculationPlugins.py.

◆ outputCols

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

Definition at line 860 of file diaCalculationPlugins.py.

◆ plugType

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

Definition at line 861 of file diaCalculationPlugins.py.


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