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¶
-
Install DeepMIMO:
pip install --pre deepmimo -
Download a tutorial:
wget https://raw.githubusercontent.com/DeepMIMO/DeepMIMO/main/docs/tutorials/1_getting_started.py -
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¶
- Full Manual: manual.ipynb - Comprehensive reference with all examples
- API Documentation: API Reference
- GitHub Repository: DeepMIMO/DeepMIMO
- Website: deepmimo.net
Need Help?¶
Contributing¶
Found an issue in a tutorial? Have an idea for a new one? Contributions are welcome!
- Fork the repository
- Create a new tutorial or fix an existing one
- Submit a pull request
See Contributing Guidelines for more details.