SideScanSonarEditor: A Python package for annotation of side-scan sonar data
SideScanSonarEditor: A Python package for annotation of side-scan sonar data - Published in JOSS (2025)
Science Score: 95.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
2 of 4 committers (50.0%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Repository
Simple GUI project intended for processing of side scan sonar data.
Basic Info
- Host: GitHub
- Owner: MichalMotylinski
- License: gpl-3.0
- Language: Python
- Default Branch: master
- Size: 6.4 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 1
- Releases: 7
Metadata Files
README.md
SideScanSonarEditor
SideScanSonarEditor is an open-source application designed for annotation of side-scan sonar data. The interpretation of side-scan sonar data is typically conducted using expensive proprietary software and annotation for the purpoeses training ML solutions requires use of multiple software applications and conversion between various formats. No open-source solutions currently exist that streamline this process, leaving researchers with time-consuming and fragmented tools. SideScanSonarEditor addresses this need by providing a free, open-source platform that simplifies visualization, annotation, and dataset preparation, enabling efficient integration with computer vision models.
Install and Requirements
The SideScanSonarEditor tool has been built and tested using Python 3.9 and requires following dependencies: - NumPy - opencv-python - Pillow - pyproj - PyQt6 - pyxtf - SciPy
To install through PyPI:
python
pip install SideScanSonarEditor
Or to install from source: 1. Clone the repository from GitHub:
```bash
git clone https://github.com/MichalMotylinski/SideScanSonarEditor.git
```
SideScanSonarEditorcan then be installed using pip. From top-level directory run:python pip install .to install dependencies listed in requirements.txt to your local python library.
Usage
After installation he app can be launched with:
1. Console command:
bash
SideScanSonarEditor
2. Import and run it from a Python script:
python
from SideScanSonarEditor import app
app.main()
The SideScanSonarEditor was designed to read side-scan sonar data from XTF files and does not support any other input format or other sonar data.

Loading data and sonar image generation
Use "Open file" button to select and load XTF file. The app will automatically display the sonar image with default settings if no changes were made. The "Reload" button can be used to quickly reload the selected XTF file. It's primary use is to allow quick loading with new sonar data processing settings (Decimation, Stretch, Slant range correction)
The top left corner toolbox contains parameters used for initial processing of the data not sonar image. These changes are applied directly to raw data after loading from XTF file. Decimation - across track down sampling with 1-10 range where each level halves the number of horizontally processed data points. Stretch - Along track stretch factor which defines how many times each ping should be repeated. This method is applied to improve the visual representation of the features. The stretch factor by default is set to auto but it can be addjusted manually. The maximum slider value can be decreased or increased depending when needed. Slant range correction - Applying correction shows more realistic representation of the seafloor without water column.

Channel display settings
For each channel port and starboard there is a separate toolbox that allows changing of the color scheme, colour inversion as well as changing mapping ranges. Under each slider there is a minimum, current and maximum value to modify the slider itself. The step controls how much the current value changes across the selected range. Choosing very small step or large range may lead to skipping in the values so it is always adviced to keep the range of slider values below 300.

Drawing shapes
The tiles can be drawn without any object classes and exported for further processing but to draw the polygons at least one label must exist in the list of labels (upper left list). The labels can be loaded from a text file where each label has to be listed in a separate line for example:
Boulder
Debris
Shipwreck
...

User can also add new labels manually with "Add label" button.
The labels can be modified or removed using "Edit label" and "Remove label" accordingly.

The upper right list shows a list of drawn polygons and their classes. The checkbox can be used to hide or show a specific shape. To hide/show all shapes from the same class user can you checkboxes next to class names in upper left list.
The lower left list shows drawn tiles which can also be shown or hidden. The slider next to the list allows to modify the size of the tile before drawing.
The user can choose to display longitude and latitude of the current mouse position by supplying UTM zone number and ellipsoid model used. The function only accepts UTM projection type.

Finally user can save currently drawn shapes by clicking "Save labels". This creates 2 separate files holding polygons and tiles for the use by the app. These shapes are always loaded by the app if present in the same directory as XTF file.
The "Crop tiles" button allows user to create a annotations file in a COCO format. Each image entry has additional key "side" which indicates from which channel the image was cropped. This might be helpful if user would like to perform further processing with the original XTF file using cropped coordinates. The remaining outlook of the file is unchanged and can be used directly for computer vision tasks.

Author Contributions
- Michal Motylinski: Software development, Design, Writing – Original Draft.
- Prof. Andrew J. Plater: Supervision, Conceptualization, Writing – Review & Editing.
- Dr. Jonathan E. Higham: Supervision, Conceptualization, Writing – Review & Editing.
License
This project is licensed under the GNU License.
Owner
- Name: Michal Motylinski
- Login: MichalMotylinski
- Kind: user
- Location: Liverpool
- Company: University of Liverpool
- Repositories: 2
- Profile: https://github.com/MichalMotylinski
PhD student at University of Liverpool
JOSS Publication
SideScanSonarEditor: A Python package for annotation of side-scan sonar data
Authors
Department of Geography and Planning, School of Environmental Sciences, University of Liverpool, Liverpool, UK
Tags
Python package annotation side-scan sonar xtfGitHub Events
Total
- Create event: 8
- Release event: 3
- Issues event: 10
- Watch event: 2
- Issue comment event: 7
- Public event: 1
- Push event: 86
- Pull request review event: 1
- Pull request review comment event: 2
- Pull request event: 1
- Fork event: 2
Last Year
- Create event: 8
- Release event: 3
- Issues event: 10
- Watch event: 2
- Issue comment event: 7
- Public event: 1
- Push event: 86
- Pull request review event: 1
- Pull request review comment event: 2
- Pull request event: 1
- Fork event: 2
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| MichalMotylinski | m****6@g****m | 143 |
| Michal Motylinski | 4****i@u****m | 25 |
| MichalMotylinski | m****m@l****k | 6 |
| Ross Barnowski | r****r@c****u | 2 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 5 months ago
All Time
- Total issues: 6
- Total pull requests: 1
- Average time to close issues: about 1 month
- Average time to close pull requests: N/A
- Total issue authors: 2
- Total pull request authors: 1
- Average comments per issue: 0.83
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 6
- Pull requests: 1
- Average time to close issues: about 1 month
- Average time to close pull requests: N/A
- Issue authors: 2
- Pull request authors: 1
- Average comments per issue: 0.83
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- rossbar (5)
- yephm (1)
Pull Request Authors
- MichalMotylinski (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 100 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 10
- Total maintainers: 1
pypi.org: sidescansonareditor
A Python package for editing side-scan sonar data.
- Documentation: https://sidescansonareditor.readthedocs.io/
- License: LICENSE
-
Latest release: 1.0.0
published 4 months ago