Add your description here
Project description
phenomate-core
Overview
phenomate-core is a Python package for processing Phenomate sensor binaries into appropriate outputs. The Phenomate platform collects data from the following sensors
- JAI RGB camera
- IMU - INS401
- Lidar (SickScan 2D)
- Lidar (Ouster 3D)
- Hyperspectral Camera
And it packs the data (typically) into Protobuffer messages as the sensors collect it. This package unpacks and and possibly transforms the data from the protobuffer files, ready for further processing.
Installation
Clone the repository and install dependencies:
git clone https://github.com/yourusername/phenomate-core.git
cd phenomate-core
make install
Installing libjpeg-turbo - Oak-d
Please see the official page for installing libjpeg-turbo for your operating system.
Installing Sickscan - 2D Lidar
The conversion code for the 2D LIDAR has the required Python code as part of this repository. If the code needs updating then it can be built from the GitHub repository:
mkdir -p ./sick_scan_ws
cd ./sick_scan_ws
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
mkdir -p ./build
pushd ./build
rm -rf ./*
export ROS_VERSION=0
# specify optimisation level: -DO=0 (compiler flags -g -O0), -DO=1 (for compiler flags -O1) or -DO=2
# Install to local directory uising CMAKE_INSTALL_PREFIX=
cmake -DCMAKE_INSTALL_PREFIX=~/local -DROS_VERSION=0 -DLDMRS=0 -DSCANSEGMENT_XD=0 -G "Unix Makefiles" ../sick_scan_xd
make -j4
make -j4 install # install locally
popd
# The output Python code can be found in:
# ~/local/include/sick_scan_xd/sick_scan_xd.py
# and can be copied to phenomate-core/phenomate_core/preprocessing/lidar
Usage
Example usage for extracting and saving images:
from phenomate_core import JaiPreprocessor
preproc = JaiPreprocessor(path="path/to/data.bin")
preproc.extract()
preproc.save(path="output_dir")
Development
- Python 3.11+
- Uses ruff and mypy for linting and type checking
- Protobuf files should be compiled with
protocas needed
uv pip install protobuf
make compile-pb
Project Updating version numbers
Version numbers follow the standard pattern of: MAJOR.MINOR.PATCH and the project
has been configured to use the Python libray bump-my-version to help automate the
change of version numbers that are used in the files within the project.
The following proceedures outline its use:
Make sure mump-my-version is installed
uv pip install bump-my-version
# add to pyproject.toml
uv add --dev bump-my-version
This tool uses the file .bumpmyversion.toml for configuring what files get modified.
N.B. If files are added to the project that use an explicit version number, then add the files
to .bumpmyversion.toml along with the rules.
Use the tool as follows:
- make sure the current version in
.bumpmyversion.tomlis correct e.g.
current_version = "3"
Set the bumpwhat value and run the bump-my-version command:
# uv run bump-my-version -h
export bumpwhat=major | minor | patch
uv run bump-my-version bump $bumpwhat
uv lock # to update lock file
Post bump version tasks
After a version update the package can be published to PyPi:
rm -fr ./dist
uv build
uv publish # requires a token from PyPi - see .pypirc file
tag the release in git
git add --all
git commit -m "Release version 0.4.3 - adds special processing for GNSS.csv files"
git tag v0.4.3 -m "Release version 0.4.3 - adds special processing for GNSS.csv files"
git push origin main
git push origin v0.4.3
Now setup the Phenomate project repository telling it about the new version -
- Edit
pyproject.tomland change the "phenomate-core>=X.Y.Z" dependency to the latest version. - Then run:
uv lock
N.B. If installing into the Docker application, first comment out the local installation
path in pyproject.toml
#[tool.uv.sources]
# phenomate-core = { path = "../phenomate-core" }
# appm = { path = "../appn-project-manager" }
and then rebuild the the docker container:
docker compose up -d --force-recreate --build celery_worker
If not installing using Docker, just reinstall the new package into the uv virtual environment:
make install-local-phenomate-core # this runs uv pip install ${LOCAL_PHENOMATE_CORE}
Contributing
Contributions are welcome! Please open issues or pull requests for bug fixes, features, or improvements.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phenomate_core-0.4.4.tar.gz.
File metadata
- Download URL: phenomate_core-0.4.4.tar.gz
- Upload date:
- Size: 56.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
338b7fe2d31222b3c750ccd7a036786ca03f6fe51154f68bd30072cbb9281714
|
|
| MD5 |
4781c2e7b91840f17d6bf7c1b1ec3afb
|
|
| BLAKE2b-256 |
ccda9b6584e77e29a360af3a98c4ab5381c8a1c75cf46e93d309461737d55b12
|
File details
Details for the file phenomate_core-0.4.4-py3-none-any.whl.
File metadata
- Download URL: phenomate_core-0.4.4-py3-none-any.whl
- Upload date:
- Size: 69.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9564b47125c081921a37c52bfe772dd5bca434f1d57ded5b021b59bba96bb6a
|
|
| MD5 |
8f75236e0f9fbda350f74fe03079c9ef
|
|
| BLAKE2b-256 |
69c2043cccf520776b609a7a7eaedff465a5d56cee3cb3690e20af8fbcb0ad94
|