Skip to content

DeepMIMO Tutorials

Welcome to the DeepMIMO tutorials! These step-by-step guides will help you master the DeepMIMO dataset generator.

Tutorial Overview

# Tutorial Description Video
1 Getting Started Load scenarios, generate channels, explore datasets ▶️
2 Visualization and Scene Coverage maps, ray visualization, 3D scenes ▶️
3 Detailed Channel Generation Channel parameters, time/freq domain, antenna rotation ▶️
4 User Selection and Dataset Manipulation Sampling, trimming, filtering by various criteria ▶️
5 Doppler and Mobility Time-varying channels, mobility models, Doppler effects ▶️
6 Beamforming Steering vectors, beamforming visualization, MIMO ▶️
7 Convert & Upload Ray-tracing Dataset External ray tracers, format conversion, uploading ▶️
8 Migration Guide Migrating from DeepMIMO v3 to v4 ▶️
9 Complete Examples Manual Comprehensive reference with all DeepMIMO examples -

How to Use These Tutorials

Running Locally

  1. Install DeepMIMO:

    pip install --pre deepmimo
    

  2. Download a tutorial:

    wget https://raw.githubusercontent.com/DeepMIMO/DeepMIMO/main/docs/tutorials/1_getting_started.py
    

  3. Run the tutorial:

    python 1_getting_started.py
    

Running in Colab

Each tutorial has a "Open in Colab" badge at the top. Click it to run the tutorial in Google Colab.

Running with Jupyter

The tutorials are Python files with cell markers (# %%) that work with: - VS Code Python extension - JupyterLab / Jupyter Notebook (using jupytext) - PyCharm Professional

Tutorial Contents

1. Getting Started

  • Part 1: Hello World - basic dataset loading and channel generation
  • Part 2: Deep Dive - complex scenarios with multiple base stations
  • Part 3: Discovery - using dm.info(), aliases, and implicit computations

Key Functions: dm.download(), dm.load(), dataset.compute_channels(), dm.info()

2. Visualization and Scene

  • Coverage maps for power, pathloss, and other metrics
  • Ray propagation visualization
  • Path plots (power percentage, interactions)
  • 3D scene and materials
  • Overlaying multiple visualizations

Key Functions: dataset.power.plot(), dataset.plot_rays(), dataset.scene.plot()

3. Detailed Channel Generation

  • Configuring channel parameters
  • Time-domain channel generation
  • OFDM/frequency-domain channels
  • Antenna array configuration and rotation
  • Comparing different antenna configurations

Key Functions: dm.ChannelParameters(), dataset.compute_channels()

4. User Selection and Dataset Manipulation

  • Dataset trimming and active user filtering
  • Uniform and linear sampling
  • Row/column selection
  • Rectangular zone filtering
  • Path type and depth filtering
  • Field-of-view (FOV) analysis

Key Functions: dataset.get_idxs(), dataset.trim()

5. Doppler and Mobility

  • Setting Doppler shifts directly
  • Defining user/object velocities
  • Time-varying channel generation
  • Mobility patterns (linear, circular)
  • Doppler spectrum analysis

Key Functions: dataset.set_doppler(), dataset.rx_vel, dataset.tx_vel, dataset.set_timestamps()

6. Beamforming

  • Computing steering vectors
  • Beamforming gain calculation
  • Beam pattern visualization (rectangular and polar)
  • Best beam selection
  • Multi-user beamforming (zero-forcing)

Key Functions: dm.steering_vec(), beamforming visualization methods

7. Convert & Upload Ray-tracing Dataset

  • Converting from Wireless InSite
  • Converting from Sionna RT
  • Converting from AODT
  • Uploading scenarios to DeepMIMO database
  • Best practices for dataset sharing

Key Functions: dm.convert(), dm.upload(), dm.upload_images()

8. Migration Guide

  • Key differences between v3 and v4
  • Updated workflows and API
  • Parameter name mapping
  • Migration checklist
  • Common migration patterns

Additional Resources

Need Help?

Contributing

Found an issue in a tutorial? Have an idea for a new one? Contributions are welcome!

  1. Fork the repository
  2. Create a new tutorial or fix an existing one
  3. Submit a pull request

See Contributing Guidelines for more details.