Ridal — Speeding up Ground Penetrating Radar (GPR) processing
The aim of ridal is to quickly and accurately process GPR data.
In one command, most data can be processed in pre-set profiles or with custom filter settings, and batch modes allow for sequences of datasets to be processed with the same settings.
It can be used from the command line, from Python, or through a browser GUI for looking at and interpreting the results.
Built in rust with a high focus on testing and performance, ridal may be for you if large data volumes and strange fileformats are common issues.
The name is a take on the loosely defined "Data Abstraction Library" (DAL) projects like GDAL and PDAL, but for radar.
A near-term goal of Ridal is to enable easy conversion between formats, such as ridal convert input.rad output.dzt (this is not yet implemented).
Much of the functionality has been inspired from the projects RGPR and ImpDAR; both of which are more mature projects. For example, Ridal currently only works on Malå (.rd3), GSSI (.dzt) and pulseEKKO (.dt1) radar formats. For many uses, these will more likely be the tools for you!
Radargram (100 MHz Malå) of Kroppbreen in Svalbard. Collected 28 Feb. 2023.
Notes
- Prior to Feb. 2026, this program was called
rsgpr. - The CLI/Python interface changed completely in version 0.5. See Issue #82 for more info.
Installation
Requirements
cargo(only for the CLI; not the python package). Easiest installed using rustup.gdal(optional, for sampling heights from DEMs). For Debian or derivatives, this meansgdal-bin.proj(optional, for CRS support other than WGS84 UTM Zones). For Debian or derivatives, this meansproj-bin.
Using cargo, the ridal CLI can be installed (after installing the requirements):
cargo install ridal
with nix, the flake can be used without worrying about the requirements above:
inputs = {
ridal.url = "github:erikmannerfelt/ridal";
};
or in an ephemeral shell:
nix shell github:erikmannerfelt/ridal
Python
There's an early implementation of a Python package:
pip install ridal
>>> import ridal
# Print useful info as a dictionary
>>> ridal.info("path/to/file.rad")
'{...}'
# Process and save to a file
>>> ridal.process("path/to/file.rad", steps=["zero_corr", "auto_gain"], output="processed.nc")
# Process and load into memory
>>> ridal.process("path/to/file.rad", steps=["zero_corr"], return_dataset=True, return_dataset_format="xarray")
<xarray.Dataset> Size: ...
Dimensions: (y: ..., x: ...)
Coordinates:
...
# Only load into memory with no processing
>>> ridal.read("path/to/file.rad", return_dataset_format="xarray")
<same as above>
See scripts/render_kroppbreen.py for an example of how it can be used.
Simple CLI usage
See the help page of ridal for info on how to interact with the CLI:
ridal -h
To toggle useful information on a file, the info subcommand shows the metadata and a summary of the location data:
ridal info DAT_001_A1.rd3
Processing a file using the default processing profile:
ridal process DAT_001_A1.rd3 --default
All processing steps are shown in the steps.md file. It can also be printed with ridal steps.
A processing step pipeline is defined using ridal process file.rad --steps "zero_corr,dewow,..." or using a file: --steps steps.txt:
subset(1 100) # Comments are supported!
zero_corr
dewow
correct_topography
The output will be a NetCDF file with the same name but an .nc suffix.
By default, the output is saved in the same directory as the input.
For more control, the output directory and/or filename can be controlled with -o or --output.
To process multiple files in "batch mode", provide a "glob" pattern as the filename.
Optionally, for many sequential files, the --merge argument allows merging multiple files into one.
ridal batch-process data/*.rd3 --merge "10 min" --default -o output/
A profile renderer is available with the -r argument.
This will be saved in the same location as the output file as a JPG if another filename is not given.
Files that are already processed can be rendered on their own with the render subcommand:
ridal render processed.nc -o profile.png
The browser GUI
New in version 0.6.0.
Processed files can be looked at in a browser:
ridal gui path/to/processed/
Every Ridal .nc file below that directory is found and listed, grouped by survey, with a map of where each survey's lines were collected.
Opening one gives a zoomable view of the radargram, where the cursor reports the trace number, the distance along the line, the two-way travel time and the depth, and a map shows where on the ground that point is.
Radargrams are rendered where Ridal runs, and only the parts being looked at, so files larger than memory are not a problem.
Reflectors can also be picked in the browser, which needs somewhere to keep them: a project. Making one in the directory with the processed files is all that is required:
cd my_survey/
ridal project init
ridal gui
Without a path, ridal gui looks for the project by searching upwards from the current directory.
Picked layers can be exported as points, as GeoJSON or CSV, from the browser or with ridal interp export.
ridal gui is for looking at your own files on your own computer, and it stops when you do.
To keep a project up for longer, or to share it with colleagues, ridal server start binds a fixed port instead:
ridal server start my_survey/ --port 8000
Everyone who reaches that address is the same anonymous user until the project has accounts. The first account is made from the command line, since there is no one to ask for permission yet:
ridal project user add erik --role admin
This prints a single-use invite link to send to that person, which is where they set their own password.
Ridal does not encrypt anything itself, so serving a project beyond your own machine means leaving it on 127.0.0.1 and putting a reverse proxy in front of it.
Papers using Ridal
- Kleber et al. (2023): Groundwater springs formed during glacial retreat are a large source of methane in the high Arctic
- Harcourt et al. (2026): Surging glaciers in Svalbard: Observing their distribution, characteristics and evolution
- Kleber et al. (2026): Subglacial geology and thermal conditions regulate methane emissions from Svalbard glaciers
... and many others in preparation/review
Release files for ridal 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ridal-0.6.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| ridal-0.6.0-cp313-cp313-manylinux_2_39_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.39+ x86-64 | Details |
| ridal-0.6.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| ridal-0.6.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| ridal-0.6.0-cp312-cp312-manylinux_2_39_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.39+ x86-64 | Details |
| ridal-0.6.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| ridal-0.6.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| ridal-0.6.0-cp311-cp311-manylinux_2_39_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.39+ x86-64 | Details |
| ridal-0.6.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| ridal-0.6.0-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| ridal-0.6.0-cp310-cp310-manylinux_2_39_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.39+ x86-64 | Details |
| ridal-0.6.0-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
Total release size: 53.5 MB
Release files / ridal-0.6.0-cp313-cp313-win_amd64.whl
| Download URL | ridal-0.6.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1bf5a78a94f1fdd31125f60af79225d8e7bb5e35c90dd2ab42ba7d4f0dc565b6
|
|
BLAKE2b-256 checksum How to use checksums |
78e8efc9d64836cc689724218413c373faa7397ca8e02b68172f9fcec94b733e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp313-cp313-manylinux_2_39_x86_64.whl
| Download URL | ridal-0.6.0-cp313-cp313-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.13 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
63f99ac03855b024f74e6c03ef9abd8905a571598b8fed307ccdbfe1cb6985a5
|
|
BLAKE2b-256 checksum How to use checksums |
35a6c6041d9c1b79000588d4637530018a9b525d1d038d769721be41334bc3eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | ridal-0.6.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b2fc94269b54f54085fe89764fa17c3520bf57705c5e9d84ae8a1932d39e12d8
|
|
BLAKE2b-256 checksum How to use checksums |
90ee50694e1be712fdabfb72947757b3cb1bf5c0baed4ee79a44c35861f2155b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp312-cp312-win_amd64.whl
| Download URL | ridal-0.6.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d748ae5341a95debac2b79e12372d31cca5476544895a3734182b9159ee02a0f
|
|
BLAKE2b-256 checksum How to use checksums |
e6f24bdcc7f7330e69b6a08c2518771e75bb6ace7871364136a3cafde4af839d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp312-cp312-manylinux_2_39_x86_64.whl
| Download URL | ridal-0.6.0-cp312-cp312-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.12 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
438da2c14ae0947175902d6f4a296ea8d9f7e0028135acf24a003b60d3e7b303
|
|
BLAKE2b-256 checksum How to use checksums |
861e7f4cbe1f4f18cecdbea5604b2823d94eecfc0e3befb3e6bbc792be14fa58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | ridal-0.6.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2f1201b276d02fd19e73e9875a663648bf99f9a59061f855bc0485de12cc71d8
|
|
BLAKE2b-256 checksum How to use checksums |
830fc4a7985dbee65d0e345e6457939ed01d910f23a1d9d24bfc4ffd89180a0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp311-cp311-win_amd64.whl
| Download URL | ridal-0.6.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b06c982acd5f892250abff18a1f17fe2630164f2b8b433c63f74df7a7a6522c0
|
|
BLAKE2b-256 checksum How to use checksums |
9fb79bee8b90f001c968dd4407138f968cd22a803198920ad2f342a4abb40099
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp311-cp311-manylinux_2_39_x86_64.whl
| Download URL | ridal-0.6.0-cp311-cp311-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.11 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
98f9f64d3980ef24d06d20c0f9c37436a8f0fa6ec9c2f13923d9e8d3c1fe74bc
|
|
BLAKE2b-256 checksum How to use checksums |
c975c3d64fb19f3210de432cb6f475e95684879a46cee46e0051d04b3a9abff0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | ridal-0.6.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
59ab2e102a41a99ce9645fd410e72861fdf8d87cdc71fc9bcf87cc2d66a86487
|
|
BLAKE2b-256 checksum How to use checksums |
2a2f38366a172c7d4b508d4d5d8506efae45aa3093ac5b91b4301074e5f5d655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp310-cp310-win_amd64.whl
| Download URL | ridal-0.6.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
de66296d2d5c74956a9696db247405ee6be53d780c54d9fad5d63b1abbb0fcf6
|
|
BLAKE2b-256 checksum How to use checksums |
b3feb65a68cb2da229563118ded6c65087f7006dd6be6c8ab8f4ed6f7135f7b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp310-cp310-manylinux_2_39_x86_64.whl
| Download URL | ridal-0.6.0-cp310-cp310-manylinux_2_39_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.10 Linux glibc 2.39+ x86-64 |
|
SHA-256 checksum How to use checksums |
800cfc392b4a92ffe7a452ee16fe99f63fb74d84955d0ae6e2d11b8ac119aa35
|
|
BLAKE2b-256 checksum How to use checksums |
987c7a8f80d3ec8813ea11b1daf9a9c0ec73d735d287ebac1faf6593b2775332
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ridal-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | ridal-0.6.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
18296a0d223b5d47c4e2a4d75fac87e04ac074e077bd27dbf4f4ea85c2a1de52
|
|
BLAKE2b-256 checksum How to use checksums |
ac16eac72c625c48b6f9e5ba74b58c291aa62d9714916d57159c993e9a870dd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|