Please refer to our report for more throughout information.
"Using the 5G base station configurations, environmental data, and uplink (UL), downlink (DL), and scanner data from the İTÜ Campus, develop a system that can predict the location of a user equipment (UE) in with an another set of inference-time UL, DL and scanner data."
We have simulated the propagation of radio signals with the given base configuration data and have developed a special triangulation algorithm that utilizes the the simulation results as well as the inference-time data.
Run the following lines to install necessary packages:
# for faster installation, prefer uv:
pip install uv
uv pip install -r .And then, head to this drive folder to download simulation results which are
necessary for the localization process: link. After downloading the rms folder, put them to output/ folder.
End project structure should look like this:
``` LICENSE main.py output └── rms ├── rm_0.2_cell_centers_11:11:54-12-06-2025.npy └── rm_0.2_rss_11:11:54-12-06-2025.npy README.md README.tr.md render,.py render.ipynb requirements.txt setup.py src ├── __init__.py ├── eval │ ├── __init__.py │ ├── algos.py │ ├── create_eval_data.py │ ├── eval_loc.py │ ├── eval_loc_vis.py │ └── eval_sim.py ├── interpolate │ ├── dummy_interpolate_v1.py │ ├── dummy_interpolate_v2.py │ ├── interpolate.py │ ├── interpolate_v2.py │ ├── README.md │ └── simple_interpolate.py ├── preprocess │ ├── __init__.py │ ├── classes.py │ ├── colors.py │ ├── folium_vis.py │ ├── format.py │ ├── getters.py │ ├── map_vis.py │ └── utils.py └── sim ├── __init__.py ├── bench_transformation.py ├── constants.py ├── locate.py ├── renderer.py └── utils.py test ├── __init__.py ├── test_map_vis.py ├── test_mi_install.py ├── test_radio_map.py ├── test_select_closest.py └── test_sRT_install.py xmls └── scene_v1.3.3_rotated_zup ├── meshes │ ├── Ground_001.ply │ ├── ITU_3DBINA_EPSG4326_001.ply │ └── TCELL_3DVEGETATION_EPSG4326_006.ply └── scene_v1.3.3_xb.xml ```
You may use python -m script_name --help to learn more about each script's
arguments as they are all configured to work in command line.
Please conver Scanner data to .csv format, and give the path as the first argument.
python -m src.sim.locate \
PATH/TO/SCANNER.CSV \
output/rms/rm_0.2_rss_11:11:54-12-06-2025.npy \
output/rms/rm_0.2_cell_centers_11:11:54-12-06-2025.npy \
--output-path output/locateYou may use render.ipynb to run the simulations or tweak RenderParams
settings on main.py and run it via python main.py to run it without Jupyter
Notebooks.
python -m src.eval.eval_sim \
PATH/TO/SCANNER.CSV \
output/rms/rm_0.2_rss_16:20:09-12-06-2025.npy \
output/rms/rm_0.2_cell_centers_16:20:09-12-06-2025.npy \
--output_path PATH/TO/SAVE/IMAGESTo test the localization results, you need to get prediction results with
--batch and --output-path arguments, as the output will be a .json file
including ground truths and predictions:
python -m src.sim.locate \
PATH/TO/SCANNER.CSV \
output/rms/rm_0.2_rss_11:11:54-12-06-2025.npy \
output/rms/rm_0.2_cell_centers_11:11:54-12-06-2025.npy \
--output-path output/locate # name of the file will automatically given
--batch \
-n 100 # You may also set the number of predictions to make After getting the prediction results, you may get evaluation results for the predictions:
python -m src.eval.eval_loc PATH/TO/JSON/FILEMoreover, you may get the visualization of the results with the following:
python -m src.eval.eval_loc_vis PATH/TO/JSON/FILE --output PATH/TO/SAVE/IMAGESPlease refer to our report for the results.
For testing, use pytest:
pytest -v tests/We sincerely thank Teknofest for their hard work on 5G Positioning Contest.
We also thank the following projects, for their amazing work in the field of open source: