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 3 DOI reference(s) in README
  • Academic publication links
    Links to: sciencedirect.com
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.0%) to scientific vocabulary

Keywords

anomaly-detection machine-learning

Keywords from Contributors

mesh optimizer distribution pipeline-testing spacy-extension hydrology datacleaner energy-system exoplanet data-profilers
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
Statistics
  • Stars: 12
  • Watchers: 3
  • Forks: 6
  • Open Issues: 41
  • Releases: 0
Topics
anomaly-detection machine-learning
Created over 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

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 scoring performance due to the use of Cython and multi-threading (the latter is not currently available on macOS). * 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

The project is using Cython for performance and requires compilation. However, binary wheels are available for Linux, macOS and Windows, so you can install the package with pip install coniferest on these platforms with no build-time dependencies. Currently multithreading is not available in macOS ARM wheels, but you can install the package from the source to enable it, see instructions below.

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.

Note, that we are using OpenMP for multi-threading, which is not available on macOS with the Apple LLVM Clang compiler. You still can install the package with Apple LLVM, but it will be single-threaded. Alternatively, you can install the package with Clang from Homebrew (brew install llvm libomp) or GCC (brew install gcc), which will enable multi-threading. In this case you will need to set environment variables CC=gcc-12 (or whatever version you have installed) or CC=$(brew --preifx llvm)/bin/clang and CONIFEREST_FORCE_OPENMP_ON_MACOS=1.

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.

Citation

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

bibtex @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 bibtex @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} }

Owner

  • Name: SNAD
  • Login: snad-space
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you found this project useful for your research, please cite it as below."
authors:
- family-names: "Kornilov"
  given-names: "Matwey"
  orcid: "https://orcid.org/0000-0002-5193-9806"
- family-names: "Korolev"
  given-names: "Vladimir"
  orcid: "https://orcid.org/0009-0008-7691-6142"
- family-names: "Malanchev"
  given-names: "Konstantin"
  orcid: "https://orcid.org/0000-0001-7179-7406"
title: "Package for active anomaly detection with isolation forests, made by SNAD collaboration"
date-released: 2021-07-29
url: "https://github.com/snad-space/coniferest"
preferred-citation:
  type: article
  authors:
  - family-names: "Kornilov"
    given-names: "Matwey"
    orcid: "https://orcid.org/0000-0002-5193-9806"
  - family-names: "Korolev"
    given-names: "Vladimir"
    orcid: "https://orcid.org/0009-0008-7691-6142"
  - family-names: "Malanchev"
    given-names: "Konstantin"
    orcid: "https://orcid.org/0000-0001-7179-7406"
  - family-names: "Lavrukhina"
    given-names: "Anastasia"
    orcid: "https://orcid.org/0009-0002-0835-7998"
  - family-names: "Russeil"
    given-names: "Etienne"
    orcid: "https://orcid.org/0000-0001-9923-2407"
  - family-names: "Semenikhin"
    given-names: "Timofey"
    orcid: "https://orcid.org/0009-0003-2133-6144"
  - family-names: "Gangler"
    given-names: "Emmanuel"
    orcid: "https://orcid.org/0000-0001-6728-1423"
  - family-names: "Ishida"
    given-names: "Emille"
    orcid: "https://orcid.org/0000-0002-0406-076X"
  - family-names: "Pruzhinskaya"
    given-names: "Maria"
    orcid: "https://orcid.org/0000-0001-7178-0823"
  - family-names: "Volnova"
    given-names: "Alina"
    orcid: "https://orcid.org/0000-0003-3554-1037"
  - family-names: "Sreejith"
    given-names: "Sreevarsha"
    orcid: "https://orcid.org/0000-0002-6423-1348"
  doi: "10.1016/j.ascom.2025.100960"
  journal: "Astronomy and Computing"
  start: 100960
  title: "Coniferest: A complete active anomaly detection framework"
  volume: 52
  year: 2025

GitHub Events

Total
  • Issues event: 19
  • Watch event: 4
  • Delete event: 28
  • Issue comment event: 60
  • Push event: 118
  • Pull request review comment event: 14
  • Pull request review event: 46
  • Pull request event: 58
  • Fork event: 2
  • Create event: 35
Last Year
  • Issues event: 19
  • Watch event: 4
  • Delete event: 28
  • Issue comment event: 60
  • Push event: 118
  • Pull request review comment event: 14
  • Pull request review event: 46
  • Pull request event: 58
  • Fork event: 2
  • Create event: 35

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 251
  • Total Committers: 8
  • Avg Commits per committer: 31.375
  • Development Distribution Score (DDS): 0.534
Past Year
  • Commits: 34
  • Committers: 6
  • Avg Commits per committer: 5.667
  • Development Distribution Score (DDS): 0.647
Top Committers
Name Email Commits
Konstantin Malanchev h****t@g****m 117
Vladimir Korolev b****a@g****m 58
Matwey V. Kornilov m****v@g****m 44
dependabot[bot] 4****] 16
pre-commit-ci[bot] 6****] 13
maya.molodec 2****c 1
Timofey Semenikhin 7****m 1
ManuGangler g****r@c****r 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 104
  • Total pull requests: 218
  • Average time to close issues: 5 months
  • Average time to close pull requests: 18 days
  • Total issue authors: 7
  • Total pull request authors: 8
  • Average comments per issue: 0.67
  • Average comments per pull request: 1.07
  • Merged pull requests: 163
  • Bot issues: 0
  • Bot pull requests: 68
Past Year
  • Issues: 19
  • Pull requests: 71
  • Average time to close issues: 2 months
  • Average time to close pull requests: 13 days
  • Issue authors: 6
  • Pull request authors: 6
  • Average comments per issue: 0.32
  • Average comments per pull request: 1.07
  • Merged pull requests: 44
  • Bot issues: 0
  • Bot pull requests: 31
Top Authors
Issue Authors
  • hombit (43)
  • balodja (27)
  • matwey (21)
  • emilleishida (5)
  • pruzhinskaya (4)
  • ManuGangler (3)
  • semtim (1)
Pull Request Authors
  • hombit (101)
  • dependabot[bot] (45)
  • matwey (38)
  • pre-commit-ci[bot] (23)
  • balodja (5)
  • semtim (2)
  • ManuGangler (2)
  • mayamolodec (2)
Top Labels
Issue Labels
performance (5) research (4) good first issue (4) wontfix (3) help wanted (2) documentation (2) bug (1)
Pull Request Labels
dependencies (45) github_actions (5) rust (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 371 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 1
  • Total versions: 17
  • Total maintainers: 2
pypi.org: coniferest

Coniferous forests for better machine learning

  • Versions: 17
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 371 Last month
Rankings
Dependent packages count: 4.7%
Downloads: 10.8%
Forks count: 16.8%
Average: 17.2%
Dependent repos count: 21.7%
Stargazers count: 31.9%
Maintainers (2)
Last synced: 6 months ago