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_examplespackage 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.
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}
}
Metadata
Release files for coniferest 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| coniferest-0.2.1.tar.gz | 39.6 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| coniferest-0.2.1-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| coniferest-0.2.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| coniferest-0.2.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| coniferest-0.2.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | abi3 | macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 | Details |
Total release size: 2.0 MB
Release files / coniferest-0.2.1.tar.gz
| Download URL | coniferest-0.2.1.tar.gz |
|---|---|
| Size | 39.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
16923db553dfb4879918926b7779a33e2f6ef9af85148f87f7950ed1d8728ddf
|
|
BLAKE2b-256 checksum How to use checksums |
8692a5c65a00bd52e445a687362f15ec9030f6d5b7c1f6f40af573dfc069858a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.
Transparency logRelease files / coniferest-0.2.1-cp310-abi3-win_amd64.whl
| Download URL | coniferest-0.2.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 348.0 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4d3df1824ceaa8dddada227e648ffc537bacb73b4b0b9eb00cd129eb3cdd8727
|
|
BLAKE2b-256 checksum How to use checksums |
d855e1fd7f8bcc7f2a68856b4256bcf78da8f272c8bb41b9eafab616ba32c855
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.
Transparency logRelease files / coniferest-0.2.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | coniferest-0.2.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 426.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4ebf5427c853c707364a86e2d1bc1c2a7a06e5dd18979f92c28f48a7e9313038
|
|
BLAKE2b-256 checksum How to use checksums |
9f43462b2f49e9db3b895e14cbd7e2e9d6d10bf64cb284b8828e64c853adbba1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.
Transparency logRelease files / coniferest-0.2.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | coniferest-0.2.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 404.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e3fe1a507dd0cd954d882cab5d8e67935019377c9b08d4baad784cf4d36bf5f5
|
|
BLAKE2b-256 checksum How to use checksums |
4a80fc638f282f2dc9374650bff1d934d7c79e61632cfb5832841921587b212c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.
Transparency logRelease files / coniferest-0.2.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | coniferest-0.2.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 806.9 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6bb42cf8b68cf6cf43811c080d3c64209b9ef88c0ff47772ecf9bd7bc53d082a
|
|
BLAKE2b-256 checksum How to use checksums |
adc3d345a27c0662d71e2770991ef2736549195dc4d0e76e5a629ebb74265ff9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.
Transparency log