plugins.thd_plugin
index
/Users/anthony/Development/opq/mauka/plugins/thd_plugin.py

This plugin calculates total harmonic distortion (THD) over waveforms.

 
Modules
       
config
constants
mongo
multiprocessing
numpy
plugins
protobuf
scipy
typing

 
Classes
       
plugins.base_plugin.MaukaPlugin(builtins.object)
ThdPlugin

 
class ThdPlugin(plugins.base_plugin.MaukaPlugin)
    ThdPlugin(conf: config.MaukaConfig, exit_event: <bound method BaseContext.Event of <multiprocessing.context.DefaultContext object at 0x10fa04748>>)
 
Mauka plugin that calculates THD over raw waveforms.
 
 
Method resolution order:
ThdPlugin
plugins.base_plugin.MaukaPlugin
builtins.object

Methods defined here:
__init__(self, conf: config.MaukaConfig, exit_event: <bound method BaseContext.Event of <multiprocessing.context.DefaultContext object at 0x10fa04748>>)
Initializes this plugin
:param conf: Mauka configuration
:param exit_event: Exit event that can disable this plugin from parent process
on_message(self, topic, mauka_message)
Fired when this plugin receives a message. This will wait a certain amount of time to make sure that data
is in the database before starting thd calculations.
:param topic: Topic of the message.
:param mauka_message: Contents of the message.

Data and other attributes defined here:
NAME = 'ThdPlugin'

Methods inherited from plugins.base_plugin.MaukaPlugin:
debug(self, msg: str)
Prints a debug message using this classes logger and formatted the plugin name.
:param msg: Message to print to debug.
get_mongo_client(self)
Returns an OPQ mongo client
 
:return: An OPQ mongo client
get_status(self) -> str
Return the status of this plugin
:return: The status of this plugin
handle_self_message(self, message: str)
Handles a self-message
 
:param message: The message to handle
is_self_message(self, topic: str) -> bool
Determines if this is a message directed at this plugin. I.e. the topic is the name of the plugin.
 
:param topic: Topic of the message
:return: If this is a self message or not
produce(self, topic: str, mauka_message: mauka_pb2.MaukaMessage)
Produces a message with a given topic to the system
 
:param topic: The topic to produce this message to
:param mauka_message: The message to produce
run_plugin(self)
This is the run loop for this plugin process
start_heartbeat(self)
This is a recursive function that acts as a heartbeat.
 
This function calls itself over-and-over on a timer to produce heartbeat messages. The interval can be
configured is the configuration file.

Data descriptors inherited from plugins.base_plugin.MaukaPlugin:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
rerun(mauka_message: mauka_pb2.MaukaMessage, logger, mongo_client: mongo.OpqMongoClient = None)
Rerun the THD plugin over a Makai box event.
:param mauka_message: The event message to rerun THD analysis over.
:param logger: The application logger
:param mongo_client: An optional instance of a mongo client.
:return:
rolling_window(array: numpy.ndarray, window: int) -> List[numpy.ndarray]
Given an array and window, restructure the data so that it is in a rolling window of size "window" and step = 1.
:param array: The array to roll a window over
:param window: The window size
:return: A 2D array where each row is a window into the provided data.
sliding_thd(mongo_client, threshold_percent, sliding_window_ms, event_id: int, box_id: str, box_event_start_timestamp: int, waveform: numpy.ndarray)
Calculates sliding THD over a waveform.
High THD values are then stored as incidents to the database.
:param event_id: Event that this waveform came form.
:param box_id: Box that this waveform came from.
:param box_event_start_timestamp: Start timestamp of the provided waveform
:param waveform: The waveform to calculate THD over.
thd(waveform: numpy.ndarray, fundamental: int) -> float
Calculates the total harmonic distortion (THD) of the provided waveform with the provided fundamental of the
waveform.
:param waveform: The waveform to find the THD of.
:param fundamental: The fundamental frequency (in Hz) of the provided waveform.
:return: The calculated THD of the provided waveform.