From db6222b29e5e5e9154c639af649ac9ce26945240 Mon Sep 17 00:00:00 2001 From: Jan Adler Date: Tue, 4 Jun 2024 12:33:10 +0000 Subject: [PATCH] Simulation Trajectories --- .gitlab-ci.yml | 2 +- MANIFEST.in | 15 -- README.md | 2 +- _examples/library/getting_started_mobility.py | 58 +++++++ _examples/paper/fec.py | 2 +- _examples/paper/hardware_effects.py | 2 +- _examples/paper/interference_alamouti.py | 2 +- _examples/paper/interference_no.py | 2 +- _examples/paper/interference_zf.py | 2 +- _examples/paper/multinode_loop.py | 2 +- _examples/paper/multinode_simulation.py | 2 +- _examples/paper/pa_characteristics.py | 2 +- _examples/paper/radar_sensing.py | 2 +- _examples/paper/stopping.py | 2 +- _examples/paper/sweeping.py | 2 +- _examples/paper/theory.py | 2 +- _examples/paper/theory_awgn.py | 2 +- _examples/paper/theory_rayleigh.py | 2 +- _examples/paper/theory_theory.py | 2 +- bumpver.toml | 18 ++- docssource/api/simulation.animation.rst | 35 ++++ .../scripts/examples/channel_radar_single.py | 2 +- .../scripts/examples/simulation_animation.py | 29 ++++ docssource/scripts/plot_antenna_gains.py | 2 +- docssource/scripts/plot_pa_characteristics.py | 2 +- docssource/scripts/plot_quantizer.py | 2 +- docssource/scripts/radar_simulation.py | 2 +- hermespy/beamforming/__init__.py | 4 +- hermespy/beamforming/beamformer.py | 4 +- hermespy/beamforming/capon.py | 4 +- hermespy/beamforming/conventional.py | 4 +- hermespy/beamforming/operators.py | 4 +- hermespy/bin/__init__.py | 4 +- hermespy/bin/hermes.py | 4 +- hermespy/channel/__init__.py | 2 +- hermespy/channel/cdl/__init__.py | 2 +- hermespy/channel/cdl/cdl.py | 2 +- hermespy/channel/cdl/cluster_delay_lines.py | 2 +- hermespy/channel/cdl/indoor_factory.py | 2 +- hermespy/channel/cdl/indoor_office.py | 2 +- hermespy/channel/cdl/rural_macrocells.py | 2 +- hermespy/channel/cdl/urban_macrocells.py | 2 +- hermespy/channel/cdl/urban_microcells.py | 2 +- hermespy/channel/channel.py | 150 +++++++++++++++--- hermespy/channel/consistent.py | 2 +- hermespy/channel/delay/__init__.py | 2 +- hermespy/channel/delay/delay.py | 2 +- hermespy/channel/delay/random.py | 2 +- hermespy/channel/delay/spatial.py | 2 +- hermespy/channel/fading/__init__.py | 2 +- hermespy/channel/fading/correlation.py | 2 +- hermespy/channel/fading/cost259.py | 2 +- hermespy/channel/fading/exponential.py | 2 +- hermespy/channel/fading/fading.py | 2 +- hermespy/channel/fading/tdl.py | 2 +- hermespy/channel/ideal.py | 2 +- hermespy/channel/quadriga/__init__.py | 2 +- hermespy/channel/quadriga/interface.py | 2 +- hermespy/channel/quadriga/matlab.py | 2 +- hermespy/channel/quadriga/octave.py | 2 +- hermespy/channel/quadriga/quadriga.py | 2 +- hermespy/channel/radar/__init__.py | 2 +- hermespy/channel/radar/multi.py | 2 +- hermespy/channel/radar/radar.py | 2 +- hermespy/channel/radar/single.py | 2 +- hermespy/core/__init__.py | 4 +- hermespy/core/antennas.py | 4 +- hermespy/core/channel.py | 4 +- hermespy/core/definitions.py | 4 +- hermespy/core/device.py | 4 +- hermespy/core/drop.py | 4 +- hermespy/core/duplex.py | 4 +- hermespy/core/evaluators.py | 4 +- hermespy/core/executable.py | 4 +- hermespy/core/factory.py | 4 +- hermespy/core/logarithmic.py | 4 +- hermespy/core/monte_carlo.py | 97 ++++++++--- hermespy/core/operators.py | 4 +- hermespy/core/pipeline.py | 4 +- hermespy/core/random_node.py | 4 +- hermespy/core/scenario.py | 4 +- hermespy/core/signal_model.py | 2 +- hermespy/core/transformation.py | 4 +- hermespy/core/visualize.py | 4 +- hermespy/fec/__init__.py | 4 +- hermespy/fec/aff3ct/__init__.py | 2 +- hermespy/fec/block_interleaver.py | 4 +- hermespy/fec/coding.py | 4 +- hermespy/fec/cyclic_redundancy_check.py | 4 +- hermespy/fec/repetition_encoder.py | 4 +- hermespy/fec/scrambler.py | 4 +- hermespy/hardware_loop/__init__.py | 4 +- hermespy/hardware_loop/audio/__init__.py | 4 +- hermespy/hardware_loop/audio/device.py | 2 +- hermespy/hardware_loop/audio/scenario.py | 4 +- .../hardware_loop/calibration/__init__.py | 4 +- hermespy/hardware_loop/calibration/delay.py | 4 +- hermespy/hardware_loop/calibration/leakage.py | 4 +- hermespy/hardware_loop/hardware_loop.py | 4 +- hermespy/hardware_loop/physical_device.py | 4 +- .../hardware_loop/physical_device_dummy.py | 4 +- hermespy/hardware_loop/scenario.py | 4 +- hermespy/hardware_loop/uhd/__init__.py | 4 +- hermespy/hardware_loop/uhd/system.py | 4 +- hermespy/hardware_loop/uhd/usrp.py | 4 +- hermespy/hardware_loop/visualizers.py | 4 +- hermespy/jcas/__init__.py | 4 +- hermespy/jcas/jcas.py | 4 +- hermespy/jcas/matched_filtering.py | 2 +- hermespy/jcas/ofdm_radar.py | 2 +- hermespy/modem/__init__.py | 4 +- hermespy/modem/bits_source.py | 4 +- hermespy/modem/evaluators.py | 4 +- hermespy/modem/modem.py | 4 +- hermespy/modem/precoding/__init__.py | 4 +- hermespy/modem/precoding/dft.py | 4 +- hermespy/modem/precoding/ratio_combining.py | 4 +- hermespy/modem/precoding/single_carrier.py | 4 +- .../precoding/space_time_block_coding.py | 4 +- .../modem/precoding/spatial_multiplexing.py | 4 +- hermespy/modem/precoding/symbol_precoding.py | 4 +- hermespy/modem/symbols.py | 4 +- hermespy/modem/tools/__init__.py | 4 +- hermespy/modem/tools/psk_qam_mapping.py | 4 +- hermespy/modem/waveform.py | 4 +- hermespy/modem/waveform_chirp_fsk.py | 2 +- .../waveform_correlation_synchronization.py | 2 +- hermespy/modem/waveform_single_carrier.py | 4 +- hermespy/modem/waveforms/__init__.py | 9 ++ .../modem/waveforms/orthogonal/__init__.py | 4 +- .../modem/waveforms/orthogonal/channel.py | 4 +- hermespy/modem/waveforms/orthogonal/ocdm.py | 4 +- hermespy/modem/waveforms/orthogonal/ofdm.py | 4 +- hermespy/modem/waveforms/orthogonal/otfs.py | 2 +- .../modem/waveforms/orthogonal/waveform.py | 4 +- hermespy/precoding/__init__.py | 4 +- hermespy/precoding/precoding.py | 4 +- hermespy/precoding/stream_precoding.py | 4 +- hermespy/radar/__init__.py | 4 +- hermespy/radar/cube.py | 2 +- hermespy/radar/detection.py | 4 +- hermespy/radar/evaluators.py | 4 +- hermespy/radar/fmcw.py | 4 +- hermespy/radar/radar.py | 4 +- hermespy/simulation/__init__.py | 2 +- hermespy/simulation/animation.py | 2 +- hermespy/simulation/antennas.py | 4 +- hermespy/simulation/coupling/__init__.py | 4 +- hermespy/simulation/coupling/coupling.py | 4 +- hermespy/simulation/coupling/impedance.py | 4 +- hermespy/simulation/coupling/perfect.py | 4 +- hermespy/simulation/drop.py | 2 +- hermespy/simulation/isolation/__init__.py | 4 +- hermespy/simulation/isolation/isolation.py | 4 +- hermespy/simulation/isolation/perfect.py | 4 +- hermespy/simulation/isolation/selective.py | 4 +- hermespy/simulation/isolation/specific.py | 6 +- hermespy/simulation/modem/__init__.py | 4 +- .../simulation/modem/channel_estimation.py | 4 +- hermespy/simulation/modem/noise.py | 9 ++ hermespy/simulation/noise/__init__.py | 4 +- hermespy/simulation/noise/level.py | 2 +- hermespy/simulation/noise/model.py | 2 +- hermespy/simulation/rf_chain/__init__.py | 4 +- .../rf_chain/analog_digital_converter.py | 4 +- hermespy/simulation/rf_chain/phase_noise.py | 4 +- .../simulation/rf_chain/power_amplifier.py | 4 +- hermespy/simulation/rf_chain/rf_chain.py | 4 +- hermespy/simulation/scenario.py | 55 ++++--- hermespy/simulation/simulated_device.py | 26 ++- hermespy/simulation/simulation.py | 111 +++++++++++-- hermespy/tools/__init__.py | 4 +- hermespy/tools/math.py | 4 +- hermespy/tools/resampling.py | 2 +- hermespy/tools/tile.py | 4 +- scripts/performance/test_install_memray.py | 2 +- setup.py | 4 +- submodules/affect | 2 +- tests/__init__.py | 2 +- tests/integration_tests/__init__.py | 4 +- tests/integration_tests/test_audio_device.py | 4 +- tests/integration_tests/test_evaluation.py | 4 +- tests/integration_tests/test_fec.py | 4 +- tests/integration_tests/test_fmcw_radar.py | 4 +- tests/integration_tests/test_links.py | 2 +- .../test_matched_filter_jcas.py | 2 +- tests/integration_tests/test_mimo.py | 2 +- tests/integration_tests/test_polarization.py | 2 +- tests/integration_tests/test_roc.py | 4 +- tests/integration_tests/test_scenario.py | 4 +- .../integration_tests/test_trigger_groups.py | 4 +- .../integrity_tests/documentation/__init__.py | 4 +- .../documentation/test_examples.py | 9 +- .../documentation/test_notebooks.py | 4 +- .../documentation/test_plots.py | 4 +- tests/integrity_tests/examples/__init__.py | 4 +- .../examples/test_config_examples.py | 4 +- .../examples/test_library_examples.py | 13 +- tests/unit_tests/__init__.py | 10 ++ tests/unit_tests/beamforming/__init__.py | 4 +- .../unit_tests/beamforming/test_beamformer.py | 4 +- tests/unit_tests/beamforming/test_capon.py | 4 +- .../beamforming/test_conventional.py | 4 +- .../unit_tests/beamforming/test_operators.py | 4 +- tests/unit_tests/bin/__init__.py | 4 +- tests/unit_tests/bin/test_executable.py | 4 +- tests/unit_tests/channel/__init__.py | 4 +- tests/unit_tests/channel/test_cdl.py | 6 +- tests/unit_tests/channel/test_channel.py | 2 +- tests/unit_tests/channel/test_consistent.py | 2 +- tests/unit_tests/channel/test_delay.py | 2 +- tests/unit_tests/channel/test_fading.py | 2 +- tests/unit_tests/channel/test_ideal.py | 2 +- tests/unit_tests/channel/test_quadriga.py | 4 +- .../unit_tests/channel/test_radar_channel.py | 2 +- tests/unit_tests/core/__init__.py | 4 +- tests/unit_tests/core/test_antennas.py | 4 +- .../core/test_channel_state_information.py | 4 +- tests/unit_tests/core/test_device.py | 4 +- tests/unit_tests/core/test_drop.py | 4 +- tests/unit_tests/core/test_duplex.py | 4 +- tests/unit_tests/core/test_evaluators.py | 4 +- tests/unit_tests/core/test_executable.py | 4 +- tests/unit_tests/core/test_factory.py | 4 +- tests/unit_tests/core/test_logarithmic.py | 4 +- tests/unit_tests/core/test_monte_carlo.py | 4 +- tests/unit_tests/core/test_operators.py | 4 +- tests/unit_tests/core/test_pipeline.py | 4 +- tests/unit_tests/core/test_random_node.py | 4 +- tests/unit_tests/core/test_scenario.py | 4 +- tests/unit_tests/core/test_signal.py | 2 +- tests/unit_tests/core/test_transformation.py | 4 +- tests/unit_tests/core/test_visualize.py | 4 +- tests/unit_tests/fec/__init__.py | 4 +- tests/unit_tests/fec/test_bch.py | 4 +- .../unit_tests/fec/test_block_interleaver.py | 4 +- tests/unit_tests/fec/test_coding.py | 4 +- .../fec/test_cyclic_redundancy_check.py | 4 +- tests/unit_tests/fec/test_ldpc.py | 4 +- tests/unit_tests/fec/test_polar.py | 4 +- .../unit_tests/fec/test_repetition_encoder.py | 4 +- tests/unit_tests/fec/test_rs.py | 4 +- tests/unit_tests/fec/test_rsc.py | 4 +- tests/unit_tests/fec/test_scrambler.py | 4 +- tests/unit_tests/fec/test_turbo.py | 4 +- tests/unit_tests/hardware_loop/__init__.py | 4 +- .../hardware_loop/audio/__init__.py | 4 +- .../hardware_loop/audio/test_audio_device.py | 2 +- .../hardware_loop/audio/test_scenario.py | 4 +- .../hardware_loop/calibration/__init__.py | 4 +- .../hardware_loop/calibration/test_delay.py | 4 +- .../hardware_loop/calibration/test_leakage.py | 4 +- .../hardware_loop/test_hardware_loop.py | 4 +- .../hardware_loop/test_physical_device.py | 4 +- .../test_physical_device_dummy.py | 4 +- .../hardware_loop/test_physical_scenario.py | 4 +- .../hardware_loop/test_visualizers.py | 4 +- .../unit_tests/hardware_loop/uhd/__init__.py | 4 +- .../unit_tests/hardware_loop/uhd/test_usrp.py | 4 +- .../hardware_loop/uhd/test_usrp_system.py | 4 +- tests/unit_tests/jcas/__init__.py | 4 +- tests/unit_tests/jcas/test_jcas.py | 4 +- tests/unit_tests/jcas/test_matched_filter.py | 4 +- tests/unit_tests/jcas/test_ofdm_radar.py | 2 +- tests/unit_tests/modem/__init__.py | 4 +- tests/unit_tests/modem/precoding/__init__.py | 4 +- tests/unit_tests/modem/precoding/test_dft.py | 4 +- .../modem/precoding/test_ratio_combining.py | 4 +- .../modem/precoding/test_single_carrier.py | 4 +- .../precoding/test_spatial_multiplexing.py | 4 +- tests/unit_tests/modem/precoding/test_stbc.py | 4 +- .../modem/precoding/test_symbol_precoding.py | 4 +- tests/unit_tests/modem/test_bits_source.py | 4 +- tests/unit_tests/modem/test_evaluators.py | 4 +- tests/unit_tests/modem/test_modem.py | 4 +- tests/unit_tests/modem/test_symbols.py | 4 +- tests/unit_tests/modem/test_waveform.py | 4 +- .../modem/test_waveform_chirp_fsk.py | 4 +- ...st_waveform_correlation_synchronization.py | 4 +- .../modem/test_waveform_single_carrier.py | 4 +- tests/unit_tests/modem/tools/__init__.py | 4 +- .../modem/tools/test_psk_qam_mapping.py | 4 +- tests/unit_tests/modem/waveforms/__init__.py | 10 ++ .../modem/waveforms/orthogonal/__init__.py | 10 ++ .../waveforms/orthogonal/test_channel.py | 0 .../modem/waveforms/orthogonal/test_ocdm.py | 4 +- .../modem/waveforms/orthogonal/test_ofdm.py | 2 +- .../modem/waveforms/orthogonal/test_otfs.py | 2 +- .../waveforms/orthogonal/test_waveform.py | 4 +- tests/unit_tests/precoding/__init__.py | 4 +- tests/unit_tests/precoding/test_precoding.py | 4 +- .../precoding/test_stream_precoding.py | 4 +- tests/unit_tests/radar/__init__.py | 4 +- tests/unit_tests/radar/test_cube.py | 2 +- tests/unit_tests/radar/test_detection.py | 2 +- tests/unit_tests/radar/test_evaluators.py | 4 +- tests/unit_tests/radar/test_fmcw.py | 4 +- tests/unit_tests/radar/test_radar.py | 4 +- tests/unit_tests/simulation/__init__.py | 4 +- .../simulation/coupling/__init__.py | 4 +- .../simulation/coupling/test_coupling.py | 4 +- .../simulation/coupling/test_impedance.py | 4 +- .../simulation/isolation/__init__.py | 4 +- .../simulation/isolation/test_isolation.py | 4 +- .../isolation/test_perfect_isolation.py | 4 +- .../simulation/isolation/test_selective.py | 4 +- .../isolation/test_specific_isolation.py | 4 +- tests/unit_tests/simulation/modem/__init__.py | 10 ++ .../modem/test_channel_estimation.py | 2 +- .../unit_tests/simulation/modem/test_noise.py | 2 +- tests/unit_tests/simulation/noise/__init__.py | 4 +- .../unit_tests/simulation/noise/test_level.py | 2 +- .../unit_tests/simulation/noise/test_model.py | 2 +- .../simulation/rf_chain/__init__.py | 4 +- .../rf_chain/test_analog_digital_converter.py | 4 +- .../simulation/rf_chain/test_iq_imbalance.py | 4 +- .../simulation/rf_chain/test_phase_noise.py | 4 +- .../rf_chain/test_power_amplifier.py | 4 +- .../simulation/rf_chain/test_quantization.py | 4 +- .../simulation/rf_chain/test_rf_chain.py | 4 +- tests/unit_tests/simulation/test_animation.py | 2 +- tests/unit_tests/simulation/test_antennas.py | 4 +- tests/unit_tests/simulation/test_drop.py | 2 +- tests/unit_tests/simulation/test_scenario.py | 2 +- .../simulation/test_simulated_device.py | 4 +- .../unit_tests/simulation/test_simulation.py | 12 +- tests/unit_tests/tools/__init__.py | 4 +- tests/unit_tests/tools/test_math.py | 4 +- tests/unit_tests/tools/test_resampling.py | 4 +- tests/unit_tests/tools/test_tile.py | 4 +- tests/unit_tests/utils.py | 9 +- 331 files changed, 1120 insertions(+), 631 deletions(-) delete mode 100644 MANIFEST.in create mode 100644 _examples/library/getting_started_mobility.py create mode 100644 docssource/scripts/examples/simulation_animation.py delete mode 100644 tests/unit_tests/modem/waveforms/orthogonal/test_channel.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 671764d7..d63c2e17 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ image: python:3.11 variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" GIT_SUBMODULE_STRATEGY: recursive - HERMES_VERSION: "1.2.0" + HERMES_VERSION: "1.3.0" HERMES_WHEEL_11: "hermespy-$HERMES_VERSION-cp311-cp311-linux_x86_64.whl" HERMES_WHEEL_10: "hermespy-$HERMES_VERSION-cp310-cp310-linux_x86_64.whl" HERMES_WHEEL_09: "hermespy-$HERMES_VERSION-cp39-cp39-linux_x86_64.whl" diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 31c4f9f8..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,15 +0,0 @@ -recursive-include hermespy *.py *m *.mplstyle *.txt *.cpp *.hpp -include LICENSE -include CMakeLists.txt -include README.md -include requirements.txt -include setup.py -exclude MANIFEST.in - -# Include affe3ct sources -recursive-include submodules/affect *.cpp *.hpp *.h *.hxx CMakeLists.txt *.in LICENSE* README* -include submodules/affect/doc/strings.rst - -# Exclude the whole _skbuild folder and tests -prune _skbuild -prune tests \ No newline at end of file diff --git a/README.md b/README.md index 8a491b91..b00f5ceb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ adjacent-channel interference among different communication systems. ## Features -The current release version 1.1.0 serves as a platform for joint development. +The current release version 1.3.0 serves as a platform for joint development. Its main focus is to provide a software architecture that can be easily extended. Detailed core features as well as a release plan can be found in the [features](https://hermespy.org/features.html) list. diff --git a/_examples/library/getting_started_mobility.py b/_examples/library/getting_started_mobility.py new file mode 100644 index 00000000..5f15e9b9 --- /dev/null +++ b/_examples/library/getting_started_mobility.py @@ -0,0 +1,58 @@ +import matplotlib.pyplot as plt +import numpy as np + +# Import required HermesPy modules +from hermespy.core import dB, Transformation +from hermespy.channel import IndoorOffice, LOSState +from hermespy.simulation import LinearTrajectory, Simulation, StaticTrajectory, SNR +from hermespy.modem import BitErrorEvaluator, RootRaisedCosineWaveform, SingleCarrierLeastSquaresChannelEstimation, SingleCarrierZeroForcingChannelEqualization, SimplexLink + +# Create a new HermesPy simulation scenario +simulation = Simulation(seed=42) + +# Create two devices representing base station and terminal +# in a downlink scenario +cf = 2.4e9 +base_station = simulation.scenario.new_device(carrier_frequency=cf) +terminal = simulation.scenario.new_device(carrier_frequency=cf) + +# Assign a positions / trajectories to the terminal and base station +base_station.trajectory = StaticTrajectory( + Transformation.From_Translation(np.array([0, 0, 2])) +) +terminal.trajectory = LinearTrajectory( + Transformation.From_Translation(np.array([10, 0, 0])), + Transformation.From_Translation(np.array([0, 10, 0])), + 10, +) + +# Configure a downlink communicating between base station and terminal +# via a single-carrier waveform +link = SimplexLink(base_station, terminal) +link.waveform = RootRaisedCosineWaveform(symbol_rate=1e6, oversampling_factor=8, + num_preamble_symbols=10, num_data_symbols=100, + roll_off=.9) +link.waveform.channel_estimation = SingleCarrierLeastSquaresChannelEstimation() +link.waveform.channel_equalization = SingleCarrierZeroForcingChannelEqualization() + +# Specify the channel model between base station and terminal +channel = IndoorOffice(expected_state=LOSState.LOS) +simulation.set_channel(base_station, terminal, channel) + +# Specify the hardware noise model +base_station.noise_level = SNR(dB(100), base_station, channel) +terminal.noise_level = SNR(dB(100), base_station, channel) + +# Evaluate the bit error rate +ber = BitErrorEvaluator(link, link) +simulation.add_evaluator(ber) + +# Run a simulation generating drops every 1 second +simulation.drop_interval = 1 +simulation.num_drops = 1000 + +# Sweep over the receive SNR +simulation.new_dimension('noise_level', dB(100, 20, 16, 12, 8, 4, 0), terminal) +result = simulation.run() +result.plot() +plt.show() diff --git a/_examples/paper/fec.py b/_examples/paper/fec.py index bcd36e13..18d4c24e 100644 --- a/_examples/paper/fec.py +++ b/_examples/paper/fec.py @@ -11,7 +11,7 @@ from hermespy.modem import TransmittingModem, ReceivingModem, OFDMWaveform, GridResource, GridElement, SymbolSection, BitErrorEvaluator, BlockErrorEvaluator, FrameErrorEvaluator, ThroughputEvaluator __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/hardware_effects.py b/_examples/paper/hardware_effects.py index 4ad2438a..7b840567 100644 --- a/_examples/paper/hardware_effects.py +++ b/_examples/paper/hardware_effects.py @@ -10,7 +10,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/interference_alamouti.py b/_examples/paper/interference_alamouti.py index 64d6d046..3b0e3de9 100644 --- a/_examples/paper/interference_alamouti.py +++ b/_examples/paper/interference_alamouti.py @@ -13,7 +13,7 @@ from hermespy.precoding import SpaceTimeBlockCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/interference_no.py b/_examples/paper/interference_no.py index ddb52cfb..ba69cccd 100644 --- a/_examples/paper/interference_no.py +++ b/_examples/paper/interference_no.py @@ -13,7 +13,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/interference_zf.py b/_examples/paper/interference_zf.py index 3bad55ee..5f67a4a6 100644 --- a/_examples/paper/interference_zf.py +++ b/_examples/paper/interference_zf.py @@ -13,7 +13,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/multinode_loop.py b/_examples/paper/multinode_loop.py index 0960341c..97a82d28 100644 --- a/_examples/paper/multinode_loop.py +++ b/_examples/paper/multinode_loop.py @@ -11,7 +11,7 @@ from hermespy.modem import TransmittingModem, ReceivingModem, RRCWaveform, SCCorrelationSynchronization, SCLeastSquaresChannelEstimation, SCZeroForcingChannelEqualization, BitErrorEvaluator __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/multinode_simulation.py b/_examples/paper/multinode_simulation.py index be1745f3..a96f115d 100644 --- a/_examples/paper/multinode_simulation.py +++ b/_examples/paper/multinode_simulation.py @@ -10,7 +10,7 @@ from hermespy.modem import TransmittingModem, ReceivingModem, RRCWaveform, SCCorrelationSynchronization, SCLeastSquaresChannelEstimation, SCZeroForcingChannelEqualization, BitErrorEvaluator __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/pa_characteristics.py b/_examples/paper/pa_characteristics.py index 15899e49..5326b0e2 100644 --- a/_examples/paper/pa_characteristics.py +++ b/_examples/paper/pa_characteristics.py @@ -8,7 +8,7 @@ ClippingPowerAmplifier __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/radar_sensing.py b/_examples/paper/radar_sensing.py index 4b181bc8..1e7becc8 100644 --- a/_examples/paper/radar_sensing.py +++ b/_examples/paper/radar_sensing.py @@ -15,7 +15,7 @@ from hermespy.tools import db2lin __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/stopping.py b/_examples/paper/stopping.py index 978618ed..39d1d66e 100644 --- a/_examples/paper/stopping.py +++ b/_examples/paper/stopping.py @@ -16,7 +16,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/sweeping.py b/_examples/paper/sweeping.py index 7b0524d7..f5b46244 100644 --- a/_examples/paper/sweeping.py +++ b/_examples/paper/sweeping.py @@ -16,7 +16,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/theory.py b/_examples/paper/theory.py index 20eb94ff..829a1fdd 100644 --- a/_examples/paper/theory.py +++ b/_examples/paper/theory.py @@ -13,7 +13,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/theory_awgn.py b/_examples/paper/theory_awgn.py index d08bef6f..80351574 100644 --- a/_examples/paper/theory_awgn.py +++ b/_examples/paper/theory_awgn.py @@ -14,7 +14,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/theory_rayleigh.py b/_examples/paper/theory_rayleigh.py index 66f06ef4..7d3f2c5f 100644 --- a/_examples/paper/theory_rayleigh.py +++ b/_examples/paper/theory_rayleigh.py @@ -16,7 +16,7 @@ from hermespy.core import ConsoleMode __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/_examples/paper/theory_theory.py b/_examples/paper/theory_theory.py index c7f721f8..5bdd30b6 100644 --- a/_examples/paper/theory_theory.py +++ b/_examples/paper/theory_theory.py @@ -13,7 +13,7 @@ from hermespy.core import Executable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/bumpver.toml b/bumpver.toml index 2b944ceb..eb35571e 100644 --- a/bumpver.toml +++ b/bumpver.toml @@ -1,6 +1,6 @@ [bumpver] -current_version = "1.1.0" +current_version = "1.3.0" version_pattern = "MAJOR.MINOR.PATCH" commit_message = "Bump to version {new_version}" commit = false @@ -19,20 +19,29 @@ push = false "hermespy/beamforming/*.py" = [ '__version__ = "{version}"' ] "hermespy/bin/*.py" = [ '__version__ = "{version}"' ] "hermespy/channel/*.py" = [ '__version__ = "{version}"' ] +"hermespy/channel/cdl/*.py" = [ '__version__ = "{version}"' ] +"hermespy/channel/delay/*.py" = [ '__version__ = "{version}"' ] +"hermespy/channel/fading/*.py" = [ '__version__ = "{version}"' ] +"hermespy/channel/quadriga/*.py" = [ '__version__ = "{version}"' ] +"hermespy/channel/radar/*.py" = [ '__version__ = "{version}"' ] "hermespy/core/*.py" = [ '__version__ = "{version}"' ] "hermespy/fec/*.py" = [ '__version__ = "{version}"' ] "hermespy/hardware_loop/*.py" = [ '__version__ = "{version}"' ] "hermespy/hardware_loop/audio/*.py" = [ '__version__ = "{version}"' ] +"hermespy/hardware_loop/calibration/*.py" = [ '__version__ = "{version}"' ] "hermespy/hardware_loop/uhd/*.py" = [ '__version__ = "{version}"' ] "hermespy/jcas/*.py" = [ '__version__ = "{version}"' ] "hermespy/modem/*.py" = [ '__version__ = "{version}"' ] "hermespy/modem/precoding/*.py" = [ '__version__ = "{version}"' ] "hermespy/modem/tools/*.py" = [ '__version__ = "{version}"' ] +"hermespy/modem/waveforms/*.py" = [ '__version__ = "{version}"' ] +"hermespy/modem/waveforms/orthogonal/*.py" = [ '__version__ = "{version}"' ] "hermespy/precoding/*.py" = [ '__version__ = "{version}"' ] "hermespy/radar/*.py" = [ '__version__ = "{version}"' ] "hermespy/simulation/*.py" = [ '__version__ = "{version}"' ] "hermespy/simulation/coupling/*.py" = [ '__version__ = "{version}"' ] "hermespy/simulation/isolation/*.py" = [ '__version__ = "{version}"' ] +"hermespy/simulation/modem/*.py" = [ '__version__ = "{version}"' ] "hermespy/simulation/noise/*.py" = [ '__version__ = "{version}"' ] "hermespy/simulation/rf_chain/*.py" = [ '__version__ = "{version}"' ] "hermespy/tools/*.py" = [ '__version__ = "{version}"' ] @@ -48,16 +57,21 @@ push = false "tests/unit_tests/fec/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/hardware_loop/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/hardware_loop/audio/*.py" = [ '__version__ = "{version}"' ] +"tests/unit_tests/hardware_loop/calibration/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/hardware_loop/uhd/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/jcas/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/modem/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/modem/precoding/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/modem/tools/*.py" = [ '__version__ = "{version}"' ] +"tests/unit_tests/modem/waveforms/*.py" = [ '__version__ = "{version}"' ] +"tests/unit_tests/modem/waveforms/orthogonal/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/precoding/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/radar/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/simulation/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/simulation/coupling/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/simulation/isolation/*.py" = [ '__version__ = "{version}"' ] +"tests/unit_tests/simulation/modem/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/simulation/noise/*.py" = [ '__version__ = "{version}"' ] "tests/unit_tests/simulation/rf_chain/*.py" = [ '__version__ = "{version}"' ] -"tests/unit_tests/tools/*.py" = [ '__version__ = "{version}"' ] \ No newline at end of file +"tests/unit_tests/tools/*.py" = [ '__version__ = "{version}"' ] +"tests/unit_tests/*.py" = [ '__version__ = "{version}"' ] \ No newline at end of file diff --git a/docssource/api/simulation.animation.rst b/docssource/api/simulation.animation.rst index e83cea43..44359d9b 100644 --- a/docssource/api/simulation.animation.rst +++ b/docssource/api/simulation.animation.rst @@ -2,6 +2,41 @@ Animation ========== +.. inheritance-diagram:: hermespy.simulation.animation.Trajectory hermespy.simulation.animation.StaticTrajectory hermespy.simulation.animation.LinearTrajectory + :parts: 1 + +Movements of devices and other objects within simulations may be described by :class:`Trajectories`, +which model the veloctiy, position and orientation of the object as a function of time. +Generally, objects that may be animated within a simulation should inherit from the :class:`Moveable` class, +which exposes the :meth:`trajectory` property. +The currently available trajectory types are: + +.. list-table:: Trajectory Types + :header-rows: 1 + + * - Type + - Description + * - :class:`StaticTrajectory` + - A trajectory that does not change over time. + * - :class:`LinearTrajectory` + - A trajectory that moves in a straight line at a constant velocity. + +The following example demonstrates how to assign a linear trajectory to a device +within a simulation and plot the scenario: + +.. literalinclude:: ../scripts/examples/simulation_animation.py + :language: python + :linenos: + :lines: 10-29 + +.. autoclass:: hermespy.simulation.animation.Trajectory + +.. autoclass:: hermespy.simulation.animation.StaticTrajectory + +.. autoclass:: hermespy.simulation.animation.LinearTrajectory + .. autoclass:: hermespy.simulation.animation.Moveable +.. autoclass:: hermespy.simulation.animation.TrajectorySample + .. footbibliography:: diff --git a/docssource/scripts/examples/channel_radar_single.py b/docssource/scripts/examples/channel_radar_single.py index 37858fda..8a815634 100644 --- a/docssource/scripts/examples/channel_radar_single.py +++ b/docssource/scripts/examples/channel_radar_single.py @@ -9,7 +9,7 @@ from hermespy.simulation import Simulation # Initialize a single device operating at 78.5 GHz -simulation = Simulation() +simulation = Simulation(seed=42) device = simulation.new_device(carrier_frequency=78.5e9) # Create a radar channel modeling a single target at 10m distance diff --git a/docssource/scripts/examples/simulation_animation.py b/docssource/scripts/examples/simulation_animation.py new file mode 100644 index 00000000..77623a32 --- /dev/null +++ b/docssource/scripts/examples/simulation_animation.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +import matplotlib.pyplot as plt +import numpy as np + +from hermespy.core import Transformation +from hermespy.simulation import Simulation, LinearTrajectory + + +# Create a new simulation featuring two devices +simulation = Simulation() +device_alpha = simulation.new_device() +device_beta = simulation.new_device() + +# Assign each device a linear trajectory +device_alpha.trajectory = LinearTrajectory( + initial_pose=Transformation.From_Translation(np.array([0, 0, 20])), + final_pose=Transformation.From_Translation(np.array([0, 100, 5])), + duration=60, +) +device_beta.trajectory = LinearTrajectory( + initial_pose=Transformation.From_Translation(np.array([100, 100, 0])), + final_pose=Transformation.From_Translation(np.array([0, 0, 0])), + duration=60, +) + +# Visualize the trajectories +simulation.scenario.visualize() +plt.show() diff --git a/docssource/scripts/plot_antenna_gains.py b/docssource/scripts/plot_antenna_gains.py index fd4bc5b8..29105d4a 100644 --- a/docssource/scripts/plot_antenna_gains.py +++ b/docssource/scripts/plot_antenna_gains.py @@ -6,7 +6,7 @@ from hermespy.simulation.antenna import Antenna, IdealAntenna, PatchAntenna, Dipole __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.2.7" diff --git a/docssource/scripts/plot_pa_characteristics.py b/docssource/scripts/plot_pa_characteristics.py index 65d22747..b67e6ced 100644 --- a/docssource/scripts/plot_pa_characteristics.py +++ b/docssource/scripts/plot_pa_characteristics.py @@ -7,7 +7,7 @@ ClippingPowerAmplifier __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.2.7" diff --git a/docssource/scripts/plot_quantizer.py b/docssource/scripts/plot_quantizer.py index 05af327e..9f67300d 100644 --- a/docssource/scripts/plot_quantizer.py +++ b/docssource/scripts/plot_quantizer.py @@ -7,7 +7,7 @@ from hermespy.simulation import AnalogDigitalConverter, QuantizerType __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Jan Adler"] __license__ = "AGPLv3" __version__ = "0.2.7" diff --git a/docssource/scripts/radar_simulation.py b/docssource/scripts/radar_simulation.py index 80da4df7..f8a15358 100644 --- a/docssource/scripts/radar_simulation.py +++ b/docssource/scripts/radar_simulation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "1.2.0" diff --git a/hermespy/beamforming/__init__.py b/hermespy/beamforming/__init__.py index e96f86bf..2b9768b1 100644 --- a/hermespy/beamforming/__init__.py +++ b/hermespy/beamforming/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/beamforming/beamformer.py b/hermespy/beamforming/beamformer.py index 2e80ccf1..67a19023 100644 --- a/hermespy/beamforming/beamformer.py +++ b/hermespy/beamforming/beamformer.py @@ -32,10 +32,10 @@ from hermespy.precoding import Precoding, ReceiveStreamDecoder, TransmitStreamEncoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/beamforming/capon.py b/hermespy/beamforming/capon.py index b18c4ece..aa0d4f76 100644 --- a/hermespy/beamforming/capon.py +++ b/hermespy/beamforming/capon.py @@ -11,10 +11,10 @@ from .beamformer import ReceiveBeamformer __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/beamforming/conventional.py b/hermespy/beamforming/conventional.py index 333a692f..8e7c60ff 100644 --- a/hermespy/beamforming/conventional.py +++ b/hermespy/beamforming/conventional.py @@ -18,10 +18,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/beamforming/operators.py b/hermespy/beamforming/operators.py index 54f431cf..b9de40d9 100644 --- a/hermespy/beamforming/operators.py +++ b/hermespy/beamforming/operators.py @@ -13,10 +13,10 @@ from .beamformer import TransmitBeamformer, ReceiveBeamformer __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/bin/__init__.py b/hermespy/bin/__init__.py index e9b69540..cb9bc44d 100644 --- a/hermespy/bin/__init__.py +++ b/hermespy/bin/__init__.py @@ -1,10 +1,10 @@ from .hermes import hermes_simulation __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/bin/hermes.py b/hermespy/bin/hermes.py index 18740436..cdb2a9f8 100644 --- a/hermespy/bin/hermes.py +++ b/hermespy/bin/hermes.py @@ -73,10 +73,10 @@ from hermespy.core.factory import Serializable, Factory __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/__init__.py b/hermespy/channel/__init__.py index cf46355f..1626720c 100644 --- a/hermespy/channel/__init__.py +++ b/hermespy/channel/__init__.py @@ -59,7 +59,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/__init__.py b/hermespy/channel/cdl/__init__.py index 606ef858..68592566 100644 --- a/hermespy/channel/cdl/__init__.py +++ b/hermespy/channel/cdl/__init__.py @@ -12,7 +12,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/cdl.py b/hermespy/channel/cdl/cdl.py index 0bc7da4d..3b6cc30d 100644 --- a/hermespy/channel/cdl/cdl.py +++ b/hermespy/channel/cdl/cdl.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/cluster_delay_lines.py b/hermespy/channel/cdl/cluster_delay_lines.py index f36a393d..ba9254b9 100644 --- a/hermespy/channel/cdl/cluster_delay_lines.py +++ b/hermespy/channel/cdl/cluster_delay_lines.py @@ -48,7 +48,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/indoor_factory.py b/hermespy/channel/cdl/indoor_factory.py index 48017ec1..e11f90e4 100644 --- a/hermespy/channel/cdl/indoor_factory.py +++ b/hermespy/channel/cdl/indoor_factory.py @@ -25,7 +25,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/indoor_office.py b/hermespy/channel/cdl/indoor_office.py index fd228e4d..c7935d26 100644 --- a/hermespy/channel/cdl/indoor_office.py +++ b/hermespy/channel/cdl/indoor_office.py @@ -24,7 +24,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/rural_macrocells.py b/hermespy/channel/cdl/rural_macrocells.py index a2e2faea..31ef7031 100644 --- a/hermespy/channel/cdl/rural_macrocells.py +++ b/hermespy/channel/cdl/rural_macrocells.py @@ -23,7 +23,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/urban_macrocells.py b/hermespy/channel/cdl/urban_macrocells.py index e46a4b47..9b54bd4d 100644 --- a/hermespy/channel/cdl/urban_macrocells.py +++ b/hermespy/channel/cdl/urban_macrocells.py @@ -23,7 +23,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/cdl/urban_microcells.py b/hermespy/channel/cdl/urban_microcells.py index 853060ea..84b5255a 100644 --- a/hermespy/channel/cdl/urban_microcells.py +++ b/hermespy/channel/cdl/urban_microcells.py @@ -23,7 +23,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/channel.py b/hermespy/channel/channel.py index d8ddef6e..adcb6eeb 100644 --- a/hermespy/channel/channel.py +++ b/hermespy/channel/channel.py @@ -2,7 +2,7 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import Callable, Generic, Optional, Set, TypeVar, TYPE_CHECKING +from typing import Callable, Generic, Optional, overload, Set, TypeVar, TYPE_CHECKING import numpy as np from h5py import Group @@ -28,10 +28,10 @@ ) # pragma: no cover __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -476,6 +476,39 @@ def gain(self) -> float: return self.__gain + @overload + def sample( + self, + transmitter: DeviceState, + receiver: DeviceState, + carrier_frequency: float | None = None, + bandwidth: float | None = None, + ) -> CST: + """Sample the channel realization at a given point in time and space. + + Wrapper around :meth:`._sample` that converts the input arguments to the correct type. + + Args: + + transmitter (DeviceState): + State of the transmitting device at the time of sampling. + + receiver (DeviceState): + State of the receiving device at the time of sampling. + + carrier_frequency (float, optional): + Carrier frequency of the channel in Hz. + If not specified, the transmitting device's carrier frequency will be assumed. + + bandwidth (float, optional): + Bandwidth of the propagated signal in Hz. + If not specified, the transmitting device's sampling rate will be assumed. + + Returns: The channel sample for the given configuration. + """ + ... # pragma: no cover + + @overload def sample( self, transmitter: SimulatedDevice, @@ -490,11 +523,14 @@ def sample( Args: - transmitter_state (SimulatedDevice): - State of the transmitting device at the time of sampling. + transmitter (SimulatedDevice): + Transmitting device feeding into the channel model to be sampled. - receiver_state (SimulatedDevice): - State of the receiving device at the time of sampling. + receiver (SimulatedDevice): + Receiving device observing the channel model to be sampled. + + timestamp (float, optional): + Time at which the channel is sampled in seconds. carrier_frequency (float, optional): Carrier frequency of the channel in Hz. @@ -506,10 +542,40 @@ def sample( Returns: The channel sample at the given point in time. """ + ... # pragma: no cover + + def sample( + self, + transmitter: SimulatedDevice | DeviceState, + receiver: SimulatedDevice | DeviceState, + *args, + **kwargs, + ) -> CST: + from hermespy.simulation import SimulatedDevice, DeviceState + + if isinstance(transmitter, SimulatedDevice) and isinstance(receiver, SimulatedDevice): + timestamp = float(args[0]) if len(args) > 0 else 0.0 + carrier_frequency = float(args[1]) if len(args) > 1 else None + bandwidth = float(args[2]) if len(args) > 2 else None + + transmitter_device = transmitter + receiver_device = receiver + transmitter_state = transmitter.state(timestamp) + receiver_state = receiver.state(timestamp) + + elif isinstance(transmitter, DeviceState) and isinstance(receiver, DeviceState): + timestamp = 0.0 + carrier_frequency = float(args[0]) if len(args) > 0 else None + bandwidth = float(args[1]) if len(args) > 1 else None + + transmitter_device = transmitter.device + receiver_device = receiver.device + transmitter_state = transmitter + receiver_state = receiver + + else: + raise ValueError("Invalid input argument types for channel sampling.") - # Consolidate the channel realization's state - transmitter_state = transmitter.state(timestamp) - receiver_state = receiver.state(timestamp) _carrier_frequency = ( carrier_frequency if carrier_frequency is not None @@ -525,7 +591,7 @@ def sample( # Notify the registered hooks for hook in self.sample_hooks: - hook(sample, transmitter, receiver) + hook(sample, transmitter_device, receiver_device) return sample @@ -544,6 +610,17 @@ def _sample(self, state: LinkState) -> CST: """ ... # pragma: no cover + @overload + def reciprocal_sample( + self, + sample: CST, + transmitter: DeviceState, + receiver: DeviceState, + carrier_frequency: float | None = None, + bandwidth: float | None = None, + ) -> CST: ... # pragma: no cover + + @overload def reciprocal_sample( self, sample: CST, @@ -563,10 +640,14 @@ def reciprocal_sample( Channel sample to be reciprocally sampled. transmitter (SimulatedDevice): - State of the transmitting device in the reciprocal channel at the time of sampling. + Transmitting device in the reciprocal channel at the time of sampling. receiver (SimulatedDevice): - State of the receiving device in the reciprocal channel at the time of sampling. + Receiving device in the reciprocal channel at the time of sampling. + + timestamp (float, optional): + Time at which the channel is sampled in seconds. + Zero by default. carrier_frequency (float, optional): Carrier frequency of the channel in Hz. @@ -578,17 +659,50 @@ def reciprocal_sample( Returns: The channel sample at the given point in time. """ + ... # pragma: no cover + + def reciprocal_sample( + self, + sample: CST, + transmitter: SimulatedDevice | DeviceState, + receiver: SimulatedDevice | DeviceState, + *args, + **kwargs, + ) -> CST: + from hermespy.simulation import SimulatedDevice, DeviceState + + if isinstance(transmitter, SimulatedDevice) and isinstance(receiver, SimulatedDevice): + timestamp = float(args[0]) if len(args) > 0 else 0.0 + carrier_frequency = float(args[1]) if len(args) > 1 else None + bandwidth = float(args[2]) if len(args) > 2 else None + + transmitter_device = transmitter + receiver_device = receiver + transmitter_state = transmitter.state(timestamp) + receiver_state = receiver.state(timestamp) + + elif isinstance(transmitter, DeviceState) and isinstance(receiver, DeviceState): + timestamp = 0.0 + carrier_frequency = float(args[0]) if len(args) > 0 else None + bandwidth = float(args[1]) if len(args) > 1 else None + + transmitter_device = transmitter.device + receiver_device = receiver.device + transmitter_state = transmitter + receiver_state = receiver + + else: + raise ValueError("Invalid input argument types for channel sampling.") - # Consolidate the channel realization's state - transmitter_state = transmitter.state(timestamp) _carrier_frequency = ( carrier_frequency if carrier_frequency is not None else transmitter_state.carrier_frequency ) _bandwidth = bandwidth if bandwidth is not None else transmitter_state.sampling_rate + state = LinkState( - transmitter_state, receiver.state(timestamp), _carrier_frequency, _bandwidth, timestamp + transmitter_state, receiver_state, _carrier_frequency, _bandwidth, timestamp ) # Generate a new sample @@ -596,7 +710,7 @@ def reciprocal_sample( # Notify the registered hooks for hook in self.sample_hooks: - hook(reciprocal_sample, transmitter, receiver) + hook(reciprocal_sample, transmitter_device, receiver_device) return reciprocal_sample @@ -678,8 +792,6 @@ def __init__(self, gain: float = 1.0, seed: Optional[int] = None) -> None: RandomNode.__init__(self, seed=seed) # Default parameters - self.__alpha_device = None - self.__beta_device = None self.gain = gain self.__scenario = None self.__sample_hooks = set() diff --git a/hermespy/channel/consistent.py b/hermespy/channel/consistent.py index bae94858..73eaf9e9 100644 --- a/hermespy/channel/consistent.py +++ b/hermespy/channel/consistent.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/delay/__init__.py b/hermespy/channel/delay/__init__.py index d8c51360..84c0b1b6 100644 --- a/hermespy/channel/delay/__init__.py +++ b/hermespy/channel/delay/__init__.py @@ -7,7 +7,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/delay/delay.py b/hermespy/channel/delay/delay.py index 437c7c4e..75322b34 100644 --- a/hermespy/channel/delay/delay.py +++ b/hermespy/channel/delay/delay.py @@ -22,7 +22,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/delay/random.py b/hermespy/channel/delay/random.py index 510fe80e..8553fc7b 100644 --- a/hermespy/channel/delay/random.py +++ b/hermespy/channel/delay/random.py @@ -14,7 +14,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/delay/spatial.py b/hermespy/channel/delay/spatial.py index 6c8d6ce7..46ebae17 100644 --- a/hermespy/channel/delay/spatial.py +++ b/hermespy/channel/delay/spatial.py @@ -14,7 +14,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/__init__.py b/hermespy/channel/fading/__init__.py index e042041d..8d17361c 100644 --- a/hermespy/channel/fading/__init__.py +++ b/hermespy/channel/fading/__init__.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/correlation.py b/hermespy/channel/fading/correlation.py index d57451d3..d5a805e3 100644 --- a/hermespy/channel/fading/correlation.py +++ b/hermespy/channel/fading/correlation.py @@ -12,7 +12,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/cost259.py b/hermespy/channel/fading/cost259.py index 64e5a92a..ce17abe6 100644 --- a/hermespy/channel/fading/cost259.py +++ b/hermespy/channel/fading/cost259.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/exponential.py b/hermespy/channel/fading/exponential.py index 17f525eb..81b86c52 100644 --- a/hermespy/channel/fading/exponential.py +++ b/hermespy/channel/fading/exponential.py @@ -11,7 +11,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/fading.py b/hermespy/channel/fading/fading.py index b15c18e2..f5e6a5f0 100644 --- a/hermespy/channel/fading/fading.py +++ b/hermespy/channel/fading/fading.py @@ -35,7 +35,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/fading/tdl.py b/hermespy/channel/fading/tdl.py index 12d00725..578f60e8 100644 --- a/hermespy/channel/fading/tdl.py +++ b/hermespy/channel/fading/tdl.py @@ -11,7 +11,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/ideal.py b/hermespy/channel/ideal.py index f80e826f..140d9956 100644 --- a/hermespy/channel/ideal.py +++ b/hermespy/channel/ideal.py @@ -20,7 +20,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/quadriga/__init__.py b/hermespy/channel/quadriga/__init__.py index ca031b94..561e1cad 100644 --- a/hermespy/channel/quadriga/__init__.py +++ b/hermespy/channel/quadriga/__init__.py @@ -6,7 +6,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/quadriga/interface.py b/hermespy/channel/quadriga/interface.py index 05cbbf11..c96a375b 100644 --- a/hermespy/channel/quadriga/interface.py +++ b/hermespy/channel/quadriga/interface.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/quadriga/matlab.py b/hermespy/channel/quadriga/matlab.py index 26c7e03e..c425dc74 100644 --- a/hermespy/channel/quadriga/matlab.py +++ b/hermespy/channel/quadriga/matlab.py @@ -19,7 +19,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/quadriga/octave.py b/hermespy/channel/quadriga/octave.py index fc46593d..1300f15b 100644 --- a/hermespy/channel/quadriga/octave.py +++ b/hermespy/channel/quadriga/octave.py @@ -24,7 +24,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/quadriga/quadriga.py b/hermespy/channel/quadriga/quadriga.py index 4756eeaa..cf0a3bc7 100644 --- a/hermespy/channel/quadriga/quadriga.py +++ b/hermespy/channel/quadriga/quadriga.py @@ -30,7 +30,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/radar/__init__.py b/hermespy/channel/radar/__init__.py index 7e0c6ab7..31079f10 100644 --- a/hermespy/channel/radar/__init__.py +++ b/hermespy/channel/radar/__init__.py @@ -12,7 +12,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/radar/multi.py b/hermespy/channel/radar/multi.py index a69fd44e..98d936c0 100644 --- a/hermespy/channel/radar/multi.py +++ b/hermespy/channel/radar/multi.py @@ -24,7 +24,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/radar/radar.py b/hermespy/channel/radar/radar.py index 01a8b74a..4d9702ef 100644 --- a/hermespy/channel/radar/radar.py +++ b/hermespy/channel/radar/radar.py @@ -33,7 +33,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/channel/radar/single.py b/hermespy/channel/radar/single.py index 0b02df67..1a914ad6 100644 --- a/hermespy/channel/radar/single.py +++ b/hermespy/channel/radar/single.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/__init__.py b/hermespy/core/__init__.py index f3be537c..9791bcb6 100644 --- a/hermespy/core/__init__.py +++ b/hermespy/core/__init__.py @@ -83,10 +83,10 @@ ) __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/antennas.py b/hermespy/core/antennas.py index 3ab35906..b61fa9c1 100644 --- a/hermespy/core/antennas.py +++ b/hermespy/core/antennas.py @@ -26,10 +26,10 @@ from .visualize import VAT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/channel.py b/hermespy/core/channel.py index ccac30c2..2f8c31c8 100644 --- a/hermespy/core/channel.py +++ b/hermespy/core/channel.py @@ -20,10 +20,10 @@ from .signal_model import Signal __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/definitions.py b/hermespy/core/definitions.py index 14f945d3..cc083e48 100644 --- a/hermespy/core/definitions.py +++ b/hermespy/core/definitions.py @@ -8,10 +8,10 @@ from .factory import SerializableEnum __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/device.py b/hermespy/core/device.py index 0656d9b6..8e3ba451 100644 --- a/hermespy/core/device.py +++ b/hermespy/core/device.py @@ -132,10 +132,10 @@ class Radar { __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/drop.py b/hermespy/core/drop.py index 65651c9e..b897edea 100644 --- a/hermespy/core/drop.py +++ b/hermespy/core/drop.py @@ -20,10 +20,10 @@ from .scenario import Scenario # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/duplex.py b/hermespy/core/duplex.py index f7506aa3..b82ee661 100644 --- a/hermespy/core/duplex.py +++ b/hermespy/core/duplex.py @@ -14,10 +14,10 @@ from .signal_model import Signal __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/evaluators.py b/hermespy/core/evaluators.py index 836731d7..fa200707 100644 --- a/hermespy/core/evaluators.py +++ b/hermespy/core/evaluators.py @@ -13,10 +13,10 @@ from .visualize import StemVisualization, VAT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/executable.py b/hermespy/core/executable.py index 899537d6..a92a91b7 100644 --- a/hermespy/core/executable.py +++ b/hermespy/core/executable.py @@ -25,10 +25,10 @@ from .factory import SerializableEnum __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/factory.py b/hermespy/core/factory.py index d4b839a3..8760a638 100644 --- a/hermespy/core/factory.py +++ b/hermespy/core/factory.py @@ -75,10 +75,10 @@ from .logarithmic import Logarithmic, LogarithmicSequence __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/logarithmic.py b/hermespy/core/logarithmic.py index ea9c75ec..cca973f5 100644 --- a/hermespy/core/logarithmic.py +++ b/hermespy/core/logarithmic.py @@ -16,10 +16,10 @@ from hermespy.tools import db2lin, lin2db, DbConversionType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/monte_carlo.py b/hermespy/core/monte_carlo.py index 9b339eea..88e6d92d 100644 --- a/hermespy/core/monte_carlo.py +++ b/hermespy/core/monte_carlo.py @@ -15,6 +15,7 @@ Callable, Generic, List, + Mapping, Optional, Type, TypeVar, @@ -46,10 +47,10 @@ from .visualize import PlotVisualization, VAT, Visualizable, VT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -1144,6 +1145,12 @@ def __iter__(self): return iter(self.__sections.flat) +class UnmatchableException(Exception): + """An exception that can never get caught.""" + + ... + + class MonteCarloActor(Generic[MO]): """Monte Carlo Simulation Actor. @@ -1157,11 +1164,13 @@ class MonteCarloActor(Generic[MO]): __evaluators: Sequence[ Evaluator ] # Evaluators used to process the investigated object sample state + __stage_arguments: Mapping[str, Sequence[tuple]] def __init__( self, argument_tuple: Tuple[MO, Sequence[GridDimension], Sequence[Evaluator]], index: int, + stage_arguments: Mapping[str, Sequence[tuple]] | None = None, catch_exceptions: bool = True, ) -> None: """ @@ -1175,11 +1184,20 @@ def __init__( index (int): Global index of the actor. + stage_arguments (Mapping[str, Sequence[Tuple]], optional): + Arguments for the simulation stages. + catch_exceptions (bool, optional): Catch exceptions during run. Enabled by default. """ + # Assert that stage arguments are valid + _stage_arguments = dict() if stage_arguments is None else stage_arguments + for stage_key in _stage_arguments: + if stage_key not in self.stage_identifiers(): + raise ValueError(f"Invalid stage identifier in stage arguments {stage_key}") + investigated_object = argument_tuple[0] grid = argument_tuple[1] evaluators = argument_tuple[2] @@ -1192,6 +1210,7 @@ def __init__( self.__stage_identifiers = self.stage_identifiers() self.__stage_executors = self.stage_executors() self.__num_stages = len(self.__stage_executors) + self.__stage_arguments = _stage_arguments @property def _investigated_object(self) -> MO: @@ -1203,6 +1222,31 @@ def _investigated_object(self) -> MO: return self.__investigated_object # pragma: no cover + def __execute_stages(self, start: int, stop: int, artifacts: list[list[Artifact]]) -> None: + """Recursive subroutine of run, collecting artifacts from the simulation stage parametrizations. + + Args: + + start (int): Index of the first stage to be executed + stop (int): Index of the last stage to be executed + """ + + # Abort and collect artifacts if the end of the stage list is reached + if start > stop: + artifacts.append([evaluator.evaluate().artifact() for evaluator in self.__evaluators]) + return + + # Execute the next stage + stage_identifier = self.__stage_identifiers[start] + stage_executor = self.__stage_executors[start] + stage_arguments = self.__stage_arguments.get(stage_identifier, [tuple()]) + for arguments in stage_arguments: + # Execute the stage with the provided arguments + stage_executor(*arguments) + + # Proceed to the next stage + self.__execute_stages(start + 1, stop, artifacts) + def run(self, program: List[Tuple[int, ...]]) -> ActorRunResult: """Run the simulation actor. @@ -1267,26 +1311,18 @@ def run(self, program: List[Tuple[int, ...]]) -> ActorRunResult: if last_impact <= 0: last_impact = self.__num_stages - 1 - # Execute impacted simulation stages - # Note that for the first grid_section all stages are executed - for stage in self.__stage_executors[first_impact : 1 + last_impact]: - stage() - - # Collect evaluation artifacts - artifacts = [evaluator.evaluate().artifact() for evaluator in self.__evaluators] - - # Save the samples - result.samples.append(MonteCarloSample(section_indices, 0, artifacts)) + artifacts: list[list[Artifact]] = [] + self.__execute_stages(first_impact, last_impact, artifacts) + result.samples.extend( + MonteCarloSample(section_indices, a, artifact) + for a, artifact in enumerate(artifacts) + ) # Update the recent section for the next iteration recent_section_indices = section_index_array - except Exception as e: - if self.catch_exceptions: - result.message = str(e) - - else: - raise e # pragma: no cover + except Exception if self.catch_exceptions else UnmatchableException as e: + result.message = str(e) return result @@ -2065,7 +2101,12 @@ def __init__( self.catch_exceptions = catch_exceptions self.__progress_log_interval = progress_log_interval - def simulate(self, actor: Type[MonteCarloActor]) -> MonteCarloResult: + def simulate( + self, + actor: Type[MonteCarloActor], + additional_dimensions: set[GridDimension] | None = None, + stage_arguments: Mapping[str, Any] | None = None, + ) -> MonteCarloResult: """Launch the Monte Carlo simulation. Args: @@ -2073,8 +2114,14 @@ def simulate(self, actor: Type[MonteCarloActor]) -> MonteCarloResult: actor (Type[MonteCarloActor]): The actor from which to generate the simulation samples. - Returns: - np.ndarray: Generated samples. + additional_dimensions (Set[GridDimension], optional): + Additional dimensions to be added to the simulation grid. + + stage_arguments (Mapping[str, Any], optional): + Arguments to be passed to the simulation stages. + If the argument is a sequence, the respective stage will iterate over the sequence. + + Returns: A `MonteCarloResult` dataclass containing the simulation results. """ # Generate start timestamp @@ -2086,6 +2133,11 @@ def simulate(self, actor: Type[MonteCarloActor]) -> MonteCarloResult: f"Launched simulation campaign with {self.num_actors} dedicated actors" ) + # Add additional dimensions to configured simulation grid + _dimensions = self.__dimensions.copy() + if additional_dimensions is not None: + _dimensions.extend(additional_dimensions) + # Sort dimensions after impact in descending order def sort(dimension: GridDimension) -> int: if dimension.first_impact not in actor.stage_identifiers(): @@ -2130,7 +2182,8 @@ def sort(dimension: GridDimension) -> int: # Launch actors and queue the first tasks with self.console.status("Launching Actor Pool...", spinner="dots") if self.__console_mode == ConsoleMode.INTERACTIVE else nullcontext(): # type: ignore # Generate the actor pool - actor_pool = ActorPool([actor.options(num_cpus=self.cpus_per_actor).remote((self.__investigated_object, self.__dimensions, self.__evaluators), a, self.catch_exceptions) for a in range(self.num_actors)]) # type: ignore + actors = [actor.options(num_cpus=self.cpus_per_actor).remote((self.__investigated_object, self.__dimensions, self.__evaluators), a, stage_arguments, self.catch_exceptions) for a in range(self.num_actors)] # type: ignore[attr-defined] + actor_pool = ActorPool(actors) # type: ignore # Generate section sample containers and meta-information grid_task_count = np.zeros( diff --git a/hermespy/core/operators.py b/hermespy/core/operators.py index c3767b3c..194868e7 100644 --- a/hermespy/core/operators.py +++ b/hermespy/core/operators.py @@ -16,10 +16,10 @@ from .signal_model import Signal __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/pipeline.py b/hermespy/core/pipeline.py index 4194263f..2dbddbd9 100644 --- a/hermespy/core/pipeline.py +++ b/hermespy/core/pipeline.py @@ -12,10 +12,10 @@ from .scenario import ScenarioType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/random_node.py b/hermespy/core/random_node.py index cfa2dee9..a7d882b8 100644 --- a/hermespy/core/random_node.py +++ b/hermespy/core/random_node.py @@ -12,10 +12,10 @@ from numpy.random import default_rng, Generator __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/scenario.py b/hermespy/core/scenario.py index ca20caa0..e2901a74 100644 --- a/hermespy/core/scenario.py +++ b/hermespy/core/scenario.py @@ -35,10 +35,10 @@ from .transformation import TransformableBase __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/signal_model.py b/hermespy/core/signal_model.py index 666ffdd2..1d369bb7 100644 --- a/hermespy/core/signal_model.py +++ b/hermespy/core/signal_model.py @@ -27,7 +27,7 @@ __copyright__ = "Copyright 2022, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/transformation.py b/hermespy/core/transformation.py index e412babe..e65ac4a6 100644 --- a/hermespy/core/transformation.py +++ b/hermespy/core/transformation.py @@ -17,10 +17,10 @@ from .factory import Serializable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/core/visualize.py b/hermespy/core/visualize.py index 0fa46458..7e6cb006 100644 --- a/hermespy/core/visualize.py +++ b/hermespy/core/visualize.py @@ -19,10 +19,10 @@ from .executable import Executable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/__init__.py b/hermespy/fec/__init__.py index 2ae80e82..d2169f9b 100644 --- a/hermespy/fec/__init__.py +++ b/hermespy/fec/__init__.py @@ -23,10 +23,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/aff3ct/__init__.py b/hermespy/fec/aff3ct/__init__.py index fe4d6f0c..33840f91 100644 --- a/hermespy/fec/aff3ct/__init__.py +++ b/hermespy/fec/aff3ct/__init__.py @@ -8,7 +8,7 @@ from .ldpc import LDPCCoding # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "0.3.0" diff --git a/hermespy/fec/block_interleaver.py b/hermespy/fec/block_interleaver.py index 2ca42fd8..738af53b 100644 --- a/hermespy/fec/block_interleaver.py +++ b/hermespy/fec/block_interleaver.py @@ -18,10 +18,10 @@ from .coding import Encoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/coding.py b/hermespy/fec/coding.py index a3c70acc..cefd0497 100644 --- a/hermespy/fec/coding.py +++ b/hermespy/fec/coding.py @@ -73,10 +73,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/cyclic_redundancy_check.py b/hermespy/fec/cyclic_redundancy_check.py index 60be9015..779ff9ae 100644 --- a/hermespy/fec/cyclic_redundancy_check.py +++ b/hermespy/fec/cyclic_redundancy_check.py @@ -19,10 +19,10 @@ from .coding import Encoder __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/repetition_encoder.py b/hermespy/fec/repetition_encoder.py index a51385d2..f23b3729 100644 --- a/hermespy/fec/repetition_encoder.py +++ b/hermespy/fec/repetition_encoder.py @@ -16,10 +16,10 @@ from .coding import Encoder __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/fec/scrambler.py b/hermespy/fec/scrambler.py index be37cd58..8e58b2ae 100644 --- a/hermespy/fec/scrambler.py +++ b/hermespy/fec/scrambler.py @@ -21,10 +21,10 @@ from .coding import Encoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/__init__.py b/hermespy/hardware_loop/__init__.py index 9217d9c8..ce31a68e 100644 --- a/hermespy/hardware_loop/__init__.py +++ b/hermespy/hardware_loop/__init__.py @@ -37,10 +37,10 @@ UsrpAntennas, UsrpDevice, UsrpSystem = None, None, None # type: ignore __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/audio/__init__.py b/hermespy/hardware_loop/audio/__init__.py index 680d4478..2d7b39d9 100644 --- a/hermespy/hardware_loop/audio/__init__.py +++ b/hermespy/hardware_loop/audio/__init__.py @@ -4,10 +4,10 @@ from .scenario import AudioScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/audio/device.py b/hermespy/hardware_loop/audio/device.py index 6e614942..76772318 100644 --- a/hermespy/hardware_loop/audio/device.py +++ b/hermespy/hardware_loop/audio/device.py @@ -27,7 +27,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/audio/scenario.py b/hermespy/hardware_loop/audio/scenario.py index 319473e6..f60efeec 100644 --- a/hermespy/hardware_loop/audio/scenario.py +++ b/hermespy/hardware_loop/audio/scenario.py @@ -9,10 +9,10 @@ from .device import AudioDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/calibration/__init__.py b/hermespy/hardware_loop/calibration/__init__.py index b10a4f21..01072ecc 100644 --- a/hermespy/hardware_loop/calibration/__init__.py +++ b/hermespy/hardware_loop/calibration/__init__.py @@ -4,10 +4,10 @@ from .leakage import SelectiveLeakageCalibration __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/calibration/delay.py b/hermespy/hardware_loop/calibration/delay.py index 3bb32879..5c8b0d7d 100644 --- a/hermespy/hardware_loop/calibration/delay.py +++ b/hermespy/hardware_loop/calibration/delay.py @@ -16,10 +16,10 @@ from ..physical_device import DelayCalibrationBase, PhysicalDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/calibration/leakage.py b/hermespy/hardware_loop/calibration/leakage.py index 2f205aa1..6c06e98a 100644 --- a/hermespy/hardware_loop/calibration/leakage.py +++ b/hermespy/hardware_loop/calibration/leakage.py @@ -20,10 +20,10 @@ from .delay import DelayCalibration __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/hardware_loop.py b/hermespy/hardware_loop/hardware_loop.py index 69bbfc21..741a854b 100644 --- a/hermespy/hardware_loop/hardware_loop.py +++ b/hermespy/hardware_loop/hardware_loop.py @@ -43,10 +43,10 @@ from .scenario import PhysicalScenarioType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/physical_device.py b/hermespy/hardware_loop/physical_device.py index 88e3a7e5..cb5f1231 100644 --- a/hermespy/hardware_loop/physical_device.py +++ b/hermespy/hardware_loop/physical_device.py @@ -27,10 +27,10 @@ ) __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/physical_device_dummy.py b/hermespy/hardware_loop/physical_device_dummy.py index 8f15846e..d4adc680 100644 --- a/hermespy/hardware_loop/physical_device_dummy.py +++ b/hermespy/hardware_loop/physical_device_dummy.py @@ -29,10 +29,10 @@ from .scenario import PhysicalScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/scenario.py b/hermespy/hardware_loop/scenario.py index 18355828..d4a14254 100644 --- a/hermespy/hardware_loop/scenario.py +++ b/hermespy/hardware_loop/scenario.py @@ -16,10 +16,10 @@ from .physical_device import PDT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/uhd/__init__.py b/hermespy/hardware_loop/uhd/__init__.py index 25883097..34d731fe 100644 --- a/hermespy/hardware_loop/uhd/__init__.py +++ b/hermespy/hardware_loop/uhd/__init__.py @@ -8,10 +8,10 @@ UsrpaAntennas, UsrpDevice, UsrpSystem = None, None, None # type: ignore __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/uhd/system.py b/hermespy/hardware_loop/uhd/system.py index f4b13f04..6c0baefc 100644 --- a/hermespy/hardware_loop/uhd/system.py +++ b/hermespy/hardware_loop/uhd/system.py @@ -12,10 +12,10 @@ from ..scenario import PhysicalScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/uhd/usrp.py b/hermespy/hardware_loop/uhd/usrp.py index e35e881f..6c10770e 100644 --- a/hermespy/hardware_loop/uhd/usrp.py +++ b/hermespy/hardware_loop/uhd/usrp.py @@ -18,10 +18,10 @@ from ..physical_device import PhysicalDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/hardware_loop/visualizers.py b/hermespy/hardware_loop/visualizers.py index 22c07a8d..16569f5e 100644 --- a/hermespy/hardware_loop/visualizers.py +++ b/hermespy/hardware_loop/visualizers.py @@ -29,10 +29,10 @@ from .physical_device import PhysicalDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/jcas/__init__.py b/hermespy/jcas/__init__.py index dde75d5d..2dc2f93d 100644 --- a/hermespy/jcas/__init__.py +++ b/hermespy/jcas/__init__.py @@ -4,10 +4,10 @@ from .ofdm_radar import OFDMRadar __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/jcas/jcas.py b/hermespy/jcas/jcas.py index c37de51c..688f1ec6 100644 --- a/hermespy/jcas/jcas.py +++ b/hermespy/jcas/jcas.py @@ -12,10 +12,10 @@ from hermespy.radar import RadarBase, RadarTransmission, RadarReception __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/jcas/matched_filtering.py b/hermespy/jcas/matched_filtering.py index dd125ebb..2d00f84d 100644 --- a/hermespy/jcas/matched_filtering.py +++ b/hermespy/jcas/matched_filtering.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/jcas/ofdm_radar.py b/hermespy/jcas/ofdm_radar.py index 97819376..b7d7ccff 100644 --- a/hermespy/jcas/ofdm_radar.py +++ b/hermespy/jcas/ofdm_radar.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/__init__.py b/hermespy/modem/__init__.py index e50e4805..18120c82 100644 --- a/hermespy/modem/__init__.py +++ b/hermespy/modem/__init__.py @@ -88,10 +88,10 @@ from .tools import PskQamMapping __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/bits_source.py b/hermespy/modem/bits_source.py index 33cdcc05..8ffd1a43 100644 --- a/hermespy/modem/bits_source.py +++ b/hermespy/modem/bits_source.py @@ -12,10 +12,10 @@ from hermespy.core.random_node import RandomNode __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/evaluators.py b/hermespy/modem/evaluators.py index e00dbcb4..b1b1d12b 100644 --- a/hermespy/modem/evaluators.py +++ b/hermespy/modem/evaluators.py @@ -22,10 +22,10 @@ from .modem import TransmittingModem, ReceivingModem __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/modem.py b/hermespy/modem/modem.py index 5925cff6..cdfa6033 100644 --- a/hermespy/modem/modem.py +++ b/hermespy/modem/modem.py @@ -27,10 +27,10 @@ from .waveform import CommunicationWaveform, CWT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/__init__.py b/hermespy/modem/precoding/__init__.py index 23fab001..ae2b0bc0 100644 --- a/hermespy/modem/precoding/__init__.py +++ b/hermespy/modem/precoding/__init__.py @@ -8,10 +8,10 @@ from .ratio_combining import MaximumRatioCombining __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/dft.py b/hermespy/modem/precoding/dft.py index 57fb9ea5..ada57590 100644 --- a/hermespy/modem/precoding/dft.py +++ b/hermespy/modem/precoding/dft.py @@ -10,10 +10,10 @@ from .symbol_precoding import SymbolPrecoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/ratio_combining.py b/hermespy/modem/precoding/ratio_combining.py index e14edd81..e8d379c4 100644 --- a/hermespy/modem/precoding/ratio_combining.py +++ b/hermespy/modem/precoding/ratio_combining.py @@ -9,10 +9,10 @@ from .symbol_precoding import SymbolPrecoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/single_carrier.py b/hermespy/modem/precoding/single_carrier.py index c725e404..8b4a448c 100644 --- a/hermespy/modem/precoding/single_carrier.py +++ b/hermespy/modem/precoding/single_carrier.py @@ -9,10 +9,10 @@ from .symbol_precoding import SymbolPrecoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/space_time_block_coding.py b/hermespy/modem/precoding/space_time_block_coding.py index 57a77ef9..76b1a3c6 100644 --- a/hermespy/modem/precoding/space_time_block_coding.py +++ b/hermespy/modem/precoding/space_time_block_coding.py @@ -11,10 +11,10 @@ from .symbol_precoding import SymbolPrecoder __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler", "Egor Achkasov"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/spatial_multiplexing.py b/hermespy/modem/precoding/spatial_multiplexing.py index 618e2a89..df373fc7 100644 --- a/hermespy/modem/precoding/spatial_multiplexing.py +++ b/hermespy/modem/precoding/spatial_multiplexing.py @@ -8,10 +8,10 @@ from .symbol_precoding import SymbolPrecoder __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/precoding/symbol_precoding.py b/hermespy/modem/precoding/symbol_precoding.py index f3184361..825c2763 100644 --- a/hermespy/modem/precoding/symbol_precoding.py +++ b/hermespy/modem/precoding/symbol_precoding.py @@ -14,10 +14,10 @@ from ..modem import BaseModem # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/symbols.py b/hermespy/modem/symbols.py index 7201b958..c70f0b79 100644 --- a/hermespy/modem/symbols.py +++ b/hermespy/modem/symbols.py @@ -13,10 +13,10 @@ from hermespy.core import HDFSerializable, VisualizableAttribute, ScatterVisualization, VAT __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/tools/__init__.py b/hermespy/modem/tools/__init__.py index 27665393..599a874f 100644 --- a/hermespy/modem/tools/__init__.py +++ b/hermespy/modem/tools/__init__.py @@ -3,10 +3,10 @@ from .psk_qam_mapping import PskQamMapping __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "André Noll Barreto" __email__ = "andre.nollbarreto@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/tools/psk_qam_mapping.py b/hermespy/modem/tools/psk_qam_mapping.py index 2fd6b225..2a1934b1 100644 --- a/hermespy/modem/tools/psk_qam_mapping.py +++ b/hermespy/modem/tools/psk_qam_mapping.py @@ -22,10 +22,10 @@ import numpy as np __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "André Noll Barreto" __email__ = "andre.nollbarreto@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveform.py b/hermespy/modem/waveform.py index aac11167..17a5c57e 100644 --- a/hermespy/modem/waveform.py +++ b/hermespy/modem/waveform.py @@ -16,10 +16,10 @@ from hermespy.modem.modem import BaseModem # pragma: no cover __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveform_chirp_fsk.py b/hermespy/modem/waveform_chirp_fsk.py index ff5bc3ce..ad517cd4 100644 --- a/hermespy/modem/waveform_chirp_fsk.py +++ b/hermespy/modem/waveform_chirp_fsk.py @@ -23,7 +23,7 @@ __copyright__ = "Copyright 2021, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveform_correlation_synchronization.py b/hermespy/modem/waveform_correlation_synchronization.py index 9896e4ae..cbb0af6f 100644 --- a/hermespy/modem/waveform_correlation_synchronization.py +++ b/hermespy/modem/waveform_correlation_synchronization.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2021, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveform_single_carrier.py b/hermespy/modem/waveform_single_carrier.py index cc4653d5..157b709a 100644 --- a/hermespy/modem/waveform_single_carrier.py +++ b/hermespy/modem/waveform_single_carrier.py @@ -22,10 +22,10 @@ from .waveform_correlation_synchronization import CorrelationSynchronization __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/__init__.py b/hermespy/modem/waveforms/__init__.py index 40a96afc..d41e5c8d 100644 --- a/hermespy/modem/waveforms/__init__.py +++ b/hermespy/modem/waveforms/__init__.py @@ -1 +1,10 @@ # -*- coding: utf-8 -*- + +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/__init__.py b/hermespy/modem/waveforms/orthogonal/__init__.py index bcdb0b84..a2f9866b 100644 --- a/hermespy/modem/waveforms/orthogonal/__init__.py +++ b/hermespy/modem/waveforms/orthogonal/__init__.py @@ -27,10 +27,10 @@ ) __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/channel.py b/hermespy/modem/waveforms/orthogonal/channel.py index 10c54999..33e89e91 100644 --- a/hermespy/modem/waveforms/orthogonal/channel.py +++ b/hermespy/modem/waveforms/orthogonal/channel.py @@ -12,10 +12,10 @@ from .waveform import ElementType, OrthogonalWaveform __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/ocdm.py b/hermespy/modem/waveforms/orthogonal/ocdm.py index bb4b96b5..22793f96 100644 --- a/hermespy/modem/waveforms/orthogonal/ocdm.py +++ b/hermespy/modem/waveforms/orthogonal/ocdm.py @@ -9,10 +9,10 @@ from .waveform import GridResource, GridSection, OrthogonalWaveform, PilotSection __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/ofdm.py b/hermespy/modem/waveforms/orthogonal/ofdm.py index 4f49e02c..dd421cde 100644 --- a/hermespy/modem/waveforms/orthogonal/ofdm.py +++ b/hermespy/modem/waveforms/orthogonal/ofdm.py @@ -20,10 +20,10 @@ ) __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/otfs.py b/hermespy/modem/waveforms/orthogonal/otfs.py index 50c58978..399e6f84 100644 --- a/hermespy/modem/waveforms/orthogonal/otfs.py +++ b/hermespy/modem/waveforms/orthogonal/otfs.py @@ -11,7 +11,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/modem/waveforms/orthogonal/waveform.py b/hermespy/modem/waveforms/orthogonal/waveform.py index 45e6781d..86a6d6ca 100644 --- a/hermespy/modem/waveforms/orthogonal/waveform.py +++ b/hermespy/modem/waveforms/orthogonal/waveform.py @@ -20,10 +20,10 @@ ) __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/precoding/__init__.py b/hermespy/precoding/__init__.py index b4b98f10..868224ae 100644 --- a/hermespy/precoding/__init__.py +++ b/hermespy/precoding/__init__.py @@ -9,10 +9,10 @@ ) __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/precoding/precoding.py b/hermespy/precoding/precoding.py index f331296c..61ee11f1 100644 --- a/hermespy/precoding/precoding.py +++ b/hermespy/precoding/precoding.py @@ -19,10 +19,10 @@ from hermespy.modem.modem import BaseModem # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/precoding/stream_precoding.py b/hermespy/precoding/stream_precoding.py index 5b443e30..cc852ffb 100644 --- a/hermespy/precoding/stream_precoding.py +++ b/hermespy/precoding/stream_precoding.py @@ -15,10 +15,10 @@ from .precoding import Precoder, Precoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/__init__.py b/hermespy/radar/__init__.py index 6479eefb..f06eead5 100644 --- a/hermespy/radar/__init__.py +++ b/hermespy/radar/__init__.py @@ -12,10 +12,10 @@ from .evaluators import ReceiverOperatingCharacteristic, DetectionProbEvaluator, RootMeanSquareError __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/cube.py b/hermespy/radar/cube.py index b07c0db8..8a0f32e0 100644 --- a/hermespy/radar/cube.py +++ b/hermespy/radar/cube.py @@ -28,7 +28,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/detection.py b/hermespy/radar/detection.py index b078bfee..86bef87e 100644 --- a/hermespy/radar/detection.py +++ b/hermespy/radar/detection.py @@ -20,10 +20,10 @@ from .cube import RadarCube __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Egor Achkasov"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/evaluators.py b/hermespy/radar/evaluators.py index 0933bc45..e0200699 100644 --- a/hermespy/radar/evaluators.py +++ b/hermespy/radar/evaluators.py @@ -87,10 +87,10 @@ __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/fmcw.py b/hermespy/radar/fmcw.py index 4e401c91..ef07f728 100644 --- a/hermespy/radar/fmcw.py +++ b/hermespy/radar/fmcw.py @@ -12,10 +12,10 @@ from .radar import RadarWaveform __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/radar/radar.py b/hermespy/radar/radar.py index d5995cf9..75b98470 100644 --- a/hermespy/radar/radar.py +++ b/hermespy/radar/radar.py @@ -22,10 +22,10 @@ from .detection import RadarDetector, RadarPointCloud __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "André Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/__init__.py b/hermespy/simulation/__init__.py index 224414d5..cd9fa734 100644 --- a/hermespy/simulation/__init__.py +++ b/hermespy/simulation/__init__.py @@ -60,7 +60,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/animation.py b/hermespy/simulation/animation.py index 81ad0ff7..d093db18 100644 --- a/hermespy/simulation/animation.py +++ b/hermespy/simulation/animation.py @@ -11,7 +11,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/antennas.py b/hermespy/simulation/antennas.py index d17c7c66..598521ec 100644 --- a/hermespy/simulation/antennas.py +++ b/hermespy/simulation/antennas.py @@ -29,10 +29,10 @@ from .rf_chain import RfChain __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/coupling/__init__.py b/hermespy/simulation/coupling/__init__.py index dab1c0c2..6d79bac5 100644 --- a/hermespy/simulation/coupling/__init__.py +++ b/hermespy/simulation/coupling/__init__.py @@ -3,10 +3,10 @@ from .perfect import PerfectCoupling __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/coupling/coupling.py b/hermespy/simulation/coupling/coupling.py index 6d058b7a..28ea9b8c 100644 --- a/hermespy/simulation/coupling/coupling.py +++ b/hermespy/simulation/coupling/coupling.py @@ -10,10 +10,10 @@ from ..simulated_device import SimulatedDevice # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/coupling/impedance.py b/hermespy/simulation/coupling/impedance.py index 6e0311ac..24b785bb 100644 --- a/hermespy/simulation/coupling/impedance.py +++ b/hermespy/simulation/coupling/impedance.py @@ -12,10 +12,10 @@ from hermespy.simulation import SimulatedDevice # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/coupling/perfect.py b/hermespy/simulation/coupling/perfect.py index bbb42bc4..ff05925d 100644 --- a/hermespy/simulation/coupling/perfect.py +++ b/hermespy/simulation/coupling/perfect.py @@ -11,10 +11,10 @@ from .coupling import Coupling __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/drop.py b/hermespy/simulation/drop.py index fb0523b2..69827c73 100644 --- a/hermespy/simulation/drop.py +++ b/hermespy/simulation/drop.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/isolation/__init__.py b/hermespy/simulation/isolation/__init__.py index 3e1e7c8f..b7dde973 100644 --- a/hermespy/simulation/isolation/__init__.py +++ b/hermespy/simulation/isolation/__init__.py @@ -4,10 +4,10 @@ from .selective import SelectiveLeakage __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/isolation/isolation.py b/hermespy/simulation/isolation/isolation.py index f0469296..99663f6a 100644 --- a/hermespy/simulation/isolation/isolation.py +++ b/hermespy/simulation/isolation/isolation.py @@ -10,10 +10,10 @@ from ..simulated_device import SimulatedDevice # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/isolation/perfect.py b/hermespy/simulation/isolation/perfect.py index cdd2849e..e76e2636 100644 --- a/hermespy/simulation/isolation/perfect.py +++ b/hermespy/simulation/isolation/perfect.py @@ -6,10 +6,10 @@ from .isolation import Isolation __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/isolation/selective.py b/hermespy/simulation/isolation/selective.py index 5a1e2269..d1c1a657 100644 --- a/hermespy/simulation/isolation/selective.py +++ b/hermespy/simulation/isolation/selective.py @@ -15,10 +15,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/isolation/specific.py b/hermespy/simulation/isolation/specific.py index c74806ce..965c2183 100644 --- a/hermespy/simulation/isolation/specific.py +++ b/hermespy/simulation/isolation/specific.py @@ -12,10 +12,10 @@ from ..simulated_device import SimulatedDevice # pragma: no cover __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -38,7 +38,7 @@ def __init__( # Initialize class attributes self.__leakage_factors = None - self.isolation = isolation + self.isolation = isolation # type: ignore[operator] @register(title="Isolation") # type: ignore @property diff --git a/hermespy/simulation/modem/__init__.py b/hermespy/simulation/modem/__init__.py index eb823796..5d89c0ae 100644 --- a/hermespy/simulation/modem/__init__.py +++ b/hermespy/simulation/modem/__init__.py @@ -4,10 +4,10 @@ from .noise import EBN0, ESN0 __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/modem/channel_estimation.py b/hermespy/simulation/modem/channel_estimation.py index 2b921f83..751597c8 100644 --- a/hermespy/simulation/modem/channel_estimation.py +++ b/hermespy/simulation/modem/channel_estimation.py @@ -22,10 +22,10 @@ from ..simulated_device import SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/modem/noise.py b/hermespy/simulation/modem/noise.py index a0616cde..c21a3e8a 100644 --- a/hermespy/simulation/modem/noise.py +++ b/hermespy/simulation/modem/noise.py @@ -5,6 +5,15 @@ from hermespy.modem import BaseModem, CommunicationWaveform from ..noise import NoiseLevel +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" + class CommunicationNoiseLevel(NoiseLevel): """Base class for all communication noise level configuration classes.""" diff --git a/hermespy/simulation/noise/__init__.py b/hermespy/simulation/noise/__init__.py index 80cc6057..9ebb5ce2 100644 --- a/hermespy/simulation/noise/__init__.py +++ b/hermespy/simulation/noise/__init__.py @@ -4,10 +4,10 @@ from .model import NoiseModel, NoiseRealization, AWGN, AWGNRealization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/noise/level.py b/hermespy/simulation/noise/level.py index ce0fba21..4c105e3d 100644 --- a/hermespy/simulation/noise/level.py +++ b/hermespy/simulation/noise/level.py @@ -10,7 +10,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.1.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/noise/model.py b/hermespy/simulation/noise/model.py index f9921864..49c87920 100644 --- a/hermespy/simulation/noise/model.py +++ b/hermespy/simulation/noise/model.py @@ -10,7 +10,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/rf_chain/__init__.py b/hermespy/simulation/rf_chain/__init__.py index 10daaf1c..8da45263 100644 --- a/hermespy/simulation/rf_chain/__init__.py +++ b/hermespy/simulation/rf_chain/__init__.py @@ -16,10 +16,10 @@ from .phase_noise import PhaseNoise, NoPhaseNoise, OscillatorPhaseNoise __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/rf_chain/analog_digital_converter.py b/hermespy/simulation/rf_chain/analog_digital_converter.py index 849fd532..68f5055b 100644 --- a/hermespy/simulation/rf_chain/analog_digital_converter.py +++ b/hermespy/simulation/rf_chain/analog_digital_converter.py @@ -12,10 +12,10 @@ from hermespy.tools.math import rms_value __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/rf_chain/phase_noise.py b/hermespy/simulation/rf_chain/phase_noise.py index 222f95ae..0586b605 100644 --- a/hermespy/simulation/rf_chain/phase_noise.py +++ b/hermespy/simulation/rf_chain/phase_noise.py @@ -10,10 +10,10 @@ from hermespy.core import RandomNode, Serializable, Signal __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/rf_chain/power_amplifier.py b/hermespy/simulation/rf_chain/power_amplifier.py index 119009b7..28047b7d 100644 --- a/hermespy/simulation/rf_chain/power_amplifier.py +++ b/hermespy/simulation/rf_chain/power_amplifier.py @@ -10,10 +10,10 @@ from hermespy.core import Serializable __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/rf_chain/rf_chain.py b/hermespy/simulation/rf_chain/rf_chain.py index 2ffde57e..8ba7c011 100644 --- a/hermespy/simulation/rf_chain/rf_chain.py +++ b/hermespy/simulation/rf_chain/rf_chain.py @@ -11,10 +11,10 @@ from .power_amplifier import PowerAmplifier __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/simulation/scenario.py b/hermespy/simulation/scenario.py index 9974737e..1db6489d 100644 --- a/hermespy/simulation/scenario.py +++ b/hermespy/simulation/scenario.py @@ -30,6 +30,7 @@ from .drop import SimulatedDrop from .noise import NoiseLevel, NoiseModel from .simulated_device import ( + DeviceState, ProcessedSimulatedDeviceInput, SimulatedDevice, SimulatedDeviceOutput, @@ -43,7 +44,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -185,7 +186,7 @@ class SimulationScenario(Scenario[SimulatedDevice]): yaml_tag = "SimulationScenario" __default_channel: Channel # Initial channel to be assumed for device links - __channels: set[Channel] # Set of unique channel model instances + __channels: list[Channel] # Set of unique channel model instances __links: dict[frozenset[SimulatedDevice], Channel] __noise_level: NoiseLevel | None # Global noise level of the scenario __noise_model: NoiseModel | None # Global noise model of the scenario @@ -216,15 +217,15 @@ def __init__( # Prepare channel matrices for device links self.__default_channel = default_channel if default_channel is not None else IdealChannel() - self.__channels = {self.__default_channel} + self.__channels = [self.__default_channel] self.__links = dict() # Initialize base class Scenario.__init__(self, *args, **kwargs) # Initialize class attributes - self.noise_level = noise_level - self.noise_model = noise_model + self.noise_level = noise_level # type: ignore[operator] + self.noise_model = noise_model # type: ignore[operator] self.__visualizer = _ScenarioVisualizer(self) def new_device(self, *args, **kwargs) -> SimulatedDevice: @@ -245,7 +246,7 @@ def add_device(self, device: SimulatedDevice) -> None: device.scenario = self @property - def channels(self) -> set[Channel]: + def channels(self) -> list[Channel]: """Unique channel model instances interconnecting devices within this scenario.""" return self.__channels @@ -353,8 +354,17 @@ def set_channel( self.__channels.remove(old_channel) # Update the set of unique channel instances - self.__channels.add(channel) - channel.scenario = self + if channel not in self.__channels: + self.__channels.append(channel) + channel.scenario = self + + def realize_channels(self) -> Sequence[ChannelRealization]: + """Realize all channel instances within the scenario. + + Returns: A sequence of channel realizations. + """ + + return [channel.realize() for channel in self.channels] @register(first_impact="receive_devices", title="Scenario Noise Level") # type: ignore[misc] @property @@ -474,8 +484,10 @@ def transmit_devices(self, cache: bool = True) -> Sequence[SimulatedDeviceTransm def propagate( self, transmissions: Sequence[DeviceOutput], + device_states: Sequence[DeviceState] | None = None, + channel_realizations: Sequence[ChannelRealization] | None = None, interpolation_mode: InterpolationMode = InterpolationMode.NEAREST, - ) -> Tuple[list[list[Signal]], list[ChannelRealization]]: + ) -> Tuple[list[list[Signal]], Sequence[ChannelRealization]]: """Propagate device transmissions over the scenario's channel instances. Args: @@ -506,21 +518,28 @@ def propagate( propagation_matrix = np.empty((self.num_devices, self.num_devices), dtype=np.object_) # Realize all channel instances - channel_realizations: dict[Channel, ChannelRealization] = { - c: c.realize() for c in self.channels - } + _device_states = ( + device_states if device_states is not None else [d.state(0.0) for d in self.devices] + ) + _channel_realizations = ( + channel_realizations if channel_realizations is not None else self.realize_channels() + ) # Propagate signals over all linking channels - for device_alpha_idx, alpha_device in enumerate(self.devices): - for device_beta_idx, beta_device in enumerate(self.devices[: 1 + device_alpha_idx]): + for device_alpha_idx, (alpha_device, alpha_state) in enumerate( + zip(self.devices, _device_states) + ): + for device_beta_idx, (beta_device, beta_state) in enumerate( + zip(self.devices[: 1 + device_alpha_idx], _device_states[: 1 + device_alpha_idx]) + ): # Find the correct channel realization for the propagation between device alpha and device beta linking_channel = self.channel(alpha_device, beta_device) - channel_realization = channel_realizations[linking_channel] + channel_realization = _channel_realizations[self.__channels.index(linking_channel)] # Sample the channel realization for a propagation from device alpha to device beta alpha_beta_sample: ChannelSample = channel_realization.sample( - alpha_device, beta_device + alpha_state, beta_state ) # Propagate signal emitted from device alpha to device beta over the linking channel @@ -534,7 +553,7 @@ def propagate( # Sample the reciprocal channel realization for a propagation from device beta to device alpha beta_alpha_sample: ChannelSample = channel_realization.reciprocal_sample( - alpha_beta_sample, beta_device, alpha_device + alpha_beta_sample, beta_state, alpha_state ) # Propagate signal emitted from device beta to device alpha over the linking channel @@ -542,7 +561,7 @@ def propagate( transmissions[device_beta_idx], interpolation_mode ) - return propagation_matrix.tolist(), list(channel_realizations.values()) + return propagation_matrix.tolist(), _channel_realizations @overload def process_inputs( diff --git a/hermespy/simulation/simulated_device.py b/hermespy/simulation/simulated_device.py index a74594ab..696de023 100644 --- a/hermespy/simulation/simulated_device.py +++ b/hermespy/simulation/simulated_device.py @@ -39,7 +39,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -868,6 +868,7 @@ def __init__( carrier_frequency: float, sampling_rate: float, antennas: AntennaArrayState, + device: SimulatedDevice, ) -> None: """ Args: @@ -883,12 +884,16 @@ def __init__( antennas (AntennaArrayState): State of the device's antenna array. + + device (SimulatedDevice): + The device this state is associated with. """ self.__trajectory_sample = trajectory_sample self.__carrier_frequency = carrier_frequency self.__sampling_rate = sampling_rate self.__antennas = antennas + self.__device = device @property def position(self) -> np.ndarray: @@ -929,6 +934,12 @@ def antennas(self) -> AntennaArrayState: return self.__antennas + @property + def device(self) -> SimulatedDevice: + """The device this state is associated with.""" + + return self.__device + class SimulatedDevice(Device, Moveable, Serializable): """Representation of an entity capable of emitting and receiving electromagnetic waves. @@ -1075,8 +1086,8 @@ def __init__( if trigger_model is not None: self.trigger_model = trigger_model - self.noise_level = SNR(float("inf"), self) if noise_level is None else noise_level - self.noise_model = AWGN() if noise_model is None else noise_model + self.noise_level = SNR(float("inf"), self) if noise_level is None else noise_level # type: ignore[operator] + self.noise_model = AWGN() if noise_model is None else noise_model # type: ignore[operator] self.operator_separation = False self.sampling_rate = sampling_rate self.carrier_frequency = carrier_frequency @@ -1160,11 +1171,11 @@ def noise(self) -> float: ValueError: For negative noise levels. """ - return self.noise_level.level + return self.noise_level.level # type: ignore[operator] @noise.setter def noise(self, value: float) -> None: - self.noise_level.level = value + self.noise_level.level = value # type: ignore[operator] @property def isolation(self) -> Isolation: @@ -1272,6 +1283,7 @@ def state(self, timestamp: float = 0.0) -> DeviceState: self.carrier_frequency, self.sampling_rate, self.antennas.state(trajectory_sample.pose), + self, ) @property @@ -1502,8 +1514,8 @@ def realize_reception( """ # Generate a realization of the noise model - _noise_level = self.noise_level if noise_level is None else noise_level - _noise_model = self.noise_model if noise_model is None else noise_model + _noise_level = self.noise_level if noise_level is None else noise_level # type: ignore[operator] + _noise_model = self.noise_model if noise_model is None else noise_model # type: ignore[operator] noise_realization = _noise_model.realize(_noise_level.get_power()) # Return device receive realization diff --git a/hermespy/simulation/simulation.py b/hermespy/simulation/simulation.py index 25eb7b00..1db815ed 100644 --- a/hermespy/simulation/simulation.py +++ b/hermespy/simulation/simulation.py @@ -6,6 +6,7 @@ from sys import maxsize from typing import Any, Callable, Dict, List, Mapping, Type +import numpy as np from os import path from ray import remote from ruamel.yaml import SafeConstructor, SafeRepresenter, MappingNode, Node @@ -24,15 +25,20 @@ Signal, Visualization, ) -from hermespy.channel import Channel +from hermespy.channel import Channel, ChannelRealization from .scenario import SimulationScenario -from .simulated_device import TriggerRealization, ProcessedSimulatedDeviceInput, SimulatedDevice +from .simulated_device import ( + DeviceState, + TriggerRealization, + ProcessedSimulatedDeviceInput, + SimulatedDevice, +) __author__ = "Jan Adler" __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -45,6 +51,8 @@ class SimulationRunner(object): __trigger_realizations: Sequence[TriggerRealization] __propagation: Sequence[Sequence[Signal]] | None __processed_inputs: Sequence[ProcessedSimulatedDeviceInput] + __device_states: Sequence[DeviceState] | None + __channel_realizations: Sequence[ChannelRealization] | None def __init__(self, scenario: SimulationScenario) -> None: """ @@ -55,10 +63,19 @@ def __init__(self, scenario: SimulationScenario) -> None: """ self.__scenario = scenario + self.__channel_realizations = None + self.__device_states = None + self.__device_states = None self.__trigger_realizations = None self.__propagation = None self.__processed_inputs = [] + def realize_channels(self) -> None: + self.__channel_realizations = self.__scenario.realize_channels() + + def sample_trajectories(self, timestamp: float = 0.0) -> None: + self.__device_states = [d.state(timestamp) for d in self.__scenario.devices] + def transmit_operators(self) -> None: """Generate base-band signal models emitted by all registered transmitting operators. @@ -92,6 +109,11 @@ def propagate(self) -> None: RuntimeError: If the number of transmit signals does not match the number of registered devices. """ + if self.__device_states is None or self.__channel_realizations is None: + raise RuntimeError( + "Propagation simulation stage called without prior channel or device realization" + ) + device_outputs = [device.output for device in self.__scenario.devices] if any([t is None for t in device_outputs]): raise RuntimeError( @@ -99,7 +121,9 @@ def propagate(self) -> None: ) # Propagate device outputs - self.__propagation, _ = self.__scenario.propagate(device_outputs) + self.__propagation, _ = self.__scenario.propagate( + device_outputs, self.__device_states, self.__channel_realizations + ) def process_inputs(self) -> None: """Process device inputs after channel propgation. @@ -140,8 +164,8 @@ def process_inputs(self) -> None: self.__processed_inputs.append( device.process_input( impinging_signals=impinging_signals, - noise_level=self.__scenario.noise_level, - noise_model=self.__scenario.noise_model, + noise_level=self.__scenario.noise_level, # type: ignore[operator] + noise_model=self.__scenario.noise_model, # type: ignore[operator] trigger_realization=trigger_realization, ) ) @@ -160,15 +184,34 @@ def receive_operators(self) -> None: class SimulationActor(MonteCarloActor[SimulationScenario], SimulationRunner): """Remote ray actor generated from the simulation runner class.""" - def __init__(self, argument_tuple: Any, index: int, catch_exceptions: bool = True) -> None: + def __init__( + self, + argument_tuple: Any, + index: int, + stage_arguments: Mapping[str, Sequence[tuple]] | None = None, + catch_exceptions: bool = True, + ) -> None: """ Args: - argument_tuple (Any): - MonteCarloActor initialization arguments. + argument_tuple: + Object to be investigated during the simulation runtime. + Dimensions over which the simulation will iterate. + Evaluators used to process the investigated object sample state. + + index (int): + Global index of the actor. + + stage_arguments (Mapping[str, Sequence[Tuple]], optional): + Arguments for the simulation stages. + + catch_exceptions (bool, optional): + Catch exceptions during run. + Enabled by default. """ - MonteCarloActor.__init__(self, argument_tuple, index, catch_exceptions) + # Initialize base classes + MonteCarloActor.__init__(self, argument_tuple, index, stage_arguments, catch_exceptions) SimulationRunner.__init__(self, self._investigated_object) # Update the internal random seed pseudo-deterministically for each actor instance @@ -179,6 +222,8 @@ def __init__(self, argument_tuple: Any, index: int, catch_exceptions: bool = Tru @staticmethod def stage_identifiers() -> List[str]: return [ + "realize_channels", + "sample_trajectories", "transmit_operators", "generate_outputs", "propagate", @@ -188,6 +233,8 @@ def stage_identifiers() -> List[str]: def stage_executors(self) -> List[Callable]: return [ + self.realize_channels, + self.sample_trajectories, self.transmit_operators, self.generate_outputs, self.propagate, @@ -215,6 +262,7 @@ def __init__( scenario: SimulationScenario | None = None, num_samples: int = 100, drop_duration: float = 0.0, + drop_interval: float = float("inf"), plot_results: bool = False, dump_results: bool = True, console_mode: ConsoleMode = ConsoleMode.INTERACTIVE, @@ -238,6 +286,10 @@ def __init__( drop_duration(float, optional): Duration of simulation drops in seconds. + drop_interval(float, optional): + Interval at which drops are being generated in seconds. + If not specified, only a single drop is generated at the beginning of the simulation. + plot_results (bool, optional): Plot results after simulation runs. Disabled by default. @@ -286,10 +338,12 @@ def __init__( num_actors=num_actors, ) + # Initialize class attributes self.plot_results = plot_results self.dump_results = dump_results self.drop_duration = drop_duration self.num_drops = num_samples + self.drop_interval = drop_interval @property def num_samples(self) -> int: @@ -299,6 +353,23 @@ def num_samples(self) -> int: def num_samples(self, value: int) -> None: self.num_drops = value + @property + def drop_interval(self) -> float: + """Interval at which drops are being generated in seconds. + + Raises: + ValueError for values smaller or equal to zero. + """ + + return self.__drop_interval + + @drop_interval.setter + def drop_interval(self, value: float) -> None: + if value <= 0: + raise ValueError("Drop interval must be greater than zero.") + + self.__drop_interval = value + @Pipeline.console_mode.setter # type: ignore def console_mode(self, value: ConsoleMode) -> None: # type: ignore Pipeline.console_mode.fset(self, value) # type: ignore @@ -316,6 +387,22 @@ def run(self) -> MonteCarloResult: self.console.rule("Simulation Campaign") self.console.print() # Just an empty line + # Generate timestamps at which drops are generated + max_timestamp = max(d.trajectory.max_timestamp for d in self.scenario.devices) + timestamps = ( + np.arange(0, max_timestamp, self.drop_interval, np.float_) + if max_timestamp > 0.0 + else np.zeros(1, np.float_) + ) + stage_arguments = dict() + if timestamps[-1] > 0.0: + stage_arguments["sample_trajectories"] = [(t,) for t in timestamps] + + if self.console_mode != ConsoleMode.SILENT: + self.console.log( + f"Generating {len(timestamps)} drops at an interval of {self.drop_interval} seconds along the trajectories of moveable objects" + ) + # Generate simulation result result = self.simulate(SimulationActor) @@ -409,8 +496,8 @@ def to_yaml( channels.append((device_alpha, device_beta, channel)) additional_fields = { - "noise_model": node.scenario.noise_model, - "noise_level": node.scenario.noise_level, + "noise_model": node.scenario.noise_model, # type: ignore[operator] + "noise_level": node.scenario.noise_level, # type: ignore[operator] "verbosity": node.verbosity.name, "Devices": node.scenario.devices, "Operators": node.scenario.operators, diff --git a/hermespy/tools/__init__.py b/hermespy/tools/__init__.py index 049954cf..a83c5f03 100644 --- a/hermespy/tools/__init__.py +++ b/hermespy/tools/__init__.py @@ -3,10 +3,10 @@ from .tile import tile_figures __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/tools/math.py b/hermespy/tools/math.py index 057eecc8..284f5643 100644 --- a/hermespy/tools/math.py +++ b/hermespy/tools/math.py @@ -17,10 +17,10 @@ from numba import jit __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/tools/resampling.py b/hermespy/tools/resampling.py index a6961c66..14ee04a6 100644 --- a/hermespy/tools/resampling.py +++ b/hermespy/tools/resampling.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2021, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/hermespy/tools/tile.py b/hermespy/tools/tile.py index fc46a928..47bb8740 100644 --- a/hermespy/tools/tile.py +++ b/hermespy/tools/tile.py @@ -24,10 +24,10 @@ def get_monitors(): # type: ignore __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/scripts/performance/test_install_memray.py b/scripts/performance/test_install_memray.py index 165da03a..7b097fbc 100644 --- a/scripts/performance/test_install_memray.py +++ b/scripts/performance/test_install_memray.py @@ -14,7 +14,7 @@ from datetime import datetime __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "1.2.0" diff --git a/setup.py b/setup.py index 387470a6..32ce933d 100644 --- a/setup.py +++ b/setup.py @@ -2,10 +2,10 @@ from setuptools import find_namespace_packages __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/submodules/affect b/submodules/affect index 61509eb7..8fa65a3c 160000 --- a/submodules/affect +++ b/submodules/affect @@ -1 +1 @@ -Subproject commit 61509eb756ae3725b8a67c2d26a5af5ba95186fb +Subproject commit 8fa65a3ca9b0dcdd3d544363bc692d4f85f6f718 diff --git a/tests/__init__.py b/tests/__init__.py index 566b211e..6dba7f67 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" __version__ = "1.0.0" diff --git a/tests/integration_tests/__init__.py b/tests/integration_tests/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/integration_tests/__init__.py +++ b/tests/integration_tests/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_audio_device.py b/tests/integration_tests/test_audio_device.py index c4d4f9ed..b332642c 100644 --- a/tests/integration_tests/test_audio_device.py +++ b/tests/integration_tests/test_audio_device.py @@ -9,10 +9,10 @@ from hermespy.modem import DuplexModem, RootRaisedCosineWaveform, OFDMWaveform, GridElement, GridResource, SymbolSection, ElementType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_evaluation.py b/tests/integration_tests/test_evaluation.py index cb92617a..e651ded5 100644 --- a/tests/integration_tests/test_evaluation.py +++ b/tests/integration_tests/test_evaluation.py @@ -10,10 +10,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_fec.py b/tests/integration_tests/test_fec.py index 3a00ff21..fa8fb4bf 100644 --- a/tests/integration_tests/test_fec.py +++ b/tests/integration_tests/test_fec.py @@ -14,10 +14,10 @@ from hermespy.tools import db2lin __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_fmcw_radar.py b/tests/integration_tests/test_fmcw_radar.py index 8e703b20..e1e14b47 100644 --- a/tests/integration_tests/test_fmcw_radar.py +++ b/tests/integration_tests/test_fmcw_radar.py @@ -17,10 +17,10 @@ from scipy.constants import speed_of_light __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_links.py b/tests/integration_tests/test_links.py index 8f811779..34768bb2 100644 --- a/tests/integration_tests/test_links.py +++ b/tests/integration_tests/test_links.py @@ -42,7 +42,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_matched_filter_jcas.py b/tests/integration_tests/test_matched_filter_jcas.py index be7946fd..0953e4ce 100644 --- a/tests/integration_tests/test_matched_filter_jcas.py +++ b/tests/integration_tests/test_matched_filter_jcas.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_mimo.py b/tests/integration_tests/test_mimo.py index 2fb05c35..7256b630 100644 --- a/tests/integration_tests/test_mimo.py +++ b/tests/integration_tests/test_mimo.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_polarization.py b/tests/integration_tests/test_polarization.py index e637c87d..9972ad57 100644 --- a/tests/integration_tests/test_polarization.py +++ b/tests/integration_tests/test_polarization.py @@ -14,7 +14,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_roc.py b/tests/integration_tests/test_roc.py index 43234de1..0d0a0e08 100644 --- a/tests/integration_tests/test_roc.py +++ b/tests/integration_tests/test_roc.py @@ -13,10 +13,10 @@ from hermespy.simulation import SpecificIsolation, N0 __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_scenario.py b/tests/integration_tests/test_scenario.py index 0d583be6..542a5366 100644 --- a/tests/integration_tests/test_scenario.py +++ b/tests/integration_tests/test_scenario.py @@ -12,10 +12,10 @@ from hermespy.modem import TransmittingModem, ReceivingModem, RaisedCosineWaveform __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integration_tests/test_trigger_groups.py b/tests/integration_tests/test_trigger_groups.py index 809c73e8..b9bc1d98 100644 --- a/tests/integration_tests/test_trigger_groups.py +++ b/tests/integration_tests/test_trigger_groups.py @@ -10,10 +10,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/documentation/__init__.py b/tests/integrity_tests/documentation/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/integrity_tests/documentation/__init__.py +++ b/tests/integrity_tests/documentation/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/documentation/test_examples.py b/tests/integrity_tests/documentation/test_examples.py index 1b1426e2..fb9e9568 100644 --- a/tests/integrity_tests/documentation/test_examples.py +++ b/tests/integrity_tests/documentation/test_examples.py @@ -9,10 +9,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -286,6 +286,11 @@ def test_simulation_amplifier(self) -> None: self.__run_example("simulation_amplifier.py") + def test_simulation_animation(self) -> None: + """Test example snippet for animation""" + + self.__run_example("simulation_animation.py") + def test_simulation_isolation(self) -> None: """Test example snippet for isolation""" diff --git a/tests/integrity_tests/documentation/test_notebooks.py b/tests/integrity_tests/documentation/test_notebooks.py index 84c0454e..68e2058a 100644 --- a/tests/integrity_tests/documentation/test_notebooks.py +++ b/tests/integrity_tests/documentation/test_notebooks.py @@ -10,10 +10,10 @@ from nbconvert.preprocessors import CellExecutionError, ExecutePreprocessor __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/documentation/test_plots.py b/tests/integrity_tests/documentation/test_plots.py index e2bf218c..f434ba87 100644 --- a/tests/integrity_tests/documentation/test_plots.py +++ b/tests/integrity_tests/documentation/test_plots.py @@ -9,10 +9,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/examples/__init__.py b/tests/integrity_tests/examples/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/integrity_tests/examples/__init__.py +++ b/tests/integrity_tests/examples/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/examples/test_config_examples.py b/tests/integrity_tests/examples/test_config_examples.py index d4ad91bf..51844849 100644 --- a/tests/integrity_tests/examples/test_config_examples.py +++ b/tests/integrity_tests/examples/test_config_examples.py @@ -11,10 +11,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/integrity_tests/examples/test_library_examples.py b/tests/integrity_tests/examples/test_library_examples.py index 1fabad26..9f175d40 100644 --- a/tests/integrity_tests/examples/test_library_examples.py +++ b/tests/integrity_tests/examples/test_library_examples.py @@ -14,10 +14,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -70,6 +70,15 @@ def test_getting_started_loop(self, mock_stdout) -> None: import getting_started_loop # type: ignore # noqa: F401 except Exception as e: self.fail(f"Exception raised: {e}") + + def test_getting_started_mobility(self) -> None: + """Test getting started library mobility example execution""" + + with SimulationTestContext(patch_plot=True): + try: + import getting_started_mobility # type: ignore # noqa: F401 + except Exception as e: + self.fail(f"Exception raised: {e}") def test_getting_started_ofdm_link(self) -> None: """Test getting started library OFDM link example execution""" diff --git a/tests/unit_tests/__init__.py b/tests/unit_tests/__init__.py index e69de29b..d41e5c8d 100644 --- a/tests/unit_tests/__init__.py +++ b/tests/unit_tests/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" diff --git a/tests/unit_tests/beamforming/__init__.py b/tests/unit_tests/beamforming/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/beamforming/__init__.py +++ b/tests/unit_tests/beamforming/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/beamforming/test_beamformer.py b/tests/unit_tests/beamforming/test_beamformer.py index b2004c62..c44f1bf0 100644 --- a/tests/unit_tests/beamforming/test_beamformer.py +++ b/tests/unit_tests/beamforming/test_beamformer.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/beamforming/test_capon.py b/tests/unit_tests/beamforming/test_capon.py index 4bd7bebb..2855458d 100644 --- a/tests/unit_tests/beamforming/test_capon.py +++ b/tests/unit_tests/beamforming/test_capon.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/beamforming/test_conventional.py b/tests/unit_tests/beamforming/test_conventional.py index 5fc2ec0b..769bcb4d 100644 --- a/tests/unit_tests/beamforming/test_conventional.py +++ b/tests/unit_tests/beamforming/test_conventional.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/beamforming/test_operators.py b/tests/unit_tests/beamforming/test_operators.py index e3cea3eb..41677416 100644 --- a/tests/unit_tests/beamforming/test_operators.py +++ b/tests/unit_tests/beamforming/test_operators.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/bin/__init__.py b/tests/unit_tests/bin/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/bin/__init__.py +++ b/tests/unit_tests/bin/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/bin/test_executable.py b/tests/unit_tests/bin/test_executable.py index eb568c51..1cda7392 100644 --- a/tests/unit_tests/bin/test_executable.py +++ b/tests/unit_tests/bin/test_executable.py @@ -9,10 +9,10 @@ from hermespy.core import Executable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/__init__.py b/tests/unit_tests/channel/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/channel/__init__.py +++ b/tests/unit_tests/channel/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_cdl.py b/tests/unit_tests/channel/test_cdl.py index 4a26692c..4ff9d051 100644 --- a/tests/unit_tests/channel/test_cdl.py +++ b/tests/unit_tests/channel/test_cdl.py @@ -2,7 +2,7 @@ from abc import abstractmethod from unittest import TestCase -from unittest.mock import patch +from unittest.mock import Mock, patch import numpy as np from numpy.testing import assert_array_equal @@ -21,7 +21,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -57,6 +57,7 @@ def setUp(self) -> None: self.carrier_frequency, self.bandwidth, SimulatedUniformArray(SimulatedIdealAntenna, 1e-3, (2, 1, 1)).state(Transformation.From_Translation(np.array([2, 3, 4]))), + Mock(), ) self.receiver_state = DeviceState( TrajectorySample( @@ -67,6 +68,7 @@ def setUp(self) -> None: self.carrier_frequency, self.bandwidth, SimulatedUniformArray(SimulatedIdealAntenna, 1e-3, (2, 1, 1)).state(Transformation.From_Translation(np.array([2, 3, 4]))), + Mock(), ) self.sample = ClusterDelayLineSample( diff --git a/tests/unit_tests/channel/test_channel.py b/tests/unit_tests/channel/test_channel.py index ba986a78..55a90388 100644 --- a/tests/unit_tests/channel/test_channel.py +++ b/tests/unit_tests/channel/test_channel.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_consistent.py b/tests/unit_tests/channel/test_consistent.py index 68c84c24..2d3e4240 100644 --- a/tests/unit_tests/channel/test_consistent.py +++ b/tests/unit_tests/channel/test_consistent.py @@ -14,7 +14,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_delay.py b/tests/unit_tests/channel/test_delay.py index d5d9cc36..3fa13161 100644 --- a/tests/unit_tests/channel/test_delay.py +++ b/tests/unit_tests/channel/test_delay.py @@ -21,7 +21,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_fading.py b/tests/unit_tests/channel/test_fading.py index c7bee2d4..9e40fccb 100644 --- a/tests/unit_tests/channel/test_fading.py +++ b/tests/unit_tests/channel/test_fading.py @@ -27,7 +27,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_ideal.py b/tests/unit_tests/channel/test_ideal.py index 569b9c64..4356ec3a 100644 --- a/tests/unit_tests/channel/test_ideal.py +++ b/tests/unit_tests/channel/test_ideal.py @@ -19,7 +19,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_quadriga.py b/tests/unit_tests/channel/test_quadriga.py index 51e3a1df..64cde699 100644 --- a/tests/unit_tests/channel/test_quadriga.py +++ b/tests/unit_tests/channel/test_quadriga.py @@ -20,10 +20,10 @@ from unit_tests.utils import assert_signals_equal __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/channel/test_radar_channel.py b/tests/unit_tests/channel/test_radar_channel.py index ee58fac1..36227719 100644 --- a/tests/unit_tests/channel/test_radar_channel.py +++ b/tests/unit_tests/channel/test_radar_channel.py @@ -25,7 +25,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/__init__.py b/tests/unit_tests/core/__init__.py index 8e859c88..bffa0039 100644 --- a/tests/unit_tests/core/__init__.py +++ b/tests/unit_tests/core/__init__.py @@ -1,8 +1,8 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_antennas.py b/tests/unit_tests/core/test_antennas.py index f1ee09dd..e7a87b92 100644 --- a/tests/unit_tests/core/test_antennas.py +++ b/tests/unit_tests/core/test_antennas.py @@ -11,10 +11,10 @@ from .test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_channel_state_information.py b/tests/unit_tests/core/test_channel_state_information.py index a996f5f5..f22fda5c 100644 --- a/tests/unit_tests/core/test_channel_state_information.py +++ b/tests/unit_tests/core/test_channel_state_information.py @@ -16,10 +16,10 @@ from hermespy.core import ChannelStateDimension, ChannelStateInformation, ChannelStateFormat __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_device.py b/tests/unit_tests/core/test_device.py index 0ec58c95..b83eba6d 100644 --- a/tests/unit_tests/core/test_device.py +++ b/tests/unit_tests/core/test_device.py @@ -15,10 +15,10 @@ from hermespy.core.device import Device, DeviceInput, ProcessedDeviceInput, DeviceReception, DeviceOutput, DeviceTransmission, MixingOperator, OperationResult, Operator, OperatorSlot, Receiver, ReceiverSlot, Reception, Transmission, Transmitter, TransmitterSlot, UnsupportedSlot __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_drop.py b/tests/unit_tests/core/test_drop.py index cd16528b..0e9550ed 100644 --- a/tests/unit_tests/core/test_drop.py +++ b/tests/unit_tests/core/test_drop.py @@ -12,10 +12,10 @@ from hermespy.core.drop import EvaluatedDrop __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_duplex.py b/tests/unit_tests/core/test_duplex.py index 8ac7010c..733a1c51 100644 --- a/tests/unit_tests/core/test_duplex.py +++ b/tests/unit_tests/core/test_duplex.py @@ -8,10 +8,10 @@ from hermespy.simulation import SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_evaluators.py b/tests/unit_tests/core/test_evaluators.py index ec0ec3cf..7ffe11d5 100644 --- a/tests/unit_tests/core/test_evaluators.py +++ b/tests/unit_tests/core/test_evaluators.py @@ -11,10 +11,10 @@ from hermespy.simulation import SimulatedDevice, SimulatedIdealAntenna, SimulatedUniformArray __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_executable.py b/tests/unit_tests/core/test_executable.py index 497a1c72..3996cc14 100644 --- a/tests/unit_tests/core/test_executable.py +++ b/tests/unit_tests/core/test_executable.py @@ -16,10 +16,10 @@ from hermespy.core.factory import Serializable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_factory.py b/tests/unit_tests/core/test_factory.py index ed8b003a..855c76fd 100644 --- a/tests/unit_tests/core/test_factory.py +++ b/tests/unit_tests/core/test_factory.py @@ -20,10 +20,10 @@ from hermespy.core.factory import Factory, Serializable, SerializableEnum, HDFSerializable __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_logarithmic.py b/tests/unit_tests/core/test_logarithmic.py index 0693f656..e67119bb 100644 --- a/tests/unit_tests/core/test_logarithmic.py +++ b/tests/unit_tests/core/test_logarithmic.py @@ -14,10 +14,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_monte_carlo.py b/tests/unit_tests/core/test_monte_carlo.py index f1138b31..c4b0725a 100644 --- a/tests/unit_tests/core/test_monte_carlo.py +++ b/tests/unit_tests/core/test_monte_carlo.py @@ -22,10 +22,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_operators.py b/tests/unit_tests/core/test_operators.py index 26243d29..0fc90309 100644 --- a/tests/unit_tests/core/test_operators.py +++ b/tests/unit_tests/core/test_operators.py @@ -12,10 +12,10 @@ from hermespy.simulation import SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_pipeline.py b/tests/unit_tests/core/test_pipeline.py index 194868c8..86ac74d8 100644 --- a/tests/unit_tests/core/test_pipeline.py +++ b/tests/unit_tests/core/test_pipeline.py @@ -6,10 +6,10 @@ from hermespy.core.pipeline import Pipeline __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_random_node.py b/tests/unit_tests/core/test_random_node.py index 2438ec64..f5b67c3c 100644 --- a/tests/unit_tests/core/test_random_node.py +++ b/tests/unit_tests/core/test_random_node.py @@ -10,10 +10,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_scenario.py b/tests/unit_tests/core/test_scenario.py index 63b0b4a6..f465ce8b 100644 --- a/tests/unit_tests/core/test_scenario.py +++ b/tests/unit_tests/core/test_scenario.py @@ -13,10 +13,10 @@ from hermespy.simulation import SimulatedDevice __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_signal.py b/tests/unit_tests/core/test_signal.py index 0554e9ff..657c382b 100644 --- a/tests/unit_tests/core/test_signal.py +++ b/tests/unit_tests/core/test_signal.py @@ -24,7 +24,7 @@ __copyright__ = "Copyright 2021, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_transformation.py b/tests/unit_tests/core/test_transformation.py index 230b92cf..e1d2df91 100644 --- a/tests/unit_tests/core/test_transformation.py +++ b/tests/unit_tests/core/test_transformation.py @@ -9,10 +9,10 @@ from .test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/core/test_visualize.py b/tests/unit_tests/core/test_visualize.py index e461c221..b65cacf4 100644 --- a/tests/unit_tests/core/test_visualize.py +++ b/tests/unit_tests/core/test_visualize.py @@ -15,10 +15,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/__init__.py b/tests/unit_tests/fec/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/fec/__init__.py +++ b/tests/unit_tests/fec/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_bch.py b/tests/unit_tests/fec/test_bch.py index 15e469f9..efdce07b 100644 --- a/tests/unit_tests/fec/test_bch.py +++ b/tests/unit_tests/fec/test_bch.py @@ -12,10 +12,10 @@ from hermespy.fec import BCHCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_block_interleaver.py b/tests/unit_tests/fec/test_block_interleaver.py index 7ff601dc..35d735a2 100644 --- a/tests/unit_tests/fec/test_block_interleaver.py +++ b/tests/unit_tests/fec/test_block_interleaver.py @@ -9,10 +9,10 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_coding.py b/tests/unit_tests/fec/test_coding.py index 6a069e40..7d68d040 100644 --- a/tests/unit_tests/fec/test_coding.py +++ b/tests/unit_tests/fec/test_coding.py @@ -14,10 +14,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_cyclic_redundancy_check.py b/tests/unit_tests/fec/test_cyclic_redundancy_check.py index 5658d70f..68b5b3bf 100644 --- a/tests/unit_tests/fec/test_cyclic_redundancy_check.py +++ b/tests/unit_tests/fec/test_cyclic_redundancy_check.py @@ -9,10 +9,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_ldpc.py b/tests/unit_tests/fec/test_ldpc.py index 1ad7c4bd..4faac5c4 100644 --- a/tests/unit_tests/fec/test_ldpc.py +++ b/tests/unit_tests/fec/test_ldpc.py @@ -14,10 +14,10 @@ from hermespy.fec import LDPCCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_polar.py b/tests/unit_tests/fec/test_polar.py index b5151850..fe824bc9 100644 --- a/tests/unit_tests/fec/test_polar.py +++ b/tests/unit_tests/fec/test_polar.py @@ -11,10 +11,10 @@ from hermespy.fec import PolarSCCoding, PolarSCLCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_repetition_encoder.py b/tests/unit_tests/fec/test_repetition_encoder.py index e6a6f9fc..2a22be6f 100644 --- a/tests/unit_tests/fec/test_repetition_encoder.py +++ b/tests/unit_tests/fec/test_repetition_encoder.py @@ -10,10 +10,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_rs.py b/tests/unit_tests/fec/test_rs.py index 903f37ad..81775794 100644 --- a/tests/unit_tests/fec/test_rs.py +++ b/tests/unit_tests/fec/test_rs.py @@ -11,10 +11,10 @@ from hermespy.fec import ReedSolomonCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_rsc.py b/tests/unit_tests/fec/test_rsc.py index 509608be..0db09f1f 100644 --- a/tests/unit_tests/fec/test_rsc.py +++ b/tests/unit_tests/fec/test_rsc.py @@ -12,10 +12,10 @@ from hermespy.fec import RSCCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_scrambler.py b/tests/unit_tests/fec/test_scrambler.py index 02c9e7ad..026ee69f 100644 --- a/tests/unit_tests/fec/test_scrambler.py +++ b/tests/unit_tests/fec/test_scrambler.py @@ -7,10 +7,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/fec/test_turbo.py b/tests/unit_tests/fec/test_turbo.py index 6f2cf7de..699a8025 100644 --- a/tests/unit_tests/fec/test_turbo.py +++ b/tests/unit_tests/fec/test_turbo.py @@ -12,10 +12,10 @@ from hermespy.fec import TurboCoding __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/__init__.py b/tests/unit_tests/hardware_loop/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/hardware_loop/__init__.py +++ b/tests/unit_tests/hardware_loop/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/audio/__init__.py b/tests/unit_tests/hardware_loop/audio/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/hardware_loop/audio/__init__.py +++ b/tests/unit_tests/hardware_loop/audio/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/audio/test_audio_device.py b/tests/unit_tests/hardware_loop/audio/test_audio_device.py index 41570702..e3c309fa 100644 --- a/tests/unit_tests/hardware_loop/audio/test_audio_device.py +++ b/tests/unit_tests/hardware_loop/audio/test_audio_device.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/audio/test_scenario.py b/tests/unit_tests/hardware_loop/audio/test_scenario.py index 25c4ff7b..07bf5abe 100644 --- a/tests/unit_tests/hardware_loop/audio/test_scenario.py +++ b/tests/unit_tests/hardware_loop/audio/test_scenario.py @@ -5,10 +5,10 @@ from hermespy.hardware_loop.audio import AudioDevice, AudioScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/calibration/__init__.py b/tests/unit_tests/hardware_loop/calibration/__init__.py index 566b211e..d41e5c8d 100644 --- a/tests/unit_tests/hardware_loop/calibration/__init__.py +++ b/tests/unit_tests/hardware_loop/calibration/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/calibration/test_delay.py b/tests/unit_tests/hardware_loop/calibration/test_delay.py index c70c5b3b..bcdfac8d 100644 --- a/tests/unit_tests/hardware_loop/calibration/test_delay.py +++ b/tests/unit_tests/hardware_loop/calibration/test_delay.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/calibration/test_leakage.py b/tests/unit_tests/hardware_loop/calibration/test_leakage.py index 61741026..a2fb611e 100644 --- a/tests/unit_tests/hardware_loop/calibration/test_leakage.py +++ b/tests/unit_tests/hardware_loop/calibration/test_leakage.py @@ -13,10 +13,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.0.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/test_hardware_loop.py b/tests/unit_tests/hardware_loop/test_hardware_loop.py index 410b73dc..0581a0f5 100644 --- a/tests/unit_tests/hardware_loop/test_hardware_loop.py +++ b/tests/unit_tests/hardware_loop/test_hardware_loop.py @@ -23,10 +23,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/test_physical_device.py b/tests/unit_tests/hardware_loop/test_physical_device.py index 70d8aab2..3d24a0a8 100644 --- a/tests/unit_tests/hardware_loop/test_physical_device.py +++ b/tests/unit_tests/hardware_loop/test_physical_device.py @@ -17,10 +17,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/test_physical_device_dummy.py b/tests/unit_tests/hardware_loop/test_physical_device_dummy.py index 23559f3d..55ffbbe5 100644 --- a/tests/unit_tests/hardware_loop/test_physical_device_dummy.py +++ b/tests/unit_tests/hardware_loop/test_physical_device_dummy.py @@ -11,10 +11,10 @@ from hermespy.hardware_loop.physical_device_dummy import PhysicalDeviceDummy, PhysicalScenarioDummy __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/test_physical_scenario.py b/tests/unit_tests/hardware_loop/test_physical_scenario.py index 8439a3f6..14d71645 100644 --- a/tests/unit_tests/hardware_loop/test_physical_scenario.py +++ b/tests/unit_tests/hardware_loop/test_physical_scenario.py @@ -6,10 +6,10 @@ from hermespy.hardware_loop.scenario import SimulatedPhysicalScenario, PhysicalScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/test_visualizers.py b/tests/unit_tests/hardware_loop/test_visualizers.py index d124f275..67afdd6d 100644 --- a/tests/unit_tests/hardware_loop/test_visualizers.py +++ b/tests/unit_tests/hardware_loop/test_visualizers.py @@ -15,10 +15,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/uhd/__init__.py b/tests/unit_tests/hardware_loop/uhd/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/hardware_loop/uhd/__init__.py +++ b/tests/unit_tests/hardware_loop/uhd/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/uhd/test_usrp.py b/tests/unit_tests/hardware_loop/uhd/test_usrp.py index 7fa1f40b..3809857f 100644 --- a/tests/unit_tests/hardware_loop/uhd/test_usrp.py +++ b/tests/unit_tests/hardware_loop/uhd/test_usrp.py @@ -13,10 +13,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/hardware_loop/uhd/test_usrp_system.py b/tests/unit_tests/hardware_loop/uhd/test_usrp_system.py index 42aec1f9..f4edbd8c 100644 --- a/tests/unit_tests/hardware_loop/uhd/test_usrp_system.py +++ b/tests/unit_tests/hardware_loop/uhd/test_usrp_system.py @@ -7,10 +7,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/jcas/__init__.py b/tests/unit_tests/jcas/__init__.py index 8e859c88..bffa0039 100644 --- a/tests/unit_tests/jcas/__init__.py +++ b/tests/unit_tests/jcas/__init__.py @@ -1,8 +1,8 @@ __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/jcas/test_jcas.py b/tests/unit_tests/jcas/test_jcas.py index 208c1ef0..0b3863fd 100644 --- a/tests/unit_tests/jcas/test_jcas.py +++ b/tests/unit_tests/jcas/test_jcas.py @@ -14,10 +14,10 @@ from hermespy.jcas import JCASTransmission, JCASReception __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/jcas/test_matched_filter.py b/tests/unit_tests/jcas/test_matched_filter.py index 154e6e98..a40cca45 100644 --- a/tests/unit_tests/jcas/test_matched_filter.py +++ b/tests/unit_tests/jcas/test_matched_filter.py @@ -17,10 +17,10 @@ from unit_tests.modem.test_waveform import MockCommunicationWaveform __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/jcas/test_ofdm_radar.py b/tests/unit_tests/jcas/test_ofdm_radar.py index 1fcfc8c9..ab77de00 100644 --- a/tests/unit_tests/jcas/test_ofdm_radar.py +++ b/tests/unit_tests/jcas/test_ofdm_radar.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "Jan Adler" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/__init__.py b/tests/unit_tests/modem/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/modem/__init__.py +++ b/tests/unit_tests/modem/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/__init__.py b/tests/unit_tests/modem/precoding/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/modem/precoding/__init__.py +++ b/tests/unit_tests/modem/precoding/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_dft.py b/tests/unit_tests/modem/precoding/test_dft.py index bf5c42af..0b8cb74b 100644 --- a/tests/unit_tests/modem/precoding/test_dft.py +++ b/tests/unit_tests/modem/precoding/test_dft.py @@ -10,10 +10,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_ratio_combining.py b/tests/unit_tests/modem/precoding/test_ratio_combining.py index e576dff8..6f93d1af 100644 --- a/tests/unit_tests/modem/precoding/test_ratio_combining.py +++ b/tests/unit_tests/modem/precoding/test_ratio_combining.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_single_carrier.py b/tests/unit_tests/modem/precoding/test_single_carrier.py index cd9bd74f..8c0d9f75 100644 --- a/tests/unit_tests/modem/precoding/test_single_carrier.py +++ b/tests/unit_tests/modem/precoding/test_single_carrier.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_spatial_multiplexing.py b/tests/unit_tests/modem/precoding/test_spatial_multiplexing.py index 811120f2..cfafaa61 100644 --- a/tests/unit_tests/modem/precoding/test_spatial_multiplexing.py +++ b/tests/unit_tests/modem/precoding/test_spatial_multiplexing.py @@ -9,10 +9,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_stbc.py b/tests/unit_tests/modem/precoding/test_stbc.py index d905d7d9..62e7542c 100644 --- a/tests/unit_tests/modem/precoding/test_stbc.py +++ b/tests/unit_tests/modem/precoding/test_stbc.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Egor Achkasov"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/precoding/test_symbol_precoding.py b/tests/unit_tests/modem/precoding/test_symbol_precoding.py index 1f071275..e6e8670e 100644 --- a/tests/unit_tests/modem/precoding/test_symbol_precoding.py +++ b/tests/unit_tests/modem/precoding/test_symbol_precoding.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_bits_source.py b/tests/unit_tests/modem/test_bits_source.py index 2176e30f..1e2480dd 100644 --- a/tests/unit_tests/modem/test_bits_source.py +++ b/tests/unit_tests/modem/test_bits_source.py @@ -11,10 +11,10 @@ from hermespy.modem.bits_source import RandomBitsSource, StreamBitsSource __author__ = "Tobias Kronauer" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_evaluators.py b/tests/unit_tests/modem/test_evaluators.py index 4babc24d..a0fad833 100644 --- a/tests/unit_tests/modem/test_evaluators.py +++ b/tests/unit_tests/modem/test_evaluators.py @@ -14,10 +14,10 @@ from hermespy.simulation import SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_modem.py b/tests/unit_tests/modem/test_modem.py index b7fc5618..cb0b9139 100644 --- a/tests/unit_tests/modem/test_modem.py +++ b/tests/unit_tests/modem/test_modem.py @@ -21,10 +21,10 @@ from .test_waveform import MockCommunicationWaveform __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_symbols.py b/tests/unit_tests/modem/test_symbols.py index e26fab66..ed3bd509 100644 --- a/tests/unit_tests/modem/test_symbols.py +++ b/tests/unit_tests/modem/test_symbols.py @@ -13,10 +13,10 @@ from hermespy.modem.symbols import SymbolType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_waveform.py b/tests/unit_tests/modem/test_waveform.py index 46eb24c4..5a514377 100644 --- a/tests/unit_tests/modem/test_waveform.py +++ b/tests/unit_tests/modem/test_waveform.py @@ -17,10 +17,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_waveform_chirp_fsk.py b/tests/unit_tests/modem/test_waveform_chirp_fsk.py index 0a470591..03868f3e 100644 --- a/tests/unit_tests/modem/test_waveform_chirp_fsk.py +++ b/tests/unit_tests/modem/test_waveform_chirp_fsk.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_waveform_correlation_synchronization.py b/tests/unit_tests/modem/test_waveform_correlation_synchronization.py index 0c501727..6b5ed11d 100644 --- a/tests/unit_tests/modem/test_waveform_correlation_synchronization.py +++ b/tests/unit_tests/modem/test_waveform_correlation_synchronization.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/test_waveform_single_carrier.py b/tests/unit_tests/modem/test_waveform_single_carrier.py index fee751f9..b64113e5 100644 --- a/tests/unit_tests/modem/test_waveform_single_carrier.py +++ b/tests/unit_tests/modem/test_waveform_single_carrier.py @@ -15,10 +15,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/tools/__init__.py b/tests/unit_tests/modem/tools/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/modem/tools/__init__.py +++ b/tests/unit_tests/modem/tools/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/tools/test_psk_qam_mapping.py b/tests/unit_tests/modem/tools/test_psk_qam_mapping.py index a2d61c09..86aa5270 100644 --- a/tests/unit_tests/modem/tools/test_psk_qam_mapping.py +++ b/tests/unit_tests/modem/tools/test_psk_qam_mapping.py @@ -9,10 +9,10 @@ from matplotlib import pyplot as plt __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/waveforms/__init__.py b/tests/unit_tests/modem/waveforms/__init__.py index e69de29b..d41e5c8d 100644 --- a/tests/unit_tests/modem/waveforms/__init__.py +++ b/tests/unit_tests/modem/waveforms/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" diff --git a/tests/unit_tests/modem/waveforms/orthogonal/__init__.py b/tests/unit_tests/modem/waveforms/orthogonal/__init__.py index e69de29b..d41e5c8d 100644 --- a/tests/unit_tests/modem/waveforms/orthogonal/__init__.py +++ b/tests/unit_tests/modem/waveforms/orthogonal/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" diff --git a/tests/unit_tests/modem/waveforms/orthogonal/test_channel.py b/tests/unit_tests/modem/waveforms/orthogonal/test_channel.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/unit_tests/modem/waveforms/orthogonal/test_ocdm.py b/tests/unit_tests/modem/waveforms/orthogonal/test_ocdm.py index ab068e0b..db42bf58 100644 --- a/tests/unit_tests/modem/waveforms/orthogonal/test_ocdm.py +++ b/tests/unit_tests/modem/waveforms/orthogonal/test_ocdm.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -61,7 +61,7 @@ def test_transmit_power(self) -> None: modem = TransmittingModem() modem.waveform = self.ocdm - modem.device = SimulatedDevice() + modem.device = SimulatedDevice(seed=42) waveform = modem.transmit().signal power = waveform.power diff --git a/tests/unit_tests/modem/waveforms/orthogonal/test_ofdm.py b/tests/unit_tests/modem/waveforms/orthogonal/test_ofdm.py index 2ca62d00..6baf9e3f 100644 --- a/tests/unit_tests/modem/waveforms/orthogonal/test_ofdm.py +++ b/tests/unit_tests/modem/waveforms/orthogonal/test_ofdm.py @@ -18,7 +18,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/waveforms/orthogonal/test_otfs.py b/tests/unit_tests/modem/waveforms/orthogonal/test_otfs.py index 30c4798d..3afbc91c 100644 --- a/tests/unit_tests/modem/waveforms/orthogonal/test_otfs.py +++ b/tests/unit_tests/modem/waveforms/orthogonal/test_otfs.py @@ -18,7 +18,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/modem/waveforms/orthogonal/test_waveform.py b/tests/unit_tests/modem/waveforms/orthogonal/test_waveform.py index 58b4d27f..a8381fb9 100644 --- a/tests/unit_tests/modem/waveforms/orthogonal/test_waveform.py +++ b/tests/unit_tests/modem/waveforms/orthogonal/test_waveform.py @@ -16,10 +16,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "André Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/precoding/__init__.py b/tests/unit_tests/precoding/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/precoding/__init__.py +++ b/tests/unit_tests/precoding/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/precoding/test_precoding.py b/tests/unit_tests/precoding/test_precoding.py index 06341882..6c223ccd 100644 --- a/tests/unit_tests/precoding/test_precoding.py +++ b/tests/unit_tests/precoding/test_precoding.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/precoding/test_stream_precoding.py b/tests/unit_tests/precoding/test_stream_precoding.py index 29b00a90..f6225529 100644 --- a/tests/unit_tests/precoding/test_stream_precoding.py +++ b/tests/unit_tests/precoding/test_stream_precoding.py @@ -10,10 +10,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/__init__.py b/tests/unit_tests/radar/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/radar/__init__.py +++ b/tests/unit_tests/radar/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/test_cube.py b/tests/unit_tests/radar/test_cube.py index 0a936d4a..122589e0 100644 --- a/tests/unit_tests/radar/test_cube.py +++ b/tests/unit_tests/radar/test_cube.py @@ -13,7 +13,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/test_detection.py b/tests/unit_tests/radar/test_detection.py index ec1d4092..6dc0e189 100644 --- a/tests/unit_tests/radar/test_detection.py +++ b/tests/unit_tests/radar/test_detection.py @@ -16,7 +16,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Egor Achkasov"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/test_evaluators.py b/tests/unit_tests/radar/test_evaluators.py index b9b7019c..7c73f8f8 100644 --- a/tests/unit_tests/radar/test_evaluators.py +++ b/tests/unit_tests/radar/test_evaluators.py @@ -19,10 +19,10 @@ from unit_tests.utils import SimulationTestContext __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/test_fmcw.py b/tests/unit_tests/radar/test_fmcw.py index 8f0a5104..0b9b8612 100644 --- a/tests/unit_tests/radar/test_fmcw.py +++ b/tests/unit_tests/radar/test_fmcw.py @@ -6,10 +6,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/radar/test_radar.py b/tests/unit_tests/radar/test_radar.py index 585ee241..732cdd26 100644 --- a/tests/unit_tests/radar/test_radar.py +++ b/tests/unit_tests/radar/test_radar.py @@ -16,10 +16,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/__init__.py b/tests/unit_tests/simulation/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/simulation/__init__.py +++ b/tests/unit_tests/simulation/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/coupling/__init__.py b/tests/unit_tests/simulation/coupling/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/simulation/coupling/__init__.py +++ b/tests/unit_tests/simulation/coupling/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/coupling/test_coupling.py b/tests/unit_tests/simulation/coupling/test_coupling.py index 384b3f33..f77ab028 100644 --- a/tests/unit_tests/simulation/coupling/test_coupling.py +++ b/tests/unit_tests/simulation/coupling/test_coupling.py @@ -9,10 +9,10 @@ from hermespy.simulation import Coupling, SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/coupling/test_impedance.py b/tests/unit_tests/simulation/coupling/test_impedance.py index 1e666a01..e15ea0ec 100644 --- a/tests/unit_tests/simulation/coupling/test_impedance.py +++ b/tests/unit_tests/simulation/coupling/test_impedance.py @@ -11,10 +11,10 @@ from hermespy.simulation import ImpedanceCoupling, SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/isolation/__init__.py b/tests/unit_tests/simulation/isolation/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/simulation/isolation/__init__.py +++ b/tests/unit_tests/simulation/isolation/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/isolation/test_isolation.py b/tests/unit_tests/simulation/isolation/test_isolation.py index 6264f166..3b130466 100644 --- a/tests/unit_tests/simulation/isolation/test_isolation.py +++ b/tests/unit_tests/simulation/isolation/test_isolation.py @@ -9,10 +9,10 @@ from hermespy.simulation import Isolation, SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/isolation/test_perfect_isolation.py b/tests/unit_tests/simulation/isolation/test_perfect_isolation.py index c28c2c65..a67aae9c 100644 --- a/tests/unit_tests/simulation/isolation/test_perfect_isolation.py +++ b/tests/unit_tests/simulation/isolation/test_perfect_isolation.py @@ -8,10 +8,10 @@ from hermespy.simulation import PerfectIsolation, SimulatedDevice __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/isolation/test_selective.py b/tests/unit_tests/simulation/isolation/test_selective.py index 73443d6e..3be60324 100644 --- a/tests/unit_tests/simulation/isolation/test_selective.py +++ b/tests/unit_tests/simulation/isolation/test_selective.py @@ -10,10 +10,10 @@ from hermespy.simulation import SelectiveLeakage, SimulatedDevice, SimulatedIdealAntenna, SimulatedUniformArray __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/isolation/test_specific_isolation.py b/tests/unit_tests/simulation/isolation/test_specific_isolation.py index 64cb1112..8c701bc5 100644 --- a/tests/unit_tests/simulation/isolation/test_specific_isolation.py +++ b/tests/unit_tests/simulation/isolation/test_specific_isolation.py @@ -12,10 +12,10 @@ from hermespy.tools import db2lin, lin2db __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/modem/__init__.py b/tests/unit_tests/simulation/modem/__init__.py index e69de29b..d41e5c8d 100644 --- a/tests/unit_tests/simulation/modem/__init__.py +++ b/tests/unit_tests/simulation/modem/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +__author__ = "Jan Adler" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" +__credits__ = ["Jan Adler"] +__license__ = "AGPLv3" +__version__ = "1.3.0" +__maintainer__ = "Jan Adler" +__email__ = "jan.adler@barkhauseninstitut.org" +__status__ = "Prototype" diff --git a/tests/unit_tests/simulation/modem/test_channel_estimation.py b/tests/unit_tests/simulation/modem/test_channel_estimation.py index 407da4b5..e56a76cb 100644 --- a/tests/unit_tests/simulation/modem/test_channel_estimation.py +++ b/tests/unit_tests/simulation/modem/test_channel_estimation.py @@ -30,7 +30,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/modem/test_noise.py b/tests/unit_tests/simulation/modem/test_noise.py index b3ef41c2..065c23e9 100644 --- a/tests/unit_tests/simulation/modem/test_noise.py +++ b/tests/unit_tests/simulation/modem/test_noise.py @@ -10,7 +10,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/noise/__init__.py b/tests/unit_tests/simulation/noise/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/simulation/noise/__init__.py +++ b/tests/unit_tests/simulation/noise/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/noise/test_level.py b/tests/unit_tests/simulation/noise/test_level.py index 1679189f..e402a67b 100644 --- a/tests/unit_tests/simulation/noise/test_level.py +++ b/tests/unit_tests/simulation/noise/test_level.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.1.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/noise/test_model.py b/tests/unit_tests/simulation/noise/test_model.py index 8d8f2e76..821fe3b7 100644 --- a/tests/unit_tests/simulation/noise/test_model.py +++ b/tests/unit_tests/simulation/noise/test_model.py @@ -15,7 +15,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.1.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/__init__.py b/tests/unit_tests/simulation/rf_chain/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/simulation/rf_chain/__init__.py +++ b/tests/unit_tests/simulation/rf_chain/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_analog_digital_converter.py b/tests/unit_tests/simulation/rf_chain/test_analog_digital_converter.py index ff017781..545c0d4e 100644 --- a/tests/unit_tests/simulation/rf_chain/test_analog_digital_converter.py +++ b/tests/unit_tests/simulation/rf_chain/test_analog_digital_converter.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_iq_imbalance.py b/tests/unit_tests/simulation/rf_chain/test_iq_imbalance.py index ba1287b6..343a70f4 100644 --- a/tests/unit_tests/simulation/rf_chain/test_iq_imbalance.py +++ b/tests/unit_tests/simulation/rf_chain/test_iq_imbalance.py @@ -8,10 +8,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_phase_noise.py b/tests/unit_tests/simulation/rf_chain/test_phase_noise.py index 6cc64651..6c529900 100644 --- a/tests/unit_tests/simulation/rf_chain/test_phase_noise.py +++ b/tests/unit_tests/simulation/rf_chain/test_phase_noise.py @@ -12,10 +12,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Egor Achkasov" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Egor Achjasov", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_power_amplifier.py b/tests/unit_tests/simulation/rf_chain/test_power_amplifier.py index a7b59423..4c4b4bbf 100644 --- a/tests/unit_tests/simulation/rf_chain/test_power_amplifier.py +++ b/tests/unit_tests/simulation/rf_chain/test_power_amplifier.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Andre Noll Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Andre Noll Barreto", "Tobias Kronauer", "Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_quantization.py b/tests/unit_tests/simulation/rf_chain/test_quantization.py index bab194c4..e5799ec3 100644 --- a/tests/unit_tests/simulation/rf_chain/test_quantization.py +++ b/tests/unit_tests/simulation/rf_chain/test_quantization.py @@ -11,10 +11,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "André Noll-Barreto" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["André Noll-Barreto"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/rf_chain/test_rf_chain.py b/tests/unit_tests/simulation/rf_chain/test_rf_chain.py index 095479b1..de10eaaf 100644 --- a/tests/unit_tests/simulation/rf_chain/test_rf_chain.py +++ b/tests/unit_tests/simulation/rf_chain/test_rf_chain.py @@ -7,10 +7,10 @@ from hermespy.simulation.rf_chain import RfChain __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_animation.py b/tests/unit_tests/simulation/test_animation.py index b590ac6d..507271a9 100644 --- a/tests/unit_tests/simulation/test_animation.py +++ b/tests/unit_tests/simulation/test_animation.py @@ -12,7 +12,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_antennas.py b/tests/unit_tests/simulation/test_antennas.py index 07ec16e0..17d593b2 100644 --- a/tests/unit_tests/simulation/test_antennas.py +++ b/tests/unit_tests/simulation/test_antennas.py @@ -11,10 +11,10 @@ from hermespy.simulation import RfChain, SimulatedAntenna, SimulatedAntennaPort, SimulatedAntennaArray, SimulatedCustomArray, SimulatedDevice, SimulatedDipole, SimulatedIdealAntenna, SimulatedLinearAntenna, SimulatedPatchAntenna, SimulatedUniformArray __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_drop.py b/tests/unit_tests/simulation/test_drop.py index 81ad61cd..f11be797 100644 --- a/tests/unit_tests/simulation/test_drop.py +++ b/tests/unit_tests/simulation/test_drop.py @@ -11,7 +11,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_scenario.py b/tests/unit_tests/simulation/test_scenario.py index d76d37e4..98ba5e21 100644 --- a/tests/unit_tests/simulation/test_scenario.py +++ b/tests/unit_tests/simulation/test_scenario.py @@ -14,7 +14,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_simulated_device.py b/tests/unit_tests/simulation/test_simulated_device.py index 476add41..6c045929 100644 --- a/tests/unit_tests/simulation/test_simulated_device.py +++ b/tests/unit_tests/simulation/test_simulated_device.py @@ -13,10 +13,10 @@ from unit_tests.core.test_factory import test_yaml_roundtrip_serialization __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/simulation/test_simulation.py b/tests/unit_tests/simulation/test_simulation.py index 36318b78..b2b7eaa0 100644 --- a/tests/unit_tests/simulation/test_simulation.py +++ b/tests/unit_tests/simulation/test_simulation.py @@ -22,7 +22,7 @@ __copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler", "Tobias Kronauer"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -61,6 +61,13 @@ def test_stages(self) -> None: """Make sure the stages all execute without exceptions""" try: + + # Realize channels + self.runner.realize_channels() + + # Sample trajectories + self.runner.sample_trajectories() + # Transmit operators self.runner.transmit_operators() @@ -88,6 +95,9 @@ def test_propagate_validation(self) -> None: def test_process_inputs_validation(self) -> None: """Process inputs should raise RuntimeErrors for invalid internal states""" + self.runner.realize_channels() + self.runner.sample_trajectories() + # No trigger realizations cached with self.assertRaises(RuntimeError): self.runner.process_inputs() diff --git a/tests/unit_tests/tools/__init__.py b/tests/unit_tests/tools/__init__.py index 63ed93e1..d41e5c8d 100644 --- a/tests/unit_tests/tools/__init__.py +++ b/tests/unit_tests/tools/__init__.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/tools/test_math.py b/tests/unit_tests/tools/test_math.py index 6194d79e..a52e105d 100644 --- a/tests/unit_tests/tools/test_math.py +++ b/tests/unit_tests/tools/test_math.py @@ -9,10 +9,10 @@ from hermespy.tools.math import db2lin, lin2db, marcum_q, rms_value, amplitude_path_loss, DbConversionType __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/tools/test_resampling.py b/tests/unit_tests/tools/test_resampling.py index 50a4d3dd..acae8345 100644 --- a/tests/unit_tests/tools/test_resampling.py +++ b/tests/unit_tests/tools/test_resampling.py @@ -11,10 +11,10 @@ from hermespy.tools import delay_resampling_matrix __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/tools/test_tile.py b/tests/unit_tests/tools/test_tile.py index 6ddb537b..289532f6 100644 --- a/tests/unit_tests/tools/test_tile.py +++ b/tests/unit_tests/tools/test_tile.py @@ -6,10 +6,10 @@ from hermespy.tools.tile import screen_geometry, set_figure_geometry, tile_figures __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" diff --git a/tests/unit_tests/utils.py b/tests/unit_tests/utils.py index 9edea945..c6155a34 100644 --- a/tests/unit_tests/utils.py +++ b/tests/unit_tests/utils.py @@ -18,10 +18,10 @@ from hermespy.simulation import Simulation, SimulationScenario __author__ = "Jan Adler" -__copyright__ = "Copyright 2023, Barkhausen Institut gGmbH" +__copyright__ = "Copyright 2024, Barkhausen Institut gGmbH" __credits__ = ["Jan Adler"] __license__ = "AGPLv3" -__version__ = "1.2.0" +__version__ = "1.3.0" __maintainer__ = "Jan Adler" __email__ = "jan.adler@barkhauseninstitut.org" __status__ = "Prototype" @@ -59,9 +59,10 @@ def monte_carlo_init_mock(cls: MonteCarlo, *args, **kwargs) -> None: monte_carlo_init(cls, *args, **kwargs) -def simulation_init_mock(self: Simulation, scenario: None | SimulationScenario = None, num_samples: int = 100, drop_duration: float = 0.0, plot_results: bool = False, dump_results: bool = True, console_mode: ConsoleMode = ConsoleMode.INTERACTIVE, ray_address=None, results_dir=None, verbosity=Verbosity.INFO, seed=None, num_actors=None) -> None: +def simulation_init_mock(self: Simulation, scenario: None | SimulationScenario = None, num_samples: int = 100, drop_duration: float = 0.0, drop_interval: float = float('inf'), plot_results: bool = False, dump_results: bool = True, console_mode: ConsoleMode = ConsoleMode.INTERACTIVE, ray_address=None, results_dir=None, verbosity=Verbosity.INFO, seed=None, num_actors=None) -> None: num_samples = 1 - simulation_init(self, scenario, num_samples, drop_duration, plot_results, dump_results, console_mode, ray_address, results_dir, verbosity, seed, num_actors) + drop_duration = float('inf') + simulation_init(self, scenario, num_samples, drop_duration, drop_interval, plot_results, dump_results, console_mode, ray_address, results_dir, verbosity, seed, num_actors) def new_dimension_mock(cls: MonteCarlo, dimension: str, sample_points: List[Any], *args) -> GridDimension: