mimodium 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mimodium-0.0.1/.github/workflows/ci.yml +120 -0
- mimodium-0.0.1/.github/workflows/python-publish.yml +101 -0
- mimodium-0.0.1/.gitignore +15 -0
- mimodium-0.0.1/.readthedocs.yaml +17 -0
- mimodium-0.0.1/AGENTS.md +11 -0
- mimodium-0.0.1/CITATION.cff +24 -0
- mimodium-0.0.1/LICENSE +674 -0
- mimodium-0.0.1/PKG-INFO +131 -0
- mimodium-0.0.1/README.md +85 -0
- mimodium-0.0.1/docs/_ext/mimodium_semantic_types.py +588 -0
- mimodium-0.0.1/docs/_static/brand/GO-FONT-LICENSE.txt +36 -0
- mimodium-0.0.1/docs/_static/brand/README.md +78 -0
- mimodium-0.0.1/docs/_static/brand/exports/.gitignore +2 -0
- mimodium-0.0.1/docs/_static/brand/font/Go-Medium.ttf +0 -0
- mimodium-0.0.1/docs/_static/brand/generate_assets.py +405 -0
- mimodium-0.0.1/docs/_static/brand/mimodium-logo-dark.svg +37 -0
- mimodium-0.0.1/docs/_static/brand/mimodium-logo-editable.svg +28 -0
- mimodium-0.0.1/docs/_static/brand/mimodium-logo.svg +37 -0
- mimodium-0.0.1/docs/_static/brand/mimodium-mark-dark.png +0 -0
- mimodium-0.0.1/docs/_static/brand/mimodium-mark.svg +27 -0
- mimodium-0.0.1/docs/_static/mimodium.css +164 -0
- mimodium-0.0.1/docs/api/algorithms/access.rst +4 -0
- mimodium-0.0.1/docs/api/algorithms/channel_estimation.rst +4 -0
- mimodium-0.0.1/docs/api/algorithms/downlink_precoding.rst +4 -0
- mimodium-0.0.1/docs/api/algorithms/index.rst +16 -0
- mimodium-0.0.1/docs/api/algorithms/power_control.rst +4 -0
- mimodium-0.0.1/docs/api/algorithms/uplink_combining.rst +4 -0
- mimodium-0.0.1/docs/api/algorithms/uplink_fusion.rst +4 -0
- mimodium-0.0.1/docs/api/core_tasks.rst +6 -0
- mimodium-0.0.1/docs/api/evaluation/asymptotics.rst +4 -0
- mimodium-0.0.1/docs/api/evaluation/index.rst +13 -0
- mimodium-0.0.1/docs/api/evaluation/set_sizes.rst +4 -0
- mimodium-0.0.1/docs/api/evaluation/spectral_efficiency.rst +4 -0
- mimodium-0.0.1/docs/api/index.rst +13 -0
- mimodium-0.0.1/docs/api/propagation/channel_generation.rst +4 -0
- mimodium-0.0.1/docs/api/propagation/index.rst +14 -0
- mimodium-0.0.1/docs/api/propagation/path_loss.rst +4 -0
- mimodium-0.0.1/docs/api/propagation/radio_parameters.rst +4 -0
- mimodium-0.0.1/docs/api/propagation/shadow_fading.rst +4 -0
- mimodium-0.0.1/docs/api/rng.rst +7 -0
- mimodium-0.0.1/docs/api/scenario/ap.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/area.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/cpu.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/fronthaul.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/geometry.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/index.rst +18 -0
- mimodium-0.0.1/docs/api/scenario/midhaul.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/power.rst +4 -0
- mimodium-0.0.1/docs/api/scenario/ue.rst +4 -0
- mimodium-0.0.1/docs/api/visualization/index.rst +12 -0
- mimodium-0.0.1/docs/api/visualization/plot_top_view.rst +29 -0
- mimodium-0.0.1/docs/api/visualization/use_default_style.rst +6 -0
- mimodium-0.0.1/docs/conf.py +79 -0
- mimodium-0.0.1/docs/getting_started/index.rst +36 -0
- mimodium-0.0.1/docs/index.rst +65 -0
- mimodium-0.0.1/docs/researcher_guide/index.rst +20 -0
- mimodium-0.0.1/docs/semantic_types.rst +15 -0
- mimodium-0.0.1/docs/sg_execution_times.rst +37 -0
- mimodium-0.0.1/docs/tutorial_sources/hello_world/README.rst +4 -0
- mimodium-0.0.1/docs/tutorial_sources/hello_world/plot_hello_world.py +71 -0
- mimodium-0.0.1/docs/tutorials/index.rst +20 -0
- mimodium-0.0.1/pyproject.toml +92 -0
- mimodium-0.0.1/src/mimodium/__init__.py +74 -0
- mimodium-0.0.1/src/mimodium/algorithms/__init__.py +93 -0
- mimodium-0.0.1/src/mimodium/algorithms/access.py +603 -0
- mimodium-0.0.1/src/mimodium/algorithms/channel_estimation.py +324 -0
- mimodium-0.0.1/src/mimodium/algorithms/downlink_precoding.py +255 -0
- mimodium-0.0.1/src/mimodium/algorithms/power_control.py +382 -0
- mimodium-0.0.1/src/mimodium/algorithms/uplink_combining.py +513 -0
- mimodium-0.0.1/src/mimodium/algorithms/uplink_fusion.py +808 -0
- mimodium-0.0.1/src/mimodium/array_ops.py +40 -0
- mimodium-0.0.1/src/mimodium/evaluation/__init__.py +47 -0
- mimodium-0.0.1/src/mimodium/evaluation/asymptotics.py +279 -0
- mimodium-0.0.1/src/mimodium/evaluation/set_sizes.py +205 -0
- mimodium-0.0.1/src/mimodium/evaluation/spectral_efficiency.py +477 -0
- mimodium-0.0.1/src/mimodium/propagation/__init__.py +47 -0
- mimodium-0.0.1/src/mimodium/propagation/channel_generation.py +213 -0
- mimodium-0.0.1/src/mimodium/propagation/path_loss.py +909 -0
- mimodium-0.0.1/src/mimodium/propagation/radio_parameters.py +179 -0
- mimodium-0.0.1/src/mimodium/propagation/shadow_fading.py +382 -0
- mimodium-0.0.1/src/mimodium/rng.py +59 -0
- mimodium-0.0.1/src/mimodium/scenario/__init__.py +72 -0
- mimodium-0.0.1/src/mimodium/scenario/ap.py +241 -0
- mimodium-0.0.1/src/mimodium/scenario/area.py +45 -0
- mimodium-0.0.1/src/mimodium/scenario/cpu.py +146 -0
- mimodium-0.0.1/src/mimodium/scenario/fronthaul.py +38 -0
- mimodium-0.0.1/src/mimodium/scenario/geometry.py +249 -0
- mimodium-0.0.1/src/mimodium/scenario/midhaul.py +96 -0
- mimodium-0.0.1/src/mimodium/scenario/power.py +73 -0
- mimodium-0.0.1/src/mimodium/scenario/ue.py +144 -0
- mimodium-0.0.1/src/mimodium/visualization/__init__.py +46 -0
- mimodium-0.0.1/src/mimodium/visualization/_marker.py +1899 -0
- mimodium-0.0.1/src/mimodium/visualization/_top_view.py +569 -0
- mimodium-0.0.1/src/mimodium/visualization/mimodium.mplstyle +26 -0
- mimodium-0.0.1/src/mimodium/visualization/svgs/ap.svg +6 -0
- mimodium-0.0.1/src/mimodium/visualization/svgs/ap_thin.svg +82 -0
- mimodium-0.0.1/src/mimodium/visualization/svgs/cpu.svg +6 -0
- mimodium-0.0.1/src/mimodium/visualization/svgs/ue.svg +1 -0
- mimodium-0.0.1/src/mimodium/warnings.py +6 -0
- mimodium-0.0.1/tests/algorithms/test_access.py +381 -0
- mimodium-0.0.1/tests/algorithms/test_channel_estimation.py +266 -0
- mimodium-0.0.1/tests/algorithms/test_downlink_precoding.py +191 -0
- mimodium-0.0.1/tests/algorithms/test_power_control.py +337 -0
- mimodium-0.0.1/tests/algorithms/test_uplink_combining.py +134 -0
- mimodium-0.0.1/tests/algorithms/test_uplink_fusion.py +622 -0
- mimodium-0.0.1/tests/evaluation/test_asymptotics.py +188 -0
- mimodium-0.0.1/tests/evaluation/test_set_sizes.py +89 -0
- mimodium-0.0.1/tests/evaluation/test_spectral_efficiency.py +258 -0
- mimodium-0.0.1/tests/propagation/test_channel_generation.py +187 -0
- mimodium-0.0.1/tests/propagation/test_path_loss.py +417 -0
- mimodium-0.0.1/tests/propagation/test_radio_parameters.py +79 -0
- mimodium-0.0.1/tests/propagation/test_shadow_fading.py +399 -0
- mimodium-0.0.1/tests/scenario/test_ap.py +149 -0
- mimodium-0.0.1/tests/scenario/test_area.py +13 -0
- mimodium-0.0.1/tests/scenario/test_cpu.py +108 -0
- mimodium-0.0.1/tests/scenario/test_fronthaul.py +61 -0
- mimodium-0.0.1/tests/scenario/test_geometry.py +167 -0
- mimodium-0.0.1/tests/scenario/test_integration.py +156 -0
- mimodium-0.0.1/tests/scenario/test_midhaul.py +133 -0
- mimodium-0.0.1/tests/scenario/test_power.py +29 -0
- mimodium-0.0.1/tests/scenario/test_ue.py +96 -0
- mimodium-0.0.1/tests/scenario/test_validation.py +81 -0
- mimodium-0.0.1/tests/test_array_ops.py +53 -0
- mimodium-0.0.1/tests/test_rng.py +94 -0
- mimodium-0.0.1/tests/test_version.py +7 -0
- mimodium-0.0.1/tests/test_warnings.py +14 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
env:
|
|
12
|
+
MPLBACKEND: Agg
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
quality:
|
|
16
|
+
name: Code quality
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 15
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Check out repository
|
|
22
|
+
uses: actions/checkout@v6
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v6
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
cache: pip
|
|
29
|
+
|
|
30
|
+
- name: Install package and development dependencies
|
|
31
|
+
run: python -m pip install -e ".[dev]"
|
|
32
|
+
|
|
33
|
+
- name: Check formatting
|
|
34
|
+
run: ruff format --check src tests docs
|
|
35
|
+
|
|
36
|
+
- name: Lint
|
|
37
|
+
run: ruff check src tests docs
|
|
38
|
+
|
|
39
|
+
tests:
|
|
40
|
+
name: Tests (Python ${{ matrix.python-version }})
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
timeout-minutes: 15
|
|
43
|
+
strategy:
|
|
44
|
+
fail-fast: false
|
|
45
|
+
matrix:
|
|
46
|
+
python-version: ["3.12", "3.13", "3.14"]
|
|
47
|
+
|
|
48
|
+
steps:
|
|
49
|
+
- name: Check out repository
|
|
50
|
+
uses: actions/checkout@v6
|
|
51
|
+
|
|
52
|
+
- name: Set up Python
|
|
53
|
+
uses: actions/setup-python@v6
|
|
54
|
+
with:
|
|
55
|
+
python-version: ${{ matrix.python-version }}
|
|
56
|
+
cache: pip
|
|
57
|
+
|
|
58
|
+
- name: Install package and test dependencies
|
|
59
|
+
run: python -m pip install -e ".[test]"
|
|
60
|
+
|
|
61
|
+
- name: Run tests
|
|
62
|
+
run: pytest
|
|
63
|
+
|
|
64
|
+
documentation:
|
|
65
|
+
name: Documentation
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
timeout-minutes: 15
|
|
68
|
+
|
|
69
|
+
steps:
|
|
70
|
+
- name: Check out repository
|
|
71
|
+
uses: actions/checkout@v6
|
|
72
|
+
|
|
73
|
+
- name: Set up Python
|
|
74
|
+
uses: actions/setup-python@v6
|
|
75
|
+
with:
|
|
76
|
+
python-version: "3.12"
|
|
77
|
+
cache: pip
|
|
78
|
+
|
|
79
|
+
- name: Install package and documentation dependencies
|
|
80
|
+
run: python -m pip install -e ".[docs]"
|
|
81
|
+
|
|
82
|
+
- name: Build documentation strictly
|
|
83
|
+
run: sphinx-build -E -W --keep-going -b html docs docs/_build/html
|
|
84
|
+
|
|
85
|
+
distribution:
|
|
86
|
+
name: Distribution
|
|
87
|
+
runs-on: ubuntu-latest
|
|
88
|
+
timeout-minutes: 15
|
|
89
|
+
|
|
90
|
+
steps:
|
|
91
|
+
- name: Check out repository
|
|
92
|
+
uses: actions/checkout@v6
|
|
93
|
+
|
|
94
|
+
- name: Set up Python
|
|
95
|
+
uses: actions/setup-python@v6
|
|
96
|
+
with:
|
|
97
|
+
python-version: "3.12"
|
|
98
|
+
cache: pip
|
|
99
|
+
|
|
100
|
+
- name: Install build tools
|
|
101
|
+
run: python -m pip install build twine
|
|
102
|
+
|
|
103
|
+
- name: Build wheel and source distribution
|
|
104
|
+
run: python -m build
|
|
105
|
+
|
|
106
|
+
- name: Check distribution metadata
|
|
107
|
+
run: python -m twine check dist/*
|
|
108
|
+
|
|
109
|
+
- name: Smoke-test built wheel
|
|
110
|
+
run: |
|
|
111
|
+
python -m venv wheel-test-env
|
|
112
|
+
wheel-test-env/bin/python -m pip install dist/*.whl
|
|
113
|
+
wheel-test-env/bin/python -I -c "import mimodium; assert len(mimodium.core_tasks()) > 0"
|
|
114
|
+
|
|
115
|
+
- name: Upload distributions
|
|
116
|
+
uses: actions/upload-artifact@v7
|
|
117
|
+
with:
|
|
118
|
+
name: distributions
|
|
119
|
+
path: dist/
|
|
120
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Upload Mimodium to PyPI when a GitHub release is published.
|
|
2
|
+
|
|
3
|
+
name: Upload Python Package
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
release:
|
|
7
|
+
types: [published]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release-build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
|
|
19
|
+
- uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Install release dependencies
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
python -m pip install -e ".[dev]"
|
|
27
|
+
|
|
28
|
+
- name: Verify release version
|
|
29
|
+
env:
|
|
30
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
31
|
+
run: |
|
|
32
|
+
python - <<'PY'
|
|
33
|
+
import os
|
|
34
|
+
from pathlib import Path
|
|
35
|
+
import tomllib
|
|
36
|
+
|
|
37
|
+
project = tomllib.loads(Path("pyproject.toml").read_text())
|
|
38
|
+
package_version = project["project"]["version"]
|
|
39
|
+
citation_version = next(
|
|
40
|
+
line.split(":", 1)[1].strip().strip("'\"")
|
|
41
|
+
for line in Path("CITATION.cff").read_text().splitlines()
|
|
42
|
+
if line.startswith("version:")
|
|
43
|
+
)
|
|
44
|
+
expected_tag = f"v{package_version}"
|
|
45
|
+
release_tag = os.environ["RELEASE_TAG"]
|
|
46
|
+
|
|
47
|
+
if release_tag != expected_tag or citation_version != package_version:
|
|
48
|
+
raise SystemExit(
|
|
49
|
+
"Release version mismatch: "
|
|
50
|
+
f"tag={release_tag!r}, package={package_version!r}, "
|
|
51
|
+
f"citation={citation_version!r}"
|
|
52
|
+
)
|
|
53
|
+
PY
|
|
54
|
+
|
|
55
|
+
- name: Check formatting
|
|
56
|
+
run: ruff format --check src tests docs
|
|
57
|
+
|
|
58
|
+
- name: Lint
|
|
59
|
+
run: ruff check src tests docs
|
|
60
|
+
|
|
61
|
+
- name: Test
|
|
62
|
+
run: pytest
|
|
63
|
+
|
|
64
|
+
- name: Build docs
|
|
65
|
+
run: sphinx-build -E -W --keep-going -b html docs docs/_build/html
|
|
66
|
+
|
|
67
|
+
- name: Build release distributions
|
|
68
|
+
run: python -m build
|
|
69
|
+
|
|
70
|
+
- name: Check release distributions
|
|
71
|
+
run: python -m twine check dist/*
|
|
72
|
+
|
|
73
|
+
- name: Upload distributions
|
|
74
|
+
uses: actions/upload-artifact@v7
|
|
75
|
+
with:
|
|
76
|
+
name: release-dists
|
|
77
|
+
path: dist/
|
|
78
|
+
|
|
79
|
+
pypi-publish:
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
needs:
|
|
82
|
+
- release-build
|
|
83
|
+
permissions:
|
|
84
|
+
contents: read
|
|
85
|
+
id-token: write
|
|
86
|
+
|
|
87
|
+
environment:
|
|
88
|
+
name: pypi
|
|
89
|
+
url: https://pypi.org/project/mimodium/
|
|
90
|
+
|
|
91
|
+
steps:
|
|
92
|
+
- name: Retrieve release distributions
|
|
93
|
+
uses: actions/download-artifact@v8
|
|
94
|
+
with:
|
|
95
|
+
name: release-dists
|
|
96
|
+
path: dist/
|
|
97
|
+
|
|
98
|
+
- name: Publish release distributions to PyPI
|
|
99
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
100
|
+
with:
|
|
101
|
+
packages-dir: dist/
|
mimodium-0.0.1/AGENTS.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Documentation guidance
|
|
2
|
+
|
|
3
|
+
- Keep type docstrings as short as possible while remaining expressive.
|
|
4
|
+
- Give task docstrings enough detail to explain not only what the task does and
|
|
5
|
+
how to use it, but also why it exists. Include examples for complicated
|
|
6
|
+
algorithms when useful.
|
|
7
|
+
- Use `:type:` links frequently in type documentation. They are generally
|
|
8
|
+
unnecessary in task documentation because the task's `__call__` method
|
|
9
|
+
already provides those links.
|
|
10
|
+
- When a task accepts configurable input types, always explain how to use them
|
|
11
|
+
with `:code:` markup.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: >-
|
|
3
|
+
If you use Mimodium in a research publication, please cite the software
|
|
4
|
+
version and exact commit. This citation metadata will be updated to prefer
|
|
5
|
+
the companion paper before the public 0.1 release.
|
|
6
|
+
title: "Mimodium: Cell-Free Massive MIMO Simulation Library"
|
|
7
|
+
authors:
|
|
8
|
+
- family-names: Schulz
|
|
9
|
+
given-names: Leonard
|
|
10
|
+
email: leonard.schulz@tuhh.de
|
|
11
|
+
version: 0.0.1
|
|
12
|
+
license: GPL-3.0-or-later
|
|
13
|
+
repository-code: "https://github.com/LPSchulz/mimodium"
|
|
14
|
+
url: "https://mimodium.readthedocs.io/"
|
|
15
|
+
abstract: >-
|
|
16
|
+
Mimodium is a Python research library for reproducible cell-free massive MIMO
|
|
17
|
+
system-level simulations. It provides Dagreon task components for scenario
|
|
18
|
+
generation, propagation and channel modeling, signal-processing algorithms,
|
|
19
|
+
evaluation metrics, and visualization.
|
|
20
|
+
keywords:
|
|
21
|
+
- cell-free massive MIMO
|
|
22
|
+
- wireless communications
|
|
23
|
+
- system-level simulation
|
|
24
|
+
- reproducibility
|