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

This plugin calculates the ITIC region of a voltage, duration pair.

 
Modules
       
analysis
config
enum
matplotlib
mongo
multiprocessing
numpy
plugins
protobuf
typing

 
Classes
       
enum.Enum(builtins.object)
IticRegion
plugins.base_plugin.MaukaPlugin(builtins.object)
IticPlugin

 
class IticPlugin(plugins.base_plugin.MaukaPlugin)
    IticPlugin(conf: config.MaukaConfig, exit_event: <bound method BaseContext.Event of <multiprocessing.context.DefaultContext object at 0x10a20b748>>)
 
Mauka plugin that calculates ITIC for any event that includes a raw waveform
 
 
Method resolution order:
IticPlugin
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 0x10a20b748>>)
Initializes this plugin
:param conf: Configuration dictionary
:param exit_event: Exit event
on_message(self, topic, mauka_message)
Called async when a topic this plugin subscribes to produces a message
:param topic: The topic that is producing the message
:param mauka_message: The message that was produced

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

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)

 
class IticRegion(enum.Enum)
    IticRegion(value, names=None, *, module=None, qualname=None, type=None, start=1)
 
Enumerations of ITIC regions.
 
 
Method resolution order:
IticRegion
enum.Enum
builtins.object

Data and other attributes defined here:
NO_DAMAGE = <IticRegion.NO_DAMAGE: 'NO_DAMAGE'>
NO_INTERRUPTION = <IticRegion.NO_INTERRUPTION: 'NO_INTERRUPTION'>
OTHER = <IticRegion.OTHER: 'OTHER'>
PROHIBITED = <IticRegion.PROHIBITED: 'PROHIBITED'>

Data descriptors inherited from enum.Enum:
name
The name of the Enum member.
value
The value of the Enum member.

Data descriptors inherited from enum.EnumMeta:
__members__
Returns a mapping of member name->value.
 
This mapping lists all enum members, including aliases. Note that this
is a read-only view of the internal mapping.

 
Functions
       
itic(mauka_message: mauka_pb2.MaukaMessage, segment_threshold: float, logger=None, opq_mongo_client: mongo.OpqMongoClient = None)
Computes the ITIC region for a given waveform.
:param mauka_message:
:param segment_threshold: Threshold for segmentation
:param logger: Optional logger to use to print information
:param opq_mongo_client:  Optional DB client to re-use (otherwise new one will be created)
:return: ITIC region.
itic_region(rms_voltage: float, duration_ms: float) -> plugins.itic_plugin.IticRegion
Returns the ITIC region of a given RMS voltage and duration.
The reference curve is at http://www.keysight.com/upload/cmc_upload/All/1.pdf
:param rms_voltage: The RMS voltage value
:param duration_ms: The duration of the voltage event in milliseconds
:return: The appropriate ITIC region enum
point_in_polygon(x_point: float, y_point: float, polygon: List[List[float]]) -> bool
Checks if a point is in a given polygon.
:param x_point: x
:param y_point: y
:param polygon: The polygon to check for inclusion
:return: Whether or not the given point is in the provided polygon
rerun(mauka_message: mauka_pb2.MaukaMessage, segment_threshold: float, logger, mongo_client: mongo.OpqMongoClient = None)
Rerun ITIC analysis over the given mauka_message.
:param mauka_message: The mauka_message containing a box event to re-analyze.
:param segment_threshold: The threshold for the segmentation algorithm
:param logger: The application logger
:param mongo_client: An optional instance of a mongo client

 
Data
        HUNDREDTH_OF_A_CYCLE = 0.16666666666666669
NO_DAMAGE_REGION_POLYGON = [[20, 0], [20, 40], [20, 70], [500, 70], [500, 80], [10000, 80], [10000, 90], [10000, 0], [20, 0]]
NO_INTERRUPTION_REGION_POLYGON = [[0, 0], [0, 500], [0.16666666666666669, 500], [1, 200], [3, 140], [3, 120], [20, 120], [500, 120], [500, 110], [10000, 110], [10000, 90], [10000, 80], [500, 80], [500, 70], [20, 70], [20, 40], [20, 0], [0, 0]]
PROHIBITED_REGION_POLYGON = [[0.16666666666666669, 500], [1, 200], [3, 140], [3, 120], [20, 120], [500, 120], [500, 110], [10000, 110], [10000, 500], [0.16666666666666669, 500]]