Skip to content

ArrayLink Codebase: Near-field LoS MIMO for Satellites#1

Merged
rohithreddyvennam merged 10 commits into
mainfrom
dev/initial-version
May 27, 2026
Merged

ArrayLink Codebase: Near-field LoS MIMO for Satellites#1
rohithreddyvennam merged 10 commits into
mainfrom
dev/initial-version

Conversation

@rohithreddyvennam
Copy link
Copy Markdown
Contributor

Full simulator and hardware results for the INFOCOM 2026 paper.
For more details refer webpage: wcsng.ucsd.edu/arraylink/

License
- Add LICENSE (Apache 2.0, copyright 2025 UCSD WCSNG)
- Add SPDX-License-Identifier headers to all 18 Python source files
- Add license badge and License section to README

New figure
- scripts/fig02_parabolic_gain.py: Airy-disk beam pattern for 1.85 m and
  1.47 m dishes (η=0.6) at 28 GHz; outputs full ±90° and zoomed ±1° PDFs
- arraylink/beamforming.py: add parabolic_beam_pattern_dbi() using scipy j1;
  stable near θ=0 via masked denominator

YAML config loading (fig09 / fig11 / fig12)
- Load frequency, aperture, subarray shape, and element gain from
  configs/arraylink_1km.yaml via --config CLI arg; no more scattered
  module-level magic numbers
- Fix PyYAML float parsing: 28.0e9 → 28.0e+9 in both config files

Bug fixes
- channel.degrees_of_freedom: use σ_k/σ_1 ≥ τ (paper Eq. 7), not
  L2-normalised absolute threshold; fixes undercounting of spatial streams
- fig12_mimo_dof.py: same DoF criterion fix applied inline
- fig06 quick mode: √2e3 → √2×1e3 (was ~45 m instead of ~1414 m)
- fig13 config labels: dynamic f-strings instead of hardcoded "52.6 dBi"
- fig13 --quick: print completion message instead of silent exit
- arraylink/__init__.py: export parabolic_beam_pattern_dbi and load_config

Tests
- test_channel.py: add test_uses_sigma1_ratio_not_l2_norm (guards DoF fix)
- test_channel.py: add test_rank1_channel_dof_is_1
- Move optional plotly install out of Installation into a callout
  under Reproducing Figures, next to the fig11 interactive flag
- Merge Hardware data subsection into a matching callout, same pattern
- Trim Quick Start to a single clean code block (remove verbose comments)
- Rename Key Assumptions → Key Parameters; trim from 8 to 5 rows,
  drop Notes column and internal params already covered by YAML configs
- Condense License section to one line + copyright
Copilot AI review requested due to automatic review settings May 27, 2026 23:13
@rohithreddyvennam
Copy link
Copy Markdown
Contributor Author

Confirm squash and merge.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR replaces the placeholder repository with the initial ArrayLink simulator codebase for near-field LoS MIMO satellite-ground-station experiments, including reusable Python modules, figure-generation scripts, configs, tests, CI, documentation, and data notes.

Changes:

  • Adds the arraylink package for channel modeling, array geometry, beamforming, coordinate utilities, and config loading.
  • Adds reproducibility scripts for paper figures 2, 4, 6, 9, 10, 11, 12, and 13.
  • Adds YAML configs, pytest unit/smoke tests, CI, Apache 2.0 license, README documentation, and hardware-data documentation.

Reviewed changes

Copilot reviewed 25 out of 27 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/ci.yml Adds GitHub Actions CI using micromamba and pytest.
.gitignore Ignores generated Python/simulation artifacts while allowing the bundled hardware pickle.
LICENSE Adds Apache 2.0 licensing text.
Readme.md Documents installation, usage, figure reproduction, tests, package layout, and citation.
environment.yml Defines the conda/mamba environment for simulator dependencies.
arraylink/__init__.py Re-exports core simulator APIs.
arraylink/array_geometry.py Adds UPA, center-dense, uniform-grid, subarray, and ground-station builders.
arraylink/beamforming.py Adds dish/array gain formulas, DC weights, and beam-pattern computation helpers.
arraylink/channel.py Adds LoS channel, singular-value, DoF, MIMO-boundary, and spectral-efficiency utilities.
arraylink/utils.py Adds YAML loading, coordinate conversion, dB conversion, and grid generation helpers.
configs/arraylink_1km.yaml Adds default ArrayLink satellite-scale simulation parameters.
configs/upa_baseline.yaml Adds monolithic UPA baseline configuration.
data/README.md Documents bundled hardware metrics and Fig. 10 data expectations.
data/hardware_metrics.pkl Provides preprocessed hardware metrics for validation plotting.
scripts/fig02_parabolic_gain.py Adds Fig. 2 parabolic dish beam-pattern generation.
scripts/fig04_gain_vs_arrays.py Adds Fig. 4 total/marginal array-gain plotting.
scripts/fig06_mimo_boundaries.py Adds Fig. 6 MIMO feasibility boundary plotting.
scripts/fig09_beampattern_sim.py Adds Fig. 9 UPA/ArrayLink geometry and beam-pattern simulation.
scripts/fig10_hardware_validation.py Adds Fig. 10 theory/simulation/hardware validation plotting.
scripts/fig11_2d_beampattern.py Adds Fig. 11 2D beam-pattern heatmap generation.
scripts/fig12_mimo_dof.py Adds Fig. 12 singular-ratio and DoF-vs-distance plotting.
scripts/fig13_throughput.py Adds Fig. 13 throughput comparison plotting.
tests/__init__.py Marks tests as a package and adds license header.
tests/test_array_geometry.py Adds unit tests for array geometry helpers.
tests/test_beamforming.py Adds unit tests for gain and beamforming helpers.
tests/test_channel.py Adds unit tests for channel, MIMO bounds, spectral efficiency, and DoF.
tests/test_smoke.py Adds smoke tests for most figure scripts in quick mode.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +11 to +12
- D = 1.85 m (η = 0.577) → ~52.3 dBi peak [baseline dish]
- D = 1.47 m (η = 0.50) → ~49.7 dBi peak [smaller reference]
Comment thread arraylink/channel.py
Comment on lines +215 to +216
s = compute_singular_values(H, normalise=True)
dof_list.append(int(np.sum(s >= threshold)))
Comment thread tests/test_smoke.py
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@rohithreddyvennam
Copy link
Copy Markdown
Contributor Author

Confirm squash and merge.

@rohithreddyvennam rohithreddyvennam merged commit c72614e into main May 27, 2026
2 checks passed
@rohithreddyvennam rohithreddyvennam deleted the dev/initial-version branch May 27, 2026 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants