22
22
23
23
__all__ = ("DiffimDetectorVisitMetricsAnalysisConfig" , "DiffimDetectorVisitMetricsAnalysisTask" )
24
24
25
+ import lsst .pex .config
25
26
import pandas as pd
26
27
from lsst .pipe .base import NoWorkFound , connectionTypes
27
28
@@ -49,7 +50,11 @@ class DiffimDetectorVisitMetricsAnalysisConnections(
49
50
class DiffimDetectorVisitMetricsAnalysisConfig (
50
51
AnalysisBaseConfig , pipelineConnections = DiffimDetectorVisitMetricsAnalysisConnections
51
52
):
52
- pass
53
+ kernelSubtaskName = lsst .pex .config .Field (
54
+ dtype = str ,
55
+ default = "makeKernel" ,
56
+ doc = "Perform diffim decorrelation to undo pixel correlation due to A&L " ,
57
+ )
53
58
54
59
55
60
class DiffimDetectorVisitMetricsAnalysisTask (AnalysisPipelineTask ):
@@ -64,12 +69,15 @@ def runQuantum(self, butlerQC, inputRefs, outputRefs):
64
69
if not metadata :
65
70
raise NoWorkFound ("No metadata entries for detectAndMeasure." )
66
71
inputs .pop ("metadataDetect" )
72
+
67
73
subtractTaskName = inputRefs .metadataSubtract .datasetType .name
68
74
subtractTaskName = subtractTaskName [: subtractTaskName .find ("_" )]
69
75
metadata |= inputs ["metadataSubtract" ].metadata [subtractTaskName ].to_dict ()
76
+ kernelSubtaskLabel = subtractTaskName + ":" + self .config .kernelSubtaskName
77
+ metadata |= inputs ["metadataSubtract" ].metadata [kernelSubtaskLabel ].to_dict ()
70
78
inputs .pop ("metadataSubtract" )
71
- df = pd . DataFrame ( metadata )
72
-
73
- inputs [ "data" ] = df
74
- outputs = self .run (** inputs )
79
+ # Some metadata entries might have different lengths or simply floats.
80
+ # Pass the dict in a list to tell Pandas that this is one row in the
81
+ # dataframe.
82
+ outputs = self .run (data = pd . DataFrame ([ metadata ]) )
75
83
butlerQC .put (outputs , outputRefs )
0 commit comments