From e922f527a4c1b441c195f751399e0e73802ccefd Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 21:08:26 +0000 Subject: [PATCH 1/5] Add the blind coherent receiver, lock Gray labelling, let objects print themselves The expert review named the two absences that dated the optical layer: no polarization impairment, and no time-varying carrier recovery. Both close here. PMDEmulator is the standard section emulator -- K Haar-uniform Jones rotations, each followed by a DGD of tau/sqrt(K) applied exactly in the frequency domain, so the declared tau is the RMS DGD of a Maxwellian ensemble (Poole & Wagner); a 300-seed test measures the DGD from the eigenvalues of the group-delay operator and pins both moments within 10 %. BlindPhaseSearchCompensator is Pfau's feedforward search, tested against a Wiener walk within its grid, its quadrant ambiguity documented as unresolved. The optical_pdm page runs PDM-QPSK through laser, PMD and amplifier, then undoes it blindly -- CMA butterfly, BPS, and the three ambiguities every blind receiver leaves resolved explicitly by known data: zero errors over 123072 symbols. PhaseNoise now draws one walk shared across leading axes: one laser. The Gray labelling that every BER curve leaned on is locked by deterministic tests: geometric nearest neighbours differ by exactly one index bit for QAM 4-256 and PSK 4-16, a nearest-neighbour symbol error costs exactly one bit through compute_ber, and a seeded 16-QAM run lands on the Gray closed form. print(obj) now renders info() -- one key: value line per entry, repr when there is no info() -- and the tutorials' items() loops become print(channel). The AWGN page drops its interpolation coda. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 61 ++++++++ docs/getting_started/first_simulation.rst | 19 ++- docs/tutorials/awgn.rst | 22 +-- docs/tutorials/img/one_shot_pdm_fig1.png | Bin 0 -> 127419 bytes docs/tutorials/index.rst | 6 + docs/tutorials/ofdm.rst | 10 +- docs/tutorials/optical_pdm.rst | 133 ++++++++++++++++++ examples/ofdm/one_shot_ofdm.py | 3 +- examples/optical/one_shot_pdm.py | 118 ++++++++++++++++ examples/simple/monte_carlo_awgn.py | 15 -- examples/simple/one_shot_awgn.py | 7 +- src/comnumpy/core/compensators.py | 102 +++++++++++++- src/comnumpy/core/generics.py | 37 +++++ src/comnumpy/core/utils.py | 13 ++ src/comnumpy/optical/channels.py | 127 ++++++++++++++++- tests/core/test_gray_labelling.py | 110 +++++++++++++++ tests/optical/test_pmd_bps.py | 161 ++++++++++++++++++++++ 17 files changed, 887 insertions(+), 57 deletions(-) create mode 100644 docs/tutorials/img/one_shot_pdm_fig1.png create mode 100644 docs/tutorials/optical_pdm.rst create mode 100644 examples/optical/one_shot_pdm.py create mode 100644 tests/core/test_gray_labelling.py create mode 100644 tests/optical/test_pmd_bps.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 84f544f..50245d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,67 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Added — `print(obj)` renders `info()` + +Any object that defines `info()` -- a channel, a constellation -- now +prints it: `Processor.__str__` (and `Constellation.__str__`) render the +dictionary as one `key: value` line per entry, and fall back to `repr` +when there is no `info()`. The tutorials' `for key, value in +channel.info().items()` loops become `print(channel)`. + +### Added — the blind coherent receiver: `PMDEmulator`, BPS, and its page + +The expert review named the two absences that dated the optical layer: +no polarization impairment, and no time-varying carrier recovery -- the +`Laser` block carried a Wiener linewidth that nothing in the library +could track. Both close here, with the tutorial that needs them. + +`PMDEmulator` (optical.channels) is the standard section emulator: K +Haar-uniform Jones rotations, each followed by a DGD of tau/sqrt(K) +applied exactly in the frequency domain -- randomly oriented sections +add in quadrature, so the declared tau is the **RMS** DGD of the +ensemble, whose distribution is Maxwellian with mean 0.921 tau (Poole & +Wagner). A 300-seed test measures the DGD from the eigenvalues of the +group-delay operator and pins both moments within 10 %. The emulator is +unitary -- energy conserved to machine precision, tested -- seeded, and +refuses a single polarization. +`PhaseNoise` now draws **one** walk along the last axis and shares it +across leading axes: the phase comes from one laser, and a polarization +pair sees the same phi[n]. + +`BlindPhaseSearchCompensator` (core.compensators) is Pfau's feedforward +blind phase search: B test phases over [0, pi/2), windowed decision +distance, per-symbol argmin, unwrapped modulo pi/2. Each row of a pair +gets its own trajectory, exposed as `phase_` (D23). The quadrant +ambiguity is documented as unresolved, and tested as such. + +The page (`optical_pdm`) runs PDM-QPSK through one laser, eight PMD +sections and an amplifier, then undoes it blindly: CMA butterfly, BPS, +and the three ambiguities every blind receiver leaves -- permutation, +quadrant, equalizer delay -- resolved explicitly by known data, printed +rather than hidden. Zero errors over 123 072 symbols, and the page says +what that measures: transparency of the chain, not an error rate. + +### Added — the Gray labelling is locked by tests + +`compute_ber` expands indices in natural binary and its docstring +admitted the count is only meaningful if the constellation is labelled +accordingly. It is -- and now five tests prove it rather than the +tutorials' tail agreement suggesting it: geometric nearest neighbours +of every Gray QAM/PSK alphabet differ by exactly one index bit, natural +binary labelling fails that property (so the test measures the +labelling, not the geometry), a nearest-neighbour symbol error costs +exactly one bit through `compute_ber`, and a seeded 16-QAM run at +Eb/N0 = 11 dB lands within 20 % of the Gray closed form -- a labelling +mismatch would double it. + +### Changed — the AWGN page drops its interpolation coda + +The Eb/N0-at-BER-1e-3 table was five lines of `np.interp` on a fine +grid with an underflow guard -- machinery out of proportion with what +it added to the figure the section already shows. The spacing of the +waterfalls is now read off the figure in one sentence. + ### Changed — the simulation sections read identically across the pages Every sweep in the tutorials now shows the same three markers, in the diff --git a/docs/getting_started/first_simulation.rst b/docs/getting_started/first_simulation.rst index 3e63e2b..fb3fa26 100644 --- a/docs/getting_started/first_simulation.rst +++ b/docs/getting_started/first_simulation.rst @@ -146,18 +146,17 @@ itself: .. literalinclude:: ../../examples/simple/one_shot_awgn.py :language: python - :lines: 84-87 + :lines: 84-88 .. code:: - constellation.info() - family QAM - order 4 - labelling gray - bits_per_symbol 2 - energy 1.0 - min_distance 1.414213562373095 - papr_dB 0.0 + family: QAM + order: 4 + labelling: gray + bits_per_symbol: 2 + energy: 1.0 + min_distance: 1.414213562373095 + papr_dB: 0.0 Every one of those was implicit in the by-hand version. ``energy`` is the normalization the noise variance depends on; ``bits_per_symbol`` is the @@ -170,7 +169,7 @@ It also draws itself, next to what the channel did to it: .. literalinclude:: ../../examples/simple/one_shot_awgn.py :language: python - :lines: 89-97 + :lines: 90-98 .. image:: img/first_simulation_fig1.png :width: 100% diff --git a/docs/tutorials/awgn.rst b/docs/tutorials/awgn.rst index a9bad99..6d416c2 100644 --- a/docs/tutorials/awgn.rst +++ b/docs/tutorials/awgn.rst @@ -110,7 +110,7 @@ outline marks a tapped block: .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 144-150 + :lines: 129-135 Monte Carlo Simulation """""""""""""""""""""" @@ -272,7 +272,7 @@ not guess (decision D41), so it happens at the call site: .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 99-128 + :lines: 99-120 The metric changes with the axis. Against :math:`E_b/N_0` the natural quantity is the bit error rate, and ``compute_ber`` needs the symbol width, which @@ -289,27 +289,17 @@ below :math:`10^{-2}` the two agree to within a few percent for every order. This is an approximation behaving as documented, not a simulation disagreeing with theory. -.. code:: - - QAM order bits per symbol Eb/N0 at BER=1e-3 [dB] - -------------------------------------------------- - 4 2 6.79 - 16 4 10.52 - 64 6 14.77 - 256 8 19.38 - .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 130-142 + :lines: 120-127 .. image:: img/monte_carlo_awgn_orders.png :width: 100% :align: center -Going from 2 to 8 bits per symbol costs **12.6 dB** of energy per bit at -:math:`10^{-3}`, spent in three roughly equal steps -- 3.7, 4.3 then 4.6 dB -per doubling of :math:`k`, the price rising slowly with the order. That is -what the rest of +The waterfalls are almost evenly spaced: each doubling of the bits per +symbol shifts the curve by **4 to 5 dB** of energy per bit, read directly +off the figure. That price is what the rest of a communication system is built to negotiate: coding buys some of it back (:doc:`coding`), shaping buys a little more (:doc:`shaping`), and a channel that is not simply AWGN changes the terms entirely (:doc:`ofdm`). diff --git a/docs/tutorials/img/one_shot_pdm_fig1.png b/docs/tutorials/img/one_shot_pdm_fig1.png new file mode 100644 index 0000000000000000000000000000000000000000..2585b5a06cd38659605c84d7802d44708a1bae38 GIT binary patch literal 127419 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

GVlPJwLz7rfYjPEydPOE1f6&H~1`4&4Id@ zt~5S>X32R&@B^ceKoDG6N6$4go)&!f^2jHKx$%om9m7KhjkC5ULX7JTplCci}U|KMumOeu)hXQJTBYtIH9M`0JdU zoWvBnb}!cdap1C5)?gx0y=;LvU`0}Ob`}><^2fMsXKN%QqA#%s$Y+=zjLx1PccDFj zN=i(-Aii@fD!2e0od1-uhcy^IBO%8SI5lv~2ZOm{qzt~e+1gWRVrrU#6)E!=?&N9!AeY^iz0%_080Lu=K-^FZal*){SHeOqD^%3(rE`g! zZ>NOdUaJe5fYgGpjVKe3X{hq`bJ8wd>wr;sN7o1{nnSdnN+ zOR8ZHpX5w9hV!r$cSYKx33qT}TDr8YT#2+ZRyg5iBP9e-pS$BNUbR|vhPAfZ{#yak z9=)Io^>^=}CIB2`z{Iz2*=NS^;P9{0)0|CBO}r1JPql0&6OTzLL#ImLlLVG9v*bs* z(n4m_!X}{)eQPhPwWZMEgf8v0v_ussMFO<)SQmW*@zEAl5lRmr z5y0~if(%=AsEfW2h6W;ef^8q&qnJqzBi74&+JY$AHvr`%rGXAqMmGfD%Dbg>pdq&Z zBC8_U(D0_87>uDdcM6J_yz(5dQK4GCjZ}t#KhP{L=4BlSpfouB$dKttI8!vAd0&%}k^q#|x7@=MV<{25F z`8z+y-X$EHE}b0N7!rcBL4{P{%eS0OIfd&H(u++>iULIEL@>aO<2>SuU<;W#0F(IT z)$0S{6?rx=2{TAY{CbvmYe|a!_t(Gr+JFBia`)ej?tgxx3iBxc+{x_20YN e|F=Ievq;(HPG@Aj8l6tT*CF+zYI&;Gf&T*)i{|A3 literal 0 HcmV?d00001 diff --git a/docs/tutorials/index.rst b/docs/tutorials/index.rst index 7115774..8e929ac 100644 --- a/docs/tutorials/index.rst +++ b/docs/tutorials/index.rst @@ -51,6 +51,11 @@ and nothing is explained twice. - A nonlinear channel: how much noise the fibre's nonlinearity makes, in closed form, and the launch power that minimizes it -- checked against a split-step simulation. + * - 9 + - :doc:`optical_pdm` + - The blind coherent receiver: a fibre that mixes the two + polarizations (``PMDEmulator``), the CMA butterfly that + unmixes them, and blind phase search against the laser. * - 9 - :doc:`optical_fiber_nonlinearity` - The performance the previous tutorial predicted, improved: digital @@ -74,4 +79,5 @@ The scripts behind these pages are also available on GitHub: `https://github.com coding shaping gn_model + optical_pdm optical_fiber_nonlinearity diff --git a/docs/tutorials/ofdm.rst b/docs/tutorials/ofdm.rst index a499bed..3cd2442 100644 --- a/docs/tutorials/ofdm.rst +++ b/docs/tutorials/ofdm.rst @@ -79,7 +79,7 @@ of it, and ``info()`` returns what the channel is: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 31-54 + :lines: 31-53 .. code:: @@ -136,7 +136,7 @@ Implementation .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 55-77 + :lines: 54-76 Results """"""" @@ -187,7 +187,7 @@ before the channel and a receiver block after it: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 78-101 + :lines: 77-100 ``OFDMTransmitter`` and ``OFDMReceiver`` are themselves chains: serial-to-parallel conversion, subcarrier allocation, IFFT and cyclic prefix @@ -218,7 +218,7 @@ range of SNR values: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 102-132 + :lines: 101-131 .. code:: @@ -265,7 +265,7 @@ block length grows: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 133-169 + :lines: 132-168 .. code:: diff --git a/docs/tutorials/optical_pdm.rst b/docs/tutorials/optical_pdm.rst new file mode 100644 index 0000000..5dff760 --- /dev/null +++ b/docs/tutorials/optical_pdm.rst @@ -0,0 +1,133 @@ +Polarization Demultiplexing: CMA and Blind Phase Search +======================================================= + +A coherent optical link transmits on the two polarizations of the fibre +at once. The fibre repays that by mixing them: its random birefringence +rotates the state of polarization by an unknown, wavelength-flat Jones +matrix, and polarization-mode dispersion (PMD) delays the two principal +states against each other, so each received polarization is a filtered +mix of both transmitted ones. On top of it, the transmit laser's phase +noise spins the whole constellation. None of these is known to the +receiver, and none is an obstacle: undoing all three blindly is the +standard coherent DSP chain, and this page builds it. + +**What you'll learn:** + +- How to emulate a fibre's polarization rotation and first-order PMD + with ``PMDEmulator``, and a laser's Wiener phase noise with + ``PhaseNoise``. +- How the blind 2x2 butterfly equalizer (CMA) separates the + polarizations without training. +- How blind phase search (BPS) tracks the laser phase, and which + ambiguities every blind receiver leaves behind. + +The problem +^^^^^^^^^^^ + +Two QPSK streams are shaped and sent through one laser, one fibre and +one amplifier. The phase walk is common to the two rows -- one laser -- +while the PMD emulator, a cascade of eight random unitary sections with +an RMS DGD of 10 ps (a third of the symbol at 32 GBd -- the section +delays add in quadrature, and the ensemble DGD is Maxwellian around +that value), mixes the rows into each other: + +.. literalinclude:: ../../examples/optical/one_shot_pdm.py + :language: python + :lines: 1-55 + +Sampling the received field naively at the symbol rate gives the left +panel of the figure below: a disc. The two polarizations sit on top of +each other with a relative delay, and the laser spins the sum -- there +is no constellation to see, and no error rate worth measuring. + +The method +^^^^^^^^^^ + +Two blind estimators, in the order a receiver runs them. + +The **constant modulus algorithm** (CMA) adapts a 2x2 butterfly of FIR +filters by gradient descent on the modulus error +:math:`\left(|y[n]|^2 - R^2\right)^2` (Savory, 2008). QPSK has constant +modulus, so any residual modulus variation is the channel's doing -- +the criterion needs no phase reference, which is what lets it converge +while the constellation still spins. + +**Blind phase search** (BPS, Pfau et al., 2009) then rotates each +output by a grid of test phases, decides each against the alphabet, and +retains per symbol the test phase of least windowed decision distance. +It is feedforward -- no loop to stabilize -- and estimates the phase +modulo :math:`\pi/2`, the symmetry of the constellation. + +The implementation and the measurement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../../examples/optical/one_shot_pdm.py + :language: python + :lines: 57-72 + +A blind receiver leaves exactly three things unresolved, and it is +worth seeing them listed rather than hidden: which output is which +polarization, a quadrant rotation per output, and the small group delay +of the equalizer. A deployed system resolves them with framing +(:doc:`../documentation/core/frames`); here the known data plays that +role, explicitly: + +.. literalinclude:: ../../examples/optical/one_shot_pdm.py + :language: python + :lines: 74-118 + +.. code:: + + output 0: polarization 0, rotated 270 deg, delayed -4 symbols + output 1: polarization 1, rotated 90 deg, delayed -4 symbols + SER after CMA + BPS: 0.00e+00 over 123072 symbols (0 errors) + +.. image:: img/one_shot_pdm_fig1.png + :width: 100% + :align: center + :alt: Received disc, ring after CMA, four QPSK clouds after BPS + +The figure is the whole argument, read left to right. The received +polarization is a disc -- two delayed streams plus a spinning phase. +After the CMA it is a ring: the modulus is restored, so the butterfly +has inverted the rotation and the DGD, but the criterion is blind to +phase and the laser still spins the ring. After the BPS the four clouds +sit on the reference crosses. + +Zero errors over 123 072 symbols does not measure an error rate -- at +this SNR the closed form predicts :math:`\sim 10^{-8}`, far below what +the run can resolve. What it measures is the claim this page makes: +the blind chain is **transparent**, from a disc to a decided +constellation, at the cost of 4 000 discarded convergence symbols and +three ambiguities resolved by framing. + +Conclusion +^^^^^^^^^^ + +You have learned how to: + +- Emulate polarization rotation, first-order PMD and laser phase noise + with three seeded blocks. +- Separate two polarizations blindly with the CMA butterfly, and read + its convergence cost. +- Track the carrier phase with BPS, and resolve the permutation, + quadrant and delay ambiguities a blind receiver always leaves. + +The natural next step is :doc:`optical_fiber_nonlinearity`, where the +fibre stops being unitary: attenuation, amplifier noise and the Kerr +effect set the limits this page's channel did not have. + +References +^^^^^^^^^^ + +S. J. Savory, "Digital filters for coherent optical receivers," +Optics Express, vol. 16, no. 2, pp. 804-817, 2008. + +T. Pfau, S. Hoffmann and R. Noe, "Hardware-Efficient Coherent Digital +Receiver Concept With Feedforward Carrier Recovery for M-QAM +Constellations," Journal of Lightwave Technology, vol. 27, no. 8, +pp. 989-999, 2009. + +C. D. Poole and R. E. Wagner, "Phenomenological approach to +polarisation dispersion in long single-mode fibres," Electronics +Letters, vol. 22, no. 19, pp. 1029-1030, 1986. diff --git a/examples/ofdm/one_shot_ofdm.py b/examples/ofdm/one_shot_ofdm.py index 8ee4c4c..4dee772 100644 --- a/examples/ofdm/one_shot_ofdm.py +++ b/examples/ofdm/one_shot_ofdm.py @@ -33,8 +33,7 @@ # realization of it. The channel says what it is rather than being # described from outside. channel = TappedDelayLineChannel(get_delay_profile("EPA"), fs=fs, seed=8) -for key, value in channel.info().items(): - print(f"{key}: {value}") +print(channel) # Sounding the model with an impulse gives the realization as a tap # vector -- which is what both receivers below are given. diff --git a/examples/optical/one_shot_pdm.py b/examples/optical/one_shot_pdm.py new file mode 100644 index 0000000..50901d0 --- /dev/null +++ b/examples/optical/one_shot_pdm.py @@ -0,0 +1,118 @@ +"""Polarization demultiplexing of a PDM-QPSK link: CMA, then BPS. + +Run from this directory: it writes the tutorial's figures into +../../docs/tutorials/img/. +""" +import matplotlib.pyplot as plt +import numpy as np + +from comnumpy import style +from comnumpy.core import Sequential +from comnumpy.core.channels import AWGN +from comnumpy.core.compensators import BlindPhaseSearchCompensator +from comnumpy.core.filters import SRRCFilter +from comnumpy.core.generators import SymbolGenerator +from comnumpy.core.mappers import SymbolMapper +from comnumpy.core.metrics import compute_ser +from comnumpy.core.processors import Upsampler +from comnumpy.core.utils import Constellation, hard_projector +from comnumpy.core.visualizers import plot_iq +from comnumpy.mimo.compensators import BlindDualMIMOCompensator +from comnumpy.optical.channels import PhaseNoise, PMDEmulator + +style.use() + +img_dir = "../../docs/tutorials/img/" + +# parameters +constellation = Constellation("PSK", 4) +N = 2 ** 16 # symbols per polarization +oversampling = 2 +rolloff = 0.1 +R_s = 32e9 # baud rate +fs = R_s * oversampling +linewidth = 100e3 # laser linewidth, Hz +dgd = 10e-12 # total mean DGD, s -- a third of the symbol +snr_dB = 15 +n_discard = 4000 # symbols spent converging the equalizer + +# The channel: two polarizations shaped and sent through one laser's +# phase noise, the fibre's random rotation and first-order PMD, and the +# amplifier noise. The phase walk is common to the two rows -- one +# laser -- while the PMD mixes them into each other. +chain = Sequential([ + SymbolGenerator(constellation.order, name="data_tx"), + SymbolMapper(constellation, name="signal_tx"), + Upsampler(oversampling, scale=np.sqrt(oversampling)), + SRRCFilter(rolloff, oversampling, method="fft"), + PhaseNoise(2 * np.pi * linewidth / fs, name="laser"), + PMDEmulator(dgd, n_sections=8, fs=fs, seed=11, name="fibre"), + AWGN(snr_dB=snr_dB, name="noise"), + ], taps=["data_tx", "signal_tx", "noise"]) +chain.seed(0) +received = chain((2, N)) +sent = chain.tap("signal_tx") +reference = chain.tap("data_tx") + +# What the receiver faces, sampled naively at the symbol rate: the two +# polarizations are mixed by an unknown rotation, delayed against each +# other, and the constellation spins with the laser. +naive = received[:, ::oversampling] + +# The 2x2 butterfly equalizer, blind (CMA): it inverts the rotation and +# the DGD without knowing either, from the constant modulus of QPSK +# alone. The first symbols are its convergence and are discarded. +cma = BlindDualMIMOCompensator(L=9, alphabet=constellation, mu=1e-3, + oversampling=oversampling, name="cma") +equalized = cma(received)[:, n_discard:] + +# Feedforward carrier recovery (blind phase search): each polarization +# gets its own phase trajectory, estimated modulo pi/2. +bps = BlindPhaseSearchCompensator(constellation, name="bps") +recovered = bps(equalized) + +# --- results: the ambiguities, then the error rate --------------------- +# A blind receiver leaves three things unresolved: which output is +# which polarization, a quadrant rotation per output, and the small +# group delay of the equalizer. A system resolves them with framing; +# here the known data plays that role, explicitly, over a short probe. +probe = 2000 +detected_rows = [] +truth_rows = [] +for row in range(2): + best = None + for source in range(2): + for quadrant in range(4): + for lag in range(-8, 9): + start = n_discard + lag + if start < 0: + continue + candidate = recovered[row, :probe] * (1j) ** quadrant + target = sent[source, start:start + probe] + error = float(np.mean(np.abs(candidate - target) ** 2)) + if best is None or error < best[0]: + best = (error, source, quadrant, lag) + assert best is not None + _, source, quadrant, lag = best + print(f"output {row}: polarization {source}, rotated " + f"{90 * quadrant} deg, delayed {lag} symbols") + aligned = recovered[row] * (1j) ** quadrant + decisions, _ = hard_projector(aligned, constellation) + detected_rows.append(decisions) + length = decisions.shape[-1] + truth_rows.append(reference[source, n_discard + lag: + n_discard + lag + length]) + +detected = np.stack(detected_rows) +truth = np.stack(truth_rows) +ser = compute_ser(truth, detected) +print(f"SER after CMA + BPS: {ser:.2e} over {truth.size} symbols " + f"({int(round(float(ser) * truth.size))} errors)") + +fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12, 4)) +plot_iq(naive[0, n_discard:], title="received, polarization X", ax=axes[0]) +plot_iq(equalized[0], title="after CMA", ax=axes[1]) +plot_iq(recovered[0], reference=constellation, + title="after BPS", ax=axes[2]) +plt.tight_layout() +plt.savefig(f"{img_dir}/one_shot_pdm_fig1.png") diff --git a/examples/simple/monte_carlo_awgn.py b/examples/simple/monte_carlo_awgn.py index 5660ff2..13445c2 100644 --- a/examples/simple/monte_carlo_awgn.py +++ b/examples/simple/monte_carlo_awgn.py @@ -102,12 +102,10 @@ def qfunc(x): # it needs k, which is chain-level knowledge the channel does not have. ebn0_dB_list = np.arange(0, 25, 2) N_compare = 100000 -fine_dB_list = np.arange(0, 25, 0.05) orders = np.array([4, 16, 64, 256]) bits_per_symbol = np.log2(orders).astype(int) # vectorized, not a loop measured_ber = {} theory_ber = {} -required_dB = np.zeros(len(orders)) for index, order in enumerate(orders): other = Constellation("QAM", int(order)) bits = int(bits_per_symbol[index]) @@ -119,19 +117,6 @@ def qfunc(x): order_label = f"{order}-QAM" measured_ber[order_label] = collected["ber"] theory_ber[order_label] = other.metrics(ebn0_dB_list, per="bit")["ber"] - # What the density costs, read off the closed form rather than the - # measurement: the sweep grid is 2 dB coarse and noisy at 1e-3. - fine_ber = other.metrics(fine_dB_list, per="bit")["ber"] - above_underflow = fine_ber > 0 # the tail reaches 0 in float64 - required_dB[index] = np.interp( - -3.0, np.log10(fine_ber[above_underflow])[::-1], - fine_dB_list[above_underflow][::-1]) - -print() -print_data({"x": orders, - "curves": {"bits per symbol": bits_per_symbol, - "Eb/N0 at BER=1e-3 [dB]": required_dB}}, - xlabel="QAM order") ax = plot_error_rate(ebn0_dB_list, measured_ber, theory=theory_ber, xlabel="$E_b/N_0$ [dB]", ylabel="BER", diff --git a/examples/simple/one_shot_awgn.py b/examples/simple/one_shot_awgn.py index 1a1352c..99d5e67 100644 --- a/examples/simple/one_shot_awgn.py +++ b/examples/simple/one_shot_awgn.py @@ -82,9 +82,10 @@ print(f"chain : SER = {ser:.4f}, theory = {ser_theo:.4f}") # --- 3. what the object knows about itself ---------------------------- -print("\nconstellation.info()") -for key, value in constellation.info().items(): - print(f" {key:16s} {value}") +# print(constellation) renders info() -- any object with an info() +# method prints itself this way +print() +print(constellation) # --- 4. the figures --------------------------------------------------- fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(9, 4.2)) diff --git a/src/comnumpy/core/compensators.py b/src/comnumpy/core/compensators.py index d7e7692..89ec62b 100644 --- a/src/comnumpy/core/compensators.py +++ b/src/comnumpy/core/compensators.py @@ -1,7 +1,7 @@ import numpy as np import numpy.linalg as LA from dataclasses import dataclass, field -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import Any, Literal, Optional, TYPE_CHECKING, Union from scipy import signal from scipy.linalg import toeplitz from scipy.optimize import least_squares @@ -16,7 +16,8 @@ __all__ = [ "DataAidedMixin", "DCCorrector", "Normalizer", "BlindIQCompensator", - "BlindCFOCompensator", "BlindPhaseCompensation", "LinearEqualizer", + "BlindCFOCompensator", "BlindPhaseCompensation", + "BlindPhaseSearchCompensator", "LinearEqualizer", "DataAidedFIRCompensator", "DataAidedPhaseCompensator", "DataAidedComplexGainCompensator", "DataAidedSimpleSynchronizer", "DataAidedFineSynchronizer", @@ -1670,3 +1671,100 @@ def forward(self, x: np.ndarray) -> np.ndarray: y = y[:self.signal_len] return y + + +@dataclass(slots=True) +class BlindPhaseSearchCompensator(Processor): + r"""Feedforward carrier phase recovery by blind phase search (BPS). + + Signal Model + ------------ + The input carries a slowly varying phase :math:`\phi[n]` -- laser + phase noise, typically -- on top of the constellation: + + .. math:: + + x[n] = s[n] \, e^{j \phi[n]} + b[n] + + For each of :math:`B` test phases + :math:`\varphi_i = i \, \frac{\pi/2}{B}`, the input is rotated, + decided against the alphabet, and the squared decision distance is + averaged over a sliding window of :math:`2W + 1` symbols. The + estimate at each symbol is the test phase of smallest averaged + distance, then unwrapped modulo :math:`\pi/2` so the estimate can + follow the walk beyond one quadrant. + + The :math:`\pi/2` search range is the symmetry of a square QAM (and + of QPSK): the recovered constellation is aligned up to a quadrant. + That residual **quadrant ambiguity is not resolved here** -- it is + the same ambiguity every blind phase estimator leaves, and a system + resolves it with differential encoding or a known field. The + estimated phase trajectory is exposed as ``phase_`` (D23). + + Axes: *axis -1* -- the window slides along the last axis; leading + axes (the two rows of a polarization pair) are processed + independently, each with its own trajectory. + + Parameters + ---------- + alphabet : np.ndarray or Constellation + The constellation the decision is made against. + n_test : int, optional, keyword-only + Number of test phases :math:`B` over :math:`[0, \pi/2)`. + Default is 32. + half_window : int, optional, keyword-only + Half-width :math:`W` of the averaging window. Default is 16. + The window trades noise rejection against tracking speed: it + must be short against the phase drift and long against the + additive noise. + name : str, optional, keyword-only + Block name. Default ``"bps"``. + + References + ---------- + T. Pfau, S. Hoffmann, R. Noe, "Hardware-Efficient Coherent Digital + Receiver Concept With Feedforward Carrier Recovery for M-QAM + Constellations," Journal of Lightwave Technology, vol. 27, no. 8, + pp. 989-999, 2009. + + Examples + -------- + >>> from comnumpy.core.utils import get_alphabet + >>> alphabet = get_alphabet("PSK", 4) + >>> s = alphabet[np.arange(64) % 4] + >>> rotated = s * np.exp(1j * 0.3) + >>> y = BlindPhaseSearchCompensator(alphabet, half_window=8)(rotated) + >>> bool(np.max(np.abs(y - s)) < np.pi / 2 / 32) # within one grid step + True + """ + alphabet: Any + n_test: int = field(default=32, kw_only=True) + half_window: int = field(default=16, kw_only=True) + name: str = field(default="bps", kw_only=True) + phase_: Optional[np.ndarray] = field(init=False, repr=False, default=None) + + def _track(self, x: np.ndarray) -> np.ndarray: + """The unwrapped phase trajectory of one 1D signal.""" + points = np.ravel(np.asarray(self.alphabet, dtype=complex)) + candidates = (np.pi / 2) * np.arange(self.n_test) / self.n_test + window = np.ones(2 * self.half_window + 1) + cost = np.empty((self.n_test, x.shape[-1])) + for index, phi in enumerate(candidates): + rotated = x * np.exp(-1j * phi) + distance = np.min( + np.abs(rotated[:, None] - points[None, :]) ** 2, axis=-1) + cost[index] = np.convolve(distance, window, mode="same") + raw = candidates[np.argmin(cost, axis=0)] + # unwrap modulo pi/2: a jump larger than pi/4 between neighbours + # is the estimate crossing the edge of the search range + steps = np.diff(raw) + steps -= (np.pi / 2) * np.round(steps / (np.pi / 2)) + return raw[0] + np.concatenate(([0.0], np.cumsum(steps))) + + def forward(self, x: np.ndarray) -> np.ndarray: + flat = np.reshape(x, (-1, x.shape[-1])) + trajectories = np.empty(flat.shape) + for row in range(flat.shape[0]): + trajectories[row] = self._track(flat[row]) + self.phase_ = np.reshape(trajectories, x.shape) + return x * np.exp(-1j * self.phase_) diff --git a/src/comnumpy/core/generics.py b/src/comnumpy/core/generics.py index bcd08e1..a6728c6 100644 --- a/src/comnumpy/core/generics.py +++ b/src/comnumpy/core/generics.py @@ -12,6 +12,27 @@ logger = logging.getLogger(__name__) +def render_info(obj: object) -> Optional[str]: + """The ``info()`` of *obj* as ``key: value`` lines, or None. + + Shared by the ``__str__`` of :class:`Processor` and of + ``Constellation``: ``print(obj)`` shows what the object *is* when it + can say so, and falls back to ``repr`` when it cannot. + """ + info = getattr(obj, "info", None) + if not callable(info): + return None + rendered = info() + if isinstance(rendered, str): + return rendered + if not isinstance(rendered, dict): + return None + lines = [] + for key, value in rendered.items(): + lines.append(f"{key}: {value}") + return "\n".join(lines) + + @dataclass(slots=True) class Processor(): r""" @@ -66,6 +87,22 @@ def prepare(self, X: np.ndarray, /) -> None: """ pass + def __str__(self) -> str: + """``print(processor)`` shows its ``info()`` when it has one. + + A block that defines ``info()`` prints one ``key: value`` line + per entry; a block that does not falls back to its ``repr``. + + Examples + -------- + >>> from comnumpy.core.channels import FIRChannel + >>> print(FIRChannel(np.array([1.0, 0.0, 0.5]))) + kind: FIR + n_taps: 3 + ... + """ + return render_info(self) or repr(self) + def __call__(self, X: np.ndarray) -> np.ndarray: """ Process the input data by calling the forward method. diff --git a/src/comnumpy/core/utils.py b/src/comnumpy/core/utils.py index 84b539d..5fe9a3f 100644 --- a/src/comnumpy/core/utils.py +++ b/src/comnumpy/core/utils.py @@ -327,6 +327,19 @@ def __array__(self, dtype: Optional[npt.DTypeLike] = None, def __len__(self) -> int: return self.order + def __str__(self) -> str: + """``print(constellation)`` renders :meth:`info`, one line per key. + + Examples + -------- + >>> print(Constellation("PSK", 4)) + family: PSK + order: 4 + ... + """ + from comnumpy.core.generics import render_info + return render_info(self) or repr(self) + def info(self) -> dict[str, Any]: """What the constellation is, as a dictionary ready to print. diff --git a/src/comnumpy/optical/channels.py b/src/comnumpy/optical/channels.py index 8360b9e..abaa86f 100644 --- a/src/comnumpy/optical/channels.py +++ b/src/comnumpy/optical/channels.py @@ -5,7 +5,8 @@ from .utils import apply_chromatic_dispersion, apply_kerr_nonlinearity, compute_beta2 from .constants import CD_COEFFICIENT, SPEED_OF_LIGHT, WAVELENGTH, KERR_COEFFICIENT -__all__ = ["PhaseNoise", "ChromaticDispersion", "KerrNonLinearity"] +__all__ = ["PhaseNoise", "ChromaticDispersion", "KerrNonLinearity", + "PMDEmulator"] @dataclass(slots=True) @@ -24,8 +25,10 @@ class PhaseNoise(Processor): increments :math:`\delta\phi_k` (a Wiener process accumulated along the samples). The magnitude :math:`|y[n]| = |x[n]|` is preserved. - Axes: *axis -1* -- expects a 1D signal (N,); the phase random walk - accumulates along the samples. + Axes: *axis -1* -- the phase random walk accumulates along the + samples. Leading axes share the **same** walk: the phase comes from + one laser, so the two rows of a polarization pair ``(2, N)`` see the + same :math:`\phi[n]`. Parameters ---------- @@ -64,7 +67,8 @@ def __post_init__(self) -> None: def noise_rvs(self, X: np.ndarray) -> np.ndarray: """Draw the Wiener phase increment for a signal of the length of X.""" assert self.rng is not None # set in __post_init__ - noise = self.rng.normal(loc=0, scale=np.sqrt(self.sigma2), size=len(X)) + noise = self.rng.normal(loc=0, scale=np.sqrt(self.sigma2), + size=np.shape(X)[-1]) self._b = np.cumsum(noise) return self._b @@ -238,3 +242,118 @@ def forward(self, x: np.ndarray) -> np.ndarray: return y + + +@dataclass(slots=True) +class PMDEmulator(Processor): + r"""Polarization rotation and first-order PMD, as a section emulator. + + Signal Model + ------------ + The fibre's random birefringence is emulated by :math:`K` sections, + each a random unitary Jones rotation followed by a differential + group delay (DGD) of :math:`\tau / \sqrt{K}` between the two + principal states, applied exactly in the frequency domain: + + .. math:: + + \mathbf{Y}(\omega) = \prod_{k=1}^{K} + \mathbf{D}_k(\omega) \, \mathbf{R}_k \; \mathbf{X}(\omega), + \qquad + \mathbf{D}_k(\omega) = \mathrm{diag}\!\left( + e^{+j \omega \tau / 2\sqrt{K}}, \; + e^{-j \omega \tau / 2\sqrt{K}} \right) + + Each :math:`\mathbf{R}_k` is drawn Haar-uniform from the seeded + local generator, so the emulator is unitary -- it conserves energy + exactly -- and reproducible. With ``n_sections=1`` and ``dgd=0`` it + reduces to one random rotation of the state of polarization, which + is the part every polarization demultiplexer must undo even before + PMD enters. + + Randomly oriented sections add their DGDs in quadrature, hence the + :math:`1/\sqrt{K}` per section: the declared ``dgd`` is the **RMS** + DGD of the ensemble. Over section draws the DGD is Maxwellian, with + mean :math:`\sqrt{8/3\pi}\,\tau \approx 0.921\,\tau` (Poole & + Wagner). With ``n_sections=1`` the DGD is deterministic and equals + :math:`\tau` exactly. The concatenation of sections also makes the + DGD frequency-dependent, which is what distinguishes PMD from a + wavelength-flat rotation. + + Axes: *polarization pair* -- expects ``(..., 2, N)``; the Jones + matrices act on the polarization axis, the delays on the last one. + + Parameters + ---------- + dgd : float + RMS differential group delay :math:`\tau` in seconds. + n_sections : int, optional, keyword-only + Number of concatenated sections :math:`K`. Default is 8. + fs : float, optional, keyword-only + Sampling frequency in Hz. Default is 1.0. + seed : int, optional, keyword-only + Local RNG seed for the section rotations. Same seed, same fibre. + name : str, optional, keyword-only + Block name. Default ``"pmd"``. + + Raises + ------ + ShapeError + If the input does not carry a polarization pair ``(..., 2, N)``. + + References + ---------- + C. D. Poole and R. E. Wagner, "Phenomenological approach to + polarisation dispersion in long single-mode fibres," Electronics + Letters, vol. 22, no. 19, pp. 1029-1030, 1986. + S. J. Savory, "Digital filters for coherent optical receivers," + Optics Express, vol. 16, no. 2, pp. 804-817, 2008. + + Examples + -------- + >>> x = np.zeros((2, 8), dtype=complex); x[0] = 1.0 + >>> y = PMDEmulator(0.0, n_sections=1, seed=1)(x) + >>> bool(np.abs(np.sum(np.abs(y) ** 2) - 8.0) < 1e-9) # unitary + True + >>> bool(np.abs(y[1, 0]) > 0) # the rotation mixes the two rows + True + """ + dgd: float + n_sections: int = field(default=8, kw_only=True) + fs: float = field(default=1.0, kw_only=True) + seed: Optional[int] = field(default=None, kw_only=True) + name: str = field(default="pmd", kw_only=True) + rotations_: Optional[np.ndarray] = field(init=False, repr=False, + default=None) + + def __post_init__(self) -> None: + rng = np.random.default_rng(self.seed) + sections = [] + for _ in range(self.n_sections): + # Haar-uniform 2x2 unitary: QR of a complex Gaussian matrix, + # with the phase convention fixed by the R diagonal + gaussian = (rng.standard_normal((2, 2)) + + 1j * rng.standard_normal((2, 2))) + q, r = np.linalg.qr(gaussian) + sections.append(q * (np.diag(r) / np.abs(np.diag(r)))) + self.rotations_ = np.stack(sections) + + def prepare(self, x: np.ndarray) -> None: + from comnumpy.exceptions import ShapeError # local import (D36) + from .utils import is_polarization_pair # local import (D36) + if not is_polarization_pair(x, "PMDEmulator"): + raise ShapeError( + f"PMDEmulator expects a polarization pair (..., 2, N), " + f"got shape {x.shape} -- PMD is a two-polarization " + f"effect, there is nothing to delay against on one.") + + def forward(self, x: np.ndarray) -> np.ndarray: + assert self.rotations_ is not None # set in __post_init__ + omega = 2 * np.pi * self.fs * np.fft.fftfreq(x.shape[-1]) + delay = np.exp(1j * omega * self.dgd + / (2 * np.sqrt(self.n_sections))) + spectrum = np.fft.fft(x, axis=-1) + for rotation in self.rotations_: + spectrum = np.einsum("ij,...jn->...in", rotation, spectrum) + spectrum = spectrum * np.stack([delay, np.conj(delay)]) + return np.fft.ifft(spectrum, axis=-1) diff --git a/tests/core/test_gray_labelling.py b/tests/core/test_gray_labelling.py new file mode 100644 index 0000000..41a7b75 --- /dev/null +++ b/tests/core/test_gray_labelling.py @@ -0,0 +1,110 @@ +"""The Gray promise, locked end to end. + +`compute_ber` expands symbol indices with `sym_2_bin` (natural binary), +and its docstring admits the count is only meaningful if the +constellation is labelled the same way. Nothing verified that promise: +the tutorials' BER curves matched theory in the tail, which is evidence +but not a lock. These tests are the lock. + +Two deterministic properties close the question without Monte-Carlo: +geometric neighbours must differ by exactly one bit of their *index* +(so index == label), and a nearest-neighbour symbol error must count +exactly one bit error through `compute_ber`. +""" +import unittest + +import numpy as np + +from comnumpy.core.metrics import compute_ber +from comnumpy.core.utils import Constellation, get_alphabet + + +def hamming(a, b): + return bin(int(a) ^ int(b)).count("1") + + +class TestGrayAdjacency(unittest.TestCase): + """Nearest neighbours of a Gray alphabet differ by one index bit.""" + + def nearest_pairs(self, alphabet): + """Every (i, j) pair at the minimum geometric distance.""" + points = np.asarray(alphabet) + distance = np.abs(points[:, None] - points[None, :]) + np.fill_diagonal(distance, np.inf) + minimum = distance.min() + pairs = np.argwhere(np.isclose(distance, minimum)) + return [(int(i), int(j)) for i, j in pairs] + + def test_square_qam_neighbours_differ_by_one_bit(self): + for order in (4, 16, 64, 256): + with self.subTest(order=order): + alphabet = get_alphabet("QAM", order) + for i, j in self.nearest_pairs(alphabet): + self.assertEqual( + hamming(i, j), 1, + f"QAM{order}: indices {i} and {j} are geometric " + f"neighbours but differ by {hamming(i, j)} bits -- " + f"compute_ber would overcount every symbol error") + + def test_psk_ring_neighbours_differ_by_one_bit(self): + for order in (4, 8, 16): + with self.subTest(order=order): + alphabet = get_alphabet("PSK", order) + for i, j in self.nearest_pairs(alphabet): + self.assertEqual(hamming(i, j), 1) + + def test_natural_binary_mapping_is_not_gray(self): + """The property is the labelling, not an accident of geometry.""" + alphabet = get_alphabet("QAM", 16, type="bin") + distances = [] + for i, j in self.nearest_pairs(alphabet): + distances.append(hamming(i, j)) + self.assertGreater(max(distances), 1) + + +class TestComputeBerCountsGrayBits(unittest.TestCase): + + def test_a_nearest_neighbour_error_costs_exactly_one_bit(self): + """The bridge between the labelling and the metric.""" + constellation = Constellation("QAM", 16) + alphabet = np.asarray(constellation.alphabet) + distance = np.abs(alphabet[:, None] - alphabet[None, :]) + np.fill_diagonal(distance, np.inf) + reference = np.arange(16) + detected = distance.argmin(axis=1) # each symbol -> a neighbour + ber = compute_ber(reference, detected, width=4) + self.assertAlmostEqual(float(ber), 1.0 / 4.0) + + def test_tail_ber_matches_the_gray_closed_form(self): + """One seeded run: measured BER within 20 % of Ps/k in the tail. + + At Eb/N0 = 11 dB a 16-QAM symbol error is almost surely a + nearest-neighbour event, so BER = SER/4 holds tightly; a + labelling mismatch would multiply the measured BER by ~2 and + fail this comfortably. Seeded, hence deterministic. + """ + from comnumpy.core import Sequential + from comnumpy.core.channels import AWGN + from comnumpy.core.generators import SymbolGenerator + from comnumpy.core.mappers import SymbolDemapper, SymbolMapper + from comnumpy.core.utils import ebn0_to_snr_dB + + constellation = Constellation("QAM", 16) + chain = Sequential([ + SymbolGenerator(16, name="tx"), + SymbolMapper(constellation), + AWGN(snr_dB=float(ebn0_to_snr_dB(11.0, bits_per_symbol=4))), + SymbolDemapper(constellation), + ], taps=["tx"]) + chain.seed(3) + detected = chain(400000) + measured = float(compute_ber(chain.tap("tx"), detected, width=4)) + theory = float(constellation.metrics(11.0, per="bit")["ber"]) + self.assertGreater(measured, 0.0, "no errors: raise N or the SNR") + self.assertLess(abs(measured - theory) / theory, 0.20, + f"measured {measured:.3e} vs Gray closed form " + f"{theory:.3e} -- a labelling mismatch doubles this") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/optical/test_pmd_bps.py b/tests/optical/test_pmd_bps.py new file mode 100644 index 0000000..cf8d77c --- /dev/null +++ b/tests/optical/test_pmd_bps.py @@ -0,0 +1,161 @@ +"""The two blocks the PDM page stands on: the emulator and the tracker. + +`PMDEmulator` claims to be unitary, seeded and frequency-selective; +`BlindPhaseSearchCompensator` claims to follow a Wiener phase within +its grid and its window. Each claim is a test, because the tutorial +built on them quotes their numbers as physics. +""" +import unittest + +import numpy as np + +from comnumpy.core.compensators import BlindPhaseSearchCompensator +from comnumpy.core.utils import get_alphabet +from comnumpy.exceptions import ShapeError +from comnumpy.optical.channels import PMDEmulator + + +class TestPMDEmulator(unittest.TestCase): + + def field_pair(self, n=256, seed=0): + rng = np.random.default_rng(seed) + return (rng.standard_normal((2, n)) + + 1j * rng.standard_normal((2, n))) + + def test_energy_is_conserved(self): + """The emulator is a product of unitaries: lossless, exactly.""" + x = self.field_pair() + y = PMDEmulator(5e-12, n_sections=8, fs=64e9, seed=1)(x) + self.assertAlmostEqual(float(np.sum(np.abs(y) ** 2)), + float(np.sum(np.abs(x) ** 2)), places=8) + + def test_same_seed_same_fibre(self): + x = self.field_pair() + first = PMDEmulator(5e-12, fs=64e9, seed=3)(x) + second = PMDEmulator(5e-12, fs=64e9, seed=3)(x) + np.testing.assert_allclose(first, second) + third = PMDEmulator(5e-12, fs=64e9, seed=4)(x) + self.assertFalse(np.allclose(first, third)) + + def test_a_rotation_mixes_the_polarizations(self): + x = np.zeros((2, 64), dtype=complex) + x[0] = 1.0 + y = PMDEmulator(0.0, n_sections=1, seed=1)(x) + self.assertGreater(float(np.mean(np.abs(y[1]) ** 2)), 1e-3) + + def test_zero_dgd_is_frequency_flat(self): + """Without DGD the emulator is one wavelength-flat Jones matrix: + applying it twice with the same seed equals composing the + matrices, and every frequency sees the same rotation -- a pure + tone in must be a pure tone out.""" + n = 128 + tone = np.exp(2j * np.pi * 13 * np.arange(n) / n) + x = np.stack([tone, np.zeros(n, dtype=complex)]) + y = PMDEmulator(0.0, n_sections=4, seed=2)(x) + spectrum = np.abs(np.fft.fft(y, axis=-1)) + occupied = np.sum(spectrum > 1e-6 * spectrum.max(), axis=-1) + self.assertTrue(np.all(occupied <= 1)) + + def test_dgd_delays_the_principal_states_against_each_other(self): + """One section, aligned input: the group delay difference between + the two rows is the declared tau.""" + fs, tau = 64e9, 20e-12 + n = 4096 + rng = np.random.default_rng(5) + pulse = rng.standard_normal(n) + 1j * rng.standard_normal(n) + emulator = PMDEmulator(tau, n_sections=1, fs=fs, seed=7) + assert emulator.rotations_ is not None + rotation = emulator.rotations_[0] + # drive the two principal states one at a time, through the + # inverse rotation, so each row sees a pure delay of +-tau/2 + for row, sign in ((0, +1), (1, -1)): + x = np.zeros((2, n), dtype=complex) + x[row] = pulse + y = emulator(np.einsum("ij,jn->in", rotation.conj().T, x)) + cross = np.fft.ifft(np.fft.fft(y[row]) * + np.conj(np.fft.fft(pulse))) + lag = int(np.argmax(np.abs(cross))) + lag = lag - n if lag > n // 2 else lag + # multiplying the spectrum by exp(+j w tau/2) advances the + # signal (fft convention e^{-jwn}), hence the minus sign + self.assertEqual(lag, -round(sign * tau / 2 * fs)) + + def test_rms_dgd_matches_the_declared_value(self): + """The theory the emulator must obey: section DGDs add in + quadrature, and the ensemble DGD is Maxwellian with RMS equal + to the declared tau (Poole & Wagner). Measured at one frequency + over many section draws, from the eigenvalues of the + group-delay operator j dT/dw T^H.""" + fs, tau, n = 64e9, 10e-12, 512 + dgds = [] + for seed in range(300): + emulator = PMDEmulator(tau, n_sections=8, fs=fs, seed=seed) + responses = [] + for k in (1, 2): # T at two neighbouring frequencies + tone = np.exp(2j * np.pi * k * np.arange(n) / n) + columns = [] + for row in range(2): + x = np.zeros((2, n), dtype=complex) + x[row] = tone + y = emulator(x) + columns.append(np.fft.fft(y, axis=-1)[:, k] / n) + responses.append(np.stack(columns, axis=1)) + delta_omega = 2 * np.pi * fs / n + u = responses[1] @ responses[0].conj().T + phases = np.angle(np.linalg.eigvals(u)) + dgds.append(abs(phases[0] - phases[1]) / delta_omega) + rms = float(np.sqrt(np.mean(np.square(dgds)))) + self.assertLess(abs(rms - tau) / tau, 0.10) + mean = float(np.mean(dgds)) + self.assertLess(abs(mean - np.sqrt(8 / (3 * np.pi)) * tau) / tau, + 0.10) + + def test_one_polarization_is_refused(self): + with self.assertRaises(ShapeError): + PMDEmulator(1e-12, fs=64e9)(np.ones(64, dtype=complex)) + + +class TestBlindPhaseSearch(unittest.TestCase): + + def qpsk_frame(self, n=4096, seed=0): + alphabet = get_alphabet("PSK", 4) + rng = np.random.default_rng(seed) + return alphabet, alphabet[rng.integers(0, 4, n)] + + def test_tracks_a_wiener_walk_within_the_grid(self): + alphabet, s = self.qpsk_frame() + rng = np.random.default_rng(1) + walk = np.cumsum(rng.normal(0.0, np.sqrt(1e-4), s.size)) + compensator = BlindPhaseSearchCompensator(alphabet) + y = compensator(s * np.exp(1j * walk)) + assert compensator.phase_ is not None + interior = slice(32, -32) # the window edges are biased + self.assertLess( + float(np.max(np.abs(compensator.phase_ - walk)[interior])), + 2 * (np.pi / 2) / 32, + "the estimate left the walk by more than two grid steps") + self.assertLess(float(np.max(np.abs(y - s)[interior])), 0.2) + + def test_rows_of_a_pair_get_independent_trajectories(self): + alphabet, s = self.qpsk_frame(n=1024) + x = np.stack([s * np.exp(1j * 0.3), s * np.exp(-1j * 0.2)]) + compensator = BlindPhaseSearchCompensator(alphabet, half_window=8) + compensator(x) + assert compensator.phase_ is not None + # the estimate lives modulo pi/2 (quadrant symmetry): compare + # each trajectory to its truth in that quotient + for row, truth in ((0, 0.3), (1, -0.2)): + residual = np.median(compensator.phase_[row]) - truth + residual = (residual + np.pi / 4) % (np.pi / 2) - np.pi / 4 + self.assertAlmostEqual(float(residual), 0.0, delta=0.03) + + def test_the_quadrant_ambiguity_is_documented_not_resolved(self): + """A pi/2 offset is invisible to the search, by symmetry.""" + alphabet, s = self.qpsk_frame(n=1024) + y = BlindPhaseSearchCompensator(alphabet, + half_window=8)(s * 1j) + self.assertLess(float(np.max(np.abs(y - s * 1j))), 0.06) + + +if __name__ == "__main__": + unittest.main() From 17a5b3a653d3978afab4859ebd06c890d77503a9 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 21:30:46 +0000 Subject: [PATCH 2/5] Make batch axes a contract: broadcast, draw, or carry state per event Leading axes ahead of a block's event axes are batch axes -- independent trials run in one call -- and each of the three block families owes the batch something different. Deterministic blocks broadcast their one configuration: FIRChannel now reshapes its kernel so scipy convolves along the last axis, and LinearEqualizer applies its matrix as a column product; both crashed on a batch before. Stochastic blocks draw independently per event: PhaseNoise declares its event with per= -- "pair" by default, one laser per polarization pair and independent draws across trials -- and refuses the shape it cannot read one way, naming the resolutions. Adaptive blocks carry independent state per event: BlindDualMIMOCompensator on (..., 2, N) adapts one butterfly per pair and exposes H_ with the batch axes in front, so partial_fit resumes each pair from its own state. CONVENTIONS.md states the contract (D51) and tests/core/test_batch_axes.py locks one block of each family. Two silent traps died on the way. compute_ser and compute_ber used to ravel before truncating to the common length, so a batch whose rows carried a convolution tail compared misaligned rows -- SER 0.47 where the truth was 0.02; both now truncate along the last axis first, and the pooled rate is exactly the mean of the per-row rates. The OFDM tutorial's repeat-loop became one batched monte_carlo call over (n_trials, N), and its page re-pastes the run. Co-Authored-By: Claude Opus 5 --- .claude/skills/comnumpy-tutorial/SKILL.md | 8 +- CHANGELOG.md | 25 ++++ CONVENTIONS.md | 39 ++++++ docs/tutorials/img/one_shot_ofdm_fig4.png | Bin 56085 -> 57789 bytes docs/tutorials/img/one_shot_ofdm_fig5.png | Bin 52165 -> 52375 bytes docs/tutorials/ofdm.rst | 37 ++--- examples/ofdm/one_shot_ofdm.py | 25 ++-- src/comnumpy/core/channels.py | 9 +- src/comnumpy/core/compensators.py | 14 +- src/comnumpy/core/metrics.py | 29 ++-- src/comnumpy/mimo/compensators.py | 54 +++++++- src/comnumpy/optical/channels.py | 46 ++++++- tests/core/test_batch_axes.py | 161 ++++++++++++++++++++++ tests/mimo/test_blind_equalizer.py | 2 +- 14 files changed, 385 insertions(+), 64 deletions(-) create mode 100644 tests/core/test_batch_axes.py diff --git a/.claude/skills/comnumpy-tutorial/SKILL.md b/.claude/skills/comnumpy-tutorial/SKILL.md index 1d3c763..e9b6121 100644 --- a/.claude/skills/comnumpy-tutorial/SKILL.md +++ b/.claude/skills/comnumpy-tutorial/SKILL.md @@ -55,7 +55,13 @@ then learns the wrong lesson -- they came to see how the library is used. `compute_metric_rayleigh_theo` for the closed forms, `constellation_capacity` and `bicm_capacity` for the rates. - Monte-Carlo: `monte_carlo(chain, param, values, metrics, stimulus, seed=)` - when one chain and standard metrics cover the study. When the study + when one chain and standard metrics cover the study. Repeated trials + of **one** chain are not a Python loop: grow the stimulus a leading + batch axis -- `(n_trials, N)` -- and every block broadcasts over it, + stochastic blocks draw independently per trial, and the pooled metric + is exactly the mean of the per-trial rates (D51; the exception is a + channel whose realization is frozen at construction -- a new draw per + trial is a new instance, and that loop stays visible). When the study is *around* a chain -- several detectors on one frame, several receivers on one propagation -- write the loop out, on **one storage convention**: declare the methods and the metrics first; pre-allocate diff --git a/CHANGELOG.md b/CHANGELOG.md index 50245d8..08f9c56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,31 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Added — batch axes are a contract, not an accident (D51) + +Leading axes ahead of a block's event axes are batch axes: independent +trials, run in one call. The contract has three families, now stated in +CONVENTIONS.md and locked by `tests/core/test_batch_axes.py`: +deterministic blocks broadcast their one configuration (`FIRChannel` +reshapes its kernel so scipy convolves along the last axis; +`LinearEqualizer` applies its matrix as a column product -- both +previously crashed on a batch); stochastic blocks draw independently +per event (`PhaseNoise` declares its event with `per=`: `"pair"` -- +default, one laser per polarization pair, independent across trials -- +`"row"` or `"signal"`; the ambiguous shape is refused with the +resolutions named); adaptive blocks carry independent state per event +(`BlindDualMIMOCompensator` on `(..., 2, N)` adapts one butterfly per +pair and exposes `H_` with the batch axes in front). + +Two silent traps died on the way. `compute_ser`/`compute_ber` with +`axis=None` used to ravel *before* truncating to the common length, so +a batch whose rows carried a tail (an OFDM frame after a `full` +convolution) compared misaligned rows -- SER 0.47 where the truth was +0.02; both now truncate along the last axis first, and the pooled rate +is exactly the mean of the per-row rates. And the OFDM tutorial's +repeat-loop became one batched call: +`monte_carlo(chain, param, values, metrics, (n_trials, N), seed=…)`. + ### Added — `print(obj)` renders `info()` Any object that defines `info()` -- a channel, a constellation -- now diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 27a1da7..8bbebfc 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -51,6 +51,45 @@ Every block belongs to exactly one category, stated in its docstring The former `is_mimo` attribute — a shape-guessing mechanism — is removed; the declared category and `prepare()` validation replace it. +## Batch axes and event axes (D51) + +A block's category names its **event axes** — the trailing axes that +make up *one* realization of what the block models: nothing for an +element-wise block, `(N,)` for a filter, `(2, N)` for a polarization +pair, `(ant, N)` for a MIMO frame. Every axis to the left of the event +is a **batch axis**: independent trials, run in one call. The contract +has three families: + +1. **Deterministic** blocks broadcast their one configuration over the + batch — every trial goes through the same taps, the same equalizer + matrix (`FIRChannel`, `SRRCFilter`, `LinearEqualizer`, the OFDM + chains). Row `i` of a batched call equals the block applied to row + `i` alone. +2. **Stochastic** blocks draw **independently per event** — trials must + not share a realization. `AWGN` draws element-wise; `PhaseNoise` + declares its event with `per=`: `"pair"` (default — one laser per + `(2, N)` block, independent across the batch), `"row"`, or + `"signal"`. A shape the declaration cannot read one way is refused + with the resolutions named. + The exception is the block whose realization is **frozen at + construction** (`PMDEmulator`, `TappedDelayLineChannel`, + `FlatMIMOChannel`): one seeded draw *is* the configuration, so the + whole batch sees the same channel — ergodic noise over a fixed + channel. A new draw per trial is a new instance (or `set_params`), + and that loop stays visible. +3. **Adaptive** blocks carry **independent state per event** — one + equalizer per pair, never one state smeared across trials. + `BlindDualMIMOCompensator` on `(..., 2, N)` adapts one butterfly per + pair and exposes `H_` with the batch axes in front; + `BlindPhaseSearchCompensator` tracks one `phase_` trajectory per + row. + +The payoff is Monte-Carlo without a Python loop over trials: +`monte_carlo(chain, param, values, metrics, (n_trials, N), seed=…)` +pools each metric over `n_trials` independent frames per sweep point — +for equal-size trials, exactly the mean of the per-trial values. +`tests/core/test_batch_axes.py` locks one block of each family. + ## Observing signals: taps, not blocks A chain describes the communication system. Nothing else goes into diff --git a/docs/tutorials/img/one_shot_ofdm_fig4.png b/docs/tutorials/img/one_shot_ofdm_fig4.png index 0635ac77b19a6df03573487b861aff554b347d00..9cc15a151d325b1a3db8cb10cffac8b92b183e66 100644 GIT binary patch literal 57789 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%0DCZXA{0Y(% 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

Zdg~%-6UX8Z-F(;Omqi`xE)X#yJjrT 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 z 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 P_)q$#yu=4_-N*kAQ{{1c diff --git a/docs/tutorials/img/one_shot_ofdm_fig5.png b/docs/tutorials/img/one_shot_ofdm_fig5.png index 7d4449063c66d3c28876c5da211c44084d3a6e1a..6309ce4e8b3c8f551cecd58b3added55bf0d92c7 100644 GIT binary patch literal 52375 zcmcG$Wmr~gw>Es!AxKG=q5_fvB1ks|A|Tz3bax8Utr7}?f=GjaG>9}9AV_yeBVCg3 zn7a0}_p|pt-tYbMak!4PmfZ86*SxL~=QzhXX1J1~JRv>}J_>~*ymMPd1%<*;N1@Oa zak1fVJ`^QhgMSIR$ZEPgv^RHgH*zvV-8XV^u(5Zsu{6HuX6EEZ5J#lyqJ!*TJE zi;IJ^5I48&zdpfb?_|O4G=gye--73GTgw@Rq9jHBL9XEuS?(U(g zc8IgF{(R@=5}qZo)OuXpMOmx2tj5wD$*(Vv-`lHX!e7C^`5r_4?QIDPr38=G#6I=@zqIyR|>DpL(mO&UsB#o(VS)#q{UL ziZ3?{T2>bIh5*|)Yg8V28^OXGaITmJhnLj_jT3RChd@AQvvgV&pk(85> zvH$s4hMTdm?4M8dDgM8G*_BEcl#I+C2R}dgwQJWF$7==TV(2Urz29YJ8J(S;EDjXX zwnfugBzkLS@>z5lu20l2j+C>{%+98W+HrCIKIWj$n>TIhP^ak!LS z;<;^JHtq}`NB%E9HPxm9zTxC(e|9N5y=|o2TE}HfS9|NXmXMszr%5sA9I!t{+OBL}X4Z5-paUiOmy4U1OR){e-1n9X$Y;-{%yYisMxQTv8VEG#%_X=zkqK7v9niw-}M zKY#fWpO_d@P{7eQICzhe^~27D(XggeQCG0Ne;&S8X*1I!R%lou6W~Qc72b;63?CjDK z5-1_pl}IaKD8!|rzZ{z%V`}b(ql&vzf*XTp^*sok0M6l3cIh>y(!4Z zkc#^<7pTic$;QU!(r)0ptA-YE-J*-mXnX!!U~Fvc8Vw4wT9=DMzi!Bo8}?HMI0Y440*PH{2ie0Msxps?_YUbaTDe$#Yw zC}EoWQt#DELPFZ>sd!|}xS{9iNm01^`ug|xejTkh*l*M(A&;AXRLwtl zg=w^%nw=>_or>S;0%~f1(mzx^KUnp!K|>8r&bwKB(rwhXCVhW>lBirex~fXBsG3Z?m1Xaa#9D-+jV`RB?ZXNxvh`z@VU> zd=2g=!NG4zOG(>f=%vlgnbUl>?g-wxHQgi6*#8RLk`6IDobz-NgGGAwn!mn|j@HWh zzV5ejTzKU^lb!AtD8tkkcS-tt);&s9HMMEDp`i0Tfm}3AusE1W$Z%F~uSygRKmPFW zu!ED6l#h=HItB*f7U_P6c+}L?oHhQ|zf{rtoZfj%V-s|<1YA0ha5yO4&VlFRZYAfWn%8DY6VH7VCb^{AS3m|4>8-(_!gnD(=Jk#6n^j!Cy>d3m}vpNT79nMF6;FjizM zOnJttb74?5>g;$y919hgot+)`^r@5daMvqg*D?$H`rQFSvtQKN0%a~sDrf;yi;Ju_ zV^zwHX!-!is<`jAHS?80|QeHjJ*;#x4GwJ+IB6R};gEt>OsIKeF z$1?PvYz}DGd+)=7;s5HVJ-o^CH#QvL3%+nSP;nIJ=8{~%4@OCJeEUX@`R0<=#?}`2 zYr4-?c;j|k488T!mb_c{cc1Z)=2uR5-9ufBqT-Rt$SP1sGv@nJT3XbKse))YI5-6KLVZ*G zCMG6tlvsCS+<%RbqmP>)3Zp+e-YzWOSF#1D6CQC22&i4PSVu`z)-0 z7Jxy9x|L7275LuwM>pa+O^0gTxzW+lze7}sVi2V%Za5X%TN{tO^Ne|ExwWmW>D#w& zQ~b?MO#}>QE1w;#$`3<$qve8<^u6%d)e9ul)YP7BCMG3SR)pXG{P{Eb_l-0)6&01T z-7lX%qfijIu~3*;SdFc%t%ltfCRe zAR>xo*2r2NtLD2xiiaursoZ*Shcv$;>c_jE^YiE^Smo6E`ecUl$OyKEhDL#A2|5J3 zmO9Vv4ak_rQ=cAF3AwOBrVn+TZ5wylm6TR+yw6l>cO1>aWR>;){dE~RIVL_nGKiW% zNlBCt$0Hy&Frpm3a8`cm?8NilTSY^Sp9wIVwmp6R{H+dl4Ok8Wf$Hk(UHL9I9B-ZD z(yc;8%b9%e&QoPWL5kLiOf-*;h(JfxYf(wReA#2k?Y#fc&Fv=hgERt&^7bEpW5a=x z$m(+bCNSlF!F7#izKZAV<{|Hkg4Tr(*@S%NUnOj8IMj>vqsMFAFGHl0kD+UXRmH+) z*^GR+V}I>KPc=zps1!`qPvnJc+00ExU#jx1S3OCMSoxR6NE{SZB~*r%VGhl!V`j zh>Gqmn_5_`JWYCM{v;~PkwdS+j~*ib#>U2@z0|#mHx}J#9_#h{s2i(|750;2$dT2$ z{b~~39}9|#ilPv0d$bJx>iYDiL2y{usol?xcofYnbWJ{Es(78=YyNy=)T~)5(00E(T#HP(8mD^89e# zHtf%vo<|$w?vvC7+x;2_{GNWZ-lEa5Os9GeZEYWjmnX_)HumK{bX@Mcc6>B>*0!_s zBc;GPyt^3iW{vnp%JRy$6afqrBtUyjnu!ZE?N8x?L{1%Tml&SWDS&|xe`eYl{h!3f z5;-|LJI;Tl*7MXktgc4lkO`pgKJ4f_eUCA4-n*~sKY8+GQGW_2peIuv1EueO;))v> zFf=s8JjrPl+4dr1Ys)EB%=a*)6atRO@1M_DIXG^36crb92ZV^P>D=Q=GU-aag$nRL z-A)&DTTO2C+TGn1beIZQvtVIi8FTIyh2Nd57_eTuR{iGG9uDq@OrihTDT?Ow5f>NN z$2Y6p;%6;Suihg_8%*=FD$Gvv!beU6gGeNxHIj1jL(x?+armb3*}O?BNwk+!31BBl#|2G%gfu?XeOFeVxXlx2cA4WYuo16z$PL>hk<8&>8V0^t+}zx%s;X3w zvS-V>#hL+8;loo9(A>Dazt%TN$RI)mz@lPkVgGQYcou9!Mp5xRgu5U}14v0h$*tdV zxVxgPr3HlzE{Ep(*Lo*CDv=bNO)>PsacOBW01g$>M5uXqc)nYeBUli8CkA2~0ze;W z(8kc+3Orh?B?70HS5P2mYHFIAnF;)o#66o|{87r+SG30MR|Htxa+hUM`lu6xKt~F_ z)mLF15#L_&->bA-e#vjW^O<(v4E^Hja9R5lKg~YQOFoO3MyG_kS+#PqvaN(>;JE$2 zuI&z<-2#|&FOh=;(ATB$32p!VgW1@XSAS4?MN&cn9+X4xFDBgGEy9ohtVjwa%NzFz zs2^OsDNlC&^=jS7Veu0`#nb~Y;=;+4fy)%RuR)0vobG>G-RWB}GV-8sxZMgY8~bQ_ z{mlFKT+%3g(#0ERzsGHg3*nN7i#?g4jRzT-nZfXkE3bZ}IgX?@HAxxuzP)olCbM$V zuXfy4(CKH`cgPpa;z>|N;Zbtwey{ERc354A;G9+jm*2d5`}X(3shfVs9`##rWHb;S zgZ=_x0{zR(%-CQItsB$Lgo*dERKC6vrVKdE^Az>kk$~dt zh#4#8sxE$ig8`^C3~(`(uBPF^#AmZUx^9gN9u!Jp(b288mE$2ZGsdve!70(vkq3|x+5ijiJo^6HJT{hwKTr0a^_gq1 z;6p#Z`>p41)Q!3zAr36^_MJPD0C{|Te6HIJT_5vWDU7>)#cSb%Me5D=?rtI|0WK@P z5(-B05jQsxa<{0cmM3^*1YE5XBR2t-PaXf>7W6&50eL(JiFzwm$IC?Yk8N#a>qFW@65 zQB+ivcpef&PJfjL);~nZrn1EUkd!A_3Jw0CprS&3-&>Mn;)(Ax zg~FV!8#7?Gk@SDPuBny%|6hiwlan6x=fH-Gy~-)FixM&m)CsvQZXIHJH!0isZj1lJ zN_DK_v#-22J~Jy2N{tST5E|c3*YH^ zISOS@iG%4aG_CDPkI%NeF;Yx@Tk%_C(Xitp$)eHpBb~Ox`Ju2=^VOjeq%N~LO-ppy z`gvz(eUcH0K3US2z=qg0G_|tt<<%V4PJfZdeq-n;(j_8}j}6Q_Q5tRTl@5L1OpMJIY^H|?z~!2OMCvsf z`hbRkJ=GFU25}=MLZm0gr}B|1)|bkqy+$%#6dJp8GTcq*QWcpqkrU_dlzZ<)OTA!Eke? z6&#`+sJ%Y~27r%HxlBv7(PD#!m_dDSLNaCr30+;fclT35qG<)B^81&UfxI*M@$UZZ z+qXXfyMe%ouP^v;LWvk}dVFgW%gxVk7GAFlIymqkpt_EN;shyz4)@n%3w0`y3IWRe z8zF?WA=G^4sH)$>>TqG(vj<|~P$cWPE8e{up$+hPnOz#Z5uQLwYA>CFbMs{VWp z6QB@?F(utsfyivlkd2H>OdQApx_jn5S&1o2pmXLb2G+ldu%&k z%6G#08XBPx*4}1iO~a8S^IIntiPMr*znduWnoH2w*!sdf>97ikRI|ZP6zXgf*m-&P zx@vETx$(BOO1eS&F+WkLyVj~+b0)P1MvX&UVLPr^-#3N~{XCnKj`X``9_X|%UgFPH z&uYw?SyoTa?tQe`$*6%sIfux+eqG9dm9UGw(iIc=$yq$LwH>E;YE7)sA+Fr+X<1n@ zdn*0Q2h68-keYJ}3R?8s$Ae$+Su{ajgUWoU%z_B2zL5;;)zL~K@U#N}Gd-2|2D(tT za5o(DB6-hsWndbP0vn}U??wJVbQie1aF(=Bz*z#!*#!1#7O9_l>VfQZ0BD>E1-6Mj8c8#K``u&M!Kyn+?p^P)b7U}g%uFvmYUHf=s_dGGt7)qREQSY1Jd~qo$ zk>C`kA;UtF#0X!CP;PM8GJ1OS$U-3H&r~m@HN*K_N}4=i|LA|_ckui7bP$o)C%{j@ zYvcR-`|JJ2Ve|>OBposZx020Pd^NSSG;CTR?6&#|;6~J^PZC$IUcCfF9U2-MLXk~) z%o2*6?EI+uRWbU##H5|J%lexr60{EKzp2mc8gNh5@`X?~*5p4R)~6fC;+c-1jq&#u zV$9-a!}Jt<^Wgo#nZBX1St}R0M&|x#L-`8L+3_jIX?WSU0rnzwqfg#PFAMkGvlpUe zieC>jq|YsnY}{`}3R-}=s85IwLp_-B?%g}tL4}??n&~N3TY4 zK~Cv;?q4D}sAO_VuESt<6tnsj6<~(soSb->6_Nu&8N6_NdU~j?8~!0YW@dUbtapBm z?uWd^M|th95$38!z>>#Hfcik87(AxX>a9gKK4Ea)EdZOtMjZeZ^4@mz=J@5{z>7ej zLWp6yd^vM?B~{Q79p%FJ$bVsVl>i0YPt{6M?R#K2n2XhvmEX7nQ)YLcSqF-c(uELo7E2=6!LZUO3Hr?UoC$d64`7 z!fTcoV~L#|Z_`dtTKA1PEfs1h*1vm)&6aRCN%f{$w&*^R8dqKqJlZrHQR5i)CCT32 zZ5VTPe{SSuV8B5&N&9BPuBJbi`-1xPDPjB6ubF_04_JOC4K7VI;6D^J8C(_Yu|N3{ z7M?)9vbqxSV_UA`P$WSvvLu~B%CQ`OU2!dZv{Hy$3-r#E<<`iBp^lX>Lq5@hskq{xqloAsX`k%&)azYUb z)DIF4F(oA&9eI$lI5~Q2bCc&D2V^xgqcWV+e6+I z)lo?@5Z+OVl^~)!YRC0)nBooh;&6y0$40E`tuftF9gbn0@K$1zUco={U4XG0#zQ$rS6? z6Vs2scW>%^#=_%&dQ71=JK??FYF%6(Le8#k_$dGlil_br;4Pmm)`%+K|5Mx4hj8k1*4JblFLPDCi&UrzxrL7HqmjS#}as3_*B;X%y zX^&n(ThSO$$^n>d$)g@7U_39evf?^b(?QbFtaamrgc}IVcv*`y?C$(St?ahX(pnz- z`}eBUiyAl|geCE%(GF9W88=VQUkTMNl=J%??Rq@^YUA_4+QHyZk)UfKomsh+$E`0t zEJHuoCUOsjS0abLBF+zFDH*ikS_TSrcwCoNMZm0Uf{6E$QRA z#kSl}7~9^TUw*LlQ*B&jCDEgT|LRpNU_r#k#>OBwKVBQJZH7FF(41fo(KXjL!bmP( zx9q(Ft<6hNAA{xLo;%kJv5}aR6dm=A>)8aPP7d8FVraXCMMeez1Ln1}_&6?(*u%r) z;-yPy5D+cON_JKTiO%-@&q80mq=7yNJp%&+(nbdIkjHIRb6lbS?VV>+KYu>a(D%fG zB!&1Z5U!hTwDunsdG44b3)nM2?O$RyE(8@U9)w0HxVbOjV}X;t_t-S9H`@RjrK2W6 zbgq&pUm-=s5~wgth}943Hfu(5t1u!osTYErQ4o3`0~3*K-7{ z4$N9u56<(7*7uw=d{8IIjK9A}7*dx|95aL;Zn#M3UXu&>_re2_P0Wah zh^dwQ1`*SH{9QFSitbwA1t+))h>VWh=IE}lD%XaFvP5RjYgkTAJNnr&AU&u)tBkNd zefV$#7`aUFPp@5C0i2kqs6KXfZf<#feFk7sf$$FkXG9Q7D@(eMleDqvVw%62u5J`O z-@)M_)Aj4`Iq&13!0_Gxn+*jd_A?Jj;<#6@2qlS$85qt(4ulQ}(9)UKgGDuFE3~8I zs_D-Y5~d+fgN^bDzRShOJ;MeAF-v|L_TkSuq+SKo`AaXov9l9=fn5+%+{fU$%9*cVi)kWU9(!?}@$@1rC`dQ4!s{_=+bmPVa@P$?&#iKx=KvivKiU*I>0zmY&dVYLD z0#>+8AmCu;E+om8eb7dmOz&)eDoW{iMJHEdjU#EMWXM58pp;MO@Pn_tinmdDcs~+@ zA%>{GdX}0>0A>tnZSpGEC_1?2c8iQKzzCgMf>jhLm1pbL$R%cD;oKsMw zFv4>U}0-*%m?)6{|>O$59SvC;KZ2 zyQ{-wzDIkq+S)XrqX`gRtHMBS^xoq(0&G$f%v_{b8-m2c!9hxs_88k9-;@#OrQWQ2 zi_p32vvQ@?mcGIOen1l)V)6pzAfk!>@66eWwQe~Z;ETEG@ku_%>bG*mMd>LRY19KG z4+z2onp!2@KbFiA*H&;98EJ&80sR^fa$l2hX|R|Ps$Yk-v0Hk^{J>m_>gpx*U|H`wy?jyHR*PrrOB7=$)lqxgACAsKBRoMR7xVkZV)~`%cG?xR zPY4S;YFA4Lcp@h!2Ver~ZSMf5^hBT2ax|Y7r{40b+XXZYzW4+LABL~0=FSN+e2x9D zu_kJhLZg57*-6r752J>%dUivuJ*BwDS6b@uQ0ynkJ}LA(d$A?M=J^Cr=iwkpi-TAwqLu=^53!}0ZT*PYOi1pXB}dp+d`1DXf=&jALO@;8J7waN zkU+@2UR_(8A}j*wmMO!nT2nQ+a!+4ot4Fub`h(Y;w6K@S^bi--r08qeltY!3q5H;I zH$=ESAv5WI^ckMgR|D*djRLm(h476(UvcyIw$-h~wdycVmhIQ%J7478c0PTX^)@z5 zLT%$%$gi@M&q1LJmO)SRph+`dl6x7f}d&V~&)}Rb8H#R>@TbEU#W7gx~W` z^T%CrQ?LJa!bag9L}m$qVUymA)+-e&Frlq2(LXt(Wq5pkiv|zu=LMMV7FcF6@`}db zY@4JDbf+D5sE=6L{<^MF7kJUo-wjJlL?uAF`p{dcGwaj1sLzI}%SE9hLFvp~5?OKW z9}AZ5`RGm10Hf!8Z4TMYrSMGq^M*!&+LEUNuZ2^zd-wPyERAE33 z&I0#2=H!a72LA$M>fQf2pZL&oq#NF?pe*EQ|(2r^C}`V zWFcp?J$Ta-T;`GaSuLcY*Y03SUf;O#?m$gl9Vn&QcdkgFg`VG-!zu(=Dn4@pz*f7< z;;>lFk3QAPvvn`p<_1!&6(w~ZV&_IurZyi+Fu8wl(L4Y$&=Eq`EOb7+ z%y?fAAb}syTlW4pd8qvyPmg~y7kfj-a)G^(bREQ(eGhkfgel0$gOP*%HBvs*;4cn+Py~1* znFcDl8_FMMvbeZqI=R`E4v*L#ea3fbH`9N-@zIsSr%e>2I(yo;L4ot~WsJ*mQ4-L= zLGT3-l&_&~&&kVcf>eO0ERhyF$N+(St8cXSfo58b+0I#>W5s7BJ!nUOunX`f4boQU z(yt4HBxML9y<{QRya`X(J*0;OVoXA2b?bowNze$YJbXC%{T!05Vy#qZeEhE9*#D{z zE9j-Eck*|aKQ@uMl2(^>xlVWIY~a#%*$6eej^Pq@eog*Thu6`~oO@0vl!}18pa+(; znj7Iro(d{pjD>(?+pRHIny9Q@z_0M3LKj7UHKL#|Q84n`OMtP%IXK%E|L`=7y#X zl`efsL#*bZGIE%<6?a=&O4(l5WDpOZ-Or;#uWec{YIR_AV7cOigKI_3_P{4J!hlzelldkpD|>t*@sV~J(jT@xGm@hM(?f+0>dv^oNjDlf>eqk`(w_U6*kn&im5s7 z^yS*)GpGEj8cgwjI7CnhI38>m`E0gQdO#t)+w}@)0brRt3-s%0KmeAwc95r*KLwtS z)Sn;(syP~>vDRJ+{U42@5n6j?HBm7^2P{U$&w-_KXEfu-fZqM$E%{Z7swpAH3&6!v?2VK!F$R6<>yA~lsJjnnQp%T{-F z##~!vzo>Q%(R6MCdNBsF&T9b_HUB`(Pkh}X7}dHlfQpf4hcZYW7`&o1&LVWn`|Kxi zOaHAIC$BSGudW=M&|Wkvo*ki_IWXB*=^k({EdsCQfECMB1@CS|QOZ>=6S8}BoJJ6Q zwb@OI@N?AqrCd)`^1I3U*nYmV!$ciK`O(>Rp})R1P`pSW7@HQ9!Mz~uyK{~;M4TYJ z&b50(2-78`Z+bpF`ci8v;U)n!@6UH9WI$U1TAhaI1qoWCax*2w|9F-W5|coxGt$ri z8yz?q(-dH3&FO4mgB~eLNkzp;TEt&;f3uwtDgt4L;{!*e+YfFmYiW5c&0_{{{1(t9 zH>>gAiWclhbGC09`mJuy4?koazN=GMNM9H&keP#Tf0h`|9kU>r)#J}+;lW~GcRi1< z&2`t>$<_E_iy517c=L0cGBu`mN~|vHi#NFPz7I62rKATJ`0v|mh{zg<#b$7)+gGGj zlu`{Bw|qD}j4w_PF?m$1o<1npJUczzV{=wjQ-l6!=;!ZsSCH7q*B?SJ{JO{eYTb#S z^-#OJI`X@&L5Hg6jWo^`7M59%WwzD0u0VBGbno?<_8>*4X=%#drD4kdmL(tEsk7Ah z^4@e`)+fP@TpNR(USX9afKp!GNb_y6)+{ehNsAF%#V}i`S9FR1bboFk$Dx|+|2(_~ppE(k-{LkxiH9j4u z9!e`ZV@;Pq9~-R1(5E8{KD~74ZT!^L&{#I34+sp@Cxmb8_CGD_^a3IS(XRlC10HDi z^Lo{6jQM1VRXAW_v`3m)8|DnYJIWk-H5Y*RXT+5JF1mLI?z9Kx#j(#vV*AyuPanUM z);r<6z>FopZ{E%n&dhJ9#bUZ*VhoHq9fr{5t=$3can2mI4nJ>>8wstr$$MO5M~n78 zqd8lBin^1>bf#;5xas@%@+V822o}ed4^W0pPw=4BY63Z-eyQQ%`G)C!V!bRp?rmnbp-5mKO;YZq_wmq9!uaC3^OYC4Z0JWepKUuMSPu zr+1YldEVeVpydCR%wcJ$L3Fy}F6`5M*Q?0=32!236173c%mGXw!24)Tdjz*m_$Ik-XCgjP38&}kAi#X^ z>PrdUx4vxdyjS!v_h31w71p{a#e0=m-JChmw?IT*9B=NiY2Sjur#X#K2*a{x$iWzOt?LHZv^?|08!%Pd_>Ub?B(kX;iK@IE^kWp{nz00Vnp^1r! zK{z@9B!q2)FMSKZlErRksQ{jWDjeh(nQz}3jfg=9MW@2%v0NsP$C|-<4@jq>6Ck@@ z^`@qx>E+(Li$DIoLhp;ANx;s3Sh}&c{-PsaX(<7xN|?#gL;h>{xzKFq<{#qoR!M)- z$_LE-l2TIR;dXpf>N^(cvNfX|e6FdHY$9|n{kR$&2^~-R9Lwa2L=V@1A3LTO)GPzo zw%e;gr;Bi_$hvv?_&^bw%N`jX-q>)u%S}Khs8mceS{j@1h8(lGx!Do)<3`@A{@vjH~tnbbwO=~h2TwEOfnxUYJYz(I8ryl%8V!P8(rq# z)ynAXmpsJ{G&Fo8&zsQDrOD6L3~*^>@)<9MtL&xcwc=94>-lf4olWBV@D^Y6i1r|e z;BmgRzfq~_6Mch*5MpK4z2^`o%pFQ1cM-_zd5cCLRXw{cvzM@SF+Df2`QYKOYwPXHkI*+KPA7o$IXnf4!b1YBsd1Z$z zZ|&61!%x*hVTF+Z=Y^RD4#hq3h^sM)kF0$Z3OI5!ibM7@0WFwJ-$qI5#g3#t{66qp za(M=8;k{T~2R$b}g%%#%4A>?hb;C~$692u-P>cH2ajmdXxWS+)?>R?b4pck1K;x=?|=%Vap8dR?6ub0(pUnUk_L)R>Ha z<-2*@p}6?#jhur++@q&#yxjlH!C;pBfc6s6u!s36@3Bpy`h zW@xNke0GtCnV>s1Lh5;X3IwbYkR+IcQATtm7g*Zk|F>GF$nDVw^omzq?Y;F$ac<>O z#bf=FAzCFyw`nFw-r!T}*(63(mbd)Tw&1Oqm|bo85KA6kqWNRu!oTlcf8Vd1!AG0- zy{?Jf;gm49e5GHV^o)S-@W`YM<$qAs@py#y=R%Se$3z9`KVqAjSa<}!dw1_j85=VN zoc%H(hdGzw*I^^Mo1-k&Ln(p(4t-wc(f9At6x@0lwC~ptHCC!!za{Ypwj$b+pzN}s z)>&Kbl9sE9f(o5Cb*>uY2cyFu)YR1XjW1UDL6NJG3d}*eTniq|C_19VPyZ6{B>z$x z$l2IzWcTnlV2;RJ-u*0mST*%qSvi@64BH~K;#*Ew`Q#sQ&vo)qo4>PL0U&GP7)=U~ zJ*x`b(mvVu_QI~2ZROE(@IO265O;@@_|h=`-@`U_F1?$#*=3*f{?Os3RX;2``8pOw zRCv=*{ju*!Q9*yjO~X;nSmc^D3rsf|x`VXy8}io|S;Y}H*QDk^lF3L)wypWEQ4~y+ z&|OVjtq!wS)C+o@{=mqoSfWnw-MJa2x^Ikh!&v{^Gyw$Hr(a1C;;y!fayjAN)lVNz zFL@X#TmZ3-_C={umcLq^jyw>p(k~5ewyhByJ7%dCk0~>^Ml~8GBfQm7HALxBd4+ApTbap~#yjbULU z-7no9viy4t_O}hyj+;u^A@xc1qStut>g8IWYU<$^el`TUm3@# z@p_CL+=#nZLp6`|I2^;To_|>KO&yU|#rJn|7q=cA@q$J|D<|iNKV`N?91dbGeSY*8 zlMusF{_%G*FkV*gT5j8@H@DHZc$>c5a<93dW^zq11-o@>+}!6Whff9nnJ|JHtYHQ(XRV0J;i*Cf9!gA$vE)e*WWNXBGP8~F?YS86Mog3_x-Qu(+Tm}JLj9~ z;$IQ3DMh}%XuzyyO8(D{JMjVoCb`LHqsOTa=A`2Fs}L3#^dg}R3IPyCp1RAQ!H#e1aMKkzy#Wbm4u@zp{e2N zcn>R0`GYDUFmR?HpldL{n?(wLP)Nr+;jXK&GMN^8xi(?6Tyu#6N|1r$@n7=pUU_+` zVzgSQ^Lv{!GhNQ&AMEQ>OMeeOsCjDb%3$lr1?!`){~^%h>=_`8dZGDZxYXnZe^MFr}pywMQQU z^?z3t`DtDU|UuVrR1(|2;U(l(fbOa%-3%laDG6UufMNtfiNy2m8p1b_2e z&Et!>L*6A+2q0gJ`iJkw2EIRsb%$Wf(Hir*bmJz`1X@xqg7#5B!bc@vm}o)J*2yaMT?gUHz%i zx0Dd-am!?)qbr%3_PhYgY4zXTW)kUup@aq72N#RclF3*i$H z;Xi(+YyKEFynyoW!_&H#7f`I9_~E7hp?l?u>kM$9%O?a~z7^Dq=iW*rdwXclwYxPwSwkD^OZty_;^E|-44SW_-lPWa^n%pCb2k*Gh$Hmz zbi9~CPFU2F@PrrF67B+4Mg`o>3RGna)-J3-Ebgs(K8#)nCjN_&=JtL5R4oD+GvlLM zC-;4?l1{BnNG1#Lk_JiDqfj)_rzVe$jcn6j{7YN=bE_ijHslf;@EgrKkCHVDMn*>H z`srL}%Gmqy=mt!zVxT%qeTIksL!VnQCJz!G350{y4iI-@+x^pR4? zDUlLG1&Zu&;5lPOb#Vrd(Z{=*+-Xi_y}!?F%ET5;ads;Wp@L_| zcJJ0ZfxbD7W&p4I{5qz;-Qqpd{=avp){4FxR32KkIbfd@r>C8%!7#NJ<{uT-LRRVW zBq=fozLUwsTEjR2AWeZFF#y{S)<}ZalG2I>deRYVef>+z?q{$1EeCr_5%E$!hG@dj z$e^$2B&6}VAJ|LqfiqI4BgVv7i6liXd))L{h-1>9nvtO@s#LpN-*X@3{wHLdCwL4h zR0tUzeNkJihA`kV;$x?+{gOut5kB$OruNbx0SPifFiirqzLjz)5q}36*Tn>(^Vp6SSxszT~U0%kGAdsq}(_@{`4n>Ded?bij z?^aojf71HQ;Iql%>J;@x~nDt`W{``jz+Feki@`{}P&(g+ZCMO)G;1V={jn`I= zqfyP$AdsU_O;anB{D|8G)X*1H`<7yGyabKZZ3NSPe<5AO;f*XY?Ur4=-B9FC|8Mor zR|;{G@O!nS`SF+KD}+%dx`B5d8jaHg9*g%*ISa z^FQYhIRAo>s5DJP)7%kvscJ4!$6;ei5+wmsU)V$pQ7|@(`n24ikIbjSK&Hv0{?5P8 zJj~5^nC|{sYN9_%i9caJ^cr=&8l%q!8VZq}^wR^GL#?Z)S7I~F zi_qyX(TJ$GHs@39X^!?XvXxk0E3u+Lwnlj7RMFokyC=*1Op+_fS%eG~gLBU?UEl%p zvrF|k*q}v5#PiP^gwuYnaeNd^42=*vX@AC4_exnaSE~GO5S}Rd^z54PXLtAx7_665sWsW0+N%d#!Ema@JA105-S=41r8bt#-{96b-=wy#`|_ZhsYmW_0zO) z2nRek?dZLi=Y?5ga)NOZzd1uCb8zFzL$mT3f9@w?9A6ffjA7agg-qKaRC6HEgUEOh zDgfk7XsE5Nttek>BxM9CE@&9GPU!l$Rv5W9Abzf>kc`e96W;WyJ`kX|nUMbBvpW|vu;F;1kfTinLXXs!eOjEfn>R(Z>4d`SkyMY2`PqW9q)cd127 zmV2|#fx==FgiOYutvdiMc~7x{xQ8ddO|m<5@lX;VaQ^23-cqVgl|ARU!uUItXG7Qx?dyCg=UT|+CLzUkLEdSxQg(%s80_chz7%ym=TP_ zCBx`nkq8LkP}f}+l}sjILQq&$eWe|A1}DOH9o3#6s&7vA%bsJ+|l;A!T zob@sjWiAkl;(nknTVFHX^9jaV4ASZ%-Y_z>1UIogxt6-QbKQ?xLFOCZVU!w>6~Od| zfM)-)s3<+WWupDZ1Mx!k$@fMWsHr!h47_`Vh=#38m$jh9BDD1V+N1Lk`Gnnyy96%n z1w+@P2;(!o+m$-zoK|1bhmMNfYlK^jHB3_>0qf_|ljAKRJt>NJ4s9^_vf=K|Yw;}X z&vriTG({Bdh>e3JZT#s>H1L2Jh3b)Z<2BSr0}xA1aX^M-BkW4Z{;>4@zHv#T5J-5} zRw$!xIg(I~bmGuNV}sbaW{cr5gWz5)34%b8LLo5X?5Zl99Y~mCvO`^sRb*v2%}cM^ z(b3ZrGOUl3=jYlX#Q4os6=iY|ayEgVDrsujzgHCS7x+p|`dB`rd1}S{z&>8?bWPF2 z%*XxM+D0R_Mm?rfo4+n~4osrcJrBmc6cRNPoGrwHkLza#K zQ0b%atJs9l(hY05_(q`^-fL@1v{ARDn|PRd_d^m+w40QN~`ZW`tM)S*;Iu?#?tg5~(W(S~Q zD5pS$E+Qx_D>GxV(~?(JW#pO$T|SzlUgXg)_t9|r3Axj=6PX#cSFd1OWdBsbTU(`n zf*jkARw9*aaLe0u5Qw2jp8~;DPGMniQc_Y0_XD_GokK$_h(ENf1n4EFFII#DON+CC zS|udOJc0y`XOaP8GASCDqfP>Bf+@+O+qFG#LW=y`;-Dl~arco&4)|6t9#vPvzXMsadK)||bmn7WAaE8&7=l3Th%^TUg||nM0O9QnC5m;-jjxJk zNi_P`1fkuku!e;smg*>U7| zegZmSxb!nfG~hiXxOjLxds#?`kOG#@J}IJPONrv+EmuOe=*L+ns22C#_S8!xRhb$W z>5%<*Yk~bQtel9j9j&+o0SEdmynA!Vn)70O*+L`aaXY^I51 zX~ldVH$1GR5iX{+uX_xVlRw@9{gA3YA>`;uFwu_q?!AY5SDbnh?$Q)CdI8yJ)D?$2 zHq4G2EAq>OH49+8C(t-LOrH$1L3}Rs%-vo}KXY@ z;Q^s>9_4!{@};07Q}2%-o5lVo=fI^~K-q@m0px8@9;+qo9P|vZ*c2#w4rVmD5QX~E zF@BJ%k1l;26L4o{TNB{S4e)dmc(Yed&La;o zAK2M%Vlh>ICth{OTVJZ2=I~JxTuHNgqxS6)ri<+4Qj@nlbjPTY?UCivuFoVL+<5LA<3 zQnSb_0AOfwPz#U;45{YP54d)%4OT$Ce!@^{mSb=T&xPGvmo}PNlgtLHU$AU^@7GAv6I%weU`@No&=YV69 z#`puA4nsX&+>&BqIx>3RVg+futx6#u-a>^9@@~uiTb-Sq5aMNheCoIw(E~tYT42z? zfV@lr1gh`h-5wrZr~ik$uZ+qvi`ss$2q|e0DJelE6c7-l1Sth1l}@F*K?EcPq*O$t zr6rUU328);E&(Z}Ln#6A+XtN)XU2KoKi`jUeXLotmdt)5O54 z^#J%DbZgi?K;j$>28hyyW0J+9I60|=6W>eKb2Ef8>tuHnr(H+1j$8{?!6xNaM zv}PQn-{P=olhh9Hgfm4H0mJ|TB-+`v7z>< zO?>zL&86jM`FXZCesCH2bbhn~#7|mZ3+{SaHv^7d>h6~WUVwmV&-IJR_|zbqLgb&7 z6$fC6!XXWW6l5R;vH^jvks@5J>Su1I z-x~y47-(R6*L-eJ@J2LIczVc1$anQ+#nrW(O^_tw(^)@iHZv>0XEJa98#MdQi;sh# z@?1H4V9o=TC%&bv3T!lu1P|Px5z)V>ZqL+g9Qdg;3txinJMPzSX86nmz|xBmDv2o z2Tqtfxd5~G-qbCRK=V~~g0z;NQ9$1x>WHJ&6B7e73VFX1Xcqthy z^*1*V_<~IE|=g$j$TF}1E%)|yOXM&1&9|ru$ppl=gapd-t$xq5=z!M~aS&+w4JMy+> zSg!uS?3w1Y()7#3CiVXM*BfEE4dtBg|Bc4}gnoo7R_+@l$jz(V#6!$M6o5eKGSvdx z(HE>3kh@Fnj;TB_A8LURF61JBU!`H17F|Uy6y*tr&u2V(M2kYGXzdGS$STT(fL2%! z9~uFo2S`>>-iCvZUk4OWM|Zmu8u`_!ZBN-)SQvSD4q?!FoT<{Hiq$;RUn_gQ%Z`?a z0CH)sGww&S2~Ed)@oS%53FF0G*jb$GTDo-3a%Yj~?*#5$>x0_poMKhTO%AN5?CO47 zIP)-=pM1`#7Qi@>m|1USs{M@H3j40&xC~scP}G#CDFIt7@uYY4d(q<|D6Z@vDhd+` z58z}$sqpP0X}i0+N~ZajD9;PDhJ}cV%d>+R>W-bR`@)xdh5s@?Fep?5{22+Mzy%JB z0~mN?&JXQFOzhuyaaMPfwJ)uZHETfeM=Crk)I_HCy|I@S4Jrr0@08K zW!BJpiaDm)=U7SXlc?J$##*EO(w7H{S1G5p+bS(F-vR?If@Datk-!l0kMhPZm?@HM z(5Ny&paDu(EvRz`J%}hNDTj{U%$;0Z%nJ#COXn8KWuuh4hxTnvw_R;qv-D=U0pM09 z_=M7l0k$SkBwX}B*vXS8V-ThHVJhGx(SY-xU=kkOMFoX=u(leE(a_|4ig&TN>7m*t zW9PHg<-~S8)a?i31mE~i2b1`?g;}Cxxywv3Xhq9MCs;YPsCXL8dRpQC+q^>Z8OI0U z?I$T`F7;fq)*r5Lbqi7*=luj4u#f_4OY%|H<1^}!%|&GcMIj6q~+KeMsSD*)-^-c3B)W| zCWJ_R4h*t{;XB>HnF4bx9!S27Zh#SkhCB1&Y~?}_MGWZ06Fx?bps+@RTIeX4p}5yX zgK84sZ=_srldO?y!}UNA1ZFROYT5hWOH3y>y^>TSP za$s#u1MqS->?43K7Fx%%cs1CXYH`Es{S8el&IoPVpznCKf!R9jgl;7*I2R$?C_woR zfKXFO=@x)b`oP6TXv;AxbMn$~a#&XbK-aizF%IPNx!1>QvT6nUoP_9CY4*x(VNvzg z6Tx|B;~tJVv+e98d))GRSl_1BoqxV}X}RZ)wgf>-y_AXaiICial><2PfCCusWNywY z2m~u@1+sE-&-5fE=X*;9Pz^k_4rDFT*Dmb2O5@qjST@=+nY1`^PiZu^sfNK)9=kPM z8K`&$a;@=0atR@^|2zS&=Jimx^8&H^{WS6z0w zf0Wk4o`c@e3`(Sw6b~Lwe*7r+17LabZSm5wbN;`4WNM@3d$J&FK)IBlpddss0gZH? zntZnRjlmW%xr+*7xrPhNidVJ6S2N2{mb~I4>+87vo|fk*D?U7^_WF^v%BAr|y`FM#nYvIT@Oe8nRs3O z{IKxsy(G!C+`=bmhxUq~dj3Z}2Ue@tm>jJ#5^yEltw);(ffjJIUlsv{Z`i&lrtqE> z=F5p9`iLJ?{nFESbPg3)OuY0^5y6Yac>e)_7@4-1tM<8^C4x$dao((~MhK4*`z*MD(| z50JHqvxAxU`D?NEpA~N=yXZd5b!G$3nYn0kBI?eUn0tPUtX-xiX zPMW`u+vB~v(#&UFGO~I<4BDslxn$v_KRv9o-Bha-{K9?XLsF&J)aa)@7exqf_ zw`xXe{$lz53G)-bIj07Kva`sp!wbbtbZbu%@0riL zoQY8PN2CPkpsT>kBq#lN8)#W5d9(_nHN4sQn-3to!t0g|O-Llb1DJ#mF&kwz29LlnnBNiKV^TKX!eSIQjQXJPG^-b8~S|Ty%Ha$=k!p#4ZPDh z6%+&J%~{#mVBl#mCr5fHq6ymjeRfPl^z&7IDeBqyJ+`)Y$8KRUqHxcnk9V$H6p&8@ zqWlJdx#;(n9KqHW%;_H!Qvsh)Nzfxg`>hs|+euVpGZmhYx}1YtI_8F79!9$su&>6n zo}fSr1WQ}*v^GLW-}cJv(>r2XMs@|I)}=W3(^GGDe_0cLncsRC$qx|&cd9d;2+X-h z7Ze-RkE)25bxd7>Ionj>Mdp<)V=`6!)lu4<^Y=oMIUoU48ouGN5L#NZ&~|g{MNAyomlL_Akn^KdLcA%#zzDMtq0*qIqTL>Cd^jDD?hGbh-Fv z0FEn10T?Jx#hJa=3uX+e?6PnMSH z3UxNBFzARd^K=X zuqiL&lm=T%8^N>jR}oaC2W~pEA=pEbSqFjCa}Tbj)UU0~Zmhf`pA*u>k;toTNdt(P z4aa_riJPMZ5MT8*@D|*B;l!c_+Axea^pK{HmdIB$ZUB5gUgZDWf&kx% zafp?p0Ql10qC=BH$<3HikZ3E;%fyWgQzX#rYxKz88UwPN|fl=6X)DtT7+n z>g;AV;N64JfxwL00L%c;n0uiS07g5we*Q-rLN)rg;$a=IzWquLn$+JOZ?74}S(|8B zfbE#u{j|;uBp)Y)0JHm;2I=cpkJ`De@af(p9&Qnq7>x6Z#e?|ZMG6cx0?q>mTBkzP zPoEohe&(EeRT(nrtBWX$qib%+incI{>7mLYotfMPkpIZy?!t}mLpy1+@%#?fhmSH> zJ76k!#TA z`h~%0#b(B24yf8LrR7adVlrVfoW%Cb*s(1Brs+a1Li$qj>~x{H5~a?ybJ2<2qPcw9 zTL1C-uLl)d=~=ARaR4}ofj(oar@0bR0a0-2pv z)brZMw3JS8%$#1biA;KtaEjKrgLT$?Ki16&6@&4F3w@56_#AtmT_M4gfTB{ubDNvL zn$z1}7#m zygqQD>r&{*x%~$Y6o0)&=Y9n`@tfov47B8WTkF&g9vOe*)SCOa)2WQ)p(DZ zbdutf$?U&KH1-EkN3gg}*+DMB{lyuEzE0fUmRUtb&2WJ=tylizu6=@>6hIFD0iDN$ zyM>N^S_j2UE$r3@?>TV@1!CuU+5VwcAvUl0LEj8kx{9oYhR&Y{uN}8W8nDG=U}wjH zMArsnat+YF%aPSLjz5_>GqdR5%j(b=JxqWbA)B&mc{8@=pvCc2s>*qtS}Sl5W_#$! z@^$$$uq{%aCB(&EL*5KGO##+J>gt=2Di;m&01%uHc6i##j!T(IOIwTMUOo&AEZJlu z@o%NW3iTQBBxJg$GW`29cg=Mu8|TO%*@@L#4hCGYyYD_TQz0&pE!2)!X;gnI!W|m@ zwBQGHknK+{bf_QK5830Vucb}P*Ddy;+W?h{pagVgk|}um_lAM*F2d`Sln$My39S(V z_sUb<^Fe`1m3}=+jz!UY|MrfNH-v(MKWSVK>Au>V@__5ph!NYImd3@f=c($?Y>pq8{aPx-z$kt6zrODrAxRp0^5qSuh#mW31`Y z&eoy?$K>m7Nh4h|RT__*PcU$?KGy}Ihb|pN@g7>s7h#zO5nf1L4CUPN{M7_2ojMsk zt~JzOS{}QAsRo%#tjeK?A>w^l0AgM|_s|y<_u`s>thI@;-jY4a0EK3>sXt@2#7(KH zUmT#`c7KNum*d?|%6a+nWioQ|n$D<^e3FRy*Qz~wwFO$x-mdxjio@5DInv*_gEU!! zry`0-%3~WF+z+XC+Qq=|?}gR$ikoBYIW=&V3IM|w)SaHzk8gbs--x9LWFmrv?P0B1DeUD^Uuhj zC;jT%;V|^p#U5X3;>welzG+(iitKG4pD^Lhf`@brMBClEbUajGw-*2gm#n*kRuc_kl=} z8r%z0631@hszOr?9Uky)9;l$M*&+BcQ0gM@vV7Q$;EaY1wjKdhRaG_R;M>BxHh}Mmkz*=}o)+bKd3rLR=9ha$#~Ai{ zv#u}g#aNqC?}+f@ae?z`<~AO{;-k~Yr4ty4hJ;mn1`>+T($xk3s^b3{u-ZxNTnCkz zgTNp$72i{Mkj(vkqgi|Mg+IBA;F+iS7k3evkb^0BTJ4RJEH{E;Q}%*Y3tYlUHGa*! z?C?_y^V7aB+%_1RhHCB{3XaPS#Ww#-fbcK((EmLlGTUA|2EHn9Mm}piRO9@x-bw6k~YZoLPNR9b8JYt>50j9QDlD!eNy6LziDGs}mmMU0u@0J2A zibH(7ZU!-Naf4&!mY!Y_K=wO*73;+*yn==6CyV3D{jV1F=!t+>8Q6;ZfJ8qC~%Y4+tXw+F_fx&e`%bcEDFHt@S8wvB23ipHHNk+G?dvsw*cMcy1e(UmyWfI1uSY`=!{X>8EF zhCd&;SM@p@F^<7A8(+oIPPi zoUq~u`4cMej6+AIzrBw)D$TRTMvu;gP50v040>2QL3bd|zm+_sWN#P4hg!-#NB#)! zBzg|f^d!j=w$2H9rGl~FVieImQ=Hn=yZ7{S4m-4n1^+J30C zuVyLAEAX?ugu$Po+tn8>GBeadhpxbF1{|m$aG>@4VUh$W2Y&_O^k=l4o6e%*4pjaQ zEB=zNqyg9lBQ1a!!9YSnU!M`AoF7I<5%D8}yi{2^6k$&Z4}In8yARA>WT^&r=fyj? zweeu@H^y+vJ{p#WWCJYi8Nib3LC|jts!N#Z@d}+c5m{Nidfy7PEY3KQS7~!t73zeG zIx|ZJj6%a{>cgZ(1FE(I<)Pf}2HzeZ=u{#!x(^z5FhZojT1=8DsT*%YE&!DSEyCJKv%xJ$4_tvZX0r3Z6kHu~5#Z^A8p7=- z2O;F~-&#Z&-TouOj3n6*vNpzC=qk^6k!z;$9hhxOCAqWsF+lpjZ3AVZn`fF2)2#yS z{3CwManW2giIn!G5lfT0KUHDB1ZCW^3d>`WlEe?M#${Vx{i5(Z0?>4d6IcEI^oRz& zE%Jzt1?gq6E_=PYshrJ9)+kE{R$@THsfF3ekYhs?ql+K)8gOKe|0n~%J9~fZoyE7Y zdwVL)vslzIv3TL`Ak>`H@}5f~G1IA0HnWm|k5%ziQ9_1jGR}g6{PV z_#Cp^;z{m{tu;xbgC6JrcnJsx@MbAN)5w&U)3aL?m#pJU8aPljI4+CXjymq!?}~Vo zqCXjx4-Wn2`_!s{dR?;14AfA49-leTK8dg}j#@o%+l>*Fim-0I6JC&FH0r+~LX_ka z7=qRmmdSS&ien^aKtOz#IsW+>%85}wXdFfmlltq3y-x^(6*9F5#chAmmEM-!4NKQ1 zA$B4D2k~u=+z&`!cV=gZ%H(evqm+@!tQxL-iA=3Wzcc78V(gH*PAc?-ge*y+4F{46 zYjx>UQc$S>7}3$64@5xWj)RE8SDdaJaMj!;#8;8aR6d;W0&KKDBO%i)Ah1mh02hQX#JrN+9FD#JWse8bEC-}3k{J>|CDY)stDJj^+7Ls1BC-~{CUAh(> zye>qo`b%%3#lH@%>GV?qO8}TL@g9I}|M!To8Fw}205H@icR5GF%Yt#qLIDra@pFnay-%67RbeL>>_YHwWM>AXR#uLD?X9#P6}Uj~)d!2n5IA zLlKpCKP#O_k0=V*F93W7fG0nUMF1#kYlxUyPDhh~KlLLMtb|Wb)oF5$Mqt4Fnvs!} z%y}Kx{{?Bn+V0(Ar+n{roXssUnC;0$_Ow!Ws8GD=kAd{GQY1cnBBgADC56~$lDMiTDf^q28zZ^geL&=8AIXb{5nHwlN2u3Egz~6y-`i|#8rZ`rdJzxNUpr1w@RBjpJ!_zq=BkL)pEcwAoE$&rk%MG6C4P8R}lw-#LUx`$}>U zeXkao#T0PK7+nDkLX|1S(XX(SfNzCx>Q!KTB4P$}gCC<%Ye@Je{LZ1E2N3e0sY$aH zDak)-phVsSugufzWTC7%eour9%Y%0!7&!M4J?zoMk0{whV{^iUiIgK-X*BzJHd=p> zp)2&vlFk9^ksAp+ZqZ#bxdT87V4yWd$n~lY90<_pA#mjw+EOt#HilJ_y+86z2k-&k zvLiz%5BnJ!kgNKxLSJI}T{SUahelbJPrmH@C6ifHlMCPrrH)yiNhL zh5HH~u6b+{7Kv`E74`VQ=>-b|W>Tj#fIEhT0TNPVfwh8>GML|^HwoM=39nz`jo$-B zpzj4}HSC_gfpfRudqqb2$Fza^2!jEpg%88_qW@?AYoIlS^ss3P7<@|!q^{^8Ex#{h zovpv%a+Fbs49cm$LXo5aK;E)Riiu#h09{dF0(5a!Au1Nt@uMWZKOz*O0n)coh~|>x z_Z(ccYgn05L@(@`_lwvRls_=>AW|DZK*&{UYi+(33{ukt42$$@4`7g~dZ?#))K_qK z$%nyjFplsDntTYuqs*r7HZ?)T7gWIukz?$9kP*yFhMm;6;lD2!iS95LpQyZf10Lc|SPU0ss;OXH@>zI@Rd^j;dx@fT3W}oSbnm zk&yyJ$>5L>m`es}fN`Wd#9K5i3L1N0k^Jt&wAU%1Vw~~XJ_F+@+cU4QIn4HeGhBr6 zWK6f7gxSf+EB3YvZg74|Nq_w_21hk}oj}XBNs9U#R};P01{OFm`N^~H#ejEb?a;TwXn6&P20w;Qs2 z$pR6;e5MCFGIdYkwbw;?O@SLSM3=t@aDK##1~JjDj|?m8SV1El@H$fqtg$fQS4lkV z`soOUK(6GVk2kar1>A>W1Wus9hzBX=9S8$}WH|;BiZd|p6O9%C6D>fAT9|pFrs3=Y z>4CveJ1r_7CyV^oWxhDv8{gSMhnN2~AvX!8(cNN3vdc^A=B+7knWzSHCWJ8}pb1!Y zH9(yMe{j>TE$|LI1lHqVXmsWl_>Cf4wl|OM!L+U7%UfaSMD;ztL5cjfjIVDC+svIa^y>u--NA7KEn* zQxVW8D;~>%(?hl()j%$8a8LE{8{Tj>Z)|Oq2utyXwg~Z6?tGzvB>{|o+o)BLl0X2# z2PLUk;QbKlqr02m-7vCb#TP(VATxeI10KLcD<51(&@2I%`&JEHP6Q9PJ`yBF-Q4>5 zxE1i}#=;=S>X(JEfegW_4~A4xp+S4^T|dQ3y|9MufKOKiq)Z{_1^l9cB}4O-^FZPD zyf2pz_;96QOgNa**0{m2iPEZ@+<-%g$!FZRQVaI9xcb9Q^4qTx?7y+!ej+bXTsQf_ zR1AuaJxJ=qZ#m${XWsJxjM~wBpnlS9@a)_x8gL*cNB`2Yv>RR1$JOd>eV z0`dv8K#Vs~pHqM|G#@OJt9JDK`6}(+d}DAB=yNOHr<;DCp`>D1??~)Es_u5u^|h6n zzKdKyBEy)0VXFDC-u#0fnr_S##Zxfm_)}{A!@TLwwk{3urNbohQJ;e z1~?puX<0fa{-kR|e{*w_=D4-|gJ{{bg$H2w3D49tzfwHudb?*E_?0ZVjLWOR$dQnz zhFs7M2L`2w1*ngJd=Qt@E8MgfNmW2$&(KuceCJTd$Zs^P|D*!}2VppCd)outoD4x3 z)6~?2d3U$^?DkUalgd>BU=~VsE^TOBp*I;{u445h36i{T6C0dM__XI8WB}lnEi7%U`yiRz3S4dqH+^sYq2M!1K z?=a{-K&(&zn!6*_~IzC*@wF39oxpuQvqx5qq18+Y1aBB3nXR<|~jt^zP zj1{@&V>!)Is$;o9*{sAW=8;MX)vE8ILyzyuv0$=5Uu`_Bm-*(m4w-*+Q=a=>SKF@z z$1WgYRUeQ|`FTows2nQor5lWiIKL^r z{>yQp_}8gUyVOQ-97GcmR>E$=n9hxk!xh~4<^MCZbX5149xwf#Bj=F6RBvj|@r>^zv*fpcK?HmLkJ6H&UA?9M=m zTfnl*fF%6Y80A+eG)+6#OkN(C_D`I1Sa#fW%)#3ig;d})mKH4P-uCw&1MYQSh3l!c z#gT9r#|4#(9`usnBo>VuFF=ZTBOSq>w2vQlvoT|ry}GE#oH?>vWG;+h$41Mg0{tAu zvqXTklZ#mr3)^>RqNFOFWWFuDqVXR7BwODPPxy)X0U7@L5GVc@k6gtr9D$^^9=1RD z)F(H))e3z@WF>!0o~RsEey?on?h-^TKsBSNvYDT5Q+X)XmHt%xln9CB#P)!$ELCj47V#9ypA>hiQtsdc$Q1EJ#@IroVZZ*q8y$a=>{Eh%k_ z#P?&C>>?T8y}{bA$`Rdt1A{qomNtL%>DvtD8wjqi6jsmT+!9vDKE~>#q-S=SzRtf~ zVjx&ku8<&<^BYX54D$MoRqUS|LGqgVej{)lxfx$zrbWI44GohQH}#E=7^rXGdQ^DT zVb#8NY_J@)+yQ@1f;l)tv3rhhPoL$LGh?_fn`mWVf`iL@;) zW^E7I{LzL)^~d z8C3fZpo3sV%8h|>FHm71dMg~r+%_LXue^W!5Y(rC4ZG@na|oO3KGI@eyQFi$HFwlh zN92(a9ao4#K2XdIhPH? zc*MbX6yWtn7@)b*67WlbXeQNvGb$Y*dJu9`^)zGa<9#|j<3ME77#TDa@ufqDm%M)wrXJW+e%f zMR#_Ia{siR{4;wYev{=5PFXMj9fpmH>FFive1&5KQ>_;(0z`(`;d5$0VK8~|{oBim zf-xH`iiL~Pmx%~Gv?emXUW<>U;oDj5yzRd!@={6JVaQ@R!qMzczTAJFV9y=tIRV-N zhCj@X7S4xhvPc!^c1jJ*=`k2IxfxN3fBGUXRe9#nn69^u-gdDDA-jKT$JO^Ge54^` zht~@1qUDtGtoooc*B0A!JXhku{Zk(s*ZscVyl=#2COckoxhG#>|KDw@evQV^{QBP+ zxJ9b@E9cZ|@C2RS1l3w5qsj?4s7-2|TNp>Uq<% z{v`1iGpIkD{{P}}!nEpFV2+B0Coq5^A*8FKwMVVt#Kw5V52k?F* z=s{zsL8B~CZ<$FB^o`$6At4R3OUZkM)TEL|o$~xd>%Xm2vj&w83$~=8p>aPP?4M0OwgC6$sb;rxVB`)(fE^)u&>Oj7AoM<|PCRIZZ4#r27=zN7V z$`<}^8#HEtVPX8x1a9lt(l`|B^S`a(b865(q5~IZZV(FjPNFeh;G(_&qX$0DeV@Gvml_LRo3%UJ<|-XA)8crrM!;=w8k;|Hb!=TqW+C#G~NNqe8%00X571) zbGX)V!~ow|9$y9qIJ7m!VcMB@Nr?a|(yXnm(WnPV#1UVD+jdOyhe951fC)&!Sk(a1 z6afCSGSht!9Ppc3TP0Oh$ze)WC`?h)|N43IN$H8*^%imAfkkdDaAozNPG^TfAmDTh zLtaLwr*C8pY7)SVbNDB5bopYYiW#}EBIyvspC^}|{Ac{RK5Mtcsw+9%*%^h~t$X}h zG5)StbPfiKKm~J93aa{lo6Y^Qi?70{hUW^OVviRnbHwzO*|UL*rV@xtFN9EFVSsYQ zfa7BorR5&=dqbf9TB{kPn)&TGPi~gK&bO1C`xE7IAYO$4R7orBgb$Lu)AjQg6oA4M zDGLMVF_sBd%p|1OM!;F_e^?>)oXFl5UMKP^<*Hcn(Qy?Q--FTHU8TVGho6WG2stiy zI0lA$h|3G}kRP@N>zCz*uXHH_UEh5*EJZtObI6SiygnF8sI)&qH5f1pR2N>Ejxt8>Obk%~d;y z4ET{_=r6JaSim{)GESeag8ae2z+ef~%1kgg%!dKh^9Yj!W)7ODa^-yw2Y6KdWm7dN zPG_{*WyS~1wMO1Q44D31I6ZgVYY4VMJ`sjxVt>QnTCQo{hUM~?6XCskCdi5KG7Q9l znSfxQ4~q4BgaOCz{KwA!!!6~UAvq-_Hb`*+zQX*RiDCuR?%coEHI8zfq?*|c)(KDn z4Q`(x>L>g!u3BXKwHWYM0U949awSX*e8;6nN||5!`tJ2EzAQiz6!d#j%fG@bP`2~% zsNj)fz;@w>@EjhqBto~3hM(Po=__~4F5pr?!C#VDRw^N23+5BS9P~>c((dc{$g|c$ z+`$3Gx8aCC{2s`fPD8NZt30owtsRQK6bnmDef@sr%$*4hW8*aFt?XXO$O({m8eOUJ zj+q~S=0d+^k=ZzqMw1FAFh~(l!Sj;7&4i$!MC_5kgmev z$jJuo;y?}tIrJ`d@dupr+uQRWmUzym#$-pUu4+d!5SJJD_C{@l@@O^^C|ep znRTS?%LH!O>9;|i{CH4uhGjUR%^8|yar_1SQC(icKTZCI$ z>3EtQHO6Uo9+`@9QtWN3vqi1To9~T#qS|8&b5^~V{A&~${a}b~rAP2q4ikTx? ztL7KTJ69C(tgE|yhOyUWlH|VDSO(`KAkd(nCfPq;NDg#l|DXJ;)M97Ms)CafKN{nO zf$j)Qe}*yZYXrefvXD>-#fN#uV)D=T?HznyvDqc{R#{y-J3wnZMo!BvsFuXc@r^Pw zs~UeXh^kxT1TJq1a&r?y$I0nVV3V6rJRzuwk$2=AEkXa`E#LWqH*c~pTTUEzbbRjC z#HUkM$8!J7ad1hxngUjh{e4jHpUO4f@G&HC%kR=&{ z=9fyu?ezBc_8by8!B78T>73RLFpxr>iDQ|2yrG_D5)hz#;k;OEXtaAZX39%Z8j~L;qNuOHJ0V+E4|U6LAnC}2$p&^`RQhh1&=E!mwUjMEq@v&TNay|fq2 zIEFb@s1E?6^5As$?YAd_2~B`Xy@KIppbfhIzLW>tT5dgh^a!uf#Mn5tVyF$K`e|xv z7AaHyxS$2$)}3ysp}0+2sisX~W;ml?{}!95h5+KtKSBXah*#&^UXqZ>#Ds zl})xWyW4Eap&V~=%0Vcjn{d!$_dBVC&^pz%bas-0*-Ik;hG;<39a_PTIYDY_>IY|C zdHsl8z(oZKlc5QL2GC#c$)QFX{WAMcH1VCKwuV59q_*rdD?<4rq%`KwK$i$V6N$9^ z1vESc`w&Di-I<;OJXVVMXV8EIZ+4V&f~X$`*HzU1?g0V79G+YBlfXnwG$HM|=jVxLBpa*T zS`Y@?th`1fn}dg*2ps|bkoeu8Hj%9(!fXT=f&b}LSrvR3notd2i2M3G28<|}p5%kU z0`g}-)2$<;qQIph1a;UrVp@`CVQD>h@3lIk`rND=58N^j6fs5;L3$H^sj*TX(?>sd z>o?I^Kj`7x6vaG}?7Ax5~t|#-zEgec5#|3Jmu3_USp4qxlx7`2X6NjTttb@Z4h%*{myOW? zbBB3=J7eElQ8nY?;$|w9N!sb}hN=h8j7he9kL3R|+NrA2ieI~veAqOpDr#?90M~o* zqe+UrZyEegG=D15X$0~pjDS0J?n~bV`-G7w9jAT!M{OtjOCY@2WYcC&GFr7I=g}ECYZ3ItBSbCSt5IA#5 z>GS@&w&}2yMM}|h8Q%_0jFp0r_%t~to|RyFgiCb$(E__{rQV|A3D!J^@-WAR_tapy z0E5Z5mGrY5826!u76zsW7{%AaK*CUv;bBB&WN@KPBXPD)T7_KNjUi@+?sv~vm7maZ z!IJqT-2qDz5-p#>=50Fg6zrVFIZ?70h5ilDPz&ICwRB@}%Y9csF zUE@Q9G@Y2dJic0h+R zqEzJ}!ym_oYEi^H3W)@#L&@Bfc+T|fzJtOOUydAj+d)s8OJ^6Ve$sZ@LFjtnGe(E2 z*Vk|EgZm@9^=5R_;k4aQMTGnG89$waw_C_tOul{Kx8-!mPVnXzp%ZZOz*(<3Wl3TF z@=?Vr?$3Lp!*(!fZ8Frw5GP#R-Q^n5JQr9n_26-`TvGLo03i(^IW0RWD8=I<2)RPp zqQ$MpwmS@O7nintzJ1Aj`&sea&e)4a^EA&VW2&>Vii*WLvAq#h2Kh?bA_J?^QN3$> zaKsiyC>SQIz=Xo%l#g^3+ZNGTGI1RJMFuk_E-oS{&Q<9;VT=euAEXA+v^+&XvuASRK}!vEtlr`lW@Y@w{A{(9be5lg5<1M^NZI`yV+rRl#84c8HsQo6MjFiMiG2PE@APy;9{x78+nrxQ7K0U+*3%N zLZrx5i zbN=9_FpaR3F?GNjrizM+J68L1!eBn8Axx+&q9KA4SJ1yTLH(kPYDfv8*nFqrK)T|K z>XJ|FE>2W|e)~O@9?=A}iX4r}kZ`V_) z##wUN>vms8(_UZL6!`AnF?3kr`&WYKr*u-roI{HQcW^9uoPXqTMbP^uE+*_W6>2szGfH-qr{s|Y?A`3`d!H^mR?O1oysWXnO4}`?!NDv@K9=e6 z;u8Dadyj(}6dn$E-umFvrLyldzGP3^>%`7fF|v=<*f+Z_42R=n%25tVoHV@KEJ7|W zUqvUCc``*~zmPe<&RU^LN$56?q*IS-zSwUhlLQB_I^<$7H&#=jm=QBobaiU~+|GK< zlCvx}%QoGEz}D~XL^nn%_LuMziK?1(^@-k(3%fQr3@oj+1e_z$-k~$q(>+J_{q0M% zwGV1VlZlfViA|V_k{OA^zY}!VKDEC1{x-7m^}JKj)f5#hS;rfDY}SSGWdaLVgrnCZ zBRdRV&s`}KWmjQu$1Qbpp=ROfa8)i#8zhr5rrGi2!Y!Dn_`J*!-Lozce<^?|^uU6b z7qRn}V|;5VtD;av`hLaKy@`7jZ6i``L1?%=EF`ppprC7N=_#sx& znd-ppfufbQs)H|-o}1#XOfM^L@QK+@u*X&EKAm=$B^2gNOyLkVFn(Yq!q4ARDRxLx zCM=;N;u};Zj~@+aO|8BgX^#$LR;3b@4LG^T|9rAIDEaJ{{k>Remx;U1i79?P?bq^x zk?iC`$Go~?83vEV&g&~}aw>7TTB%Ev8=l!jQZYJx^D$50ByVN%?PYhj6kEy)h?IsZ4H~br|hhgnn%=Mm3+#OeceUdzvsZrkd^{sFi>~n_MYO|@+H`w`^RlFFN=(%xk`F@{NJZ0B1TXG5Z zo}&~FmglVob{XDF_c*LNDL)RJQ@p*0WAVUxBy)m4YZS|k7ndd2wMDXyD`$5zaq*E` zF*4#%ouP)5pgPymy5?D}Xo@CQ+PHnE?bcw&C*f^udAp3%;3lOEPv3XfCp`9rx*WVM z1Bp(`t&Uovg*Qw`KJ)FGEHsJXLNIWpW`8Sti+`Edj?|HOzos+kQPQ9*I_26Xc~?r^ zsMw@TBAH{gP(ULH)T0(?FmO?(xcw&E2~{)Wz`9l81S#`Sq-kHC!`ZG&qnW6RNzm2>5!ugE#kR7 zpdjm`a!#z{giD%?vcxe><*)CD7RWVn+nGgV)7^_pK7Uj0&LDU-Ea)@$k~2xL^g#Ke z(_|wG8R+fJoqU1brVlgq#{qM+EP`nobxzx_vWA!d8T&E+UqS{zfYcRf6JF7vYjrtRT4HiSA0*2 zpX8gmzIxZZ!Y)Yeq^(Bslg`{z1%(BW%@~5}0JES_LiblC-#mP!Eb{Cb@ted#Cmg=U zPDKJU!icKs*F9Gi_|`Kbhy_txhjS z{{z^0s|m)1b{gV&z9+e!buc$~U6oBveYbWiOY2Ur0`K2Srs zK(!6mvfxV2VbO_a63M9h0U5rl*^0OUBA&oD zNlDINOJ3Yko|u7^&5JS2GG+<>m+rrVd$Hsx$O;IK z&*9)hw9u16E~5j{`xOUgY6@Ltkw`dCbT#+QklUX5&d>&6!RdA78H zm0dOM*?a2TD3y<|UyRK;%Tm5JEhlAv>mIR~U5i6s-MwrBQP5($X z3+!E&xz1I-J4$Hxg;M~FCEsL&wo21 zAz`i;?rWy=H#{iG=v*jH9z>YIVn^%Yj6V z$^9kX4T`P;6(wGg>U-Hm_F|mRvq#GgHcr=V(477kM3^tB&|3gg@C=QmbMR+1>Khsc zCI+B3+|WFc^jbz@oU+R2a(ES^arc?2gZ7-X*>5h1DUHdncRgL2;%;hneZ_~7M{ z#_}(3MivY$J&F|l%Y?dYznWS?QOyBw?C3CERzoRj4H<+k;i`Gxl%i235jiOSu3CiEtUg$S+is!$!*#W@;&~Da3D+2(*Doz>t7lXke!$+|s-0@Gz)P<7Sa)@& z{P+tBgS;6JPQz2`;I8n!C((m(Uoc+ChmRl4KHfXSIXKi(uCD2&eJ`}*TuN1x?<@00 zOd1W{{H9n^sQ_=PV%ht6x^1h-iRtj?C%*f$w@6IAzBbx_5|3k1ls)=$B^O{N8I=$c z!b=50{93rEgcNA(E_+~)JWhGHQFcA5(JahD?Cqki_&lYLNoTRWCuLUTE@r_2HPRy| zmnwcpqsMe`eJ@4%A0VpS2fxQ5q6V3<>gmKIZq zPNz>lJbLYJej?XjCv2g8o#flwyPxu@&fRH-y2zUNVcS3`ROm@(_y`435~PCFF>o{Q z%#_op_jKQS^UkBkD#Nqv47ZZym^m_{5afZQp>P%%S&L?>40!A}Q%&JVF`;n%so%#B zG*fmRiXQ849<^}o^ZLg2>gK!iNuP1;0=o;EcW7_$ISSgW^)mbpO+ZMpQs<}oGSU3d zH}S%hAY6#@A_UJrIELma!v9h3e{m(u;+MXvpl$VNnXhR_&;2)Rju1^k>6tnk_Fu@f zc~7!Fh%VV`F z^qvL?@)o~hD$s$Qr#cj|>L7FkT87>os@<7hKhc$cg7X1LjA!ofSR9AZOpqc=y#G)( zFiMkBQ}=;oV6nBLq#B91Xm&UF&qyRG_6gG#o?62mG>nT=PZ(&@oSFGGwE&Zw4d5eW zd(tHo6!Jh{=K1yZJtwX{M;&_Lz|J2biRkttZhHIn!1;8>-+mt$;vj8ckUST~VQvF0 znVfrf?|LsS*&uQ`Tqoc8jFIV2B;s#v9rfMLFgV3Jg(N+-{e3Sd2YN-}g7zP)M@B}5 zlkVa}Z9?~tu8FzU+rT#Pl7Szk__0&FWiT9}6w*KYb~$y2Ai+RC|J98MC<3?$Ia47j zJ2Vyp(YR3<%)Le!GAEkXI}Uu&`V6I%cVO=bBp@=tgi$w#@J%L6!A2TVm!%r)_S|a% z2#jL8{P?-Eh7lY1cRdhs=SQ}WU{JXiI_i5)>Q-7T<_B8%LmyEvwaC1841D>;ffI=I zEv*lD_5x*1LPdpaM7~!7VOk^Kcbwnf{QeCv_`OI^jC_2%GL+Bh z7XGbUw}7I8?X);-x%jTB!Oq^kz1-0p&EW<*dSgorXGB6m_(|<@?*1okzR&iML`V$4 zMIZ8828;O~kQqcM%*x^jy|D8_9gt$@sgCpyAT5kh6S2d>d(DAjaGT!#ws^A&~0^QKj6Y(>Czh(5s_Z@3>7fc_w@78t*hkdP$y z&bAjC%bmXdu6meJ#*g@n{YU)5!om+AB?KMcRfplw!vZ$r4Fphbrhvf^>-W142i8Dx z0xAO-(K@@wSr4r8E?&GSDkg>n8!l}^oDhbfz)rheQE_%3Hukl%!DL|24448?4tM$t(OmFMbor!=jQL(|jcT-_=i zXgEm0ca^bSogeI-b7i~qh!|8Or?W0YSEU}NuC_jQUzt)GU065?W5mA>WcWxlzkW>$ zMlF>auXT5nlg@*UfRx4i(sru?Ae9Bd3R;Hw5eId3b&oxTZq`E)=aEX!WN5=kt={O) ziU|w~;&ESqPLiK^5;3ghyihX@3t&Mh=d4+*!zKwroakhDl2B(|L}uSj?T<*#E*ac$O@*jOt9Iq&z2-6iaIO~ zYoE3pP%$zw=`nH4po3o_0TW05?{PZXXidHY^W3!W6Evr^$mhr7ctXlZF7 z^^=9IYkz-#k=>nJadB}N1`wrRA9$X5A*dUAKB)r300Sq3ilCzmQ-{8@Y+GnZ2x%w{ zAIZ1PRZ<966phozPimDi6kP#V=&9kCFQ(p?JzH8?i7w{4R@^%F+3eZ*)YR0AJm6T| z4h^vol5F5P%36N}c)uQIt8=l;fG)t}`?vL&$L=r^espq@MJkkr#X%_kf^CmKENxuO ztG2ehfuI0 zMVz7G^{TsD6-2bJld0m{fsW7c?c0@1738#szSgV8MrjN>U|klNufLphL^v_KaSA zZ{H?U)eE5pCr$YVe*qk;OdK4to7aXR6t@HPeN2h|^mWCwygV?rT!wIihu$n`Jwptb zdDCH}Hiaj<>E+#L4@;;{n%%n|sL2A7W_$$9c{3 zZYvoepdmBB1>`|obgmPJl(e)g_$vqOW_wPwCyMPwk0luTi=|hCRF#z@afpZn zwq)kyxL%?e)lA@S-FmMKjBW}*sIvSi;U?Zo9j<{Qb5s6;O_&~^)*e$x->OyNq6B#x z9>xHCcUarv`ONPD6lXA4Y-wU>uLjO|%E}@z(!lo1M}-@@N=gwL&rCu=Y3*?jfH!hscxER7q&tDkDKHh3A9kc9XKmBi?pxPLt8^t`u{&Y|go@xl_}=q2O5} zHyBPU$mEG*GGnzT{t_Dy+&E!B*CF{QKR=Tk*bd-1J3B8ovnBKiM{@wpz>e4S?W2fu zvCk(uTY+{eXRVT_Ri>=}9Z18e0;5(i$As&IjX|00R;&|4!SxQ9?wLmN)gZM;UMhMm-A>|0T@d_In%;B&z>zuBP zp!UBRT#%+YL!Ai|Hxj5I8uWe#D&F9HqZqQcx!?@?84byJlhR3;nrnQu3+~h+2!bua z{ged-SMj&nv?W7cl@TC6SbOv1N3)K{epr)$*LzZJ{23{nfkh82aupr&LFs}5{Y^#+ zL(wKNw21E?m@5Su-`x9ahkN_;E7cj87NF~0^>E+jvauUYe<)rH(rAm@gJ z9LsYg3x#0fk^!ZG&ZKTHmSGRjRB1HwnRD@tdp^IQq_u$>35@o+vl%U1 zR4st6i+S-J$rrT}tdsiRn({3%Ik6Eu(E2KlAK7Sb3vjGgdhwTLHFn2oc+kPAuU$uY z?p&m0VgXY(2DYWiJ``Jd;3A{nk#rAj^OqenSD-^972B`sU=pQ4L~E9TZL8#$E!&}T zq|pq^y!q<@M_TLEEG6mlWi?^aWr2QvDV>uhyZ9R+TT(mIhI}Qn}~1)s54)$yakBa@{5x|7XkrfQ*M z5}zH+meBAt%f1%1g4`!l47z~xLO=gu!C59&E`WYlm00Q4zG}4C5CDD%G2M>w6E6PT zmJ9=UxnA(YUO+2I0EU%yDvn`>GIVs<7?15*J-o=H=-d|Co-?d04+6A7(TLDqrSKzVp=SfD;FEiKkzS>7)h_}=|} zzu;NlJ9-J)e65Uv6v|c4OBXL{p-P{PcqPf%IFZeR`Vb%#s11Z5FZaB>yb!j#_gh-U z`{N(94^=M^Rc3qbNjq?pwN6&{&hbggZ6M6oLMJ)eT@E^DcXYxVl%kpTFH~e-MyQKZ z{}0)-M@O0@;U1G7sUJEQ^=c9??``8-p7#2A4d&+NRZ_!#I#NlBe zwV((t+`u})^s}&5OkBS}IQkNq+gVxcI#D4Z{f;`dfjyv=hhM!&qne0nZ7U+^c6$R< z683zj*hR`s2M#O(FYXM6cs8E}EwG%rQ#?WEG~e{;@o$QYuE%T+Y6TC$Qv{RdF*Uaq zCz+%dV$muQH=G z+5G($dG7PTzj*fEJ$a0rv!fD&Ej{O*9_gKm_U1dqotRgy>>9w?2)^{Htc>Pm4ZFun z4{vXL@#pL-o9HF-PoFL>DY1rUAaHGOs0VdOP*qEh=72RG)4esuA>0)?I#5tr`M4>? z{Cxm#c`=RMqB&hkRaF$-j9Bs2q;0cV(rxnN$B(guK*t~QPv`glKnEI>BoF=FK7D?a z#&w9ZVK{s}?4A8+kuT!4t**M5v!h_2Et&p3Zr5SKxu=nQSewS~bL z+~#4>9jD31bG!e0*X$jvGx=i!$swu^V%XIn9MmF+|A3tTk$KN5qV9PL&7f%jo6yE# zof z^pU2#Ejl{1;5NOFu|b8DjKBeF(HQ?d6FcRnF+MUIWSJZF^zLG(Pjn?_mC3;h}R`xISs(Hx)s7JYT%ka)YX@B`t967@11V`$3mYPE7-t(j)(UsDnLXSjD>>L4T{;*CgAvNUMHW}u$KvrYuo{+_o?CbbZPMvKK%4=W%ar4(*dIt#|G zx~Tg|?!b*l4Jpsgrh+9aSAT+rhX_*)rs+d- zHadi?af&XR_dwSp7cfbbdoV=cA#!J}SbI&s>XJyP%TSPtWB9-+=f+FwZePrVm<4pg zKvmDMc&{7U{Bj0Adv}JEBmTI_Ou+l&)j(H(V!U2iK#f|)#y5nbkM-I^fx4x&RR;HI zXB+#~c8jQ*uGl>?fWttuu%xkN=i=Sw|w+1}S8yo5p8HBP`7b2g^sB(k^~^ae!9;DFR}AOe+R`R+t)_nT6R^-|;Wg(nUB8zIZ)G2zN%9Zttv-}Q`t3nZ^+$G_l_<+`#b}=MHyick^OxydVC(?&LEsCZ&zDS z-cWz&C^&$t?3$2dBJ7OCjB~E~5RVtk1q%k=xHiq!`z8<0f*X(yNCQ@7dwN*0bA~8U z=IsGUz`eUHv;F&53T_xbC{P-)W4=QdYc?$fqR-;u;{%^H#y&)mcCqKC)lP&>QB4`JEh7MR@MO-HlEYRxT z`^)5C_-xvM3t--{oSeD0>z(*n;^ImrRw1If00`O-xt8{J7<%PZFqb`vj?}%#XYGZ6 zS@pdfFgj*_tsAIvsZf_Ej00aS1@pmAv**3w1-bwg6P;=HkRw$#sd<^AU4|hQ-G6F2 zje+~xw$>vMvN@*5;bgzH zjE;^j#%MTz$3>Oa`-X}o2&SxehIhsQ1@VJYmSAyO#X2RNE_>nGvlk*SC!gL0Uw1Gg z3_%AU6Aele?o#)$7t8YbmMvS>($==G>TFe}W5bHhnMjcEdVNUUAMj|2wDi-jVMtX` zc13PCdQkst@*GZjo8QpTV9(;R)=u3vD*<4A+U;Y@?RPnT%#vpKcJJOD^`@g!!Jr=V z8tq;)_;HtiF?ygoaNM}D_IXudL=CE za8-KO!i}w_wYz`*)1c&0WYLJ&tpwtI@hokeZyZKb_rI<1|6UFH_USYMu@{4yXuD)R z3XGU4MX#m1+aWa?kw9Lmrjt{;)t!)R!Zl}-E> z?Ca}WW~zPP6JhKMWrGDmLRKrB>he6EFj9m)Pn@X}LT{4udY}?*L&NK}ZOVJT+;M7q zMq|+UX6-X685!P=jt(QqHc&41r-5(_whOJ?bKQTuT1~B<=+L9_Xd*MjzKB}p=lw>^ zupC2qhwC#0{#<53*pbCzRU%JGnQ-8X^ph7pBJPX=)H9NdF;whDlcMQ-OIokj^Nl?P z6cD8obsD_bCLmW_N^jT_Qlu?}X661|Jp)KALNhpi)utgFoynwX2d92RyFNz*pu98~JY;rS*pz~={odJcta`aN+GCw4WEw@QH^tfi%e zW-U!pa&xGbK-4}U+v-7P*&0oo(BLWnMYI=jVIZ7Yb9#&gLbm-+n!ETUUB?1|I& zk)1Gu`olt~`(Y9qIsWS9;;S7gLmwL%aNzu4p)Y07zrF81PO=u#X-7@#9C!=g(8p>we$mSnZt{W7o2gYn)Cz zg($zs{o9WSDcFBC?Ee@4$q*XgvOsFBAg&ROyoNd)_U|Jm#{?H9D1ZP3sS))1Kg!0S zkQR+UfG|r`=9+JNyA8g>+(b=dl#uXRGVWT2v6vjCfoBBr8Nb5djs=ksz^w0sqUVYx zX$J&Ia}xnX!V6AEY%pd8$!6AQ+Vm0o7M&N!kE9zkLOE1eTs#1;frf!lmNqsIaQDxp zW^r8mS;A!^6Wc5AG&r!ei!VqX7Y2gCE_FMIZoIT5nM@7Stsro~S$$}ITgxC5n z-gWnb!*vJ9zkswXGI? zsbP}HoHctkETyvAJ%lyc8A8z}HAwAHX#y!aWEsuR`6(&lNf=|m+YM~((r2^%@Mj>; zwzVE(Oo;k?p$C^%gR-VU_y9+pSsznHQ2yXS5LTeA5eHuB*&v%*ifOktXFtFB^Jqm<{V)Q7Aq z^CV{&)Bxn{sTDo-%h-=X!d2;*4K@LIRZ!95`nqBNv!tItGF*RSGKO<0D@*lw`M&dBav%AjSk% z|AWY2(C3bL+SkjAA-<=~BTcGq;Rr;fWM#GDU4Y$*t_q-n&JAqEBnBu88P!?7f)cz8 zO*L1i?Z7EoG&>8$zGxU5K7Rg<$gl{_nRA}}g?2Zx?B1wuuD|z&cps8?&ePJmbcyzM zPdfz4pCK%vi--4IA8UXK2_6KI&+tY|6x&el``YkiHB7HJqE;lY=Rl4WMcQZbk?v=~ zlLk(yrmtZjwxJ3l^41#=M^Yz$;+~ar=FG9e{0hwPW^PT6Q`;1vK3~G!L~jZCP|W6J zie(m&pd>OC6fhv$iw)UKHV}10BpkFhZHl^m`*xul$ipbJl44sSiE`LNNWyb+B_UZb zchw<7?>5U*-K$=PuHuK&LB(n#U@!Qmd~lwdQNoCCRm zy+~LBZOec&KuA(j5E#Q||9#%On1+jBM%q7rCisSpOz00qflHn<_{|^88rE35lV8G5 zBpy0<{rVj6FcJJF);1LK@!OOdr^LbO(JspgYH481!pEo;Yr&5l{ZuZ3(u|ax+#kqz z-~vn)lw|oKCfZUOp>bMr+YRM2no$K*JW{PdI1VrQ5Y!Ygso+i{V}q;#F9XJF$74#j zgMxypdhy6Y8Yn`EvbeOAyvO*jQVpiS<{PE$Nma_L`VIuR^Co6oMPc}6kQfk3i;P0< zs1gR%P|-uKETZ;G40^pN-b1Rh0JWZd*M$TYtecP6cQSMML&}D_JjgK9q!gy3h^+{? zGS&l0Hk!#In$9)B3qqWT;rMT>^eUPjk)BNPE(P^T#*-MtoxMnM#GnFd{Ep)N zlilex&7GaonWL_*C8+sKM&cu8O}ss7=LjL>F=u6yp@9=4{_lxF!X&3q75D%@I%j=H z+AgEz--0e&(1fATy^(C35W7>EA>LSqXeyDs6)i>ZWx^Wme?w>RlBD{D2=!AY?v6%d zBR_U91qc>_52q5NAIb&S9UqIYIV$B@xA_=hF@yOdaVJ5`= zL7Z~Y*hK!&+{~;Q{SwGh;fNQ(C~_Lh4K)q8n2O_*hOVGN()pM3i`vC}zFbwDJ!_VM z^{wRO|#}$>v+;q47^-GMx+3`wXD5PmSm?^(;RQ{<99ryyhO|tXhVq^kf zA!EzCxpKNwd`7uTEN(lS`c*0et*p$se{YaSdBPevHzfQgw zC5T+8D#z#kNDWplG5eCVQ#MKhWuv{ly~bS2nsp;R8}X!rsk3FGhrIr^hKMH47$>Z% zyTRqkz0$W0SrfJ5XVYm7kPFdW!C1TDhj9?{FcWoq)ZZs%op@1qdhEvnT&xh~Ot5*j z55k~{AQCBoldeK?wCY197SW?3?8~c9FCfrE2M2CxCg86 zOpEXwI>;wY(%%^Mo|`{9C{DH;6*mix>K6b*?rS&9zft9o%Cz?S-L+{`5kmZphx(!% z(}I*la(^f)W2LB5UB;{*<(H7}F;0I9OJ0RwhL)K!u1IUr{L_4pK|ua`0%;~Qy)e%H#|S5mVHSAw3ww@_o=D@LToX$$)zQ%rWz@LF zX6mo8xdNYM1uH9Zpa!=}n6jR+)g!j9FxxbwcxB;cUA?kVhy~2!ChIGtcnlw>!o(Wa z&g*3*wvle1Zz?AL{;)5|8o}^f3}5=pTyP1S(gtGAmEsAD0f{lzBrk~wJxu+SC=8*B zTNrZ1f#s`ve*P?_ca@Jg$x93jT5DeLmE=r#G@6)2 znFcu-qBA=AiMyL{3-dE#!%AY4>!kny6d76WzgIwhRO4-xQ!C`eQIv>xPMs+uV|!ajlke12(iwV&;(e^`-STQX6*%+) zY%Epe(HzkrScMmJn=l|(qYz0EF$YaJ1JO*ypN000ePvhWC=f*m^7_sNzb)Dm5V#D- zT^u3GKIhIs)Eb*n9Z%V42+%%nBHWPOg)q7Z8H%I7`}PAUNMj}w%Ul3bL}A3p-@%C$ rH{<`pk=FmlMgPmd1gr4>ef-erAkp*XeLJJW8GPw%($jjNX?6BL{lsuP literal 52165 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

*+q%(^06(swy;#<5fjwe*4}2AGt>V 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%0DKp>deeF0SB&#-YuB=;w@}Gq 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 diff --git a/docs/tutorials/ofdm.rst b/docs/tutorials/ofdm.rst index 3cd2442..410a5e8 100644 --- a/docs/tutorials/ofdm.rst +++ b/docs/tutorials/ofdm.rst @@ -90,9 +90,12 @@ of it, and ``info()`` returns what the channel is: powers_dB: [0.0, -1.0, -2.0, -3.0, -8.0, -17.2, -20.8] rms_delay_spread_ns: 43.12922598416199 coherence_bandwidth_Hz: 4637226.739785324 + rice_k_dB: None fs_Hz: 7680000.0 + f_doppler_Hz: 0.0 n_taps: 4 resolvable_delays_samples: [0, 1, 3] + resolvable_powers: [0.5765216771059146, 0.420805847284595, 0.00267247560949035] The profile has seven arrivals within 410 ns, but at :math:`f_s = 7.68` MHz the receiver can only distinguish **4 taps**: two echoes separated by less @@ -143,7 +146,7 @@ Results .. code:: - single carrier: SER 0.0117, 1829 ms + single carrier: SER 0.0117, 3669 ms .. image:: img/one_shot_ofdm_fig2.png :width: 100% @@ -153,7 +156,7 @@ Results On the left, the constellation has disappeared: each sample is a mixture of four consecutive symbols, and no decision region survives this. On the right, the equalizer has restored the sixteen clusters. Note the second number: -nearly two seconds for 1280 symbols. +more than three seconds for 1280 symbols. OFDM Communication Chain @@ -199,7 +202,7 @@ Results .. code:: - OFDM : SER 0.0406, 1.20 ms (1525 times faster) + OFDM : SER 0.0406, 1.00 ms (3670 times faster) .. image:: img/one_shot_ofdm_fig3.png :width: 100% @@ -218,21 +221,21 @@ range of SNR values: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 101-131 + :lines: 101-128 .. code:: SER SNR [dB] single carrier OFDM -------------------------------- - 6 0.62734 0.5234 - 8 0.52695 0.3953 - 10 0.42969 0.2973 - 12 0.27070 0.1980 - 14 0.15117 0.1426 - 16 0.06562 0.0672 - 18 0.01523 0.0383 - 20 0.00195 0.0195 + 6 0.62578 0.5117 + 8 0.53750 0.3980 + 10 0.40664 0.3172 + 12 0.28164 0.1996 + 14 0.16875 0.1336 + 16 0.06172 0.0750 + 18 0.01641 0.0410 + 20 0.00352 0.0223 .. image:: img/one_shot_ofdm_fig4.png :width: 100% @@ -265,17 +268,17 @@ block length grows: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 132-168 + :lines: 129-165 .. code:: receiver runtime [ms], and their ratio block length N single carrier OFDM ratio --------------------------------------------- - 128 8.74 0.613 14.2 - 256 32.64 0.644 50.7 - 512 209.35 0.999 209.5 - 1024 1685.07 1.123 1500.4 + 128 7.34 0.568 12.9 + 256 34.91 0.567 61.6 + 512 188.09 0.793 237.1 + 1024 1377.50 0.862 1598.3 .. image:: img/one_shot_ofdm_fig5.png :width: 100% diff --git a/examples/ofdm/one_shot_ofdm.py b/examples/ofdm/one_shot_ofdm.py index 4dee772..81c0c58 100644 --- a/examples/ofdm/one_shot_ofdm.py +++ b/examples/ofdm/one_shot_ofdm.py @@ -99,25 +99,22 @@ plt.savefig(f"{img_dir}/one_shot_ofdm_fig3.png") # --- error rate ------------------------------------------------------ -# One operating point is not a conclusion. Each sweep is repeated over -# independent noise seeds because 1280 symbols only resolve down to -# 8e-4; the channel is the same throughout, by construction. +# One operating point is not a conclusion, and 1280 symbols only +# resolve down to 8e-4. Instead of a Python loop over repeated runs, +# the stimulus grows a leading batch axis (D51): every block broadcasts +# over it, the noise is drawn independently per trial, and compute_ser +# pools the n_trials frames of each sweep point -- exactly the mean of +# the per-trial rates. The channel stays the same throughout, by +# construction. snr_list = np.arange(6, 22, 2) n_trials = 2 -# --- metrics, pre-allocated ------------------------------------------ -measured = {} -for name in ("single carrier", "OFDM"): - measured[name] = np.zeros(len(snr_list)) - # --- simulation loop ------------------------------------------------- +measured = {} for name, chain in (("single carrier", sc_chain), ("OFDM", ofdm_chain)): - runs = np.zeros((n_trials, len(snr_list))) - for trial in range(n_trials): - runs[trial] = monte_carlo(chain, "data_rx.snr_dB", snr_list, - {"ser": compute_ser}, N, - reference="data_tx", seed=trial + 1)["ser"] - measured[name] = np.mean(runs, axis=0) + measured[name] = monte_carlo(chain, "data_rx.snr_dB", snr_list, + {"ser": compute_ser}, (n_trials, N), + reference="data_tx", seed=1)["ser"] # --- results: table and figure --------------------------------------- diff --git a/src/comnumpy/core/channels.py b/src/comnumpy/core/channels.py index 1d853f5..b31c4a0 100644 --- a/src/comnumpy/core/channels.py +++ b/src/comnumpy/core/channels.py @@ -127,9 +127,9 @@ class FIRChannel(Processor): y[n] = \sum_{l=0}^{L-1} h[l] \, x[n-l] - Axes: *declared axis* -- operates on a 1D serial signal ``(N,)`` + Axes: *axis -1* -- the convolution runs along the last axis (``scipy.signal.convolve`` semantics; output length depends on - ``mode``). + ``mode``); leading axes are batch, every row through the same taps. Parameters ---------- @@ -159,7 +159,10 @@ class FIRChannel(Processor): def forward(self, x: np.ndarray) -> np.ndarray: from scipy import signal # local import (D36) - y = signal.convolve(x, self.h, mode=self.mode) + # scipy wants kernel and signal of equal rank: size-1 leading + # axes keep those dimensions untouched in every mode + h = np.reshape(self.h, (1,) * (np.ndim(x) - 1) + (-1,)) + y = signal.convolve(x, h, mode=self.mode) return y def info(self) -> dict[str, Any]: diff --git a/src/comnumpy/core/compensators.py b/src/comnumpy/core/compensators.py index 89ec62b..5a036d1 100644 --- a/src/comnumpy/core/compensators.py +++ b/src/comnumpy/core/compensators.py @@ -859,8 +859,9 @@ class LinearEqualizer(Processor): :math:`\mathbb{E}[|s[n]|^2] = 1`). The two coincide when :math:`\sigma^2 = 0`. - Axes: *declared axis* -- expects a 1D serial signal ``(N,)`` and - returns ``(N-L+1,)``. + Axes: *axis -1* -- expects a serial signal ``(..., N)`` and returns + ``(..., N-L+1)``; leading axes are batch (independent frames, one + equalizer matrix). Parameters ---------- @@ -909,12 +910,15 @@ def forward(self, X: np.ndarray) -> np.ndarray: X = np.asarray(X).astype(complex) H = self.get_H(X.shape[-1]) + # the estimator matrix acts on the last axis; the trailing + # length-1 axis makes matmul treat it as a column, so leading + # axes are batch (independent frames equalized in one call) match self.method: case "zf": - Y = zf_estimator(X, H) + Y = zf_estimator(X[..., None], H) case "mmse": - Y = mmse_estimator(X, H, self.sigma2) - return Y + Y = mmse_estimator(X[..., None], H, self.sigma2) + return Y[..., 0] @dataclass(slots=True) diff --git a/src/comnumpy/core/metrics.py b/src/comnumpy/core/metrics.py index 7447890..9455a05 100644 --- a/src/comnumpy/core/metrics.py +++ b/src/comnumpy/core/metrics.py @@ -602,8 +602,11 @@ def compute_ser(X_target: np.ndarray, X_detected: np.ndarray, Axes: *declared axis* -- errors are counted along ``axis``, which must then hold the symbols; with ``axis=None`` (default) both arrays are - raveled and truncated to their common length - :math:`N = \min(N_{\text{target}}, N_{\text{detected}})`. + truncated to their common length + :math:`N = \min(N_{\text{target}}, N_{\text{detected}})` **along the + last axis**, then every element is pooled -- so a batch of frames + stays aligned row by row, and the pooled rate is the mean of the + per-row rates. Parameters ---------- @@ -638,11 +641,14 @@ def compute_ser(X_target: np.ndarray, X_detected: np.ndarray, [0.25 0.25] """ if axis is None: - x_target = np.ravel(X_target) - x_detected = np.ravel(X_detected) - N = min(len(x_detected), len(x_target)) - nb_errors = np.count_nonzero(x_target[:N] - x_detected[:N]) - return nb_errors / N + x_target = np.asarray(X_target) + x_detected = np.asarray(X_detected) + # a length mismatch is truncated along the *last* axis before + # anything is pooled: raveling first would misalign every row + # of a batch after the first -- a silent offset, not an error + N = min(x_target.shape[-1], x_detected.shape[-1]) + difference = x_target[..., :N] - x_detected[..., :N] + return np.count_nonzero(difference) / difference.size else: N = X_target.shape[axis] nb_errors = np.count_nonzero(X_target - X_detected, axis=axis) @@ -708,8 +714,13 @@ def compute_ber(X_target: np.ndarray, X_detected: np.ndarray, width: int, 0.25 """ if axis is None: - s_target = sym_2_bin(np.ravel(X_target), width) - s_detected = sym_2_bin(np.ravel(X_detected), width) + x_target = np.asarray(X_target) + x_detected = np.asarray(X_detected) + # truncated along the last axis before raveling, like + # compute_ser: a batch stays aligned row by row + N = min(x_target.shape[-1], x_detected.shape[-1]) + s_target = sym_2_bin(np.ravel(x_target[..., :N]), width) + s_detected = sym_2_bin(np.ravel(x_detected[..., :N]), width) nb_errors = np.count_nonzero(s_target - s_detected) return nb_errors / len(s_detected) else: diff --git a/src/comnumpy/mimo/compensators.py b/src/comnumpy/mimo/compensators.py index e830872..ce7de2a 100644 --- a/src/comnumpy/mimo/compensators.py +++ b/src/comnumpy/mimo/compensators.py @@ -67,9 +67,14 @@ class BlindDualMIMOCompensator(Processor): takes it to within a tenth of the floor, and DD closes what is left. - Axes: *declared axis* -- expects the dual-polarization layout - ``(2, N)``, produces ``(2, N // oversampling)`` (one output sample - per ``oversampling`` input samples: fractionally spaced equalizer). + Axes: *polarization pair* -- expects ``(..., 2, N)``, produces + ``(..., 2, N // oversampling)`` (one output sample per + ``oversampling`` input samples: fractionally spaced equalizer). + Leading axes are batch, and the butterfly is a per-pair algorithm: + each pair gets its **own** equalizer state, adapted independently. + After a batched pass ``H_`` carries the batch axes in front, + ``(..., 2, 2(2L+1))``, so a further ``partial_fit`` resumes each + pair from its own state. **Delay.** The centre tap of the initial equalizer sits :math:`L` input samples back, so output sample :math:`k` is aligned with @@ -267,10 +272,45 @@ def _apply_frozen(self, X: np.ndarray, Y: np.ndarray) -> np.ndarray: return Y def forward(self, X: np.ndarray) -> np.ndarray: - - if X.shape[0] != 2: - raise ValueError(f"Blind Dual MIMO Compensator only works for dual polarization signals (X shape={X.shape})") - + from comnumpy.exceptions import ShapeError # local import (D36) + if X.ndim < 2 or X.shape[-2] != 2: + raise ShapeError( + f"BlindDualMIMOCompensator expects a polarization pair " + f"(..., 2, N), got shape {X.shape}") + if X.ndim == 2: + return self._forward_pair(X) + + # batched: one independent equalizer per leading index -- the + # butterfly is a per-pair algorithm, so its state cannot be + # shared across trials. After the pass, H_ carries the batch + # axes in front, and a further partial_fit resumes each pair + # from its own state. + assert self.H_ is not None # initialize_H ran in __post_init__ + batch_shape = X.shape[:-2] + if self.H_.ndim == 2: + initial = np.broadcast_to( + self.H_, batch_shape + self.H_.shape).copy() + elif self.H_.shape[:-2] == batch_shape: + initial = self.H_ + else: + raise ShapeError( + f"the equalizer state H_ carries batch shape " + f"{self.H_.shape[:-2]} from a previous pass, but the " + f"input carries {batch_shape} -- call initialize_H() to " + f"restart from the identity equalizer") + states = np.empty_like(initial) + outputs = np.empty( + batch_shape + (2, X.shape[-1] // self.oversampling), + dtype=complex) + for index in np.ndindex(*batch_shape): + self.H_ = initial[index].copy() + outputs[index] = self._forward_pair(X[index]) + states[index] = self.H_ + self.H_ = states + return outputs + + def _forward_pair(self, X: np.ndarray) -> np.ndarray: + """One adaptation pass over a single ``(2, N)`` pair.""" L = self.L os = self.oversampling M, N = X.shape diff --git a/src/comnumpy/optical/channels.py b/src/comnumpy/optical/channels.py index abaa86f..9e8f81f 100644 --- a/src/comnumpy/optical/channels.py +++ b/src/comnumpy/optical/channels.py @@ -1,6 +1,6 @@ import numpy as np from dataclasses import dataclass, field -from typing import Optional +from typing import Literal, Optional from comnumpy.core import Processor from .utils import apply_chromatic_dispersion, apply_kerr_nonlinearity, compute_beta2 from .constants import CD_COEFFICIENT, SPEED_OF_LIGHT, WAVELENGTH, KERR_COEFFICIENT @@ -26,15 +26,27 @@ class PhaseNoise(Processor): the samples). The magnitude :math:`|y[n]| = |x[n]|` is preserved. Axes: *axis -1* -- the phase random walk accumulates along the - samples. Leading axes share the **same** walk: the phase comes from - one laser, so the two rows of a polarization pair ``(2, N)`` see the - same :math:`\phi[n]`. + samples. What shares one walk is declared by ``per``, which names + the *event* -- the slice of the array that sees one laser: + + - ``"pair"`` (default): one walk per trailing ``(2, N)`` block -- + the two rows of a polarization pair come from one laser, and + every leading axis is batch: independent draws per trial. A 2-D + or deeper input whose axis -2 is not 2 is refused, because it + cannot be read both ways: use ``"row"`` for independent rows or + ``"signal"`` for one shared walk. + - ``"row"``: one independent walk per 1-D row. + - ``"signal"``: one walk broadcast over the whole array. + + A 1-D input sees one walk under every setting. Parameters ---------- sigma2 : float Variance :math:`\sigma^2` of the per-sample phase increments, in rad^2. + per : {"pair", "row", "signal"}, optional, keyword-only + The event that shares one laser. Default is ``"pair"``. seed : int, optional, keyword-only Local RNG seed. name : str, optional, keyword-only @@ -55,6 +67,8 @@ class PhaseNoise(Processor): [1. 1. 1.] """ sigma2: float + per: Literal["pair", "row", "signal"] = field(default="pair", + kw_only=True) seed: Optional[int] = field(default=None, kw_only=True) name: str = field(default="phase noise", kw_only=True) # internal state (declared for slots, D40a) @@ -64,12 +78,30 @@ class PhaseNoise(Processor): def __post_init__(self) -> None: self.rng = np.random.default_rng(self.seed) + def prepare(self, x: np.ndarray) -> None: + from comnumpy.exceptions import ShapeError # local import (D36) + if self.per == "pair" and np.ndim(x) >= 2 and np.shape(x)[-2] != 2: + raise ShapeError( + f"PhaseNoise(per='pair') expects a polarization pair " + f"(..., 2, N), got shape {np.shape(x)} -- an axis -2 of " + f"size {np.shape(x)[-2]} cannot be read as a pair. Use " + f"per='row' for one independent laser per row, or " + f"per='signal' for one walk shared by the whole array.") + def noise_rvs(self, X: np.ndarray) -> np.ndarray: - """Draw the Wiener phase increment for a signal of the length of X.""" + """Draw one Wiener walk per event declared by ``per``.""" assert self.rng is not None # set in __post_init__ + n = np.shape(X)[-1] + if self.per == "signal" or np.ndim(X) <= 1: + shape: tuple[int, ...] = (n,) + elif self.per == "pair": + # one walk per trailing (2, N) block, broadcast over the pair + shape = np.shape(X)[:-2] + (1, n) + else: # "row" + shape = np.shape(X) noise = self.rng.normal(loc=0, scale=np.sqrt(self.sigma2), - size=np.shape(X)[-1]) - self._b = np.cumsum(noise) + size=shape) + self._b = np.cumsum(noise, axis=-1) return self._b def forward(self, x: np.ndarray) -> np.ndarray: diff --git a/tests/core/test_batch_axes.py b/tests/core/test_batch_axes.py new file mode 100644 index 0000000..8b456a7 --- /dev/null +++ b/tests/core/test_batch_axes.py @@ -0,0 +1,161 @@ +"""The batch contract, block by block. + +Leading axes ahead of a block's event axes are batch axes: independent +trials. The contract has three families, and each family has its own +failure mode, so each gets its own lock: + +* a **deterministic** block broadcasts its one configuration over the + batch -- row ``i`` of a batched call must equal the block applied to + row ``i`` alone; +* a **stochastic** block draws independently per event -- trials must + not share a realization, and what one event *is* must be declared; +* an **adaptive** block carries independent state per event -- one + equalizer per pair, never one equalizer smeared over the batch. +""" +import unittest + +import numpy as np + +from comnumpy.core.channels import AWGN, FIRChannel +from comnumpy.core.compensators import LinearEqualizer +from comnumpy.core.mappers import SymbolDemapper, SymbolMapper +from comnumpy.core.utils import Constellation, get_alphabet +from comnumpy.exceptions import ShapeError +from comnumpy.mimo.compensators import BlindDualMIMOCompensator +from comnumpy.ofdm.chains import OFDMReceiver, OFDMTransmitter +from comnumpy.optical.channels import PhaseNoise + + +class TestDeterministicBlocksBroadcast(unittest.TestCase): + """Row i of a batched call equals the block applied to row i.""" + + def setUp(self): + rng = np.random.default_rng(0) + self.x = (rng.standard_normal((3, 64)) + + 1j * rng.standard_normal((3, 64))) + self.h = np.array([1.0, 0.4 + 0.2j, 0.1]) + + def test_fir_channel_all_modes(self): + for mode in ("full", "same", "valid"): + with self.subTest(mode=mode): + y = FIRChannel(self.h, mode=mode)(self.x) + row = FIRChannel(self.h, mode=mode)(self.x[1]) + self.assertEqual(y.shape[:-1], (3,)) + np.testing.assert_allclose(y[1], row) + + def test_linear_equalizer_both_methods(self): + x = FIRChannel(self.h)(self.x) + for method in ("zf", "mmse"): + with self.subTest(method=method): + y = LinearEqualizer(self.h, method=method, sigma2=0.1)(x) + row = LinearEqualizer(self.h, method=method, + sigma2=0.1)(x[1]) + np.testing.assert_allclose(y[1], row) + + def test_mapper_demapper_and_ofdm_chains(self): + constellation = Constellation("QAM", 16) + rng = np.random.default_rng(1) + indices = rng.integers(0, 16, (3, 64)) + symbols = SymbolMapper(constellation)(indices) + waveform = OFDMTransmitter(16, 4)(symbols) + received = OFDMReceiver(16, 4, h=self.h)(waveform) + detected = SymbolDemapper(constellation)(received) + for name, batched, row in ( + ("mapper", symbols, SymbolMapper(constellation)(indices[1])), + ("tx", waveform, OFDMTransmitter(16, 4)(symbols[1])), + ("rx", received, OFDMReceiver(16, 4, h=self.h)(waveform[1])), + ("demapper", detected, + SymbolDemapper(constellation)(received[1]))): + with self.subTest(block=name): + np.testing.assert_allclose(batched[1], row) + + +class TestStochasticBlocksDrawIndependently(unittest.TestCase): + + def test_awgn_noise_differs_across_the_batch(self): + x = np.zeros((2, 4096), dtype=complex) + y = AWGN(sigma2=1.0, seed=0)(x) + self.assertFalse(np.allclose(y[0], y[1])) + + def test_one_laser_per_pair_independent_across_trials(self): + """per='pair': the two rows of a pair share the walk, and two + trials of a batch do not.""" + x = np.ones((3, 2, 512), dtype=complex) + y = PhaseNoise(1e-3, seed=0)(x) + phase = np.unwrap(np.angle(y), axis=-1) + np.testing.assert_allclose(phase[0, 0], phase[0, 1]) + self.assertFalse(np.allclose(phase[0, 0], phase[1, 0])) + + def test_a_bare_pair_still_shares_one_walk(self): + x = np.ones((2, 512), dtype=complex) + y = PhaseNoise(1e-3, seed=0)(x) + np.testing.assert_allclose(np.angle(y[0]), np.angle(y[1])) + + def test_the_ambiguous_shape_is_refused(self): + """(n, N) with n != 2 is not a pair and not declared batch: + the block refuses it and names both resolutions.""" + with self.assertRaises(ShapeError): + PhaseNoise(1e-3, seed=0)(np.ones((3, 64), dtype=complex)) + + def test_per_row_and_per_signal_resolve_it(self): + x = np.ones((3, 512), dtype=complex) + rows = PhaseNoise(1e-3, per="row", seed=0)(x) + self.assertFalse(np.allclose(np.angle(rows[0]), np.angle(rows[1]))) + shared = PhaseNoise(1e-3, per="signal", seed=0)(x) + np.testing.assert_allclose(np.angle(shared[0]), np.angle(shared[1])) + + +class TestAdaptiveBlocksCarryStatePerEvent(unittest.TestCase): + + def frames(self, n_trials=3, n=400, seed=0): + alphabet = np.asarray(get_alphabet("PSK", 4)) + rng = np.random.default_rng(seed) + s = alphabet[rng.integers(0, 4, (n_trials, 2, n))] + # a fixed rotation mixes the two polarizations of every trial + theta = 0.4 + rotation = np.array([[np.cos(theta), -np.sin(theta)], + [np.sin(theta), np.cos(theta)]]) + return alphabet, s, np.einsum("ij,kjn->kin", rotation, s) + + def test_each_pair_gets_its_own_equalizer(self): + """Pair i of a batched pass equals a fresh compensator run on + pair i alone -- the state is per event, not smeared.""" + alphabet, _, x = self.frames() + compensator = BlindDualMIMOCompensator(L=2, alphabet=alphabet, + mu=1e-3) + y = compensator(x) + assert compensator.H_ is not None + self.assertEqual(compensator.H_.shape, (3, 2, 2 * (2 * 2 + 1))) + alone = BlindDualMIMOCompensator(L=2, alphabet=alphabet, + mu=1e-3)(x[1]) + np.testing.assert_allclose(y[1], alone) + + def test_partial_fit_resumes_each_pair_from_its_own_state(self): + alphabet, _, x = self.frames() + batched = BlindDualMIMOCompensator(L=2, alphabet=alphabet, mu=1e-3) + batched(x) + batched(x) + alone = BlindDualMIMOCompensator(L=2, alphabet=alphabet, mu=1e-3) + alone(x[1]) + alone(x[1]) + assert batched.H_ is not None and alone.H_ is not None + np.testing.assert_allclose(batched.H_[1], alone.H_) + + def test_a_stale_batch_state_is_refused(self): + alphabet, _, x = self.frames(n_trials=3) + compensator = BlindDualMIMOCompensator(L=2, alphabet=alphabet, + mu=1e-3) + compensator(x) + _, _, other = self.frames(n_trials=4, seed=1) + with self.assertRaises(ShapeError): + compensator(other) + + def test_one_polarization_is_refused(self): + alphabet = np.asarray(get_alphabet("PSK", 4)) + compensator = BlindDualMIMOCompensator(L=2, alphabet=alphabet) + with self.assertRaises(ShapeError): + compensator(np.ones(64, dtype=complex)) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/mimo/test_blind_equalizer.py b/tests/mimo/test_blind_equalizer.py index d52af20..ac09a73 100644 --- a/tests/mimo/test_blind_equalizer.py +++ b/tests/mimo/test_blind_equalizer.py @@ -155,7 +155,7 @@ def test_a_single_polarization_is_refused(self): with self.assertRaises(ValueError) as ctx: BlindDualMIMOCompensator(alphabet=alphabet())(np.zeros((1, 100), dtype=complex)) - self.assertIn("dual polarization", str(ctx.exception)) + self.assertIn("polarization pair", str(ctx.exception)) def test_an_unknown_mode_says_which_ones_exist(self): equalizer = BlindDualMIMOCompensator(L=2, alphabet=alphabet()) From 5554a6ed6433c4c322832b6e53765afbce685da5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 22:05:07 +0000 Subject: [PATCH 3/5] Hold every block to the batch contract, and measure what batching buys A sweep of the block catalogue against the D51 contract found four more deterministic blocks that crashed on a batch; all now broadcast over leading axes. BWFilter's 1-D guard was refusing what already worked -- the FFT mask acts on the last axis. CFO read len(x), which on a batch is the number of trials, as the signal length. Delay sliced and padded axis 0. Both chromatic-dispersion FIR compensators get the same kernel-rank fix as FIRChannel. BlindCFOCompensator keeps its documented event -- one oscillator per signal or per polarization pair (2, N), estimated jointly, as test_estimand_scope pins -- and now refuses a wider batch instead of silently smearing one scalar estimate over independent trials. tests/core/test_batch_axes.py locks each of these, and the data-aided estimators' existing refusals already conform. What batching buys is now measured, not asserted, and the CHANGELOG says all three numbers: x4.1 on the single-carrier chain whose block ZF equalizer rebuilds its pseudo-inverse on every call, x2.2 on the OFDM chain over 16 trials, and x0.5 -- slower -- on a plain AWGN chain where Python overhead was never the cost. Batch for correctness and to amortize per-call operator builds, not as a blanket speed knob. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 19 ++++++++++++++ src/comnumpy/core/compensators.py | 13 ++++++++++ src/comnumpy/core/filters.py | 10 +++----- src/comnumpy/core/impairments.py | 17 ++++++------- src/comnumpy/optical/compensators.py | 20 ++++++++++----- tests/core/test_batch_axes.py | 38 ++++++++++++++++++++++++++++ 6 files changed, 96 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08f9c56..6d90666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,25 @@ resolutions named); adaptive blocks carry independent state per event (`BlindDualMIMOCompensator` on `(..., 2, N)` adapts one butterfly per pair and exposes `H_` with the batch axes in front). +A sweep of the block catalogue then held every block to the contract. +Four more deterministic blocks crashed on a batch and now broadcast: +`BWFilter` (its 1-D guard was already unnecessary -- the FFT mask acts +on the last axis), `CFO` (it read `len(x)`, i.e. the *batch* size, as +the signal length), `Delay`, and both chromatic-dispersion FIR +compensators (the same scipy kernel-rank fix as `FIRChannel`). +`BlindCFOCompensator` keeps its documented event -- one oscillator per +signal or per polarization pair `(2, N)`, estimated jointly +(`test_estimand_scope`) -- and now *refuses* a wider batch instead of +silently smearing one scalar estimate over independent trials. + +What batching buys was measured, not asserted: x4.1 on the +single-carrier chain whose block ZF equalizer rebuilds its +pseudo-inverse per call (4 trials amortize it to one build per sweep +point), x2.2 on the OFDM chain (16 trials), and **x0.5 -- slower --** +on a plain AWGN chain, where Python overhead was never the cost and +the batch only buys bigger temporaries. Batch for correctness and for +amortizing per-call operator builds; not as a blanket speed knob. + Two silent traps died on the way. `compute_ser`/`compute_ber` with `axis=None` used to ravel *before* truncating to the common length, so a batch whose rows carried a tail (an OFDM frame after a `full` diff --git a/src/comnumpy/core/compensators.py b/src/comnumpy/core/compensators.py index 5a036d1..027d5c1 100644 --- a/src/comnumpy/core/compensators.py +++ b/src/comnumpy/core/compensators.py @@ -623,6 +623,19 @@ def __post_init__(self): self.grid_search_array = np.arange(self.grid_search_tuple[0], self.grid_search_tuple[1], self.grid_search_tuple[2]) self.history = [] + def prepare(self, x: np.ndarray) -> None: + from comnumpy.exceptions import ShapeError # local import (D36) + # the event is the polarization pair (see test_estimand_scope): + # one oscillator, ONE w0_ estimated jointly over (2, N). A wider + # leading shape is a batch of independent trials, which a single + # scalar estimate would smear silently (D51) -- refused, with + # the loop named. + if np.ndim(x) > 2 or (np.ndim(x) == 2 and np.shape(x)[-2] != 2): + raise ShapeError( + f"BlindCFOCompensator estimates one CFO per signal or " + f"per polarization pair (2, N), got shape {np.shape(x)} " + f"-- loop over the batch, one compensator per trial.") + def loss(self, x: np.ndarray, w: float) -> float: N = x.shape[-1] x4 = x**4 diff --git a/src/comnumpy/core/filters.py b/src/comnumpy/core/filters.py index e4f3550..428f542 100644 --- a/src/comnumpy/core/filters.py +++ b/src/comnumpy/core/filters.py @@ -244,8 +244,8 @@ class BWFilter(Processor): operation is a **circular** convolution with a periodic sinc of length :math:`N`, not a linear one. - Axes: *axis -1* -- expects a 1D signal ``(N,)``; multi-dimensional - inputs are rejected. + Axes: *axis -1* -- the FFT mask acts on the last axis; leading + axes are batch. Parameters ---------- @@ -289,12 +289,10 @@ def __post_init__(self) -> None: def forward(self, x: np.ndarray) -> np.ndarray: - if x.ndim > 1: - raise NotImplementedError("BW Filter: only 1D signals are supported.") - from comnumpy._backend import fft, ifft, fftfreq # local import (D36), cupy-compatible (D3) - NFFT = len(x) + # the FFT and the mask act on axis -1; leading axes are batch + NFFT = x.shape[-1] w = fftfreq(NFFT, d=1, like=x) # wn is normalized to Nyquist (= 1/2 cycle/sample), hence the /2 H = (abs(w) <= self.wn / 2).astype(float) diff --git a/src/comnumpy/core/impairments.py b/src/comnumpy/core/impairments.py index a80b4db..94afa37 100644 --- a/src/comnumpy/core/impairments.py +++ b/src/comnumpy/core/impairments.py @@ -67,8 +67,8 @@ class CFO(Processor): where :math:`\omega_0` is the normalized carrier frequency offset in rad/sample. - Axes: *axis -1* -- expects (N,); the time index :math:`n` runs along a - one-dimensional input. + Axes: *axis -1* -- the time index :math:`n` runs along the last + axis; leading axes are batch, every row sees the same offset. Parameters ---------- @@ -94,8 +94,7 @@ class CFO(Processor): name: str = field(default="cfo_impairment", kw_only=True) def forward(self, x: np.ndarray) -> np.ndarray: - N = len(x) - n_vect = np.arange(N) + n_vect = np.arange(x.shape[-1]) y = x * np.exp(1j*self.cfo*n_vect) return y @@ -117,8 +116,8 @@ class Delay(Processor): keep the input length :math:`N`; otherwise the output has length :math:`N - \tau`. - Axes: *axis -1* -- expects (N,); samples are dropped along a - one-dimensional input. + Axes: *axis -1* -- samples are dropped along the last axis; + leading axes are batch. Parameters ---------- @@ -156,10 +155,10 @@ def __post_init__(self): def forward(self, x: np.ndarray) -> np.ndarray: - x_delayed = x[self.tau:] + x_delayed = x[..., self.tau:] if self.pad_zeros: - y = np.zeros(len(x)) - y[:len(x_delayed)] = x_delayed + y = np.zeros(x.shape, dtype=x.dtype) + y[..., :x_delayed.shape[-1]] = x_delayed else: y = x_delayed diff --git a/src/comnumpy/optical/compensators.py b/src/comnumpy/optical/compensators.py index 7b849d3..79b236b 100644 --- a/src/comnumpy/optical/compensators.py +++ b/src/comnumpy/optical/compensators.py @@ -64,8 +64,9 @@ class ChromaticDispersionFIRCompensator(Processor): to s^2/km (factor :math:`10^{-24}`), :math:`z` is in km and :math:`f_s` in Hz, which makes :math:`K` dimensionless. - Axes: *declared axis* -- operates on a 1D serial signal ``(N_x,)`` - (``scipy.signal.convolve`` in ``"full"`` mode). + Axes: *axis -1* -- the convolution runs along the last axis + (``scipy.signal.convolve`` in ``"full"`` mode); leading axes are + batch, every row through the same taps. Parameters ---------- @@ -134,7 +135,11 @@ def __post_init__(self) -> None: self.K = K def forward(self, x: np.ndarray) -> np.ndarray: - y = signal.convolve(x, self.h, mode='full') + assert self.h is not None # set in __post_init__ + # scipy wants kernel and signal of equal rank: size-1 leading + # axes make the convolution run along axis -1, batch in front + h = np.reshape(self.h, (1,) * (np.ndim(x) - 1) + (-1,)) + y = signal.convolve(x, h, mode='full') return y @@ -321,8 +326,9 @@ class ChromaticDispersionLSFIRCompensator(Processor): s^2/km, :math:`z` in km and :math:`f_s` in Hz, so that :math:`K` is dimensionless. - Axes: *declared axis* -- operates on a 1D serial signal ``(N_x,)`` - (``scipy.signal.convolve`` in ``"full"`` mode). + Axes: *axis -1* -- the convolution runs along the last axis + (``scipy.signal.convolve`` in ``"full"`` mode); leading axes are + batch, every row through the same taps. Parameters ---------- @@ -433,4 +439,6 @@ def __post_init__(self) -> None: self.K = K def forward(self, x: np.ndarray) -> np.ndarray: - return signal.convolve(x, self.h) + assert self.h is not None # set in __post_init__ + h = np.reshape(self.h, (1,) * (np.ndim(x) - 1) + (-1,)) + return signal.convolve(x, h) diff --git a/tests/core/test_batch_axes.py b/tests/core/test_batch_axes.py index 8b456a7..91935bc 100644 --- a/tests/core/test_batch_axes.py +++ b/tests/core/test_batch_axes.py @@ -52,6 +52,36 @@ def test_linear_equalizer_both_methods(self): sigma2=0.1)(x[1]) np.testing.assert_allclose(y[1], row) + def test_filters_impairments_and_cd_compensators(self): + from comnumpy.core.filters import BWFilter, SRRCFilter + from comnumpy.core.impairments import CFO, Delay, IQImbalance + from comnumpy.core.processors import Downsampler, Upsampler + from comnumpy.optical.channels import ChromaticDispersion + from comnumpy.optical.compensators import ( + ChromaticDispersionFIRCompensator, + ChromaticDispersionLSFIRCompensator) + blocks = ( + ("Upsampler", lambda: Upsampler(2)), + ("Downsampler", lambda: Downsampler(2)), + ("SRRCFilter", lambda: SRRCFilter(0.25, 2, N_h=16)), + ("BWFilter", lambda: BWFilter(0.3)), + ("CFO", lambda: CFO(1e-3)), + ("Delay", lambda: Delay(3)), + ("IQImbalance", lambda: IQImbalance(1.0, 0.1)), + ("ChromaticDispersion", + lambda: ChromaticDispersion(1000, fs=32e9)), + ("CD FIR", + lambda: ChromaticDispersionFIRCompensator(1000, fs=32e9)), + ("CD LS FIR", + lambda: ChromaticDispersionLSFIRCompensator( + 1000, 15, fs=32e9, w_vect=[-np.pi, np.pi])), + ) + for name, factory in blocks: + with self.subTest(block=name): + batched = factory()(self.x) + row = factory()(self.x[1]) + np.testing.assert_allclose(batched[1], row) + def test_mapper_demapper_and_ofdm_chains(self): constellation = Constellation("QAM", 16) rng = np.random.default_rng(1) @@ -156,6 +186,14 @@ def test_one_polarization_is_refused(self): with self.assertRaises(ShapeError): compensator(np.ones(64, dtype=complex)) + def test_a_scalar_estimator_refuses_the_batch(self): + """BlindCFOCompensator optimizes ONE w0_ over the whole array: + on a batch that would smear a single estimate over independent + trials, so the batch is refused rather than misread.""" + from comnumpy.core.compensators import BlindCFOCompensator + with self.assertRaises(ShapeError): + BlindCFOCompensator()(np.ones((3, 64), dtype=complex)) + if __name__ == "__main__": unittest.main() From c190ee781970c6cfb40f5a047875e133a4ceb268 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 22:24:33 +0000 Subject: [PATCH 4/5] Give the MIMO Monte-Carlo a stacked channel, and batch the studies on it The MIMO question the batch contract had to answer: the channel is redrawn every frame, and every detector needs that frame's matrix. The answer is a stack. rayleigh_channel(size=K) returns (K, N_r, N_t), drawn sequentially from one generator so draw k equals the k-th draw of the equivalent Python loop; FlatMIMOChannel applies channel k to frame k, since matmul batches over leading axes; and a detector built with the same stack decides frame k against channel k. The linear detectors batch through numpy's stacked linear algebra -- mmse_estimator now transposes with swapaxes(-1, -2) so its normal equations batch too -- while ML, the sphere decoder and OSIC loop per draw internally: an enumeration, a tree and a cancellation order each depend on the one matrix in front of them, so their batch is convenience and correctness, not a speedup, and their docstrings say so. A stack of K channels refuses K+1 frames. tests/mimo/test_stacked_channel.py locks the draw equivalence, the per-frame alignment of the channel and all five detectors, and the refusal. Both MIMO studies now run on the stack. one_shot_mimo replaces its zipped monte_carlo sweep -- 200 chain runs per detector per SNR point -- with one batched pass, 10.9 s to 9.0 s, the sphere decoder's per-sample search dominating what remains; its page re-pastes the run. monte_carlo_simulation_1 drops the 500-draw Python loop for one stacked pass per point and reads the BLER directly off the batch as np.mean(np.any(S_est != S_ref, axis=(-2, -1))): 4.7 s to 2.5 s. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 27 +++++ docs/tutorials/img/monte_carlo_mimo_fig3.png | Bin 90491 -> 93368 bytes docs/tutorials/img/monte_carlo_mimo_fig4.png | Bin 63380 -> 64379 bytes docs/tutorials/mimo.rst | 43 ++++---- examples/mimo/monte_carlo_simulation_1.py | 46 +++++---- examples/mimo/one_shot_mimo.py | 27 ++--- src/comnumpy/core/utils.py | 6 +- src/comnumpy/mimo/channels.py | 10 +- src/comnumpy/mimo/detectors.py | 98 +++++++++++++++---- src/comnumpy/mimo/utils.py | 28 +++++- tests/mimo/test_stacked_channel.py | 95 ++++++++++++++++++ 11 files changed, 299 insertions(+), 81 deletions(-) create mode 100644 tests/mimo/test_stacked_channel.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d90666..a528496 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,33 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Added — the MIMO Monte-Carlo is a stacked channel (D51b) + +The MIMO question the batch contract had to answer: the channel is +redrawn every frame, and every detector needs that frame's matrix. +The answer is a **stack**. `rayleigh_channel(size=K)` returns +`(K, N_r, N_t)` -- drawn sequentially from one generator, so draw k +equals the k-th draw of the equivalent Python loop; `FlatMIMOChannel` +applies channel k to frame k (numpy's `matmul` batches over leading +axes); and a detector built with the same stack decides frame k against +channel k. `LinearDetector` (ZF and MMSE) batches through numpy's +*stacked linear algebra* -- `mmse_estimator` now transposes with +`swapaxes(-1, -2)` so its normal equations batch too -- while the +search detectors (ML, sphere, OSIC) loop per draw internally: an +enumeration, a tree and a cancellation order each depend on the one +matrix in front of them, so their batch is convenience and correctness, +not a speedup, and their docstrings say so. A mismatched stack (K +channels against K+1 frames) is refused. Locked by +`tests/mimo/test_stacked_channel.py`. + +Both MIMO studies now run on the stack. `one_shot_mimo` replaces its +zipped `monte_carlo(("channel.H", "detector.H"), ...)` sweep -- 200 +chain runs per detector per SNR -- with one batched pass (10.9 s to +9.0 s: the sphere decoder's per-sample search dominates and does not +vectorize). `monte_carlo_simulation_1` drops its 500-draw Python loop +for one stacked pass per SNR point and computes the BLER directly as +`np.mean(np.any(S_est != S_ref, axis=(-2, -1)))` -- 4.7 s to 2.5 s. + ### Added — batch axes are a contract, not an accident (D51) Leading axes ahead of a block's event axes are batch axes: independent diff --git a/docs/tutorials/img/monte_carlo_mimo_fig3.png b/docs/tutorials/img/monte_carlo_mimo_fig3.png index f85f97a03f0e25abf9f95af6c1e6e5dfdd722d55..643dd82d9257af638e4fe2d17f001a2912d45ba8 100644 GIT binary patch literal 93368 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 LEuAZ6?EAj}*H2-T literal 90491 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 CEO(9o diff --git a/docs/tutorials/img/monte_carlo_mimo_fig4.png b/docs/tutorials/img/monte_carlo_mimo_fig4.png index 9f41e212d843f7d89358563b22191ddda92693fe..aa506e07e34724ef2ed41c1e5ade7d26db105174 100644 GIT binary patch literal 64379 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 literal 63380 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⋘̸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 0) / N_test + detectors = { + "ML": MaximumLikelihoodDetector(alphabet=constellation, H=H), + "ZF": LinearDetector(alphabet=constellation, H=H, method="zf"), + "OSIC": OrderedSuccessiveInterferenceCancellationDetector( + constellation, osic_type="sinr", H=H, sigma2=sigma2), + } + for name, detector in detectors.items(): + S_est = detector(Y) + # a frame is in error when at least one of its symbols is -- + # with Gray labelling, exactly "at least one of its bits" + bler[name][index] = float(np.mean( + np.any(S_est != S_ref, axis=(-2, -1)))) # --- results: table and figure --------------------------------------- data = {"x": snr_dB_list, "curves": bler} diff --git a/examples/mimo/one_shot_mimo.py b/examples/mimo/one_shot_mimo.py index daf0dec..2bd1b81 100644 --- a/examples/mimo/one_shot_mimo.py +++ b/examples/mimo/one_shot_mimo.py @@ -3,7 +3,7 @@ import numpy as np import matplotlib.pyplot as plt -from comnumpy import monte_carlo, print_data, style +from comnumpy import print_data, style from comnumpy.core import Sequential from comnumpy.core.generators import SymbolGenerator from comnumpy.core.mappers import SymbolMapper @@ -89,21 +89,24 @@ def get_chain(detector): def average_ser(name, chain, snr_dB, seed=0): - """Average one chain over independent Rayleigh draws at one SNR.""" - rng = np.random.default_rng(seed) - draws = [] - for _ in range(n_channels): - matrix = rayleigh_channel(N_r, N_t, rng=rng) - draws.append((matrix, matrix)) + """Average one chain over independent Rayleigh draws at one SNR. + + The draws are a *stack* (D51): channel k propagates frame k, the + detector holds the same stack and decides frame k against channel + k, and the chain runs once instead of once per draw. Pooled over + equal-size frames, the SER is exactly the mean of the per-draw + rates. + """ + stacked = rayleigh_channel(N_r, N_t, seed=seed, size=n_channels) noise_variance = N_t * 10 ** (-snr_dB / 10) - params = {"noise.sigma2": noise_variance} + params = {"noise.sigma2": noise_variance, + "channel.H": stacked, "detector.H": stacked} if name in NOISE_AWARE: params["detector.sigma2"] = noise_variance chain.set_params(**params) - results = monte_carlo(chain, ("channel.H", "detector.H"), draws, - {"ser": compute_ser}, stimulus=(N_t, n_symbols), - reference="tx", seed=seed) - return float(np.mean(results["ser"])) + chain.seed(seed) + detected = chain((n_channels, N_t, n_symbols)) + return float(compute_ser(chain.tap("tx"), detected)) # --- metrics, pre-allocated ------------------------------------------ diff --git a/src/comnumpy/core/utils.py b/src/comnumpy/core/utils.py index 5fe9a3f..7d4d7b5 100644 --- a/src/comnumpy/core/utils.py +++ b/src/comnumpy/core/utils.py @@ -1060,8 +1060,10 @@ def mmse_estimator(Y: np.ndarray, H: np.ndarray, sigma2: float) -> np.ndarray: [[ 0.9151 -0.8931] [ 0.9868 0.9647]] """ - _, N_t = H.shape - H_H = np.conjugate(np.transpose(H)) + N_t = H.shape[-1] + # swapaxes, not transpose: a stacked H (K, N_r, N_t) keeps its batch + # axes in front, and solve/matmul batch over them (D51) + H_H = np.conjugate(np.swapaxes(H, -1, -2)) A = np.matmul(H_H, H) + sigma2 * np.eye(N_t) Z_est = LA.solve(A, np.matmul(H_H, Y)) return Z_est diff --git a/src/comnumpy/mimo/channels.py b/src/comnumpy/mimo/channels.py index 7390546..9a5d462 100644 --- a/src/comnumpy/mimo/channels.py +++ b/src/comnumpy/mimo/channels.py @@ -103,7 +103,11 @@ class FlatMIMOChannel(BaseMIMOChannel): the noiseless product). Axes: *declared axis* -- expects ``(..., ant, N)`` with antennas on - axis -2, validated against :math:`N_t`. + axis -2, validated against :math:`N_t`. ``H`` may be a **stack** of + channels ``(K, N_r, N_t)``: against ``X`` of shape ``(K, N_t, N)`` + channel :math:`k` is applied to frame :math:`k` -- one independent + draw per trial, the batch contract of D51 for a channel whose + realization is configured rather than drawn per call. Parameters ---------- @@ -135,7 +139,9 @@ class FlatMIMOChannel(BaseMIMOChannel): def forward(self, X: np.ndarray) -> np.ndarray: assert self.H is not None # validate_input rejects a None channel - validate_input(X, self.H.shape[1]) + validate_input(X, self.H.shape[-1]) + # matmul batches over leading axes: a stacked H (K, N_r, N_t) + # against X (K, N_t, N) applies channel k to frame k (D51) return np.matmul(self.H, X) diff --git a/src/comnumpy/mimo/detectors.py b/src/comnumpy/mimo/detectors.py index 39fd795..98349a4 100644 --- a/src/comnumpy/mimo/detectors.py +++ b/src/comnumpy/mimo/detectors.py @@ -1,7 +1,7 @@ import numpy as np import numpy.linalg as LA from dataclasses import dataclass, field -from typing import Literal, Optional +from typing import Callable, Literal, Optional from comnumpy.core.generics import Processor from comnumpy.core.utils import hard_projector, soft_projector, zf_estimator, mmse_estimator @@ -36,6 +36,28 @@ def _required_channel(H: Optional[np.ndarray], block: str) -> np.ndarray: return np.asarray(H) +def _detect_stacked(detect: "Callable[[np.ndarray, np.ndarray], np.ndarray]", + H: np.ndarray, Y: np.ndarray) -> np.ndarray: + """One detection per leading index of a stacked channel (D51). + + The search algorithms are per-draw by nature -- an enumeration, a + tree, a cancellation order all depend on the one matrix in front of + them -- so the batch is an explicit loop: channel ``k`` decides + frame ``k``, and no state leaks between draws. Convenience and + correctness, not a speedup. + """ + from comnumpy.exceptions import ShapeError + if Y.ndim < 2 or Y.shape[:-2] != H.shape[:-2]: + raise ShapeError( + f"a stacked channel with leading shape {H.shape[:-2]} " + f"decides one frame per draw and needs observations " + f"(..., N_r, N) with the same leading shape, got {Y.shape}") + S = np.empty(H.shape[:-2] + (H.shape[-1], Y.shape[-1]), dtype=int) + for index in np.ndindex(*H.shape[:-2]): + S[index] = detect(H[index], Y[index]) + return S + + def _required_noise_variance(sigma2: Optional[float], block: str) -> float: """Same, for the noise variance the MMSE-flavoured detectors need.""" if sigma2 is None: @@ -87,7 +109,9 @@ class MaximumLikelihoodDetector(Processor): antennas or a high-order constellation. Axes: *declared axis* -- expects ``(ant, N)`` with antennas on - axis -2. + axis -2. ``H`` may be a stack ``(K, N_r, N_t)`` against ``Y`` of + shape ``(K, N_r, N)``: channel k decides frame k, through an + internal per-draw loop -- convenience, not a speedup (D51). Parameters ---------- @@ -133,8 +157,7 @@ def __post_init__(self): def get_nb_candidates(self) -> int: H = _required_channel(self.H, type(self).__name__) - _, N_t = H.shape - return len(self.alphabet) ** N_t + return len(self.alphabet) ** H.shape[-1] def get_candidates(self, alphabet: np.ndarray, N_t: int) -> tuple[np.ndarray, np.ndarray]: @@ -155,6 +178,16 @@ def get_candidates(self, alphabet: np.ndarray, def forward(self, Y: np.ndarray) -> np.ndarray: H = _required_channel(self.H, type(self).__name__) + if H.ndim > 2: + S = _detect_stacked(self._detect, H, Y) + self.S = S + return S + S = self._detect(H, Y) + self.S = S + return S + + def _detect(self, H: np.ndarray, Y: np.ndarray) -> np.ndarray: + """The exhaustive search against one channel matrix.""" _, N_t = H.shape _, N = Y.shape alphabet = self.alphabet @@ -187,7 +220,6 @@ def forward(self, Y: np.ndarray) -> np.ndarray: best[better] = values[better] S[:, start:start + n_block] = S_candidates[:, winner] - self.S = S return S @@ -253,8 +285,10 @@ class SphereDecoder(Processor): 16.7 million. Axes: *declared axis* -- expects ``(ant, N)`` with antennas on - axis -2, and returns the alphabet indices, like every other detector - here. + axis -2. ``H`` may be a stack ``(K, N_r, N_t)`` against ``Y`` of + shape ``(K, N_r, N)``: channel k decides frame k, through an + internal per-draw loop -- convenience, not a speedup (D51) -- and returns the + alphabet indices, like every other detector here. Parameters ---------- @@ -329,14 +363,16 @@ class SphereDecoder(Processor): S: Optional[np.ndarray] = field(init=False, repr=False, default_factory=lambda: None) nodes_: float = field(init=False, repr=False, default=0.0) + # running counters behind nodes_, declared for slots (D40a) + _visited: int = field(init=False, repr=False, default=0) + _samples: int = field(init=False, repr=False, default=0) def __post_init__(self): # accept anything array-like, a Constellation included self.alphabet = np.asarray(self.alphabet) - def _triangularize(self) -> tuple[np.ndarray, np.ndarray]: - """The thin QR of the channel, with the guards it needs.""" - H = _required_channel(self.H, type(self).__name__) + def _triangularize(self, H: np.ndarray) -> tuple[np.ndarray, np.ndarray]: + """The thin QR of one channel matrix, with the guards it needs.""" n_rx, n_tx = H.shape if n_rx < n_tx: raise ValueError( @@ -391,21 +427,35 @@ def search(level: int, metric: float) -> None: return best, nodes def forward(self, Y: np.ndarray) -> np.ndarray: - Q, R = self._triangularize() + H = _required_channel(self.H, type(self).__name__) + if H.ndim > 2: + # nodes_ averages over every sample of every draw: the + # per-draw counts accumulate through _detect below + self._visited, self._samples = 0, 0 + S = _detect_stacked(self._detect, H, Y) + self.nodes_ = self._visited / max(1, self._samples) + self.S = S + return S + self._visited, self._samples = 0, 0 + S = self._detect(H, Y) + self.nodes_ = self._visited / max(1, self._samples) + self.S = S + return S + + def _detect(self, H: np.ndarray, Y: np.ndarray) -> np.ndarray: + """The tree search against one channel matrix.""" + Q, R = self._triangularize(H) Z = np.matmul(np.conjugate(Q).T, Y) # (N_t, N) alphabet = np.asarray(self.alphabet).ravel() gains = np.abs(np.diag(R)) ** 2 n_samples = Y.shape[-1] S = np.empty((R.shape[0], n_samples), dtype=int) - visited = 0 for sample in range(n_samples): best, nodes = self._closest(R, gains, Z[:, sample], alphabet) S[:, sample] = best - visited += nodes - - self.nodes_ = visited / max(1, n_samples) - self.S = S + self._visited += nodes + self._samples += n_samples return S @@ -439,7 +489,9 @@ class LinearDetector(Processor): the integer indices of the decisions in the alphabet. Axes: *declared axis* -- expects ``(ant, N)`` with antennas on - axis -2. + axis -2. ``H`` may be a stack ``(K, N_r, N_t)`` against + ``Y`` of shape ``(K, N_r, N)`` -- one draw per trial, decided + through numpy's stacked linear algebra in one call (D51). Parameters ---------- @@ -540,7 +592,9 @@ class OrderedSuccessiveInterferenceCancellationDetector(Processor): of the decisions in the alphabet. Axes: *declared axis* -- expects ``(ant, N)`` with antennas on - axis -2. + axis -2. ``H`` may be a stack ``(K, N_r, N_t)`` against ``Y`` of + shape ``(K, N_r, N)``: channel k decides frame k, through an + internal per-draw loop -- convenience, not a speedup (D51). Parameters ---------- @@ -629,8 +683,14 @@ def ordering(self, H: np.ndarray) -> int: raise ValueError("osic_type must be 'sinr', 'colnorm', or 'snr'.") def forward(self, Y: np.ndarray) -> np.ndarray: + H = _required_channel(self.H, type(self).__name__) + if H.ndim > 2: + return _detect_stacked(self._detect, H, Y) + return self._detect(H, Y) + + def _detect(self, H_full: np.ndarray, Y: np.ndarray) -> np.ndarray: + """The ordered cancellation against one channel matrix.""" block = type(self).__name__ - H_full = _required_channel(self.H, block) Y_temp = Y.copy() NT = H_full.shape[1] diff --git a/src/comnumpy/mimo/utils.py b/src/comnumpy/mimo/utils.py index 5880da1..b00f130 100644 --- a/src/comnumpy/mimo/utils.py +++ b/src/comnumpy/mimo/utils.py @@ -11,7 +11,8 @@ def rayleigh_channel(N_r: int, N_t: int, L: int = 1, scale_per_tap: Optional[Sequence[float]] = None, seed: Optional[int] = None, - rng: Optional[np.random.Generator] = None) -> np.ndarray: + rng: Optional[np.random.Generator] = None, + size: Optional[int] = None) -> np.ndarray: r""" Draw an i.i.d. Rayleigh MIMO channel. @@ -70,11 +71,21 @@ def rayleigh_channel(N_r: int, N_t: int, Random seed used if `rng` is not provided. rng : numpy.random.Generator, optional Pre-initialized random number generator. If provided, `seed` is ignored. + size : int, optional + Number of independent channel draws. When given, the returned + array grows a leading axis of length ``size`` -- a **stack** of + channels, one per Monte-Carlo trial, drawn sequentially from the + same generator so draw :math:`k` equals the :math:`k`-th draw of + the equivalent Python loop. The stack is what + :class:`~comnumpy.mimo.channels.FlatMIMOChannel` and the + detectors accept as a batched ``H`` (D51). Returns ------- numpy.ndarray - Array of shape (L, N_r, N_t) containing the Rayleigh channel taps. + Array of shape (L, N_r, N_t) containing the Rayleigh channel + taps -- squeezed to (N_r, N_t) when ``L == 1``, with a leading + ``size`` axis when ``size`` is given. Raises ------ @@ -102,10 +113,23 @@ def rayleigh_channel(N_r: int, N_t: int, >>> H2 = rayleigh_channel(N_r=32, N_t=32, seed=1) >>> print(round(float(np.mean(np.abs(H2)**2)), 2)) # unit average gain 1.01 + >>> stack = rayleigh_channel(N_r=2, N_t=2, seed=0, size=200) + >>> stack.shape # one draw per Monte-Carlo trial + (200, 2, 2) """ if not rng: rng = np.random.default_rng(seed) + if size is not None: + # a stack of independent draws, sequential from the same rng: + # draw k equals the k-th draw of the equivalent Python loop, so + # a study moving to the batched form keeps its channels + draws = [] + for _ in range(size): + draws.append(rayleigh_channel(N_r, N_t, L, scale_per_tap, + rng=rng)) + return np.stack(draws) + if scale_per_tap is None: scales = np.ones(L, dtype=float) else: diff --git a/tests/mimo/test_stacked_channel.py b/tests/mimo/test_stacked_channel.py new file mode 100644 index 0000000..d9da437 --- /dev/null +++ b/tests/mimo/test_stacked_channel.py @@ -0,0 +1,95 @@ +"""The stacked MIMO channel: one draw per trial, detectors aligned. + +The MIMO Monte-Carlo redraws the channel every frame, and every +detector needs that frame's matrix. The batch contract (D51) makes the +draw a *stack*: ``rayleigh_channel(size=K)`` returns ``(K, N_r, N_t)``, +``FlatMIMOChannel`` applies channel k to frame k, and a detector built +with the same stack decides frame k against channel k. The linear +detectors batch through numpy's stacked linalg; the search detectors +(ML, OSIC, sphere) loop per draw internally -- convenience and +correctness, not a speedup, and the docstrings say so. +""" +import unittest + +import numpy as np + +from comnumpy.core.utils import Constellation +from comnumpy.exceptions import ShapeError +from comnumpy.mimo.channels import FlatMIMOChannel +from comnumpy.mimo.detectors import ( + LinearDetector, MaximumLikelihoodDetector, + OrderedSuccessiveInterferenceCancellationDetector, SphereDecoder) +from comnumpy.mimo.utils import rayleigh_channel + +CONSTELLATION = Constellation("PSK", 4) +K, N_R, N_T, N = 4, 3, 2, 60 + + +def factories(): + return { + "ZF": lambda H: LinearDetector(CONSTELLATION, H=H, method="zf"), + "MMSE": lambda H: LinearDetector(CONSTELLATION, H=H, + method="mmse", sigma2=0.02), + "ML": lambda H: MaximumLikelihoodDetector(CONSTELLATION, H=H), + "OSIC": lambda H: OrderedSuccessiveInterferenceCancellationDetector( + CONSTELLATION, osic_type="sinr", H=H, sigma2=0.02), + "SD": lambda H: SphereDecoder(CONSTELLATION, H=H), + } + + +class TestStackedDraws(unittest.TestCase): + + def test_size_grows_a_leading_axis(self): + self.assertEqual(rayleigh_channel(N_R, N_T, seed=0, size=K).shape, + (K, N_R, N_T)) + + def test_size_equals_the_python_loop_draw_for_draw(self): + """Moving a study to the batched form keeps its channels.""" + first = np.random.default_rng(7) + second = np.random.default_rng(7) + looped = [] + for _ in range(5): + looped.append(rayleigh_channel(N_R, N_T, rng=first)) + stacked = rayleigh_channel(N_R, N_T, rng=second, size=5) + np.testing.assert_allclose(np.stack(looped), stacked) + + +class TestStackedChannelAndDetectors(unittest.TestCase): + + def setUp(self): + rng = np.random.default_rng(0) + alphabet = np.asarray(CONSTELLATION.alphabet) + self.H = rayleigh_channel(N_R, N_T, seed=1, size=K) + self.sent = rng.integers(0, 4, (K, N_T, N)) + noise = 0.1 * (rng.standard_normal((K, N_R, N)) + + 1j * rng.standard_normal((K, N_R, N))) + self.Y = np.matmul(self.H, alphabet[self.sent]) + noise + + def test_channel_k_is_applied_to_frame_k(self): + x = np.asarray(CONSTELLATION.alphabet)[self.sent] + batched = FlatMIMOChannel(self.H)(x) + single = FlatMIMOChannel(self.H[2])(x[2]) + np.testing.assert_allclose(batched[2], single) + + def test_every_detector_decides_frame_k_against_channel_k(self): + for name, make in factories().items(): + with self.subTest(detector=name): + stacked = make(self.H)(self.Y) + single = make(self.H[2])(self.Y[2]) + self.assertEqual(stacked.shape, (K, N_T, N)) + np.testing.assert_array_equal(stacked[2], single) + + def test_a_mismatched_batch_is_refused(self): + """K channels cannot decide K+1 frames: no silent broadcast.""" + detector = MaximumLikelihoodDetector(CONSTELLATION, H=self.H) + with self.assertRaises(ShapeError): + detector(np.ones((K + 1, N_R, N), dtype=complex)) + + def test_the_sphere_decoder_still_counts_its_nodes(self): + decoder = SphereDecoder(CONSTELLATION, H=self.H) + decoder(self.Y) + self.assertGreater(decoder.nodes_, 0.0) + + +if __name__ == "__main__": + unittest.main() From 569efcd4efee2c0705a51408d165bc9caf036dc0 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 22:40:51 +0000 Subject: [PATCH 5/5] Make the batch promise a ratchet over the whole catalogue A convention over 91 blocks is only worth the sweep that checks it. tests/test_batch_contract.py discovers every Processor subclass in the library and fails unless each one is declared and verified: BROADCAST (row i of a batch equals the block on row i alone -- 36 blocks checked by equality), INDEPENDENT (trials do not share a realization), REFUSES (the ambiguous batch raises), or EXEMPT with the reason written next to it -- an exemption is visible debt, not a pass. Like the pyright ratchet, the contract is now self-enforcing: a new block cannot land without saying, and proving, what a batch means for it. Its first sweep caught two more silent couplings, both fixed. DCCorrector's default axis=0 averaged across the batch -- one converter offset smeared over independent trials; the default is now -1, the canonical serial layout, one offset per row. HardClipper computed its threshold from the mean power of the whole array, so the weakest trial of a batch was clipped against the strongest; the power is now per row, one transmitter per trial. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 19 ++ CONVENTIONS.md | 8 +- src/comnumpy/core/compensators.py | 13 +- src/comnumpy/ofdm/predistorders.py | 9 +- tests/test_batch_contract.py | 365 +++++++++++++++++++++++++++++ 5 files changed, 404 insertions(+), 10 deletions(-) create mode 100644 tests/test_batch_contract.py diff --git a/CHANGELOG.md b/CHANGELOG.md index a528496..4cdfa83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,25 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Added — the batch promise is a ratchet over the catalogue + +A convention over 91 blocks is only worth the sweep that checks it. +`tests/test_batch_contract.py` discovers every `Processor` subclass in +the library and fails unless each one is declared and verified: +`BROADCAST` (row `i` of a batch equals the block on row `i` alone -- +36 blocks checked by equality), `INDEPENDENT` (trials do not share a +realization), `REFUSES` (the ambiguous batch raises), or `EXEMPT` with +the reason written next to it. Like the pyright ratchet (D37), it makes +the contract self-enforcing: a new block cannot land without saying -- +and proving -- what a batch means for it. + +Its first sweep caught two more silent couplings. `DCCorrector`'s +default `axis=0` averaged *across* the batch (the default is now `-1`, +the canonical serial layout: one offset per converter). `HardClipper` +computed its threshold from the mean power of the whole array, so the +weakest trial of a batch was clipped against the strongest; the power +is now per row. + ### Added — the MIMO Monte-Carlo is a stacked channel (D51b) The MIMO question the batch contract had to answer: the channel is diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 8bbebfc..fb1ef1f 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -88,7 +88,13 @@ The payoff is Monte-Carlo without a Python loop over trials: `monte_carlo(chain, param, values, metrics, (n_trials, N), seed=…)` pools each metric over `n_trials` independent frames per sweep point — for equal-size trials, exactly the mean of the per-trial values. -`tests/core/test_batch_axes.py` locks one block of each family. +`tests/core/test_batch_axes.py` locks one block of each family, and +`tests/test_batch_contract.py` is the **ratchet over the whole +catalogue**: it discovers every `Processor` subclass and fails unless +each is verified batched (`BROADCAST` by row equality, `INDEPENDENT` +by realization inequality, `REFUSES` by the raised error) or exempted +with a written reason. A new block cannot merge without declaring what +a batch means for it. ## Observing signals: taps, not blocks diff --git a/src/comnumpy/core/compensators.py b/src/comnumpy/core/compensators.py index 027d5c1..f7f9527 100644 --- a/src/comnumpy/core/compensators.py +++ b/src/comnumpy/core/compensators.py @@ -149,10 +149,11 @@ class DCCorrector(Processor): local oscillator adds a constant term to the baseband signal. Axes: *declared axis* -- the mean :math:`\mu_x` is computed along - ``axis`` (default 0) and broadcast over the remaining axes; use - ``axis=-1`` for the canonical serial layout ``(..., N)``. The - estimand is **per path** (D49): a DC offset belongs to a converter, - so ``axis=-1`` on a ``(..., P, N)`` signal gives each path its own. + ``axis`` (default -1, the canonical serial layout ``(..., N)``) and + broadcast over the remaining axes. The estimand is **per path** + (D49): a DC offset belongs to a converter, so the default gives each + row of a batch its own offset -- the old default of 0 averaged + *across* the batch, which is the silent coupling D51 forbids. Parameters ---------- @@ -160,7 +161,7 @@ class DCCorrector(Processor): Target mean value :math:`\alpha` of the output. Default is 0.0, i.e. a zero-mean output. axis : int, optional, keyword-only - Axis along which :math:`\mu_x` is computed. Default is 0. + Axis along which :math:`\mu_x` is computed. Default is -1. name : str, optional, keyword-only Name of the corrector instance. Default is ``"mean_corrector"``. @@ -179,7 +180,7 @@ class DCCorrector(Processor): [0. 1. 2. 5.] """ value: float = 0.0 - axis: int = field(default=0, kw_only=True) + axis: int = field(default=-1, kw_only=True) name: str = field(default="mean_corrector", kw_only=True) def forward(self, x: np.ndarray) -> np.ndarray: diff --git a/src/comnumpy/ofdm/predistorders.py b/src/comnumpy/ofdm/predistorders.py index 7074c20..6fc2123 100644 --- a/src/comnumpy/ofdm/predistorders.py +++ b/src/comnumpy/ofdm/predistorders.py @@ -36,8 +36,9 @@ class HardClipper(Processor): polar form. Axes: *element-wise* -- the clipping is applied pointwise; the - threshold :math:`T_m` is computed from the mean power of the whole - array. + threshold :math:`T_m` is computed from the mean power **along the + last axis**, so each row of a batch is clipped against its own + power -- one transmitter per trial (D51). Parameters ---------- @@ -70,7 +71,9 @@ def __post_init__(self): self.cr = 10 ** (self.cr_dB / 20) def forward(self, x: np.ndarray) -> np.ndarray: - Pmoy = np.mean(np.abs(x) ** 2) + # per-row power: each trial of a batch clips against its own + # RMS, not the RMS of the whole stack (D51) + Pmoy = np.mean(np.abs(x) ** 2, axis=-1, keepdims=True) Tm = self.cr * np.sqrt(Pmoy) if np.iscomplexobj(x): y = np.where(np.abs(x) > Tm, Tm * np.exp(1j * np.angle(x)), x) diff --git a/tests/test_batch_contract.py b/tests/test_batch_contract.py new file mode 100644 index 0000000..9778f92 --- /dev/null +++ b/tests/test_batch_contract.py @@ -0,0 +1,365 @@ +"""The batch promise, verified over the whole catalogue. + +CONVENTIONS.md (D51) promises that the axes ahead of a block's event +axes are batch axes: independent trials in one call. A promise over a +catalogue is only worth the sweep that checks it, so this file is a +*ratchet*, like the pyright one (D37): every ``Processor`` subclass in +the library must appear in exactly one register below, and a discovery +test fails on any block that has not declared its batch behaviour. +Adding a block therefore *forces* the author to say -- and prove -- +what a batch means for it. + +Three verified families, one honest bucket: + +* ``BROADCAST`` -- deterministic: row ``i`` of a batched call equals + the block applied to row ``i`` alone. The strongest property, checked + by equality. +* ``INDEPENDENT`` -- stochastic: the batched call runs, keeps the + leading axis, and two rows do not share a realization. +* ``REFUSES`` -- the block cannot read a batch one way and must say so: + a ``ShapeError`` (or documented ``ValueError``), never a silent + misread. +* ``EXEMPT`` -- blocks the sweep cannot exercise generically, each with + the reason written next to it. An exemption is visible debt, not a + pass. +""" +import importlib +import inspect +import pkgutil +import unittest + +import numpy as np + +from comnumpy.core.generics import Processor +from comnumpy.core.utils import Constellation + +RNG = np.random.default_rng(0) +N = 64 +SERIAL = RNG.standard_normal((3, N)) + 1j * RNG.standard_normal((3, N)) +INDICES = RNG.integers(0, 4, (3, N)) +BITS = RNG.integers(0, 2, (3, N)) +QPSK = Constellation("PSK", 4) +PAIR = RNG.standard_normal((3, 2, N)) + 1j * RNG.standard_normal((3, 2, N)) + + +def _fs(): + return {"fs": 32e9} + + +# --- the registers --------------------------------------------------- +# name: (factory, batched input). The factory builds a FRESH block each +# call -- the equality check runs it twice. + +BROADCAST = { + "core.channels.FIRChannel": + (lambda: _cls("core.channels", "FIRChannel")(np.array([1.0, 0.4])), + SERIAL), + "core.compensators.LinearEqualizer": + (lambda: _cls("core.compensators", "LinearEqualizer")( + np.array([1.0, 0.4])), SERIAL), + "core.compensators.BlindIQCompensator": + (lambda: _cls("core.compensators", "BlindIQCompensator")(), SERIAL), + "core.compensators.Normalizer": + (lambda: _cls("core.compensators", "Normalizer")("max"), SERIAL), + "core.compensators.DCCorrector": + (lambda: _cls("core.compensators", "DCCorrector")(), SERIAL), + "core.devices.RappAmplifier": + (lambda: _cls("core.devices", "RappAmplifier")(1.0), SERIAL), + "core.devices.SalehAmplifier": + (lambda: _cls("core.devices", "SalehAmplifier")(), SERIAL), + "core.filters.BWFilter": + (lambda: _cls("core.filters", "BWFilter")(0.3), SERIAL), + "core.filters.SRRCFilter": + (lambda: _cls("core.filters", "SRRCFilter")(0.25, 2, N_h=8), SERIAL), + "core.impairments.CFO": + (lambda: _cls("core.impairments", "CFO")(1e-3), SERIAL), + "core.impairments.Delay": + (lambda: _cls("core.impairments", "Delay")(3), SERIAL), + "core.impairments.IQImbalance": + (lambda: _cls("core.impairments", "IQImbalance")(1.0, 0.1), SERIAL), + "core.mappers.SymbolMapper": + (lambda: _cls("core.mappers", "SymbolMapper")(QPSK), INDICES), + "core.mappers.SymbolDemapper": + (lambda: _cls("core.mappers", "SymbolDemapper")(QPSK), SERIAL), + "core.processors.Amplifier": + (lambda: _cls("core.processors", "Amplifier")(2.0), SERIAL), + "core.processors.Clipper": + (lambda: _cls("core.processors", "Clipper")(0.8), SERIAL), + "core.processors.Complex2Real": + (lambda: _cls("core.processors", "Complex2Real")(), SERIAL), + "core.processors.Downsampler": + (lambda: _cls("core.processors", "Downsampler")(2), SERIAL), + "core.processors.Upsampler": + (lambda: _cls("core.processors", "Upsampler")(2), SERIAL), + "core.processors.Serial2Parallel": + (lambda: _cls("core.processors", "Serial2Parallel")(8), SERIAL), + "core.processors.Parallel2Serial": + (lambda: _cls("core.processors", "Parallel2Serial")(), + SERIAL.reshape(3, 8, 8)), + "fec.convolutional.ConvolutionalEncoder": + (lambda: _cls("fec.convolutional", "ConvolutionalEncoder")(), BITS), + "mimo.channels.FlatMIMOChannel": + (lambda: _cls("mimo.channels", "FlatMIMOChannel")( + _rayleigh(2, 2, seed=1)), PAIR), + "mimo.detectors.LinearDetector": + (lambda: _cls("mimo.detectors", "LinearDetector")( + QPSK, H=_rayleigh(2, 2, seed=1), method="zf"), PAIR), + "ofdm.chains.OFDMTransmitter": + (lambda: _cls("ofdm.chains", "OFDMTransmitter")(16, 4), SERIAL), + "ofdm.chains.OFDMReceiver": + (lambda: _cls("ofdm.chains", "OFDMReceiver")(16, 4), + SERIAL[:, :60].repeat(2, axis=-1)[:, :80].reshape(3, 80)), + "ofdm.compensators.FrequencyDomainEqualizer": + (lambda: _cls("ofdm.compensators", "FrequencyDomainEqualizer")( + h=np.array([1.0, 0.3])), SERIAL.reshape(3, 4, 16)), + "ofdm.processors.FFTProcessor": + (lambda: _cls("ofdm.processors", "FFTProcessor")(), + SERIAL.reshape(3, 4, 16)), + "ofdm.processors.IFFTProcessor": + (lambda: _cls("ofdm.processors", "IFFTProcessor")(), + SERIAL.reshape(3, 4, 16)), + "ofdm.processors.CyclicPrefixer": + (lambda: _cls("ofdm.processors", "CyclicPrefixer")(4), + SERIAL.reshape(3, 4, 16)), + "ofdm.processors.CyclicPrefixRemover": + (lambda: _cls("ofdm.processors", "CyclicPrefixRemover")(4), + SERIAL.reshape(3, 4, 16)), + "ofdm.predistorders.HardClipper": + (lambda: _cls("ofdm.predistorders", "HardClipper")(0.8), SERIAL), + "optical.channels.ChromaticDispersion": + (lambda: _cls("optical.channels", "ChromaticDispersion")( + 100, **_fs()), SERIAL), + "optical.channels.KerrNonLinearity": + (lambda: _cls("optical.channels", "KerrNonLinearity")(1e-3), SERIAL), + "optical.compensators.ChromaticDispersionFIRCompensator": + (lambda: _cls("optical.compensators", + "ChromaticDispersionFIRCompensator")(100, **_fs()), + SERIAL), + "optical.compensators.ChromaticDispersionLSFIRCompensator": + (lambda: _cls("optical.compensators", + "ChromaticDispersionLSFIRCompensator")( + 100, 15, w_vect=[-np.pi, np.pi], **_fs()), SERIAL), +} + +INDEPENDENT = { + "core.channels.AWGN": + (lambda: _cls("core.channels", "AWGN")(sigma2=1.0), + np.zeros((3, 4096), dtype=complex)), + "core.generators.SymbolGenerator": + (lambda: _cls("core.generators", "SymbolGenerator")(4), (3, 256)), + "core.generators.GaussianGenerator": + (lambda: _cls("core.generators", "GaussianGenerator")(), (3, 256)), + "optical.channels.PhaseNoise": + (lambda: _cls("optical.channels", "PhaseNoise")(1e-3, per="row"), + np.ones((3, 512), dtype=complex)), +} + +REFUSES = { + "core.compensators.BlindCFOCompensator": + (lambda: _cls("core.compensators", "BlindCFOCompensator")(), + np.ones((3, N), dtype=complex)), + "core.compensators.DataAidedPhaseCompensator": + (lambda: _cls("core.compensators", "DataAidedPhaseCompensator")( + reference=SERIAL[0]), SERIAL), + "core.compensators.DataAidedComplexGainCompensator": + (lambda: _cls("core.compensators", + "DataAidedComplexGainCompensator")( + reference=SERIAL[0]), SERIAL), + "core.compensators.DataAidedFIRCompensator": + (lambda: _cls("core.compensators", "DataAidedFIRCompensator")( + reference=SERIAL[0]), SERIAL), +} + +EXEMPT = { + # abstract bases and containers + "mimo.channels.BaseMIMOChannel": "abstract base, forward raises", + # generic event = the whole 1-D stream by declared design; a batch + # has no meaning the docstring does not already refuse + "core.compensators.DataAidedFineSynchronizer": + "estimates one delay against one 1-D reference", + "core.compensators.DataAidedSimpleSynchronizer": + "estimates one delay against one 1-D reference", + "core.frames.Framer": "frames one 1-D stream against a FrameStructure", + "core.frames.Deframer": "deframes one 1-D stream", + "core.processors.AutoConcatenator": "concatenates along the last axis " + "with internal history: one stream per instance", + "core.processors.BlindPhaseTracker": "sequential per-sample tracker, " + "one trajectory per instance (superseded by " + "BlindPhaseSearchCompensator for pairs)", + "core.processors.DataAdder": "adds a stored companion signal of the " + "un-batched shape", + "core.processors.DataExtractor": "extracts against stored 1-D markers", + "core.processors.DelayRemover": "drops a scalar delay from one stream", + "core.processors.SampleRemover": "drops N samples of one stream", + "core.processors.Resampler": "scipy.signal.resample along a declared " + "axis; not swept here because its output length depends on the " + "rate argument", + "core.processors.WeightAmplifier": "per-branch gains tied to the " + "un-batched branch axis", + "core.compensators.BlindPhaseCompensation": "legacy single-signal " + "moment estimator (superseded by BlindPhaseSearchCompensator)", + "core.shaping.AmplitudeMapper": "shaping operates on one 1-D " + "amplitude stream", + "core.shaping.AmplitudeDemapper": "shaping operates on one 1-D " + "amplitude stream", + "core.shaping.DistributionMatcher": "arithmetic-coding state over one " + "1-D bit stream", + "core.shaping.DistributionDematcher": "arithmetic-coding state over " + "one 1-D bit stream", + "core.channels.TappedDelayLineChannel": "frozen-realization channel: " + "one seeded draw is the configuration (D51), sounded via " + "impulse_response", + "fec.convolutional.ViterbiDecoder": "decodes (n_cw, n) codeword " + "blocks -- its batch axis is the codeword axis, locked in " + "tests/fec", + "fec.ldpc.LDPCEncoder": "operates on (k, n_cw) codeword blocks, " + "locked in tests/fec", + "fec.ldpc.LDPCDecoder": "operates on (n, n_cw) LLR blocks, locked " + "in tests/fec", + "mimo.channels.SelectiveMIMOChannel": "builds an (L N_t, N) stacked " + "convolution matrix for one frame", + "mimo.coding.SpaceTimeEncoder": "Alamouti layout (N_t, N) per code " + "block, one frame per call", + "mimo.coding.SpaceTimeDecoder": "Alamouti layout per code block, one " + "frame per call", + "mimo.compensators.BlindDualMIMOCompensator": "adaptive per pair; its " + "batch (one butterfly per pair) is locked in " + "tests/core/test_batch_axes.py", + "core.compensators.BlindPhaseSearchCompensator": "adaptive per row; " + "its per-row trajectories are locked in " + "tests/optical/test_pmd_bps.py", + "mimo.detectors.MaximumLikelihoodDetector": "stacked-H batch locked " + "in tests/mimo/test_stacked_channel.py", + "mimo.detectors.SphereDecoder": "stacked-H batch locked in " + "tests/mimo/test_stacked_channel.py", + "mimo.detectors.OrderedSuccessiveInterferenceCancellationDetector": + "stacked-H batch locked in tests/mimo/test_stacked_channel.py", + "mimo.detectors.ApproximateMessagePassingDetector": "iterative " + "per-frame message passing against one H", + "mimo.detectors.OrthogonalApproximateMessagePassingDetector": + "iterative per-frame message passing against one H", + "ofdm.processors.CarrierAllocator": "validated (..., T, F_data) " + "layout, locked in tests/ofdm", + "ofdm.processors.CarrierExtractor": "validated (..., T, F) layout, " + "locked in tests/ofdm", + "ofdm.processors.HermitianPrefixer": "builds the Hermitian spectrum " + "of one block set", + "ofdm.predistorders.IctPaprReductor": "iterative clipping on one " + "block set", + "ofdm.predistorders.PtsPaprReductor": "phase search over one block " + "set", + "optical.channels.PMDEmulator": "frozen-realization channel (D51): " + "polarization pair is the event, locked in " + "tests/optical/test_pmd_bps.py", + "optical.dbp.DBP": "SSFM split-step over one field, span state along " + "the last axis; validated in validation/", + "optical.devices.ErbiumDopedFiberAmplifier": "gain plus ASE draw " + "sized on the whole input; the optical event is the field", + "optical.devices.Laser": "one laser per instance by physics; its " + "sharing convention lives in PhaseNoise per=", + "optical.devices.MachZehnderModulator": "drives one modulator with " + "one electrical signal", + "optical.devices.Optical90HybridCircuit": "mixes one signal pair by " + "construction", + "optical.devices.PowerControl": "normalizes one field's power", + "optical.links.FiberLink": "SSFM propagation of one field; EDFA " + "noise inside; validated against closed forms in validation/", + "optical.wdm.WDMMultiplexer": "combines a channel *set* -- its " + "leading axis is the WDM channel, not a batch", + "optical.wdm.WDMDemultiplexer": "splits into a channel set", +} + + +def _cls(module: str, name: str): + return getattr(importlib.import_module(f"comnumpy.{module}"), name) + + +def _rayleigh(n_r: int, n_t: int, seed: int) -> np.ndarray: + from comnumpy.mimo.utils import rayleigh_channel + return rayleigh_channel(n_r, n_t, seed=seed) + + +def discover() -> dict[str, type]: + """Every Processor subclass defined in the library, by short name.""" + found = {} + for pkg in ("core", "optical", "mimo", "ofdm", "fec"): + package = importlib.import_module(f"comnumpy.{pkg}") + for info in pkgutil.iter_modules(package.__path__): + if info.name.startswith("_"): + continue + module = importlib.import_module(f"comnumpy.{pkg}.{info.name}") + for name, cls in inspect.getmembers(module, inspect.isclass): + if (issubclass(cls, Processor) and cls is not Processor + and cls.__module__ == module.__name__): + short = f"{pkg}.{info.name}.{name}" + found[short] = cls + return found + + +class TestTheCatalogueIsCovered(unittest.TestCase): + """The ratchet: a new block must declare its batch behaviour.""" + + def test_every_block_is_declared_exactly_once(self): + declared = (set(BROADCAST) | set(INDEPENDENT) | set(REFUSES) + | set(EXEMPT)) + discovered = set(discover()) + missing = sorted(discovered - declared) + self.assertFalse( + missing, + f"blocks with no declared batch behaviour: {missing} -- add " + f"each to BROADCAST, INDEPENDENT or REFUSES in " + f"tests/test_batch_contract.py with a probe input, or to " + f"EXEMPT with the reason written out (D51)") + stale = sorted(declared - discovered) + self.assertFalse(stale, f"declared but no longer found: {stale}") + for name in sorted(declared): + registers = [name in r for r in + (BROADCAST, INDEPENDENT, REFUSES, EXEMPT)] + self.assertEqual(sum(registers), 1, + f"{name} appears in {sum(registers)} registers") + + +class TestBroadcastFamily(unittest.TestCase): + """Row i of a batched call equals the block applied to row i.""" + + def test_row_equality(self): + for name, (factory, x) in BROADCAST.items(): + with self.subTest(block=name): + batched = factory()(np.asarray(x)) + single = factory()(np.asarray(x)[1]) + self.assertEqual(batched.shape[0], 3, + f"{name} lost the batch axis") + np.testing.assert_allclose( + np.asarray(batched)[1], np.asarray(single), + err_msg=f"{name}: batched row 1 differs from the " + f"block applied to row 1 alone") + + +class TestIndependentFamily(unittest.TestCase): + """Stochastic blocks draw independently per trial.""" + + def test_rows_do_not_share_a_realization(self): + for name, (factory, x) in INDEPENDENT.items(): + with self.subTest(block=name): + y = np.asarray(factory()(x)) + self.assertEqual(y.shape[0], 3, + f"{name} lost the batch axis") + self.assertFalse( + np.array_equal(y[0], y[1]), + f"{name}: two trials of a batch share a realization") + + +class TestRefusesFamily(unittest.TestCase): + """What cannot be read one way is refused, never misread.""" + + def test_the_batch_is_refused(self): + for name, (factory, x) in REFUSES.items(): + with self.subTest(block=name): + with self.assertRaises(ValueError, + msg=f"{name} accepted a batch it " + f"cannot interpret"): + factory()(x) + + +if __name__ == "__main__": + unittest.main()