Metadata-Version: 2.4
Name: DeepMIMO
Version: 4.0.0b10
Summary: DeepMIMO dataset generator library
Author: João Morais, Umut Demirhan, Ahmed Alkhateeb
License-Expression: GPL-2.0-or-later
Project-URL: Homepage, https://deepmimo.net/
Keywords: MIMO,ray tracing,dataset,DeepMIMO,raytracing,wireless
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib>=3.8.2
Requires-Dist: numpy<2.3,>=1.19.5
Requires-Dist: scipy>=1.6.2
Requires-Dist: tqdm>=4.59.0
Requires-Dist: requests
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: jupyter; extra == "dev"
Requires-Dist: twine==6.0.1; extra == "dev"
Provides-Extra: doc
Requires-Dist: sphinx<8.0.0,>=7.2.6; extra == "doc"
Requires-Dist: myst-parser; extra == "doc"
Requires-Dist: myst-nb>=0.17.2; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "doc"
Requires-Dist: sphinx-copybutton>=0.5.0; extra == "doc"
Requires-Dist: sphinx-automodapi>=0.15.0; extra == "doc"
Requires-Dist: sphinxext-opengraph>=0.8.0; extra == "doc"
Requires-Dist: sphinx-design>=0.4.1; extra == "doc"
Requires-Dist: ipykernel>=6.0.0; extra == "doc"
Requires-Dist: docutils>=0.19; extra == "doc"
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "doc"
Provides-Extra: aodt
Requires-Dist: pandas; extra == "aodt"
Requires-Dist: pyarrow; extra == "aodt"
Provides-Extra: insite
Requires-Dist: utm; extra == "insite"
Requires-Dist: lxml; extra == "insite"
Requires-Dist: pandas; extra == "insite"
Requires-Dist: shapely; extra == "insite"
Requires-Dist: bpy==3.6.0; python_version == "3.10" and extra == "insite"
Requires-Dist: bpy==4.4.0; python_version == "3.11" and extra == "insite"
Requires-Dist: numpy<2.0; python_version == "3.11" and extra == "insite"
Requires-Dist: plyfile; extra == "insite"
Provides-Extra: sionna
Requires-Dist: utm; extra == "sionna"
Requires-Dist: lxml; extra == "sionna"
Requires-Dist: pandas; extra == "sionna"
Requires-Dist: shapely; extra == "sionna"
Requires-Dist: bpy==3.6.0; python_version == "3.10" and extra == "sionna"
Requires-Dist: bpy==4.4.0; python_version == "3.11" and extra == "sionna"
Requires-Dist: numpy<2.0; python_version == "3.11" and extra == "sionna"
Requires-Dist: sionna-rt==1.0.2; extra == "sionna"
Requires-Dist: jupyter; extra == "sionna"
Provides-Extra: sionna019
Requires-Dist: utm; extra == "sionna019"
Requires-Dist: lxml; extra == "sionna019"
Requires-Dist: pandas; extra == "sionna019"
Requires-Dist: shapely; extra == "sionna019"
Requires-Dist: bpy==3.6.0; python_version == "3.10" and extra == "sionna019"
Requires-Dist: bpy==4.4.0; python_version == "3.11" and extra == "sionna019"
Requires-Dist: numpy<2.0; python_version == "3.11" and extra == "sionna019"
Requires-Dist: numpy<2.0; extra == "sionna019"
Requires-Dist: jupyter; extra == "sionna019"
Requires-Dist: absl-py==2.1.0; extra == "sionna019"
Requires-Dist: gpustat==1.1.1; extra == "sionna019"
Requires-Dist: keras==2.15.0; extra == "sionna019"
Requires-Dist: matplotlib==3.10.0; extra == "sionna019"
Requires-Dist: mitsuba==3.5.0; extra == "sionna019"
Requires-Dist: plotly==6.0.0; extra == "sionna019"
Requires-Dist: pyarrow==19.0.1; extra == "sionna019"
Requires-Dist: pythreejs==2.4.2; extra == "sionna019"
Requires-Dist: scipy==1.15.1; extra == "sionna019"
Requires-Dist: sionna==0.19.1; extra == "sionna019"
Requires-Dist: tensorflow==2.15.1; extra == "sionna019"
Requires-Dist: nvidia-cublas-cu12==12.2.5.6; extra == "sionna019"
Requires-Dist: nvidia-cuda-cupti-cu12==12.2.142; extra == "sionna019"
Requires-Dist: nvidia-cuda-nvcc-cu12==12.2.140; extra == "sionna019"
Requires-Dist: nvidia-cuda-nvrtc-cu12==12.2.140; extra == "sionna019"
Requires-Dist: nvidia-cuda-runtime-cu12==12.2.140; extra == "sionna019"
Requires-Dist: nvidia-cudnn-cu12==8.9.4.25; extra == "sionna019"
Requires-Dist: nvidia-cufft-cu12==11.0.8.103; extra == "sionna019"
Requires-Dist: nvidia-curand-cu12==10.3.3.141; extra == "sionna019"
Requires-Dist: nvidia-cusolver-cu12==11.5.2.141; extra == "sionna019"
Requires-Dist: nvidia-cusparse-cu12==12.1.2.141; extra == "sionna019"
Requires-Dist: nvidia-nccl-cu12==2.16.5; extra == "sionna019"
Requires-Dist: nvidia-nvjitlink-cu12==12.2.140; extra == "sionna019"
Provides-Extra: all
Requires-Dist: utm; extra == "all"
Requires-Dist: lxml; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: shapely; extra == "all"
Requires-Dist: bpy==3.6.0; python_version == "3.10" and extra == "all"
Requires-Dist: bpy==4.4.0; python_version == "3.11" and extra == "all"
Requires-Dist: numpy<2.0; python_version == "3.11" and extra == "all"
Requires-Dist: plyfile; extra == "all"
Requires-Dist: sionna-rt==1.0.2; extra == "all"
Requires-Dist: pyarrow; extra == "all"
Requires-Dist: build; extra == "all"
Requires-Dist: jupyter; extra == "all"
Requires-Dist: twine==6.0.1; extra == "all"
Requires-Dist: docutils>=0.19; extra == "all"
Requires-Dist: beautifulsoup4>=4.12.0; extra == "all"
Requires-Dist: myst-parser>=2.0.0; extra == "all"
Requires-Dist: sphinx>=7.0.0; extra == "all"
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "all"
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "all"
Requires-Dist: sphinx-copybutton>=0.5.0; extra == "all"
Requires-Dist: sphinx-automodapi>=0.15.0; extra == "all"
Requires-Dist: nbsphinx>=0.9.0; extra == "all"
Requires-Dist: ipykernel>=6.0.0; extra == "all"
Dynamic: license-file

# DeepMIMO
DeepMIMO Toolchain: Bridging RayTracers and 5G Simulators

**[Goal]** Enabling large-scale AI benchmarking using site-specific wireless raytracing datasets.

**[How]** Converting the outputs of the best wireless propagation ray tracers to a distributable format readable by the best simulation toolboxes. 

**[Why]** To revolutionize AI-driven wireless research by making ray tracing data easy to access, share, and benchmark.

## Project Structure
```
deepmimo/
├── api.py                  # API interface with DeepMIMO database
├── scene.py                # Scene (3D environment) management
├── consts.py               # Constants and configurations
├── info.py                 # Information on matrices and parameters
├── materials.py            # Material properties
├── txrx.py                 # Transmitter and receiver
├── rt_params.py            # Ray tracing parameters
├── general_utils.py        # Utility functions
├── 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
├── exporters/              # Data exporters
│   ├── aodt_exporter.py    # AODT format exporter
│   └── sionna_exporter.py  # Sionna format exporter
├── generator/              # Dataset generator
│   ├── core.py             # Core generation functionality
│   ├── dataset.py          # Dataset class and management
│   ├── channel.py          # Channel generation
│   ├── geometry.py         # Geometric calculations
│   ├── ant_patterns.py     # Antenna pattern definitions
│   ├── array_wrapper.py    # Array management utilities
│   ├── visualization.py    # Visualization tools
│   └── generator_utils.py  # Generator utilities
├── integrations/           # Integrations with 5G simulation tools
│   ├── sionna_adapter.py   # Sionna integration
│   └── matlab/             # Matlab 5GNR integration
└── pipelines/              # Automatic raytracing pipelines
    ├── sionna_rt/          # Sionna raytracer pipeline
    ├── wireless_insite/    # Wireless Insite pipeline
    ├── blender_osm.py      # Blender OSM export utilities
    ├── TxRxPlacement.py    # Transmitter/Receiver placement
    └── utils/              # Pipeline utilities

Additional directories:
├── deepmimo_v3/            # V3 Version for OFDM generation checks
├── scripts/                # Utility scripts and pipelines
├── docs/                   # Documentation
└── test/                   # Test suite
```

## Installation

### Basic Installation
```bash
pip install deepmimo
```

### Development Installation
```bash
git clone https://github.com/DeepMIMO/DeepMIMO.git
cd DeepMIMO
pip install -e .
```

## Usage Examples

### Basic Dataset Generation
```python
import deepmimo as dm

# Print summary of available datasets
dm.summary('asu_campus_3p5')

# Generate a dataset
dataset = dm.generate('asu_campus_3p5')

# Access channel parameters
channel = dataset.channel
```

### Converting Ray Tracer Outputs
```python
import deepmimo as dm

# Convert Wireless Insite output
converter = dm.convert('path_to_ray_tracing_output')
```

### Uploading and Downloading Datasets
```python
import deepmimo as dm

# Upload a dataset to the DeepMIMO server
dm.upload('my_scenario', 'your-api-key')

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

## Building Documentation

| Step    | Command                                           | Description                       |
|---------|---------------------------------------------------|-----------------------------------|
| Install | `pip install .[docs]`                             | Install docs dependencies         |
| Build   | `cd docs`<br>`sphinx-build -b html . _build/html` | Generate HTML documentation       |
| Serve   | `cd docs/_build/html`<br>`python -m http.server`  | View docs at http://localhost:8000|

## Contributing

We welcome contributions to DeepMIMO! Here's how you can help:

1. **Converter Development**
   - Add support for new ray tracers
   - Improve existing converters (AODT, Sionna RT, Wireless InSite)

2. **Generator Enhancements**
   - Add new dataset generation features or abstractions
   - Improve performance of channel generator
   - Add new visualization tools
   - Add new beamforming tools

3. **Documentation**
   - Improve existing documentation
   - Add new examples and tutorials
   - Create guides for common use cases

To contribute:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

We aim to respond to pull requests within 24 hours.

## Citation

If you use this software, please cite it as:

```bibtex
@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}, 
}
```
