Skip to main content

Acoustic Odometry library

Project description

Acoustic Odometry

A standalone C++ library with dependencies managed by vcpkg accessible through Python using pybind11.

Example usage

Create a clean Python virtual environment

python -m venv venv

Activate it on Windows

.\venv\Scripts\activate

otherwise

source ./venv/bin/activate

Install this project

pip install git+https://github.com/AcousticOdometry/AO.git

or

pip install git+ssh://git@github.com/AcousticOdometry/AO.git

It will take a while to build as it will build the C++ dependencies as well, but it will work. It is definitely not the most optimal way of installing a package as we are installing as well the vcpkg package manager and building from source dependencies that might as well be installed on the system. But this allows a fast development environment where adding or removing C++ dependencies should be easy.

Test that the C++ code is working in the Python package

TODO

Setup

Install the requirements

Install vcpkg requirements with the addition of cmake and Python. It could be summarized as:

  • git
  • Build tools (Visual Studio on Windows or gcc on Linux for example)
  • cmake
  • Python. Make sure to have development tools installed (python3.X-dev on Linux, being X your version of Python).

If running on a clean linux environment (like a container or Windows Subsystem for Linux) you will need to install some additional tools as it is stated in vcpkg.

sudo apt-get install build-essential curl zip unzip tar pkg-config libssl-dev python3-dev

This library is additionally based on modern C++17 with some C++20 features. Therefore it requires a C++ compiler that supports C++20. In linux, gcc version 11 is recommended. Fortunately, several versions of gcc can co-live together.

sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-11 g++-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \
    --slave /usr/bin/g++ g++ /usr/bin/g++-11

Git Large File System

Needed for the model files

https://git-lfs.github.com/

CMake

Follow the official instructions.

The required cmake version is quite high, if you are using a Linux distribution and installing cmake from the repositories take into account that they might not be updated to the latest version. However there are options to install the latest version of cmake from the command line.

Make sure that when you run cmake --version the output is 3.21 or higher. The reason for this is that we are using some of the 3.21 features to install runtime dependencies (managed with vcpkg) together with our project so they are available to Python when using its API.

Clone this repository with vcpkg

Cone this repository with vcpkg as a submodule and navigate into it.

git clone --recursive git@github.com:esdandreu/python-extension-cpp.git
cd python-extension-cpp

Bootstrap vcpkg in Windows. Make sure you have installed the prerequisites.

.\vcpkg\bootstrap-vcpkg.bat

Or in Linux/MacOS. Make sure you have installed developer tools

./vcpkg/bootstrap-vcpkg.sh

Building

Build locally with CMake

Navigate to the root of the repository and create a build directory.

mkdir build

Configure cmake to use vcpkg.

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="$pwd/vcpkg/scripts/buildsystems/vcpkg.cmake"

Build the project.

cmake --build build

Build locally with Python

It is recommended to use a clean virtual environment.

scikit-build is required before running the installer, as it is the package that takes care of the installation. The rest of dependencies will be installed automatically.

pip install scikit-build

Install the repository. By adding [test] to our install command we can install additionally the test dependencies.

pip install .[test]

Testing

Test the C++ library with Google Test

ctest --test-dir build/tests

Test the python extension

pytest

Development

We try to use the following style guide for pybind11 https://developer.lsst.io/pybind11/style.html

Mount Google Drive in Windows Subsystem for Linux

sudo mount -t drvfs G: /mnt/g

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acoustic-odometry-0.0.7.tar.gz (18.3 MB view details)

Uploaded Source

Built Distributions

acoustic_odometry-0.0.7-pp38-pypy38_pp73-win_amd64.whl (160.6 kB view details)

Uploaded PyPy Windows x86-64

acoustic_odometry-0.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (144.7 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

acoustic_odometry-0.0.7-pp37-pypy37_pp73-win_amd64.whl (160.6 kB view details)

Uploaded PyPy Windows x86-64

acoustic_odometry-0.0.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (144.7 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

acoustic_odometry-0.0.7-cp310-cp310-win_amd64.whl (161.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

acoustic_odometry-0.0.7-cp310-cp310-win32.whl (141.1 kB view details)

Uploaded CPython 3.10 Windows x86

acoustic_odometry-0.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-cp310-cp310-macosx_10_9_x86_64.whl (144.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

acoustic_odometry-0.0.7-cp39-cp39-win_amd64.whl (161.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

acoustic_odometry-0.0.7-cp39-cp39-win32.whl (141.2 kB view details)

Uploaded CPython 3.9 Windows x86

acoustic_odometry-0.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-cp39-cp39-macosx_10_9_x86_64.whl (144.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

acoustic_odometry-0.0.7-cp38-cp38-win_amd64.whl (161.3 kB view details)

Uploaded CPython 3.8 Windows x86-64

acoustic_odometry-0.0.7-cp38-cp38-win32.whl (141.0 kB view details)

Uploaded CPython 3.8 Windows x86

acoustic_odometry-0.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (181.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-cp38-cp38-macosx_10_9_x86_64.whl (144.9 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

acoustic_odometry-0.0.7-cp37-cp37m-win_amd64.whl (161.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

acoustic_odometry-0.0.7-cp37-cp37m-win32.whl (142.6 kB view details)

Uploaded CPython 3.7m Windows x86

acoustic_odometry-0.0.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

acoustic_odometry-0.0.7-cp37-cp37m-macosx_10_9_x86_64.whl (143.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file acoustic-odometry-0.0.7.tar.gz.

File metadata

  • Download URL: acoustic-odometry-0.0.7.tar.gz
  • Upload date:
  • Size: 18.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for acoustic-odometry-0.0.7.tar.gz
Algorithm Hash digest
SHA256 04d94a93cf9f017f1aa641aaa6f85e577f478cd560824b57b943c83f4ce10d04
MD5 dbc430a9f4a932d67622cb0802285292
BLAKE2b-256 b075b4f516517f9a4472c577a8ad637a3a164258e6b194fd3240bf536bc534bd

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 a92ab346b1fa7f3db74ed75521d652a63f851678ec11b8fef9ec76ee91791156
MD5 77e8e4542fe06ee8a2d060b1508c8845
BLAKE2b-256 d37d057f1a19f2be40b6753483e056b31d6b1c3f016e1374b36c5d166fbbe9ce

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7dd567ec9291a95ba10b7b0f79bd44c0a4615234d8da6cf8b2aa4ebd689a9677
MD5 13068729e78b965e0f8541e48e2caccf
BLAKE2b-256 84f1a58b8737dd55fc456ad8cddae35a6339c7fe8966b9071e0aa5454eb960c7

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6db7ba3086d14420236554cd84d68e9eb96f2ec77babe3656045870c2341e633
MD5 e08faf8121b1fd575b0a94f66154867e
BLAKE2b-256 1feb61f6c85393d9ff6edd35b9375cc89208265e027131f1e8b54596b20b6e14

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 da87cc14fd2bca4fa9fd87f564976f423cc5d64c08765ac5fa999b45d1d4c011
MD5 58495d55f2206da54ad2232f6e599bfa
BLAKE2b-256 3c51f33ae02a41c7365d35e9bc0282dbf1965cde80d1f4c2dc4daee00bae29d2

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7e3ef5f2ef692fea642827c2a892dec1fa98c2236b8bf021f50bd4ca12a3b26
MD5 4aa5ca7b5950b93b6ae2190e86cc16bd
BLAKE2b-256 7d8caa1467681c13452013345f62a35b07a179d4b3e0796cbe10dd1eed266957

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fdb21d6cd49c37c70bc5190f173d4613c395f81f59e91a8c48dbfef11ee180e4
MD5 e2e7547e1e41155a85ce448f2d842bcd
BLAKE2b-256 3548e46856925a66b3828c3b13aea8a3b6026006e28fba79ed0020eb11ddb751

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 74d85bf06299d469fe63ad5abb42d7ec3a07e05f13e89514aecf068af14b06c4
MD5 7ac1f766628841832a5b36db5145bc4c
BLAKE2b-256 92fcdf680b1600d03927b7d76b23d78de3b5e97b958fdc1d3a7d19e1a6deb51b

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 af1dfabc289ddc9cda27993ecdc1f774135335c87123c82af05864e341109d59
MD5 363beef387c9755e00ee133f6196d92a
BLAKE2b-256 6a2153b261943b5c1c9b4ba05ac0a7051e6d8b1912fe05bac09334ec0f978fed

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad3bb2627feec76337c74847fd1b3da990a4beebdcafe21a962109d29cfb483f
MD5 52dcb860c800b98c33cc8193f20789cf
BLAKE2b-256 23c92804d30e11847eb9d3620bd92c1930139e16bb6d762f91608cd146efc298

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7965bab80a251579e8a9f352aa8f72149fe072a25bb7ee12493b3b85ec6a9e62
MD5 d173720b89ea9ef3f183b2f273f64f9e
BLAKE2b-256 44b6853abed9242f430eb00238a6845142f052c97f9d0212ac67b266245bfccd

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1025a75a913c99fd9e3c5a6961cc51f47d476ca5c251fc67e1824f88da62cb0f
MD5 5c52830b6ff9ad3e15d593f46d890ee6
BLAKE2b-256 5839fb9558486ee4c3c4c37220a09209985a48291aec8f0a4ef76adacce1f7d6

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp39-cp39-win32.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 388d464133cb741df39fab5ed5b50251d2a74352c55c45bdf0e8102a8e5c4545
MD5 5385589f865f725c7ed9a0da90f0ebdf
BLAKE2b-256 c0a819a03713081dbcd0b338eb358865047a39a983b6abf808b482c32f614fb2

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b06dfed264acb9b88bdd1335ea0bfff4482afbe4afa3252755b61e0ae27600c4
MD5 a633ef5427ac6af782296e8ba258b6d6
BLAKE2b-256 28b59786af1acd95ba00ed8044b2c03437d2bdffa7e83459bb7c9e5ccf77c0a3

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ad99e44a0b05f09b0ed97102e0a07d7d8d51333a9c43fa592603978e424e8e6b
MD5 ba1c9ff59bcd4f46828fa491e3f1b30d
BLAKE2b-256 38839fa4a3018fab973e593abc78c0ffe1f12b720b4b11b03a867c8f6f02e9f7

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2a0fdae6cce80e88ce5cd97dd584e1388f250a0cdc7b5475195de91f582d78fd
MD5 7bf51cba223efc0ea0c5b585c6f3a8d4
BLAKE2b-256 a1a4ee8a9d3d14acea7178d8f7414968dbb63a4cab0d986591004db16223bc2f

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp38-cp38-win32.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 247e5f9faaeff4b2c39cbf190ccbec3d78bf4ce04b83d5ab27e3e2e18f41ed58
MD5 b20b459957c1667a9600d6947bf42932
BLAKE2b-256 c25a863e5893e6d0b07713be729f1b148597069949018a0af1e58a264f00c067

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6cf56ee785be3447590025c46474a1051d5d583ab84f9d4a17ef2f89df9e382a
MD5 9ba3ddbb6fcdcae0e9146b3bed9c7b1d
BLAKE2b-256 5225ee596bbc50ffa97209beaf6cab5e75b0b6322c49e7713d00b7e36d2275d0

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 967fa2d4719d8928147e94cf668844e8cf88f303aabf6eb1cb3388dc4a21639e
MD5 f1502f617ebda4b6575be299e7913c58
BLAKE2b-256 2b0bec9324b3dfc709b3e8d82a4dc2b265b61ddebe38447df1da98b6ec87a39f

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ee5d8b74c662117c095ea42ca36c9ad931d7d7f9cfe0ed390afe1f9c65c65fc7
MD5 2e29ca370fe237cc57a116d212a3870c
BLAKE2b-256 628f2d5aa9c606360b536f4982980b53db6d7381a4a4a5ce256b21e78f89a2eb

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp37-cp37m-win32.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 ec73fd6b01ca314bdb1a1b5fe7b21cf2d7dcb573b621b55b55c8c4a91ee62161
MD5 fb6cdd084636ac05c21a91cd1a769329
BLAKE2b-256 c4761d13452fb7ea17e1973f385c2a69f50f52f981f0c77617b6544a7351af65

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7cce5779354f5b0463e4b0d0483aaea7e5ee655509204c47483f19ca061b3221
MD5 c42a1040e548cafda04cc22ff33ff37d
BLAKE2b-256 38d39c9a8b50d25df020f45e2c8592dadddc07c8dfd1cc6d5801e9fc39c8dcd2

See more details on using hashes here.

File details

Details for the file acoustic_odometry-0.0.7-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for acoustic_odometry-0.0.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5a6bc4be9a2a952f531a986d796182bdf04e8e6fe0a1eb50c83aef6e7b38b329
MD5 412b09301971fdc08602fd49332e7014
BLAKE2b-256 3f518e9224ee7bef08c279b46a864d303b0ec45c69ad054ecea3319c63fa7629

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page