Skip to main content

Coniferous forests for better machine learning

Project description

ascl:2507.009 PyPI version Documentation Status Test Workflow Build and publish wheels pre-commit.ci status

Package for active anomaly detection with isolation forests, made by SNAD collaboration.

It includes:

  • IsolationForest - reimplementation of scikit-learn's isolation forest with much better training and scoring performance due to the use of Rust programming language and multi-threading.
  • AADForest - reimplementation of Active Anomaly detection algorithm with isolation forests from Shubhomoy Das' ad_examples package with better performance, much less code and more flexible dependencies.
  • PineForest - our own active learning model based on the idea of tree filtering.

Install the package with pip install coniferest.

See the documentation for the Tutorial.

asciicast

Installation

pip install coniferest

Binary wheels are available for Linux, macOS and Windows, so you can install the package from PyPI on these platforms with no build-time dependencies.

If your specific platform is not supported, or you need a development version, you can install the package from the source. To do so, clone the repository and run pip install . in the root directory.

Development

You can install the package in editable mode with pip install -e .[dev] to install the development dependencies.

Linters and formatters

This project makes use of pre-commit hooks, you can install them with pre-commit install. Pre-commit CI is used for continuous integration of the hooks, they are applied to every pull request, and CI is responsible for auto-updating the hooks.

Testing and benchmarking

We use tox to build and test the package in isolated environments with different Python versions. To run tests locally, install tox with pip install tox and run tox in the root directory. We configure tox to skip long tests.

The project uses pytest as a testing framework. Tests are located in the tests directory, and can be run with pytest tests in the root directory. By default, all tests are run, but you can select specific tests with -k option, e.g. pytest tests -k test_onnx.test_onnx_aadforest. You can also deselect a specific group of tests with -m option, e.g. pytest tests -m'not long', see pyproject.toml for the list of markers.

We use pytest-benchmark for benchmarking. You can run benchmarks with pytest tests --benchmark-enable -m benchmark in the root directory. Most of the benchmarks have n_jobs fixture set to 1 by default, you can change it with --n_jobs option. You can adjust the minimum number of iterations with --benchmark-min-rounds and maximum execution time per benchmark with --benchmark-max-time (note that the latter can be exceeded if the minimum number of rounds is not reached). See pyproject.toml for the default benchmarking options. You can make a snapshot the current benchmark result with --benchmark-save=NAME or with --benchmark-autosave, and compare benchmarks with pytest-benchmark compare command.

We also run these benchmarks with GitHub Actions using codspeed.

Citation

If you found this project useful for your research, please cite Kornilov, Korolev, Malanchev, et al., 2025

@article{Kornilov2025,
	title = {Coniferest: A complete active anomaly detection framework},
	journal = {Astronomy and Computing},
	volume = {52},
	pages = {100960},
	year = {2025},
	issn = {2213-1337},
	doi = {10.1016/j.ascom.2025.100960},
	url = {https://www.sciencedirect.com/science/article/pii/S2213133725000332},
	author = {M.V. Kornilov and V.S. Korolev and K.L. Malanchev and A.D. Lavrukhina and E. Russeil and T.A. Semenikhin and E. Gangler and E.E.O. Ishida and M.V. Pruzhinskaya and A.A. Volnova and S. Sreejith},
}

Additionally, you may also cite the ASCL record for the package

@software{2025ascl.soft07009K,
       author = {{Korolev}, Vladimir and {Kornolov}, Matwey and {Malanchev}, Konstantin and {SNAD Team}},
        title = "{Coniferest: Python package for active anomaly detection}",
 howpublished = {Astrophysics Source Code Library, record ascl:2507.009},
         year = 2025,
        month = jul,
          eid = {ascl:2507.009},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2025ascl.soft07009K},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

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

coniferest-0.2.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

coniferest-0.2.0-cp310-abi3-win_amd64.whl (342.5 kB view details)

Uploaded CPython 3.10+Windows x86-64

coniferest-0.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (423.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

coniferest-0.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (401.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

coniferest-0.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (794.2 kB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file coniferest-0.2.0.tar.gz.

File metadata

  • Download URL: coniferest-0.2.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coniferest-0.2.0.tar.gz
Algorithm Hash digest
SHA256 46dbe60b699962edda198f85687ef21b6043f3faf239ba7d9f3474391557280f
MD5 7766cfdb8ff95f8503d615e76e6ba69b
BLAKE2b-256 e69e8859154f58abf2e9c43b58346a6f5ebc1f5917d165529b6f902a010e8375

See more details on using hashes here.

Provenance

The following attestation bundles were made for coniferest-0.2.0.tar.gz:

Publisher: wheels.yml on snad-space/coniferest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coniferest-0.2.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: coniferest-0.2.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 342.5 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coniferest-0.2.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 08c14d2cb5dccbcba5adfa51f960f569314f840b46aaec0cfa0bcb072a0eb37f
MD5 493fda24d320a86ccc51e6acd273bce0
BLAKE2b-256 7687a890c362a8a4fdcc238c063f7c4bd730d3bdc585f0e26ecba96297a94d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for coniferest-0.2.0-cp310-abi3-win_amd64.whl:

Publisher: wheels.yml on snad-space/coniferest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coniferest-0.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for coniferest-0.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 881928159edf3ed4b59a8a18cc390540c0f40eb54c0faee774c0a224bde5f443
MD5 3036be9a49c1ca55071c1bf817bbe5f6
BLAKE2b-256 de805c8182028a5f7b9bf4a58d374a979576a2db8407faa3f4e0bb46029c23d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for coniferest-0.2.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yml on snad-space/coniferest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coniferest-0.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for coniferest-0.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 09da35600d4b6c75b59ff4943c5fe4baa6f559b7ca3afb7291e4edebb01548ba
MD5 e5d5976ca121adfaf20e6eb88888966c
BLAKE2b-256 730fab5bec1c804a90938bd01b1b6cd9fe2d7ff1561bd0de1928923fb09629f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for coniferest-0.2.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: wheels.yml on snad-space/coniferest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coniferest-0.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for coniferest-0.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 74ef2b8f2923c3e0d12cd763df5a309508a9e1914b77a404bb805ad3204b742f
MD5 846b6d44c0ed99b15acf0391d3f5b82e
BLAKE2b-256 dcbd69067a9c722b03e922860837528cddd9271c19300f715bf6c712452c10ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for coniferest-0.2.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: wheels.yml on snad-space/coniferest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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