Skip to main content

MURT

Multipath Radio Tracer (MURT) is a ray-tracing engine for multipath propagation of radio waves. MURT is a Python package with the ray-tracing core engine implemented in Python C++ Extension. The package also includes utility tools such as the visualizer, path loss calculator, and the scene generator.


Installations

MURT can be installed by pip, however, numpy is required before the installation.

! The pip installation only works with Linux and MacOS for the moment.

pip install murt

the development version can be built via the github repository and Make.

git clone https:/github.com/tamsri/murt
cd murt
make all

Examples

1. Call tracing engine.

The core engine reads the triangulated obj files and process the triangles into the engine.

from murt import Tracer

# Scene File Path in obj
SCENE_FILE_PATH = "scene_file_path.obj"

# Initialize Tracer
my_tracer = Tracer(SCENE_FILE_PATH)
# Set transmitting position
tx_pos = [ 0, 15, 0]
# Set receiving position
rx_pos = [-30, 1.5, 45]

# Return the traced paths
result = my_tracer.trace(tx_pos, rx_pos)
# [(2, [(-19.24, 8.56, 28.86)]),
#  (3, (-28.94, 4.22, 62.39)),
#  (3, (-70.80, 7.04, 15.22))]

The result is the list of traced paths. The first position of the tuple indicates types of the paths (1 - direct path, 2 - diffracted path, 3 - reflected path). The second position of the tuple is the detail of the traced paths.

2. Calculate Path Loss.

As the possible paths are traced from the engine. the results from the tracer can be used to

tx_freq = 2.4e9 # 2.4 GHz

scene_permittivity = 5.3 # Concrete's

result = [(2, [(-19.24, 8.56, 28.86)]),
 (3, (-28.94, 4.22, 62.39)),
 (3, (-70.80, 7.04, 15.22))]

losses = my_tracer.get_total_loss(
 tx_pos, rx_pos, result, tx_freq, scene_permittivity)
# {'total_dB': 84.3, 'signals': [[95.50, 1.86e-07], [86.63, 2.91e-07], [89.27, 4.12e-07]]}

The tracer calculates the total path loss according to the theoretical propagation models. In this example, the scene material is considered to be concrete.

3. Visualizing traced paths.

To visualize the traced path, MURT package provides a window to display the scene and the paths by filling the information of the paths into the window's lines_set.

from murt import Tracer
from murt.window import Window
SCENE_FILE_PATH = "scene_file_path.obj"

# load window and scene
my_window = Window()
my_window.load_scene(name="scene_name", file_path = SCENE_FILE_PATH)

# result from the previous example.
tx_pos = [ 0, 15, 0]
rx_pos = [-30, 1.5, 45]
result = [(2, [(-19.24, 8.56, 28.86)]),
 (3, (-28.94, 4.22, 62.39)),
 (3, (-70.80, 7.04, 15.22))]

# convert results to visualised paths
my_window.lines_set += Tracer.result_to_lines(result, tx_pos, rx_pos)

# run
my_window.run()

The scene can be rotated by click and drag. the result can be shown below.

Example Image

3. Randomly Generate the Scene

MURT also provides an example of application to procedurally generate the scenes for testing the traced paths from the engine. The application can be directly called from murt.apps.

from murt.apps import randomer

RANDOM_SEED = 5555
a = randomer(RANDOM_SEED)
a.run()

The scene can be regenerated by pressing the G button.

Example Image


License

© Supawat Tamsri MIT

Metadata

Release files for murt 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for murt 0.0.6
File Size Uploaded
murt-0.0.6.tar.gz 9.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for murt 0.0.6
File Interpreter ABI Platform
murt-0.0.6-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 10.0 MB

Release files / murt-0.0.6.tar.gz

Download URL murt-0.0.6.tar.gz
Size 9.9 MB
Tags Source
SHA-256 checksum
How to use checksums
682c218f7482c280450168b8a7a04f068076205293790f1c9036165325a23cec
BLAKE2b-256 checksum
How to use checksums
b893813cdee423a4398ac3019488ec7c0d6da9bc23f309949b31a2c3bbf00fad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

Release files / murt-0.0.6-cp38-cp38-macosx_10_9_x86_64.whl

Download URL murt-0.0.6-cp38-cp38-macosx_10_9_x86_64.whl
Size 66.7 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
8fa849bfcd0a9727fc02cb250725b8bb83169e9c5ecb32b9a1d91338c746e69a
BLAKE2b-256 checksum
How to use checksums
0b6db7cabf400bbac9ca36f5122578ce7faef9ca7e836bf6c81acaa823fd53b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

3 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page