LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Classes | Functions | Variables
lsst.pipe.tasks.dataFrameActions._evalColumnExpression Namespace Reference

Classes

class  ExpressionParser
 

Functions

Type[DataFrameActionmakeColumnExpressionAction (str className, str expr, Optional[Mapping[str, Union[DataFrameAction, Type[DataFrameAction]]]] exprDefaults=None, str docstring=None)
 

Variables

dictionary OPERATORS
 
dictionary EXTRA_MATH = {"cos": cos, "sin": sin, "cosh": cosh, "sinh": sinh, "log": log}
 

Function Documentation

◆ makeColumnExpressionAction()

Type[DataFrameAction] lsst.pipe.tasks.dataFrameActions._evalColumnExpression.makeColumnExpressionAction ( str  className,
str  expr,
Optional[Mapping[str, Union[DataFrameAction, Type[DataFrameAction]]]]   exprDefaults = None,
str   docstring = None 
)

Definition at line 83 of file _evalColumnExpression.py.

87  ) -> Type[DataFrameAction]:
88  node = ast.parse(expr, mode='eval')
89 
90  # gather the specified names
91  names: Set[str] = set()
92  for elm in ast.walk(node):
93  if isinstance(elm, ast.Name):
94  names.add(elm.id)
95 
96  # remove the known Math names
97  names -= EXTRA_MATH.keys()
98 
99  fields: Mapping[str, ConfigurableActionField] = {}
100  for name in names:
101  if exprDefaults is not None and (value := exprDefaults.get(name)) is not None:
102  kwargs = {"default": value}
103  else:
104  kwargs = {}
105  fields[name] = ConfigurableActionField(doc=f"expression action {name}", **kwargs)
106 
107  # skip flake8 on N807 because this is a stand alone function, but it is
108  # intended to be patched in as a method on a dynamically generated class
109  def __call__(self, df: pd.DataFrame, **kwargs) -> pd.Series: # noqa: N807
110  values_map = {}
111  for name in fields:
112  values_map[name] = getattr(self, name)(df, **kwargs)
113 
114  parser = ExpressionParser(**values_map)
115  return parser.visit(node.body)
116 
117  # create the function to look up the columns for the dynamically created action
118  def columns(self) -> Iterable[str]:
119  for name in fields:
120  yield from getattr(self, name).columns
121 
122  dct: MutableMapping[str, Any] = {"__call__": __call__, "columns": property(columns)}
123  if docstring is not None:
124  dct['__doc__'] = docstring
125  dct.update(**fields)
126 
127  return type(className, (DataFrameAction, ), dct)
table::Key< int > type
Definition: Detector.cc:163
daf::base::PropertySet * set
Definition: fits.cc:912

Variable Documentation

◆ EXTRA_MATH

dictionary lsst.pipe.tasks.dataFrameActions._evalColumnExpression.EXTRA_MATH = {"cos": cos, "sin": sin, "cosh": cosh, "sinh": sinh, "log": log}

Definition at line 43 of file _evalColumnExpression.py.

◆ OPERATORS

dictionary lsst.pipe.tasks.dataFrameActions._evalColumnExpression.OPERATORS
Initial value:
1 = {ast.Add: op.add, ast.Sub: op.sub, ast.Mult: op.mul,
2  ast.Div: op.truediv, ast.Pow: op.pow, ast.BitXor: op.xor,
3  ast.USub: op.neg}

Definition at line 39 of file _evalColumnExpression.py.