Skip to content

Releases: predomics/gpredomics

gpredomics v1.0.0 — Regression, 8 algorithms, code audit

25 Mar 23:05

Choose a tag to compare

What's New

Regression Support

  • Data.y changed from Vec<u8> to Vec<f64> — continuous y values now supported
  • 4 regression fitness functions: spearman, pearson, rmse, mutual_information
  • Auto-detected from fit parameter — no config changes needed for classification
  • Tested: Spearman=0.675 predicting gene count with 3 species (wetlab dataset)

New Algorithms (4)

  • Simulated Annealing — single-solution, temperature-guided perturbation
  • Iterated Local Search — fastest algorithm, greedy + perturbation
  • LASSO / Elastic Net — coordinate descent mathematical baseline
  • MCMC Gibbs — joint variable selection (replaces SBS as default)

Code Quality

  • Full code audit: 12 critical + 14 medium issues fixed
  • Individual.features: HashMapBTreeMap for determinism
  • ClassificationMetrics struct (Individual.cls refactor)
  • Removed ~280 lines of dead code, fixed all clippy warnings

Documentation

Benchmark (Qin2014)

Algorithm Test AUC k Time
Beam 0.923 8 0.3s
SA 0.920 46 0.6s
LASSO 0.882 70 0.1s
ILS 0.880 38 0.3s
GA 0.855 28 12.5s
ACO 0.800 55 6.7s
MCMC-SBS 0.794 51 3.2s
MCMC-Gibbs 0.679 14 2.4s

Full Changelog: v0.9.0...v1.0.0

v0.8.3

24 Mar 11:42

Choose a tag to compare

New features

  • Ant Colony Optimization (ACO) — Max-Min Ant System with parallel construction, local search, pheromone heatmap, evolution timeline, and entropy tracking
  • Vote specialization — experts classified as PositiveSpecialist/NegativeSpecialist/Balanced with class-restricted voting and implicit veto
  • Feature importance — prevalence and coefficient importance types alongside MDA
  • use_fbm parameter for intuitive FBM toggle (replaces confusing fbm_ci_alpha out-of-range hack)
  • k_max enforcement during mutations (previously only at initial population)

Bug fixes

  • Full determinismIndividual.features converted from HashMap to BTreeMap. All algorithms (GA, ACO, Beam, MCMC) now produce identical results with the same seed (#57)
  • MCMC crash on multi-value data_type string (raw,prev)
  • Beam search crash on empty classes (data.classes[1] index out of bounds)
  • Epoch age overflow when using initial population from previous run
  • Security — replaced fast-float with fast-float2 (fixes unsafe empty string vulnerability)

Performance

  • Clone removal O(n²) → O(n) with HashSet (28x faster for 5000 individuals)
  • Jaccard dissimilarity — sorted vectors instead of HashSet allocation (10x faster)

Documentation

  • Full ACO documentation (docs/aco.md)

v0.8.2

20 Mar 17:20

Choose a tag to compare

Bug fixes

  • Fix panics when feature selection results in 0 or few features (#46, #48, #49)
    • Descriptive error messages reporting which criteria caused the failure
    • Lowered hard minimum population size from 50 to 2 (warns when <50)
    • Guard against empty feature sets with binary language
  • Fix jury section missing from CSV despite non-empty FBM (#50)
    • Allow jury with 1 expert (was requiring >1)
    • Add info-level logs for each filter step (FBM CI, min_perf, min_diversity)
  • Fix non-deterministic results in parallel execution (#40)
    • Replace unstable sort with stable sort + hash tie-breaking in diversity filter
    • Replace find_any with find_first

Enhancements

  • Add n_features_total column to CSV report (total features before filtering)
  • Suppress backtrace on errors, display clean error messages instead
  • Add reproducibility test for GA with same seed

v0.8.0

24 Feb 21:28

Choose a tag to compare

What's New in v0.8.0

New Features

  • FBM CI methods: Configurable binomial CI methods (Wilson, Clopper-Pearson, Agresti-Coull, Wald) for Family of Best Models selection
  • Threshold CI bootstrap: Bootstrap-based confidence intervals for model thresholds
  • Overfitting safeguards: Inner-fold overfitting penalty and resampling controls
  • YAML config validator: Detects unknown parameters/sections and warns about typos
  • GA k_min/k_max enforcement: Now limits model size during evolution
  • GA documentation: New docs/ga.md
  • MDA importance progress logging: Real-time progress during feature importance computation
  • Jury expert count controls: min_experts and max_experts parameters

Bug Fixes

  • Fix FBM metrics display when keep_trace=false and random sampling is disabled
  • Fix rejection case display in jury consensus when individual models reject
  • Fix display() panic when data.classes is empty
  • Fix default values for threshold CI parameters

v0.7.8

24 Feb 16:10

Choose a tag to compare

Small update: fix panic in display() when data.classes is empty

v0.7.7

06 Feb 17:18

Choose a tag to compare

Hotfix: remove runtime git dependency (when saving the experiment)

v0.7.6

19 Dec 20:22

Choose a tag to compare

Features:

  • feat(beam): improve ratio management and ter for k=1 with automatic conversion
  • feat(ga): add run_pop_and_data() for training existing populations (GpredomicsR)
  • feat(param): add save() method to export experiment parameters

Core improvements:

  • refactor(ga): rename kmin/kmax to k_min/k_max for consistency
  • refactor(beam): rename kmin/kmax to k_start/k_stop to distinguish from GA

Documentation:

  • docs: add dev.md, individual.md, population.md, use.md
  • docs: improve README and add badges
  • docs: enforce and complete public function documentation

v0.7.5

10 Dec 15:20

Choose a tag to compare

fix(beam): rename best_models_ci_alpha to best_models_criterion & fix threshold logic

  • Rename param.beam.best_models_ci_alpha to param.beam.best_models_criterion to support Predomics-legacy logical compatibility (if > 1).
  • Fix critical bug in compute_roc_and_metrics_from_value: other metrics incorrectly used strict threshold (>) instead of inclusive (>=).
  • Add related unit tests to validate the corrected behavior.

v0.7.4

22 Nov 21:03

Choose a tag to compare

Add support for feature and sample annotations (prior weights, penalties, stratified CV), implement native holdout train/test split with stratification, fix critical FBM population bug in CV mode, refactor Jaccard filtering using model groups, add --export-param CLI flag, improve threshold CI rendering, and add GPL-3.0 license.

v0.7.3

13 Nov 15:57

Choose a tag to compare

Add of the threshold confidence interval concept, add new fitting methods, add numerous unit and integration tests, add a GitHub workflow, add first documentation, add a p-value adjustment via BH, add pruning of individuals, refactor ga, beam, add a common runner for ga/beam/mcmc and other various improvements.