simpleoctree

An adaptive 2:1 balanced tree for point distributions in 2D and 3D. Written in Python with minimal dependencies.

https://github.com/annayesy/simpleoctree

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

An adaptive 2:1 balanced tree for point distributions in 2D and 3D. Written in Python with minimal dependencies.

Basic Info
  • Host: GitHub
  • Owner: annayesy
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 121 KB
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

simpleoctree

DOI License Top language Code size Latest commit

An adaptive 2:1 balanced tree for point distributions in 2D and 3D, written in Python with minimal dependencies.

Overview

simpleoctree is a Python package that adaptively partitions point distributions in 2D and 3D into a 2:1 balanced tree structure. The package ensures that any two neighboring leaf nodes are either on the same level or differ by one level, resulting in a neighbor list of bounded size.

Figure 1: A leaf box that violates the level restriction constraint (highlighted in red) and a refined leaf box added in its place to satisfy the level restriction (highlighted in green).

Figure 2: A balanced quad-tree for an adaptive point distribution. A box is highlighted in black and its neighbors in green. Notice that the box has coarse neighbors on a level above.

Installation

To install the package, clone the repository and run the following command: pip install -e .

Features

  • Adaptive Partitioning: Efficiently partitions point distributions in both 2D and 3D spaces.
  • Level-Restricted Tree: Ensures a 2:1 balance, where neighboring leaves are either on the same level or differ by one level.
  • Utility Functions: Includes several utility functions to find neighbors, parents, and other tree properties, all documented in simpletree/abstract_tree.py.

Usage

The tree structure includes many useful utilities for accessing neighbors, parents, and other related nodes. Comprehensive documentation for these functions is available in the simpletree/abstract_tree.py file.

This package is particularly useful for the development of fast solvers for adaptive geometries, e.g. the Fast Multipole Method (FMM) and the compression and [invertible] factorization of $\mathcal H$-matrices. For more detailed examples and usage instructions, please refer to the repository's documentation and example scripts.

Owner

  • Name: Anna Yesypenko
  • Login: annayesy
  • Kind: user
  • Location: United States

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it using the following metadata."
title: "SimpleOctree in Python"
authors:
  - family-names: "Yesypenko"
    given-names: "Anna"
    orcid: "https://orcid.org/0009-0008-1409-4075"
date-released: 2025-01-07
version: "v1.0.1"
doi: "10.5281/zenodo.14613403"
url: "https://github.com/annayesy/simpleoctree/"

GitHub Events

Total
  • Release event: 3
  • Watch event: 3
  • Delete event: 1
  • Push event: 7
  • Pull request event: 2
  • Create event: 3
Last Year
  • Release event: 3
  • Watch event: 3
  • Delete event: 1
  • Push event: 7
  • Pull request event: 2
  • Create event: 3

Dependencies

setup.py pypi
  • numpy *