Skip to content

Aritra/v2 - #11

Merged
aritra90 merged 4 commits into
qiskit-community:mainfrom
aritra90:aritra/v2
Sep 15, 2026
Merged

aritra90 merged 4 commits into
qiskit-community:mainfrom
aritra90:aritra/v2

Conversation

@aritra90

Copy link
Copy Markdown
Collaborator

Description

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📚 Documentation update
  • 🎨 Code style update (formatting, renaming)
  • ♻️ Refactoring (no functional changes)
  • ⚡ Performance improvement
  • ✅ Test update
  • 🔧 Configuration change
  • 🔨 Build/CI update

Related Issue(s)

Fixes #
Closes #
Related to #

Changes Made

Component(s) Affected

  • QProfiler
  • QSage
  • Data Generation
  • Embeddings
  • Evaluation
  • Learning (ML/QML models)
  • Visualization
  • CLI/Apps
  • Documentation
  • Tests
  • CI/CD
  • Other:

Testing

Test Configuration

  • Python version:
  • Operating System:
  • QBioCode version:

Tests Performed

  • Unit tests pass locally
  • Integration tests pass locally
  • Manual testing performed
  • Added new tests for new functionality

Test Details

# Example test code or commands used

Screenshots/Output (if applicable)

Checklist

Code Quality

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • I have removed any debugging code and print statements

Documentation

  • I have updated the documentation accordingly
  • I have updated docstrings for new/modified functions
  • I have added/updated examples if needed
  • I have updated the CHANGELOG (if applicable)

Testing

  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Dependencies

  • I have checked that no new dependencies are added unnecessarily
  • If new dependencies are added, I have documented why they are needed
  • I have updated requirements.txt or setup.py if needed

Breaking Changes

  • This PR introduces breaking changes (if yes, describe below)
  • I have updated the migration guide (if applicable)

Breaking Changes Description

Additional Notes

Reviewer Notes


For Maintainers

  • PR title follows conventional commit format
  • Labels are appropriate
  • Milestone is set (if applicable)
  • Documentation is updated
  • Tests are adequate
  • CI/CD passes

Adds two classical classifiers alongside XGBoost, selectable from `model` in a
config exactly like `rf` or `xgb`, each with an `_opt` twin driven by
`gridsearch_<model>_args` through both the Optuna and exhaustive-grid engines.
Both are also available as `qpl` heads, and CatBoost additionally as a
QuantumSage surrogate (`sage_type='catboost_optuna'`).

catboost is a base dependency; tabpfn is a new `[tabpfn]` extra, kept out of the
base install because it brings torch's ecosystem plus mlx, lightgbm,
huggingface-hub and safetensors, and `import qbiocode` must not pull torch in.

TabPFN is pinned to model version v2. Its weights are licensed per version:
v2 is Prior Labs License v1.1 (Apache 2.0 plus attribution) and permits
commercial use, while v2.5/v2.6/v3 are non-commercial and non-production and
require an interactive license acceptance. Upstream defaults to v3; QBioCode
does not, because this is Apache-2.0 software whose users include companies.
Selecting a restricted version works and warns, naming the license.

Notable fixes found while integrating:

* CatBoost's `subsample` and `bagging_temperature` belong to mutually exclusive
  bootstrap schemes whose default CatBoost derives from the loss, so a config's
  validity depended on something it did not state. `bootstrap_type` is now
  pinned on both the tuned and untuned paths, which share one guard.
* CatBoost wrote `catboost_info/` into the working directory on every fit,
  shared by every joblib worker, and logged a line per boosting iteration.
* A TabPFN fit killed the process on macOS: torch's OpenMP runtime cannot
  coexist with the xgboost runtime qbiocode initialises first, and the failure
  was a bare SIGSEGV. `OMP_NUM_THREADS=1` is now set before the tabpfn import.
* `min_data_in_leaf` was searchable but inert at CatBoost's default grow policy,
  so several values are now refused rather than silently multiplying fits.
* A license-gated TabPFN QPL head took the whole run down after the quantum
  projection had already been computed; it is now dropped with a warning.
* `get_creds` printed the IBM Quantum API token to stdout on every call.
* QProfiler warned about non-binary datasets and continued into a certain
  failure inside `roc_auc_score`; it now refuses up front.

Also included: the Optuna tuning work this branch already carried. The two are
committed together because their changes interleave within the same files
(`model_run.py`, `config.md`, `CHANGELOG.md`) and cannot be separated cleanly.

New tutorial `tutorial/CatBoost_and_TabPFN/catboost_and_tabpfn.ipynb`; the
QProfiler tutorial now benchmarks CatBoost too. Full suite: 692 passed,
7 skipped.
evlauate() now returns thre blocks: hand-curated earlier 7 measures, curated pyMFE metrics (mfe.), and the target-spectrum (task.), which describes where y influences geeometric spectrum of X. Also includes CatBoost and TabPFN
@aritra90 aritra90 self-assigned this Sep 15, 2026
@aritra90
aritra90 merged commit d6cd204 into qiskit-community:main Sep 15, 2026
1 of 13 checks passed
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants