Skip to content

Commit 2f55f44

Browse files
committed
Refactor metrics imports: Organize signal and image metrics into respective submodules for clarity and maintainability
Enhance API documentation: Add utility functions for constraints and modulation schemes Update loss modules: Include __all__ definitions for better module exports
1 parent 960a243 commit 2f55f44

33 files changed

+135
-161
lines changed

docs/api_reference.rst

Lines changed: 42 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ several key modules that handle different aspects of communication systems:
2020
- **Channels**: Model transmission mediums with various noise and distortion characteristics
2121
- **Constraints**: Enforce practical limitations on transmitted signals
2222
- **Metrics**: Evaluate quality and performance of communication systems
23-
- **Models**: Implement neural network architectures for encoding/decoding, forward error correction and end-to-end communication systems
23+
- **Models**: Implement neural network architectures for encoding/decoding and end-to-end communication systems
2424
- **Modulations**: Implement digital modulation schemes for wireless transmission
2525
- **Losses**: Provide objective functions for training neural networks
2626
- **Utilities**: Helper functions and tools for common operations
@@ -105,6 +105,26 @@ Constraints module for Kaira.
105105
TotalPowerConstraint
106106

107107

108+
Utils
109+
^^^^^
110+
111+
Utility functions for constraints.
112+
113+
.. currentmodule:: kaira.constraints.utils
114+
115+
.. autosummary::
116+
:toctree: generated
117+
:template: function.rst
118+
:nosignatures:
119+
120+
apply_constraint_chain
121+
combine_constraints
122+
create_mimo_constraints
123+
create_ofdm_constraints
124+
measure_signal_properties
125+
verify_constraint
126+
127+
108128
Metrics
109129
-------
110130

@@ -117,26 +137,9 @@ Metrics module for Kaira.
117137
:template: class.rst
118138
:nosignatures:
119139

120-
BER
121-
BLER
122140
BaseMetric
123-
BitErrorRate
124-
BlockErrorRate
125141
CompositeMetric
126-
FER
127-
FrameErrorRate
128-
LPIPS
129-
LearnedPerceptualImagePatchSimilarity
130142
MetricRegistry
131-
MultiScaleSSIM
132-
PSNR
133-
PeakSignalNoiseRatio
134-
SER
135-
SNR
136-
SSIM
137-
SignalToNoiseRatio
138-
StructuralSimilarityIndexMeasure
139-
SymbolErrorRate
140143

141144

142145
Image
@@ -266,23 +269,6 @@ Components module for Kaira models.
266269
MLPEncoder
267270

268271

269-
FEC Algebra
270-
^^^^^^^^^^^
271-
272-
Finite field algebra utilities for forward error correction.
273-
274-
.. currentmodule:: kaira.models.fec.algebra
275-
276-
.. autosummary::
277-
:toctree: generated
278-
:template: class.rst
279-
:nosignatures:
280-
281-
BinaryPolynomial
282-
FiniteBifield
283-
FiniteBifieldElement
284-
285-
286272
Decoders
287273
^^^^^^^^
288274

@@ -328,25 +314,6 @@ Forward Error Correction encoders for Kaira.
328314
SystematicLinearBlockCodeEncoder
329315

330316

331-
FEC Utilities
332-
^^^^^^^^^^^^^
333-
334-
Utility functions for decoders.
335-
336-
.. currentmodule:: kaira.models.fec.utils
337-
338-
.. autosummary::
339-
:toctree: generated
340-
:template: function.rst
341-
:nosignatures:
342-
343-
apply_blockwise
344-
from_binary_tensor
345-
hamming_distance
346-
hamming_weight
347-
to_binary_tensor
348-
349-
350317
Generic
351318
^^^^^^^
352319

@@ -470,6 +437,27 @@ Digital modulation schemes for wireless communications.
470437
plot_constellation
471438

472439

440+
Utils
441+
^^^^^
442+
443+
Utility functions for digital modulation schemes.
444+
445+
.. currentmodule:: kaira.modulations.utils
446+
447+
.. autosummary::
448+
:toctree: generated
449+
:template: function.rst
450+
:nosignatures:
451+
452+
binary_array_to_gray
453+
binary_to_gray
454+
calculate_spectral_efficiency
455+
calculate_theoretical_ber
456+
gray_array_to_binary
457+
gray_to_binary
458+
plot_constellation
459+
460+
473461
Data
474462
----
475463

@@ -484,8 +472,6 @@ Data utilities for Kaira, including data generation and correlation models.
484472

485473
BinaryTensorDataset
486474
UniformTensorDataset
487-
WynerZivCorrelationDataset
488-
WynerZivCorrelationModel
489475

490476

491477
.. currentmodule:: kaira.data
@@ -498,24 +484,3 @@ Data utilities for Kaira, including data generation and correlation models.
498484
create_binary_tensor
499485
create_uniform_tensor
500486
load_sample_images
501-
502-
503-
SNR Utilities
504-
^^^^^^^^^^^^^
505-
506-
Utility functions for Signal-to-Noise Ratio (SNR) calculations and conversions.
507-
508-
.. currentmodule:: kaira.utils.snr
509-
510-
.. autosummary::
511-
:toctree: generated
512-
:template: function.rst
513-
:nosignatures:
514-
515-
add_noise_for_snr
516-
calculate_snr
517-
estimate_signal_power
518-
noise_power_to_snr
519-
snr_db_to_linear
520-
snr_linear_to_db
521-
snr_to_noise_power

docs/conf.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -380,24 +380,3 @@ def setup(app):
380380
"""
381381
app.connect("autodoc-skip-member", skip_member)
382382
app.add_config_value("current_date", get_current_date(), "env")
383-
384-
385-
# Mock imports for modules that might not be installed
386-
# This prevents build failures due to missing dependencies
387-
autodoc_mock_imports = [
388-
# Core dependencies that might not be available during doc building
389-
"torch",
390-
"numpy",
391-
"matplotlib",
392-
"scipy",
393-
"torchmetrics",
394-
# Kaira modules that might have import issues
395-
"kaira.losses",
396-
"kaira.models",
397-
"kaira.channels",
398-
"kaira.metrics",
399-
"kaira.modulations",
400-
"kaira.constraints",
401-
"kaira.data",
402-
"kaira.utils",
403-
]

examples/channels/plot_awgn_channel.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
import torch
2121

2222
from kaira.channels import AWGNChannel
23-
from kaira.metrics import PSNR, SNR
23+
from kaira.metrics.image import PSNR
24+
from kaira.metrics.signal import SNR
2425
from kaira.utils import snr_to_noise_power
2526

2627
# Set random seed for reproducibility
@@ -91,6 +92,7 @@
9192
outputs.append((snr_db, output_signal.numpy().flatten()))
9293
measured_metrics.append({"target_snr_db": snr_db, "measured_snr_db": measured_snr, "measured_psnr_db": measured_psnr})
9394

95+
# Ensure we're using float values for string formatting
9496
print(f"Target SNR: {snr_db:.1f} dB, Measured SNR: {measured_snr:.1f} dB, PSNR: {measured_psnr:.1f} dB")
9597

9698
# %%

examples/channels/plot_fading_channels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from scipy import signal # Added here to fix E402 error
2323

2424
from kaira.channels import AWGNChannel, FlatFadingChannel, PerfectChannel
25-
from kaira.metrics import BitErrorRate
25+
from kaira.metrics.signal import BitErrorRate
2626
from kaira.modulations import QPSKModulator
2727
from kaira.modulations.utils import calculate_theoretical_ber
2828
from kaira.utils import snr_to_noise_power

examples/channels/plot_nonlinear_channel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from scipy import signal
2020

2121
from kaira.channels import AWGNChannel, NonlinearChannel, PerfectChannel
22-
from kaira.metrics import SymbolErrorRate
22+
from kaira.metrics.signal import SymbolErrorRate
2323
from kaira.modulations import QAMModulator
2424

2525
# Set random seed for reproducibility

examples/channels/plot_poisson_channel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from scipy.special import erfc
2121

2222
from kaira.channels import AWGNChannel, PoissonChannel
23-
from kaira.metrics import BitErrorRate
23+
from kaira.metrics.signal import BitErrorRate
2424

2525
# Set random seed for reproducibility
2626
torch.manual_seed(42)

examples/channels/plot_rician_fading.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import torch
2121

2222
from kaira.channels import RayleighFadingChannel, RicianFadingChannel
23-
from kaira.metrics import BitErrorRate, SymbolErrorRate
23+
from kaira.metrics.signal import BitErrorRate, SymbolErrorRate
2424
from kaira.modulations import QPSKDemodulator, QPSKModulator
2525

2626
# Set random seed for reproducibility

examples/metrics/plot_composite_metrics.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import numpy as np
1818
import torch
1919

20-
from kaira.metrics import BER, PSNR, SNR, SSIM, BaseMetric
20+
from kaira.metrics import BaseMetric
21+
from kaira.metrics.image import PSNR, SSIM
22+
from kaira.metrics.signal import BER, SNR
2123

2224
# Set random seed for reproducibility
2325
torch.manual_seed(42)

examples/metrics/plot_custom_metrics.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
import numpy as np
1818
import torch
1919

20-
from kaira.metrics import BER, BaseMetric
20+
from kaira.metrics import BaseMetric
21+
from kaira.metrics.signal import BER
2122
from kaira.utils import snr_to_noise_power
2223

2324
# Set random seed for reproducibility

examples/metrics/plot_metrics_registry.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
import numpy as np
1616
import torch
1717

18-
from kaira.metrics import BER, SNR, BaseMetric
18+
from kaira.metrics import BaseMetric
1919
from kaira.metrics.registry import MetricRegistry
20+
from kaira.metrics.signal import BER, SNR # Import from the signal submodule instead
2021

2122
# Set random seed for reproducibility
2223
torch.manual_seed(42)

0 commit comments

Comments
 (0)