EvaluatorsΒΆ
Communication evaluators are used to extract key performance indicators of communication links between modems.
classDiagram class CommunicationEvaluator { <<Abstract>> +TransmittingModem transmitting_modem +ReceivingModem receiving_modem } class BitErrorArtifact { +float artifact +to_scalar() float } class BitErrorEvaluation { +str title +artifact() BitErrorArtifact } class BitErrorEvaluator { +evaluate() BitErrorEvaluation +str abbreviation +str title } class BlockErrorArtifact { +float artifact +to_scalar() float } class BlockErrorEvaluation { +str title +artifact() BlockErrorArtifact } class BlockErrorEvaluator { +evaluate() BlockErrorEvaluation +str abbreviation +str title } class FrameErrorArtifact { +float artifact +to_scalar() float } class FrameErrorEvaluation { +str title +artifact() FrameErrorArtifact } class FrameErrorEvaluator { +evaluate() FrameErrorEvaluation +str abbreviation +str title } class ThroughputArtifact { +float artifact +to_scalar() float } class ThroughputEvaluation { +str title +artifact() ThroughputArtifact } class ThroughputEvaluator { +evaluate() ThroughputEvaluation +str abbreviation +str title } class EVMArtifact { +float artifact +to_scalar() float } class EVMEvaluation { +str title +artifact() EVMArtifact } class ConstellationEVM { +evaluate() EVMEvaluation +str abbreviation +str title } BitErrorEvaluator --|> CommunicationEvaluator BlockErrorEvaluator --|> CommunicationEvaluator FrameErrorEvaluator --|> CommunicationEvaluator ThroughputEvaluator --|> CommunicationEvaluator ConstellationEVM --|> CommunicationEvaluator BitErrorEvaluator --> BitErrorArtifact : create BitErrorEvaluator --> BitErrorEvaluation : create BlockErrorEvaluator --> BlockErrorArtifact : create BlockErrorEvaluator --> BlockErrorEvaluation : create FrameErrorEvaluator --> FrameErrorArtifact : create FrameErrorEvaluator --> FrameErrorEvaluation : create ThroughputEvaluator --> ThroughputArtifact : create ThroughputEvaluator --> ThroughputEvaluation : create ConstellationEVM --> EVMEvaluation : create EVMEvaluation --> EVMArtifact : create link CommunicationEvaluator "modem.evaluators.CommunicationEvaluator.html" link BitErrorArtifact "modem.evaluators.BitErrorArtifact.html" link BitErrorEvaluation "modem.evaluators.BitErrorEvaluation.html" link BitErrorEvaluator "modem.evaluators.BitErrorEvaluator.html" link BlockErrorArtifact "modem.evaluators.BlockErrorArtifact.html" link BlockErrorEvaluation "modem.evaluators.BlockErrorEvaluation.html" link BlockErrorEvaluator "modem.evaluators.BlockErrorEvaluator.html" link FrameErrorArtifact "modem.evaluators.FrameErrorArtifact.html" link FrameErrorEvaluation "modem.evaluators.FrameErrorEvaluation.html" link FrameErrorEvaluator "modem.evaluators.FrameErrorEvaluator.html" link ThroughputArtifact "modem.evaluators.ThroughputArtifact.html" link ThroughputEvaluation "modem.evaluators.ThroughputEvaluation.html" link ThroughputEvaluator "modem.evaluators.ThroughputEvaluator.html" link EVMArtifact "modem.evaluators.evm.html#hermespy.modem.evaluators.evm.EVMArtifact" link EVMEvaluation "modem.evaluators.evm.html#hermespy.modem.evaluators.evm.EVMEvaluation" link ConstellationEVM "modem.evaluators.evm.html#hermespy.modem.evaluators.evm.ConstellationEVM"
The implemented Communication Evaluators all inherit from the identically named common base which gets initialized by selecting the two Modem instances whose communication should be evaluated. The currently considered performance indicators are
Performance Indicator |
Performance Indicator |
---|---|
Errors comparing two bit streams |
|
Errors comparing two bit streams divided into blocks |
|
Errors comparing two bit streams divided into frames |
|
Rate of correct frames multiplied by the frame bit rate |
|
Root mean square error between transmitted and received symbols |
Configuring Communication Evaluators to evaluate the communication process between two Modem instances is rather straightforward:
# Create two separate modem instances
modem_alpha = Modem()
modem_beta = Modem()
# Create a bit error evaluation as a communication evaluation example
communication_evaluator = BitErrorEvaluator(modem_alpha, modem_beta)
# Extract evaluation artifact
communication_artifact = communication_evaluator.evaluate()
# Visualize artifact
communication_artifact.plot()