本文整理汇总了Python中trappy.stats.grammar.Parser.inspect方法的典型用法代码示例。如果您正苦于以下问题:Python Parser.inspect方法的具体用法?Python Parser.inspect怎么用?Python Parser.inspect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trappy.stats.grammar.Parser
的用法示例。
在下文中一共展示了Parser.inspect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SignalCompare
# 需要导入模块: from trappy.stats.grammar import Parser [as 别名]
# 或者: from trappy.stats.grammar.Parser import inspect [as 别名]
class SignalCompare(object):
"""
:param data: TRAPpy FTrace Object
:type data: :mod:`trappy.ftrace.FTrace`
:param sig_a: The first signal
:type sig_a: str
:param sig_b: The first signal
:type sig_b: str
:param config: A dictionary of variables, classes
and functions that can be used in the statements
:type config: dict
:param method: The method to be used for reindexing data
This can be one of the standard :mod:`pandas.DataFrame`
methods (eg. pad, bfill, nearest). The default is pad
or use the last valid observation.
:type method: str
:param limit: The number of indices a value will be propagated
when reindexing. The default is None
:type limit: int
:param fill: Whether to fill the NaNs in the data.
The default value is True.
:type fill: bool
.. note::
Both the signals must have the same pivots. For example:
- Signal A has a pivot as :code:`"cpu"` which means that
the trappy event (:mod:`trappy.base.Base`) has a pivot
parameter which is equal to :code:`"cpu"`. Then the signal B
should also have :code:`"cpu"` as it's pivot.
- Signal A and B can both have undefined or None
as their pivots
"""
def __init__(self, data, sig_a, sig_b, **kwargs):
self._parser = Parser(
data,
config=kwargs.pop(
"config",
None),
**kwargs)
self._a = sig_a
self._b = sig_b
self._pivot_vals, self._pivot = self._get_signal_pivots()
# Concatenate the indices by doing any operation (say add)
self._a_data = self._parser.solve(sig_a)
self._b_data = self._parser.solve(sig_b)
def _get_signal_pivots(self):
"""Internal function to check pivot conditions and
return an intersection of pivot on the signals"""
sig_a_info = self._parser.inspect(self._a)
sig_b_info = self._parser.inspect(self._b)
if sig_a_info["pivot"] != sig_b_info["pivot"]:
raise RuntimeError("The pivot column for both signals" +
"should be same (%s,%s)"
% (sig_a_info["pivot"], sig_b_info["pivot"]))
if sig_a_info["pivot"]:
pivot_vals = set(
sig_a_info["pivot_values"]).intersection(sig_b_info["pivot_values"])
pivoted = sig_a_info["pivot"]
else:
pivot_vals = [StatConf.GRAMMAR_DEFAULT_PIVOT]
pivoted = False
return pivot_vals, pivoted
def conditional_compare(self, condition, **kwargs):
"""Conditionally compare two signals
The conditional comparison of signals has two components:
- **Value Coefficient** :math:`\\alpha_{v}` which measures the difference in values of
of the two signals when the condition is true:
.. math::
\\alpha_{v} = \\frac{area\_under\_curve(S_A\ |\ C(t)\ is\ true)}
{area\_under\_curve(S_B\ |\ C(t)\ is\ true)} \\\\
\\alpha_{v} = \\frac{\int S_A(\{t\ |\ C(t)\})dt}{\int S_B(\{t\ |\ C(t)\})dt}
- **Time Coefficient** :math:`\\alpha_{t}` which measures the time during which the
condition holds true.
.. math::
#.........这里部分代码省略.........