Skip to main content

DeepMIMO dataset generator library

Project description

DeepMIMO

Bridging ray tracers and 5G/6G simulators with shareable, site-specific datasets

PyPI Python 3.11+ Docs License uv Ruff codecov

DeepMIMO animated showcase

QuickstartDocsWebFAQCite

G O A L H O W W H Y
Enable large‑scale AI benchmarking using site‑specific wireless ray‑tracing datasets. Convert outputs from top propagation ray tracers into a clean, distributable format readable by modern simulation toolboxes. Make ray‑tracing data easy to access, share, and benchmark—accelerating AI‑driven wireless research.

Features

  • Instant access to ray-tracing data — Compute large, realistic channels in seconds.
  • 🧪 Easy ML benchmarking across sites — Find 100s of datasets in the Scenarios Database
  • 🔁 Reproduce benchmarks — Search papers by topic and application in Publications Database.
  • 🚀 Feature-rich toolbox — Explore a wide array of wireless utilities in our Notebook Tutorials.
  • 🔌 Seamless integration — From Sionna RT/InSite/AODT to Sionna/MATLAB 5G/NeoRadium.
  • 📦 Shareable datasets — Versioned scenarios, open formats. Explore in the Online Visualizer
  • 🤗 User friendly — Great docs, practical examples, easy install, and available on Colab.
  • 🌍 Active Community & Support — Issues and Pull Requests reviewed in hours not weeks.

Quickstart

Install

# From PyPI
pip install deepmimo

# From GitHub
git clone https://github.com/DeepMIMO/DeepMIMO.git
cd DeepMIMO
pip install -e .[dev]

Basic Dataset Generation

import deepmimo as dm

# Download a dataset
dm.download('asu_campus_3p5')

# Load a dataset
dataset = dm.load('asu_campus_3p5')

# Generate channels
channels = dataset.compute_channels()  # [n_ue, n_rx, n_tx, n_sub]

Convert Ray Tracing Simulations to DeepMIMO

import deepmimo as dm

# Convert Wireless Insite, Sionna, or AODT to DeepMIMO
scenario_name = dm.convert('path_to_ray_tracing_output')

# Upload a dataset to the DeepMIMO Database (optional)
dm.upload(scenario_name, 'api-key')
# get api key in deepmimo.net -> contribute

Project Structure

deepmimo/
├── api/                    # Database API
│   ├── download.py         # Download scenarios from database
│   ├── search.py           # Search scenarios in database
│   └── upload.py           # Upload scenarios to database
├── converters/             # Ray tracer output converters
│   ├── aodt/               # AODT converter
│   ├── sionna_rt/          # Sionna RT converter
│   ├── wireless_insite/    # Wireless Insite converter
│   ├── converter.py        # Base converter class
│   └── converter_utils.py  # Converter utilities
├── core/                   # Core data models
│   ├── materials.py        # Material properties
│   ├── rt_params.py        # Ray tracing parameters
│   ├── scene.py            # Physical environment representation
│   └── txrx.py             # Transmitter/receiver configurations
├── datasets/               # Dataset operations
│   ├── array_wrapper.py    # Array management utilities
│   ├── dataset.py          # Dataset, MacroDataset, DynamicDataset classes
│   ├── generate.py         # Dataset generation with channel computation
│   ├── load.py             # Dataset loading functionality
│   ├── sampling.py         # User sampling utilities
│   ├── summary.py          # Dataset summary functions
│   └── visualization.py    # Plotting and visualization tools
├── exporters/              # Data exporters
│   ├── aodt_exporter.py    # AODT format exporter
│   └── sionna_exporter.py  # Sionna format exporter
├── generator/              # Channel generation
│   ├── ant_patterns.py     # Antenna pattern definitions
│   ├── channel.py          # MIMO channel computation
│   └── geometry.py         # Geometric calculations and beamforming
├── integrations/           # Integration with 5G simulation tools
│   ├── matlab/             # MATLAB 5G Toolbox integration
│   ├── sionna_adapter.py   # Sionna integration
│   └── web.py              # DeepMIMO web format export
├── pipelines/              # Automatic ray tracing pipelines
│   ├── sionna_rt/          # Sionna raytracer pipeline
│   ├── wireless_insite/    # Wireless Insite pipeline
│   ├── blender_osm.py      # Blender OSM export utilities
│   ├── txrx_placement.py   # Transmitter/receiver placement
│   └── utils/              # Pipeline utilities
├── utils/                  # Utility modules
│   ├── data_structures.py  # Custom data structures
│   ├── dict_utils.py       # Dictionary utilities
│   ├── geometry.py         # Geometric utility functions
│   ├── info.py             # Information on matrices and parameters
│   ├── io.py               # File I/O operations
│   └── scenarios.py        # Scenario management functions
├── config.py               # Configuration management
└── consts.py               # Constants and default values

Additional directories:
├── docs/                   # Documentation
├── scripts/                # Utility scripts
└── tests/                  # Test suite

Build the Docs

After cloning the repository:

Step Command Description
Install pip install .[dev] Install development dependencies
Serve mkdocs serve Preview at http://localhost:8000

Change execute: false to execute: true in mkdocs.yml to run the tutorials and preserve cell outputs.

Contributing

We welcome contributions to DeepMIMO! To contribute:

  1. Fork the repository
  2. Make changes
  3. Open a Pull Request

We aim to respond to pull requests within 24 hours.

FAQ

1) What is DeepMIMO useful for?
  • Free, easy and fast access to ray tracing data across hundreds of site-specific datasets.
  • Connecting raytracers and simulators, allowing flexible research.
  • Sharing Datasets to make research more easily reproducible
2) Why using DeepMIMO if Sionna exists?

DeepMIMO is not a simulator; it’s a standardized ray-tracing toolchain that relies and complements ray-tracing tools like Sionna RT. Re-running a single high-quality scenario can take hours or days of compute, provided one can resurrect the original scripts and software environment. And even when this succeeds, every group tends to store the channels in its own ad-hoc format, so results are not plug-and-play across projects. With DeepMIMO, we skip all that: authors publish a scenario once, and anyone can load the exact same data in seconds with a small Python snippet. DeepMIMO makes sharing, reproducing, and comparing ray-tracing results dramatically easier and more reliable.

3) How long do dataset downloads take?

A few minutes. Sometimes seconds. Data is stored on super-fast and available object storage, so in practice the transfer speeds are limited by the internet connection (see speedtest.net). At 50 Mbps the ASU Campus scenario with 85 thousand candidate users would take ~5 seconds to download.

Citation

If you use this software, please cite it:

@misc{alkhateeb2019deepmimo,
      title={DeepMIMO: A Generic Deep Learning Dataset for Millimeter Wave and Massive MIMO Applications}, 
      author={Ahmed Alkhateeb},
      year={2019},
      eprint={1902.06435},
      archivePrefix={arXiv},
      primaryClass={cs.IT},
      url={https://arxiv.org/abs/1902.06435}, 
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepmimo-4.0.3.tar.gz (237.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deepmimo-4.0.3-py3-none-any.whl (268.8 kB view details)

Uploaded Python 3

File details

Details for the file deepmimo-4.0.3.tar.gz.

File metadata

  • Download URL: deepmimo-4.0.3.tar.gz
  • Upload date:
  • Size: 237.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.14.0

File hashes

Hashes for deepmimo-4.0.3.tar.gz
Algorithm Hash digest
SHA256 be659242577dad243ccf5652758def7b85e9b9e3775092df2188f23c7e93231b
MD5 655cef5a2d32c8ca9ecb273bfd5a9736
BLAKE2b-256 4cfee4069b99a8b9d7b26fa7863ce20477839528d4886fea5f52a19608edb228

See more details on using hashes here.

File details

Details for the file deepmimo-4.0.3-py3-none-any.whl.

File metadata

  • Download URL: deepmimo-4.0.3-py3-none-any.whl
  • Upload date:
  • Size: 268.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.14.0

File hashes

Hashes for deepmimo-4.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e88b31c0fe91edaa6ddd33dd67c02ede9eafc6c64d49d3ef77f60a905f01d2ed
MD5 c3a2ccaadf4d3f02fd1bf600f34c2880
BLAKE2b-256 90d3088db126e0ff3719c2e0eeb919a260e02a00f83313c9ef26d7eed835bc36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page