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
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 instancesmodem_alpha=Modem()modem_beta=Modem()# Create a bit error evaluation as a communication evaluation examplecommunication_evaluator=BitErrorEvaluator(modem_alpha,modem_beta)# Extract evaluation artifactcommunication_artifact=communication_evaluator.evaluate()# Visualize artifactcommunication_artifact.plot()