diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml deleted file mode 100644 index 1df7abc..0000000 --- a/.github/workflows/lint.yaml +++ /dev/null @@ -1,46 +0,0 @@ -name: Linters - -on: [push] - -jobs: - test-and-lint: - strategy: - matrix: - os: [ ubuntu-22.04 ] - python-version: [ "3.10" ] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install Python${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install -r requirements.txt - - - name: Check code typos - uses: crate-ci/typos@master - with: - files: ./slam ./examples - config: _typos.toml - - - name: Check imports - uses: isort/isort-action@master - with: - configuration: "--settings-file=.isort.cfg --profile=black" - - - name: Run flake8 - uses: py-actions/flake8@v2 - - - name: Run black - uses: psf/black@stable - with: - options: "--check --verbose --diff --extend-exclude '__init__.py'" - version: "22.8.0" diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..0807c69 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,33 @@ +name: Publish pip on PyPi + +on: workflow_dispatch + +jobs: + publish-to-production-pypi: + strategy: + matrix: + os: [ ubuntu-latest ] + python-version: [ "3.10" ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install poetry + + - name: Publish to production PyPI + run: | + poetry version $(git describe --tags --abbrev=0) + poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }} + poetry publish --build \ No newline at end of file diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 1ebb7d8..b6c3cd4 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -3,7 +3,43 @@ name: Tests on: [push] jobs: - test-and-lint: + lint: + strategy: + matrix: + os: [ ubuntu-22.04 ] + python-version: [ "3.10" ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Python${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements.txt + + - name: Check imports + uses: isort/isort-action@master + with: + configuration: "--settings-file=.isort.cfg --profile=black" + + - name: Run flake8 + uses: py-actions/flake8@v2 + + - name: Run black + uses: psf/black@stable + with: + options: "--check --verbose --diff --extend-exclude '__init__.py'" + version: "22.8.0" + + tests: strategy: matrix: os: [ ubuntu-22.04 ] @@ -28,3 +64,37 @@ jobs: - name: Run pytest run: | python -m pytest tests/ + + + publish-package: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + needs: [lint, tests] + + strategy: + matrix: + os: [ ubuntu-latest ] + python-version: [ "3.10" ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install poetry + + - name: Publish to test PyPI + run: | + poetry version $(git describe --tags --abbrev=0) + poetry config repositories.test-pypi https://test.pypi.org/legacy/ + poetry config pypi-token.test-pypi ${{ secrets.TEST_PYPI_TOKEN }} + poetry publish -r test-pypi --build diff --git a/DEVELOP.md b/DEVELOP.md new file mode 100644 index 0000000..2730bad --- /dev/null +++ b/DEVELOP.md @@ -0,0 +1,25 @@ +# Publish package to PyPi + +Firstly you have to ensure, that package properly builds, publishes and works. +To do this, you must first publish it on https://test.pypi.org + +1. Create tag on main branch: + ```commandline + git tag + ``` +2. Push created tag to repository + ```commandline + git push origin + ``` + After this GitHubActions will automatically build pip package and push it to test PyPi registry +3. Ensure, that installed pip package from https://test.pypi.org works properly + ```commandline + pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple sova== + ``` +4. Publish pip package manually on production PyPi using the following steps: + - Go to Actions page + - Go to "Publish pip on PyPi" workflow on left side of the screen + - Go to "Run workflow" and choose last tag which has been created from tags + - Click "Run workflow" + + After this GitHubActions will automatically build pip package and push it to test production registry diff --git a/README.md b/README.md index a84d314..e470ff7 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,35 @@ - -Voxel-slam repository is an open-source Python library designed for fast + +SOVA is a SLAM on Voxel Alignment and an open-source Python library, designed for fast and adaptive comparison of different approaches to solving the voxel-based planar SLAM problem. Our main goal is to provide extendable, simple and efficient interfaces for -testing various hypotheses, which include different subdivision/segmenter/backend criteria. +testing various voxel SLAM hypotheses, which include different subdivision/segmenter/backend criteria. -[![Linters](https://github.com/prime-slam/voxel-slam/actions/workflows/lint.yaml/badge.svg)](https://github.com/prime-slam/voxel-slam/actions/workflows/lint.yaml) +[![Linters](https://github.com/prime-slam/sova/actions/workflows/lint.yaml/badge.svg)](https://github.com/prime-slam/voxel-slam/actions/workflows/lint.yaml) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) - - - # Installation -To use this library you need to download this repository and install necessary dependencies. -How to do this: +To use this library you need to: 1. Download and install Python 3.10 from the [official website](https://www.python.org/downloads/). -2. Clone this repository - ```bash - git clone https://github.com/prime-slam/voxel-slam.git - ``` -3. Create and activate virtual environment - ```bash - python3 -m venv venv && source venv/bin/activate - ``` -4. Install dependencies - ```bash - pip install -r requirements.txt - ``` - If you want to use `MROBBackend` type, you have to install mrob library manually: - 1. Download [wheels](https://github.com/prime-slam/mrob/actions/runs/6841598615) from source - 2. Install mrob from wheels - ```bash - pip3 install mrob --find-links=... --force-reinstall - ``` +2. Install pip package: + ```bash + pip install sova + ``` + If you want to use `MROBBackend` robust optimisations, you have to install mrob library manually: + 1. Download [wheel from source](https://drive.google.com/file/d/1rUdbybNvHx80ykr62aceAcBIPtlntWIz/view?usp=sharing) + 2. Install mrob from wheels + ```bash + python -m pip install mrob --no-index --find-links wheel/ --force-reinstall + ``` Now you have everything you need to run your voxel-based pipeline. # Examples -Examples of using the voxel-based pipeline are presented in the [`examples`](https://github.com/prime-slam/voxel-slam/tree/main/examples) +Examples of using the voxel-based pipeline are presented in the [`examples`](https://github.com/prime-slam/sova/tree/main/examples) directory with the all necessary instructions of how to run them. # Contributing @@ -46,7 +37,7 @@ directory with the all necessary instructions of how to run them. To contribute to the project you must: 1. Get to know the project structure: ``` - slam + sova ├── backend ├── filter ├── pipeline diff --git a/_typos.toml b/_typos.toml deleted file mode 100644 index 8b54a79..0000000 --- a/_typos.toml +++ /dev/null @@ -1,2 +0,0 @@ -[default] -extend-ignore-re = ["NDArray"] \ No newline at end of file diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..58fca7e Binary files /dev/null and b/assets/logo.png differ diff --git a/assets/logo.svg b/assets/logo.svg deleted file mode 100644 index f727382..0000000 --- a/assets/logo.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/examples/pipeline.py b/examples/pipeline.py index 5228824..a1dcc4f 100644 --- a/examples/pipeline.py +++ b/examples/pipeline.py @@ -31,12 +31,12 @@ import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from slam.pipeline import ( +from sova.pipeline import ( SequentialPipeline, SequentialPipelineRuntimeParameters, YAMLConfigurationReader, ) -from slam.utils import ( +from sova.utils import ( DatasetReader, HiltiReader, KittiReader, diff --git a/examples/segmentation.py b/examples/segmentation.py index 2ba3dbe..ea817d7 100644 --- a/examples/segmentation.py +++ b/examples/segmentation.py @@ -38,9 +38,9 @@ import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from slam.segmenter import RansacSegmenter -from slam.subdivider import SizeSubdivider -from slam.utils import HiltiReader, KittiReader, NuscenesReader, Reader +from sova.segmenter import RansacSegmenter +from sova.subdivider import SizeSubdivider +from sova.utils import HiltiReader, KittiReader, NuscenesReader, Reader if __name__ == "__main__": parser = argparse.ArgumentParser(prog="Segmentation") diff --git a/notebooks/benchmark.ipynb b/notebooks/benchmark.ipynb index 1bcb64a..3b7f802 100644 --- a/notebooks/benchmark.ipynb +++ b/notebooks/benchmark.ipynb @@ -10,38 +10,27 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 11, "id": "d009f3b8-3f04-4aac-b10a-4a2e0a34836e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Jupyter environment detected. Enabling Open3D WebVisualizer.\n", - "[Open3D INFO] WebRTC GUI backend enabled.\n", - "[Open3D INFO] WebRTCWindowSystem: HTTP handshake server disabled.\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "import mrob\n", "import time\n", "import os\n", - "from octreelib.grid import Grid, GridConfig, VisualizationConfig\n", - "from octreelib.octree import MultiPoseOctree, OctreeConfig\n", + "from octreelib.grid import VisualizationConfig, Grid, GridConfig\n", "from typing import Tuple, List\n", "from dataclasses import dataclass\n", "import numpy as np\n", "import open3d as o3d\n", "\n", "sys.path.append(\"..\")\n", - "from slam.backend import BaregBackend, EigenFactorBackend, Backend, BackendOutput\n", - "from slam.pipeline import StaticPipeline, StaticPipelineRuntimeParameters\n", - "from slam.segmenter import Segmenter, CAPESegmenter, RansacSegmenter\n", - "from slam.subdivider import Subdivider, CountSubdivider, EigenValueSubdivider, SizeSubdivider\n", - "from slam.utils import Reader, HiltiReader, KittiReader" + "from sova.backend import BaregBackend, EigenFactorBackend, Backend, BackendOutput\n", + "from sova.pipeline import SequentialPipeline, SequentialPipelineRuntimeParameters\n", + "from sova.segmenter import Segmenter, CAPESegmenter, RansacSegmenter\n", + "from sova.subdivider import Subdivider, CountSubdivider, EigenValueSubdivider, SizeSubdivider\n", + "from sova.utils import DatasetReader, HiltiReader, KittiReader" ] }, { @@ -54,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "id": "4e183c65-5a53-4152-a1e0-9eeb8afc49de", "metadata": {}, "outputs": [], @@ -72,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "id": "49fcabc0-83d2-4bdb-821e-4f5735930ca1", "metadata": {}, "outputs": [], @@ -90,7 +79,7 @@ " timestamps = np.array(timestamps)\n", " print_metrics(timestamps)\n", "\n", - "def read_patch(reader: Reader,path: str, start: int, end: int) -> List[o3d.geometry.PointCloud]:\n", + "def read_patch(reader: DatasetReader, path: str, start: int, end: int) -> List[o3d.geometry.PointCloud]:\n", " \"\"\"\n", " Reads patch of point clouds\n", " \"\"\"\n", @@ -121,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "id": "22088f09-504b-4221-a0df-8bd09ad2a15c", "metadata": {}, "outputs": [], @@ -159,7 +148,7 @@ " initialization_start = time.perf_counter()\n", " pipeline.grid.insert_points(\n", " middle_pose_number,\n", - " point_clouds[middle_pose_number].points,\n", + " np.array(point_clouds[middle_pose_number].points),\n", " )\n", " initialization_end = time.perf_counter() - initialization_start\n", " \n", @@ -171,7 +160,7 @@ " for pose_number, point_cloud in enumerate(point_clouds):\n", " if pose_number == middle_pose_number:\n", " continue\n", - " pipeline.grid.insert_points(pose_number, point_cloud.points)\n", + " pipeline.grid.insert_points(pose_number, np.array(point_cloud.points))\n", " distribution_end = time.perf_counter() - distribution_start\n", "\n", " segmenters_start = time.perf_counter()\n", @@ -202,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "id": "1156e0c8-d70d-4c12-a9ff-773ca383912b", "metadata": {}, "outputs": [ @@ -211,39 +200,49 @@ "output_type": "stream", "text": [ "Patch 0 -> 3; Samples count = 10\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", + "[WARNING] Most likely you are not using robust optimisations\n", "First point clouds insertion stage\n", - "\tmin = 2.647s\n", - "\tmax = 2.863s\n", - "\tmean = 2.708s\n", - "\tstd = 0.066s\n", + "\tmin = 0.025s\n", + "\tmax = 0.03s\n", + "\tmean = 0.026s\n", + "\tstd = 0.001s\n", "Subdividers stage\n", - "\tmin = 8.991s\n", - "\tmax = 9.287s\n", - "\tmean = 9.077s\n", - "\tstd = 0.087s\n", + "\tmin = 0.041s\n", + "\tmax = 0.045s\n", + "\tmean = 0.043s\n", + "\tstd = 0.001s\n", "Distribution stage\n", - "\tmin = 20.751s\n", - "\tmax = 21.297s\n", - "\tmean = 20.877s\n", - "\tstd = 0.151s\n", + "\tmin = 0.086s\n", + "\tmax = 0.099s\n", + "\tmean = 0.089s\n", + "\tstd = 0.004s\n", "Segmenters stage\n", - "\tmin = 7.337s\n", - "\tmax = 9.898s\n", - "\tmean = 7.762s\n", - "\tstd = 0.769s\n", + "\tmin = 0.252s\n", + "\tmax = 0.319s\n", + "\tmean = 0.277s\n", + "\tstd = 0.02s\n", "Backend stage\n", - "\tmin = 0.096s\n", - "\tmax = 0.155s\n", - "\tmean = 0.104s\n", - "\tstd = 0.017s\n" + "\tmin = 0.004s\n", + "\tmax = 0.005s\n", + "\tmean = 0.004s\n", + "\tstd = 0.0s\n" ] } ], "source": [ "# Pipeline configuration\n", "# TODO(user): You can manipulate configuration spec below as you want\n", - "dataset_path = \"../evaluation/kitti\"\n", - "dataset_reader = KittiReader\n", + "dataset_path = \"../evaluation/hilti\"\n", + "dataset_reader = HiltiReader\n", "start = 0\n", "end = 3\n", "step = 3\n", @@ -274,9 +273,7 @@ "\n", " grid = Grid(\n", " GridConfig(\n", - " octree_type=MultiPoseOctree,\n", - " octree_config=OctreeConfig(),\n", - " grid_voxel_edge_length=4,\n", + " voxel_edge_length=initial_voxel_size,\n", " )\n", " )\n", " \n", @@ -337,7 +334,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.0" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c0b5567 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,33 @@ +[tool.poetry] +name = "sova" +version = "0.0.0" +description = "SLAM on Voxel Alignment" +authors = [ + "Pavel Mokeev " +] +license = "APACHE" +readme = "README.md" +homepage = "https://github.com/prime-slam/" +repository = "https://github.com/prime-slam/sova" +classifiers = [ + "License :: OSI Approved :: Apache Software License", + "Intended Audience :: Developers", + "Topic :: Software Development :: Libraries :: Python Modules", +] +exclude = ["tests"] + +[tool.poetry.dependencies] +python = "3.10.*" +mrob = "^0.0.12" +numpy = "^1.26.0" +open3d = "^0.17.0" +octreelib = "^0.0.6" +scikit-learn = "^1.3.1" +PyYAML = "~6.0.1" + +[tool.poetry.dev-dependencies] +pytest = "^7.4.3" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 806a377..53c97e3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,7 @@ mrob==0.0.12 -numpy==1.25.2 +numpy==1.26.0 open3d==0.17.0 -octreelib @ git+https://github.com/true-real-michael/octreelib@v0.0.5 +octreelib==0.0.6 scikit-learn==1.3.1 PyYAML~=6.0.1 -pytest~=7.4.3 -k3d==2.16.0 \ No newline at end of file +pytest~=7.4.3 \ No newline at end of file diff --git a/slam/__init__.py b/slam/__init__.py deleted file mode 100644 index 3fb3349..0000000 --- a/slam/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from slam import backend, filter, pipeline, segmenter, subdivider, typing, utils diff --git a/slam/backend/__init__.py b/slam/backend/__init__.py deleted file mode 100644 index 50831fa..0000000 --- a/slam/backend/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -import slam.backend.backend as backend_module -import slam.backend.bareg as bareg_module -import slam.backend.eigen_factor as eigen_factor_module -import slam.backend.mrob_backend as mrob_backend_module -from slam.backend.backend import * -from slam.backend.bareg import * -from slam.backend.eigen_factor import * -from slam.backend.mrob_backend import * - -__all__ = backend_module.__all__ + bareg_module.__all__ + eigen_factor_module.__all__ + mrob_backend_module.__all__ diff --git a/slam/filter/__init__.py b/slam/filter/__init__.py deleted file mode 100644 index cf38cb3..0000000 --- a/slam/filter/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -import slam.filter.empty_voxel as empty_voxel_module -import slam.filter.filter as filter_module -from slam.filter.empty_voxel import * -from slam.filter.filter import * - -__all__ = empty_voxel_module.__all__ + filter_module.__all__ diff --git a/slam/pipeline/__init__.py b/slam/pipeline/__init__.py deleted file mode 100644 index cc84ac1..0000000 --- a/slam/pipeline/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -import slam.pipeline.pipeline as pipeline_module -import slam.pipeline.sequential_pipeline as sequential_pipeline_module -from slam.pipeline.configuration import ConfigurationReader, YAMLConfigurationReader -from slam.pipeline.pipeline import * -from slam.pipeline.sequential_pipeline import * - -__all__ = (pipeline_module.__all__ + - sequential_pipeline_module.__all__ + - ["ConfigurationReader", "YAMLConfigurationReader"]) diff --git a/slam/pipeline/configuration/__init__.py b/slam/pipeline/configuration/__init__.py deleted file mode 100644 index 366b47b..0000000 --- a/slam/pipeline/configuration/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -import slam.pipeline.configuration.reader as reader_module -import slam.pipeline.configuration.yaml as yaml_reader_module -from slam.pipeline.configuration.reader import * -from slam.pipeline.configuration.yaml import * - -__all__ = reader_module.__all__ + yaml_reader_module.__all__ diff --git a/slam/segmenter/__init__.py b/slam/segmenter/__init__.py deleted file mode 100644 index 44d22c9..0000000 --- a/slam/segmenter/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -import slam.segmenter.cape as cape_module -import slam.segmenter.count as count_module -import slam.segmenter.identical as identical_module -import slam.segmenter.ransac as ransac_module -import slam.segmenter.segmenter as segmenter_module -from slam.segmenter.cape import * -from slam.segmenter.count import * -from slam.segmenter.identical import * -from slam.segmenter.ransac import * -from slam.segmenter.segmenter import * - -__all__ = (cape_module.__all__ + count_module.__all__ + segmenter_module.__all__ + - ransac_module.__all__ + identical_module.__all__) diff --git a/slam/subdivider/__init__.py b/slam/subdivider/__init__.py deleted file mode 100644 index 9327f16..0000000 --- a/slam/subdivider/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -import slam.subdivider.count as count_module -import slam.subdivider.eigen_value as eigen_value_module -import slam.subdivider.size as size_module -import slam.subdivider.subdivider as subdivider_base_module -from slam.subdivider.count import * -from slam.subdivider.eigen_value import * -from slam.subdivider.size import * -from slam.subdivider.subdivider import * - -__all__ = count_module.__all__ + eigen_value_module.__all__ + subdivider_base_module.__all__ + size_module.__all__ diff --git a/slam/typing/__init__.py b/slam/typing/__init__.py deleted file mode 100644 index 1ef26be..0000000 --- a/slam/typing/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -import slam.typing.hints as hints_module -from slam.typing.hints import * - -__all__ = hints_module.__all__ diff --git a/slam/utils/dataset_reader/__init__.py b/slam/utils/dataset_reader/__init__.py deleted file mode 100644 index a856fcc..0000000 --- a/slam/utils/dataset_reader/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -import slam.utils.dataset_reader.hilti as hilti_module -import slam.utils.dataset_reader.kitti as kitti_module -import slam.utils.dataset_reader.nuscenes as nuscenes_module -import slam.utils.dataset_reader.reader as reader_module -from slam.utils.dataset_reader.hilti import * -from slam.utils.dataset_reader.kitti import * -from slam.utils.dataset_reader.nuscenes import * -from slam.utils.dataset_reader.reader import * - -__all__ = hilti_module.__all__ + kitti_module.__all__ + nuscenes_module.__all__ + reader_module.__all__ diff --git a/sova/__init__.py b/sova/__init__.py new file mode 100644 index 0000000..a385efb --- /dev/null +++ b/sova/__init__.py @@ -0,0 +1 @@ +from sova import backend, filter, pipeline, segmenter, subdivider, typing, utils diff --git a/sova/backend/__init__.py b/sova/backend/__init__.py new file mode 100644 index 0000000..f07648a --- /dev/null +++ b/sova/backend/__init__.py @@ -0,0 +1,10 @@ +import sova.backend.backend as backend_module +import sova.backend.bareg as bareg_module +import sova.backend.eigen_factor as eigen_factor_module +import sova.backend.mrob_backend as mrob_backend_module +from sova.backend.backend import * +from sova.backend.bareg import * +from sova.backend.eigen_factor import * +from sova.backend.mrob_backend import * + +__all__ = backend_module.__all__ + bareg_module.__all__ + eigen_factor_module.__all__ + mrob_backend_module.__all__ diff --git a/slam/backend/backend.py b/sova/backend/backend.py similarity index 98% rename from slam/backend/backend.py rename to sova/backend/backend.py index 9e574f9..f8eef4b 100644 --- a/slam/backend/backend.py +++ b/sova/backend/backend.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod from typing import List -from slam.typing import ArrayNx4x4 +from sova.typing import ArrayNx4x4 __all__ = ["Metric", "BackendOutput", "Backend"] diff --git a/slam/backend/bareg.py b/sova/backend/bareg.py similarity index 95% rename from slam/backend/bareg.py rename to sova/backend/bareg.py index cc2a84d..658cc91 100644 --- a/slam/backend/bareg.py +++ b/sova/backend/bareg.py @@ -1,6 +1,6 @@ from octreelib.grid import GridBase -from slam.backend.mrob_backend import MROBBackend +from sova.backend.mrob_backend import MROBBackend __all__ = ["BaregBackend"] diff --git a/slam/backend/eigen_factor.py b/sova/backend/eigen_factor.py similarity index 95% rename from slam/backend/eigen_factor.py rename to sova/backend/eigen_factor.py index e356f78..0f78885 100644 --- a/slam/backend/eigen_factor.py +++ b/sova/backend/eigen_factor.py @@ -1,6 +1,6 @@ from octreelib.grid import GridBase -from slam.backend.mrob_backend import MROBBackend +from sova.backend.mrob_backend import MROBBackend __all__ = ["EigenFactorBackend"] diff --git a/slam/backend/mrob_backend.py b/sova/backend/mrob_backend.py similarity index 98% rename from slam/backend/mrob_backend.py rename to sova/backend/mrob_backend.py index 716280a..0fdfdbd 100644 --- a/slam/backend/mrob_backend.py +++ b/sova/backend/mrob_backend.py @@ -4,7 +4,7 @@ from abc import abstractmethod from typing import Dict, List -from slam.backend.backend import Backend, BackendOutput, Metric +from sova.backend.backend import Backend, BackendOutput, Metric __all__ = ["MROBBackend"] diff --git a/sova/filter/__init__.py b/sova/filter/__init__.py new file mode 100644 index 0000000..5741fe7 --- /dev/null +++ b/sova/filter/__init__.py @@ -0,0 +1,6 @@ +import sova.filter.empty_voxel as empty_voxel_module +import sova.filter.filter as filter_module +from sova.filter.empty_voxel import * +from sova.filter.filter import * + +__all__ = empty_voxel_module.__all__ + filter_module.__all__ diff --git a/slam/filter/empty_voxel.py b/sova/filter/empty_voxel.py similarity index 89% rename from slam/filter/empty_voxel.py rename to sova/filter/empty_voxel.py index 2d286b4..5f27762 100644 --- a/slam/filter/empty_voxel.py +++ b/sova/filter/empty_voxel.py @@ -1,5 +1,5 @@ -from slam.filter.filter import Filter -from slam.typing import ArrayNx3 +from sova.filter.filter import Filter +from sova.typing import ArrayNx3 __all__ = ["EmptyVoxel"] diff --git a/slam/filter/filter.py b/sova/filter/filter.py similarity index 95% rename from slam/filter/filter.py rename to sova/filter/filter.py index 29b156d..b513353 100644 --- a/slam/filter/filter.py +++ b/sova/filter/filter.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from slam.typing import ArrayNx3 +from sova.typing import ArrayNx3 __all__ = ["Filter"] diff --git a/sova/pipeline/__init__.py b/sova/pipeline/__init__.py new file mode 100644 index 0000000..e6a37fa --- /dev/null +++ b/sova/pipeline/__init__.py @@ -0,0 +1,9 @@ +import sova.pipeline.pipeline as pipeline_module +import sova.pipeline.sequential_pipeline as sequential_pipeline_module +from sova.pipeline.configuration import ConfigurationReader, YAMLConfigurationReader +from sova.pipeline.pipeline import * +from sova.pipeline.sequential_pipeline import * + +__all__ = (pipeline_module.__all__ + + sequential_pipeline_module.__all__ + + ["ConfigurationReader", "YAMLConfigurationReader"]) diff --git a/sova/pipeline/configuration/__init__.py b/sova/pipeline/configuration/__init__.py new file mode 100644 index 0000000..c51e82b --- /dev/null +++ b/sova/pipeline/configuration/__init__.py @@ -0,0 +1,6 @@ +import sova.pipeline.configuration.reader as reader_module +import sova.pipeline.configuration.yaml as yaml_reader_module +from sova.pipeline.configuration.reader import * +from sova.pipeline.configuration.yaml import * + +__all__ = reader_module.__all__ + yaml_reader_module.__all__ diff --git a/slam/pipeline/configuration/reader.py b/sova/pipeline/configuration/reader.py similarity index 98% rename from slam/pipeline/configuration/reader.py rename to sova/pipeline/configuration/reader.py index 0500553..71ab93d 100644 --- a/slam/pipeline/configuration/reader.py +++ b/sova/pipeline/configuration/reader.py @@ -5,16 +5,16 @@ from abc import ABC, abstractmethod from typing import List -from slam.backend import Backend, BaregBackend, EigenFactorBackend -from slam.filter import Filter -from slam.segmenter import ( +from sova.backend import Backend, BaregBackend, EigenFactorBackend +from sova.filter import Filter +from sova.segmenter import ( CAPESegmenter, CountSegmenter, IdenticalSegmenter, RansacSegmenter, Segmenter, ) -from slam.subdivider import ( +from sova.subdivider import ( CountSubdivider, EigenValueSubdivider, SizeSubdivider, diff --git a/slam/pipeline/configuration/yaml.py b/sova/pipeline/configuration/yaml.py similarity index 82% rename from slam/pipeline/configuration/yaml.py rename to sova/pipeline/configuration/yaml.py index a3887d6..9dbe994 100644 --- a/slam/pipeline/configuration/yaml.py +++ b/sova/pipeline/configuration/yaml.py @@ -1,6 +1,6 @@ import yaml -from slam.pipeline.configuration.reader import ConfigurationReader +from sova.pipeline.configuration.reader import ConfigurationReader __all__ = ["YAMLConfigurationReader"] diff --git a/slam/pipeline/pipeline.py b/sova/pipeline/pipeline.py similarity index 93% rename from slam/pipeline/pipeline.py rename to sova/pipeline/pipeline.py index 8024f22..fe3fcf2 100644 --- a/slam/pipeline/pipeline.py +++ b/sova/pipeline/pipeline.py @@ -6,11 +6,11 @@ from dataclasses import dataclass from typing import List -from slam.backend.backend import Backend, BackendOutput -from slam.filter.filter import Filter -from slam.segmenter import Segmenter -from slam.subdivider.subdivider import Subdivider -from slam.typing.hints import ArrayNx4x4 +from sova.backend.backend import Backend, BackendOutput +from sova.filter.filter import Filter +from sova.segmenter import Segmenter +from sova.subdivider.subdivider import Subdivider +from sova.typing.hints import ArrayNx4x4 __all__ = ["PipelineRuntimeParameters", "Pipeline"] diff --git a/slam/pipeline/sequential_pipeline.py b/sova/pipeline/sequential_pipeline.py similarity index 95% rename from slam/pipeline/sequential_pipeline.py rename to sova/pipeline/sequential_pipeline.py index 74798d9..f4676c4 100644 --- a/slam/pipeline/sequential_pipeline.py +++ b/sova/pipeline/sequential_pipeline.py @@ -3,8 +3,8 @@ from dataclasses import dataclass -from slam.backend import BackendOutput -from slam.pipeline.pipeline import Pipeline, PipelineRuntimeParameters +from sova.backend import BackendOutput +from sova.pipeline.pipeline import Pipeline, PipelineRuntimeParameters __all__ = ["SequentialPipelineRuntimeParameters", "SequentialPipeline"] diff --git a/sova/segmenter/__init__.py b/sova/segmenter/__init__.py new file mode 100644 index 0000000..0593a01 --- /dev/null +++ b/sova/segmenter/__init__.py @@ -0,0 +1,13 @@ +import sova.segmenter.cape as cape_module +import sova.segmenter.count as count_module +import sova.segmenter.identical as identical_module +import sova.segmenter.ransac as ransac_module +import sova.segmenter.segmenter as segmenter_module +from sova.segmenter.cape import * +from sova.segmenter.count import * +from sova.segmenter.identical import * +from sova.segmenter.ransac import * +from sova.segmenter.segmenter import * + +__all__ = (cape_module.__all__ + count_module.__all__ + segmenter_module.__all__ + + ransac_module.__all__ + identical_module.__all__) diff --git a/slam/segmenter/cape.py b/sova/segmenter/cape.py similarity index 95% rename from slam/segmenter/cape.py rename to sova/segmenter/cape.py index bd0f273..aa389c7 100644 --- a/slam/segmenter/cape.py +++ b/sova/segmenter/cape.py @@ -1,8 +1,8 @@ import numpy as np from sklearn.decomposition import PCA -from slam.segmenter.segmenter import Segmenter -from slam.typing import ArrayNx3 +from sova.segmenter.segmenter import Segmenter +from sova.typing import ArrayNx3 __all__ = ["CAPESegmenter"] diff --git a/slam/segmenter/count.py b/sova/segmenter/count.py similarity index 92% rename from slam/segmenter/count.py rename to sova/segmenter/count.py index ab1cd47..ebcff42 100644 --- a/slam/segmenter/count.py +++ b/sova/segmenter/count.py @@ -1,7 +1,7 @@ import numpy as np -from slam.segmenter.segmenter import Segmenter -from slam.typing import ArrayNx3 +from sova.segmenter.segmenter import Segmenter +from sova.typing import ArrayNx3 __all__ = ["CountSegmenter"] diff --git a/slam/segmenter/identical.py b/sova/segmenter/identical.py similarity index 88% rename from slam/segmenter/identical.py rename to sova/segmenter/identical.py index 591d525..35b04fa 100644 --- a/slam/segmenter/identical.py +++ b/sova/segmenter/identical.py @@ -1,5 +1,5 @@ -from slam.segmenter.segmenter import Segmenter -from slam.typing import ArrayNx3 +from sova.segmenter.segmenter import Segmenter +from sova.typing import ArrayNx3 __all__ = ["IdenticalSegmenter"] diff --git a/slam/segmenter/ransac.py b/sova/segmenter/ransac.py similarity index 96% rename from slam/segmenter/ransac.py rename to sova/segmenter/ransac.py index 837e345..7c053f0 100644 --- a/slam/segmenter/ransac.py +++ b/sova/segmenter/ransac.py @@ -1,8 +1,8 @@ import numpy as np import open3d as o3d -from slam.segmenter.segmenter import Segmenter -from slam.typing.hints import ArrayNx3 +from sova.segmenter.segmenter import Segmenter +from sova.typing.hints import ArrayNx3 __all__ = ["RansacSegmenter"] diff --git a/slam/segmenter/segmenter.py b/sova/segmenter/segmenter.py similarity index 94% rename from slam/segmenter/segmenter.py rename to sova/segmenter/segmenter.py index f657965..91286a1 100644 --- a/slam/segmenter/segmenter.py +++ b/sova/segmenter/segmenter.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from slam.typing.hints import ArrayNx3 +from sova.typing.hints import ArrayNx3 __all__ = ["Segmenter"] diff --git a/sova/subdivider/__init__.py b/sova/subdivider/__init__.py new file mode 100644 index 0000000..c621f05 --- /dev/null +++ b/sova/subdivider/__init__.py @@ -0,0 +1,10 @@ +import sova.subdivider.count as count_module +import sova.subdivider.eigen_value as eigen_value_module +import sova.subdivider.size as size_module +import sova.subdivider.subdivider as subdivider_base_module +from sova.subdivider.count import * +from sova.subdivider.eigen_value import * +from sova.subdivider.size import * +from sova.subdivider.subdivider import * + +__all__ = count_module.__all__ + eigen_value_module.__all__ + subdivider_base_module.__all__ + size_module.__all__ diff --git a/slam/subdivider/count.py b/sova/subdivider/count.py similarity index 91% rename from slam/subdivider/count.py rename to sova/subdivider/count.py index c5b197e..882d1cb 100644 --- a/slam/subdivider/count.py +++ b/sova/subdivider/count.py @@ -1,5 +1,5 @@ -from slam.subdivider.subdivider import Subdivider -from slam.typing import ArrayNx3 +from sova.subdivider.subdivider import Subdivider +from sova.typing import ArrayNx3 __all__ = ["CountSubdivider"] diff --git a/slam/subdivider/eigen_value.py b/sova/subdivider/eigen_value.py similarity index 95% rename from slam/subdivider/eigen_value.py rename to sova/subdivider/eigen_value.py index 9cd1feb..2e00648 100644 --- a/slam/subdivider/eigen_value.py +++ b/sova/subdivider/eigen_value.py @@ -1,8 +1,8 @@ import numpy as np from sklearn.decomposition import PCA -from slam.subdivider.subdivider import Subdivider -from slam.typing import ArrayNx3 +from sova.subdivider.subdivider import Subdivider +from sova.typing import ArrayNx3 __all__ = ["EigenValueSubdivider"] diff --git a/slam/subdivider/size.py b/sova/subdivider/size.py similarity index 93% rename from slam/subdivider/size.py rename to sova/subdivider/size.py index 5c0d1d6..d2630aa 100644 --- a/slam/subdivider/size.py +++ b/sova/subdivider/size.py @@ -3,8 +3,8 @@ import math -from slam.subdivider.subdivider import Subdivider -from slam.typing import ArrayNx3 +from sova.subdivider.subdivider import Subdivider +from sova.typing import ArrayNx3 __all__ = ["SizeSubdivider"] diff --git a/slam/subdivider/subdivider.py b/sova/subdivider/subdivider.py similarity index 95% rename from slam/subdivider/subdivider.py rename to sova/subdivider/subdivider.py index fd23334..18719d3 100644 --- a/slam/subdivider/subdivider.py +++ b/sova/subdivider/subdivider.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from slam.typing import ArrayNx3 +from sova.typing import ArrayNx3 __all__ = ["Subdivider"] diff --git a/sova/typing/__init__.py b/sova/typing/__init__.py new file mode 100644 index 0000000..c4a33f8 --- /dev/null +++ b/sova/typing/__init__.py @@ -0,0 +1,4 @@ +import sova.typing.hints as hints_module +from sova.typing.hints import * + +__all__ = hints_module.__all__ diff --git a/slam/typing/hints.py b/sova/typing/hints.py similarity index 100% rename from slam/typing/hints.py rename to sova/typing/hints.py diff --git a/slam/utils/__init__.py b/sova/utils/__init__.py similarity index 58% rename from slam/utils/__init__.py rename to sova/utils/__init__.py index 257f59c..c592661 100644 --- a/slam/utils/__init__.py +++ b/sova/utils/__init__.py @@ -1,11 +1,11 @@ -import slam.utils.pose_readwriter as pose_readwriter_module -from slam.utils.dataset_reader import ( +import sova.utils.pose_readwriter as pose_readwriter_module +from sova.utils.dataset_reader import ( DatasetReader, HiltiReader, KittiReader, NuscenesReader, ) -from slam.utils.pose_readwriter import * +from sova.utils.pose_readwriter import * __all__ = (pose_readwriter_module.__all__ + ["DatasetReader", "HiltiReader", "KittiReader", "NuscenesReader"]) diff --git a/sova/utils/dataset_reader/__init__.py b/sova/utils/dataset_reader/__init__.py new file mode 100644 index 0000000..8ad9617 --- /dev/null +++ b/sova/utils/dataset_reader/__init__.py @@ -0,0 +1,10 @@ +import sova.utils.dataset_reader.hilti as hilti_module +import sova.utils.dataset_reader.kitti as kitti_module +import sova.utils.dataset_reader.nuscenes as nuscenes_module +import sova.utils.dataset_reader.reader as reader_module +from sova.utils.dataset_reader.hilti import * +from sova.utils.dataset_reader.kitti import * +from sova.utils.dataset_reader.nuscenes import * +from sova.utils.dataset_reader.reader import * + +__all__ = hilti_module.__all__ + kitti_module.__all__ + nuscenes_module.__all__ + reader_module.__all__ diff --git a/slam/utils/dataset_reader/hilti.py b/sova/utils/dataset_reader/hilti.py similarity index 89% rename from slam/utils/dataset_reader/hilti.py rename to sova/utils/dataset_reader/hilti.py index 3f3aa6a..260e3ff 100644 --- a/slam/utils/dataset_reader/hilti.py +++ b/sova/utils/dataset_reader/hilti.py @@ -1,8 +1,8 @@ import numpy as np import open3d as o3d -from slam.typing import ArrayNx4x4 -from slam.utils.dataset_reader.reader import DatasetReader +from sova.typing import ArrayNx4x4 +from sova.utils.dataset_reader.reader import DatasetReader __all__ = ["HiltiReader"] diff --git a/slam/utils/dataset_reader/kitti.py b/sova/utils/dataset_reader/kitti.py similarity index 92% rename from slam/utils/dataset_reader/kitti.py rename to sova/utils/dataset_reader/kitti.py index e901f69..b731228 100644 --- a/slam/utils/dataset_reader/kitti.py +++ b/sova/utils/dataset_reader/kitti.py @@ -3,8 +3,8 @@ import os.path -from slam.typing import ArrayNx4x4 -from slam.utils.dataset_reader.reader import DatasetReader +from sova.typing import ArrayNx4x4 +from sova.utils.dataset_reader.reader import DatasetReader __all__ = ["KittiReader"] diff --git a/slam/utils/dataset_reader/nuscenes.py b/sova/utils/dataset_reader/nuscenes.py similarity index 91% rename from slam/utils/dataset_reader/nuscenes.py rename to sova/utils/dataset_reader/nuscenes.py index dbaa162..e973d29 100644 --- a/slam/utils/dataset_reader/nuscenes.py +++ b/sova/utils/dataset_reader/nuscenes.py @@ -1,8 +1,8 @@ import numpy as np import open3d as o3d -from slam.typing import ArrayNx4x4 -from slam.utils.dataset_reader.reader import DatasetReader +from sova.typing import ArrayNx4x4 +from sova.utils.dataset_reader.reader import DatasetReader __all__ = ["NuscenesReader"] diff --git a/slam/utils/dataset_reader/reader.py b/sova/utils/dataset_reader/reader.py similarity index 94% rename from slam/utils/dataset_reader/reader.py rename to sova/utils/dataset_reader/reader.py index b43c4b8..58c7b9a 100644 --- a/slam/utils/dataset_reader/reader.py +++ b/sova/utils/dataset_reader/reader.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod -from slam.typing import ArrayNx4x4 +from sova.typing import ArrayNx4x4 __all__ = ["DatasetReader"] diff --git a/slam/utils/pose_readwriter.py b/sova/utils/pose_readwriter.py similarity index 97% rename from slam/utils/pose_readwriter.py rename to sova/utils/pose_readwriter.py index 913a190..77a67c1 100644 --- a/slam/utils/pose_readwriter.py +++ b/sova/utils/pose_readwriter.py @@ -1,6 +1,6 @@ import numpy as np -from slam.typing import Array4x4, ArrayNx4x4 +from sova.typing import Array4x4, ArrayNx4x4 __all__ = ["OptimisedPoseReadWriter"] diff --git a/tests/test_cape_segmenter.py b/tests/test_cape_segmenter.py index 5e4cf9f..4f490a7 100644 --- a/tests/test_cape_segmenter.py +++ b/tests/test_cape_segmenter.py @@ -3,8 +3,8 @@ import random -from slam.segmenter import CAPESegmenter -from slam.typing import ArrayNx3 +from sova.segmenter import CAPESegmenter +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_count_segmenter.py b/tests/test_count_segmenter.py index d59d52f..c70cc68 100644 --- a/tests/test_count_segmenter.py +++ b/tests/test_count_segmenter.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.segmenter import CountSegmenter -from slam.typing import ArrayNx3 +from sova.segmenter import CountSegmenter +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_count_subdivider.py b/tests/test_count_subdivider.py index 39303f9..cfe6e3a 100644 --- a/tests/test_count_subdivider.py +++ b/tests/test_count_subdivider.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.subdivider import CountSubdivider -from slam.typing import ArrayNx3 +from sova.subdivider import CountSubdivider +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_eigen_value_subdivider.py b/tests/test_eigen_value_subdivider.py index b089d85..8e504db 100644 --- a/tests/test_eigen_value_subdivider.py +++ b/tests/test_eigen_value_subdivider.py @@ -3,8 +3,8 @@ import random -from slam.subdivider import EigenValueSubdivider -from slam.typing import ArrayNx3 +from sova.subdivider import EigenValueSubdivider +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_empty_voxel_filter.py b/tests/test_empty_voxel_filter.py index ea1a3f7..c28b46a 100644 --- a/tests/test_empty_voxel_filter.py +++ b/tests/test_empty_voxel_filter.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.filter import EmptyVoxel -from slam.typing import ArrayNx3 +from sova.filter import EmptyVoxel +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_identical_segmenter.py b/tests/test_identical_segmenter.py index 8621f58..d807045 100644 --- a/tests/test_identical_segmenter.py +++ b/tests/test_identical_segmenter.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.segmenter import IdenticalSegmenter -from slam.typing import ArrayNx3 +from sova.segmenter import IdenticalSegmenter +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_pose_readwriter.py b/tests/test_pose_readwriter.py index 2f2b439..331a20e 100644 --- a/tests/test_pose_readwriter.py +++ b/tests/test_pose_readwriter.py @@ -3,8 +3,8 @@ import os -from slam.typing import ArrayNx4x4 -from slam.utils import OptimisedPoseReadWriter +from sova.typing import ArrayNx4x4 +from sova.utils import OptimisedPoseReadWriter @pytest.mark.parametrize( diff --git a/tests/test_ransac_segmenter.py b/tests/test_ransac_segmenter.py index b80faa5..1ba2d10 100644 --- a/tests/test_ransac_segmenter.py +++ b/tests/test_ransac_segmenter.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.segmenter import RansacSegmenter -from slam.typing import ArrayNx3 +from sova.segmenter import RansacSegmenter +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_sequential_pipeline.py b/tests/test_sequential_pipeline.py index c801bab..a79d7c5 100644 --- a/tests/test_sequential_pipeline.py +++ b/tests/test_sequential_pipeline.py @@ -7,12 +7,12 @@ import os from typing import List -from slam.backend import Backend, EigenFactorBackend -from slam.filter import Filter -from slam.pipeline import SequentialPipeline, SequentialPipelineRuntimeParameters -from slam.segmenter import CountSegmenter, Segmenter -from slam.subdivider import CountSubdivider, Subdivider -from slam.typing import ArrayNx3, ArrayNx4x4 +from sova.backend import Backend, EigenFactorBackend +from sova.filter import Filter +from sova.pipeline import SequentialPipeline, SequentialPipelineRuntimeParameters +from sova.segmenter import CountSegmenter, Segmenter +from sova.subdivider import CountSubdivider, Subdivider +from sova.typing import ArrayNx3, ArrayNx4x4 @pytest.mark.parametrize( diff --git a/tests/test_size_subdivider.py b/tests/test_size_subdivider.py index 3bb4494..9e5c57b 100644 --- a/tests/test_size_subdivider.py +++ b/tests/test_size_subdivider.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from slam.subdivider import SizeSubdivider -from slam.typing import ArrayNx3 +from sova.subdivider import SizeSubdivider +from sova.typing import ArrayNx3 @pytest.mark.parametrize( diff --git a/tests/test_yaml_configuration_reader.py b/tests/test_yaml_configuration_reader.py index fda8362..6395fa4 100644 --- a/tests/test_yaml_configuration_reader.py +++ b/tests/test_yaml_configuration_reader.py @@ -4,11 +4,11 @@ from typing import List -from slam.backend import Backend, EigenFactorBackend -from slam.filter import Filter -from slam.pipeline import YAMLConfigurationReader -from slam.segmenter import RansacSegmenter, Segmenter -from slam.subdivider import SizeSubdivider, Subdivider +from sova.backend import Backend, EigenFactorBackend +from sova.filter import Filter +from sova.pipeline import YAMLConfigurationReader +from sova.segmenter import RansacSegmenter, Segmenter +from sova.subdivider import SizeSubdivider, Subdivider @pytest.mark.parametrize(