Cross-binding benchmark — parity + timing (1 thread)

Single-thread numbers — the cleanest cross-language comparison. Most external libraries don’t honour OMP_NUM_THREADS at the algorithm level (sklearn, pls::plsr, plsregress, ikpls all run the PLS algo serially even when BLAS is multi-threaded), so a multi-thread comparison would compare pls4all’s OpenMP path against everyone else’s single-threaded loop. That’s a real, useful number — see the thread sweep page — but this main page sticks to 1 thread for honest apples-to-apples timing.

Generated: 2026-05-30 10:15:30 UTC CSV: tmpnxk259td.csv (664 cells)

Host

CPU

12th Gen Intel(R) Core(TM) i9-12900K

Cores

12 physical / 24 logical

Frequency

3187 MHz nominal

L3 cache

30720 KB

RAM

62.7 GB

OS / kernel

Linux 6.6.87.2-microsoft-standard-WSL2 (x86_64) · kernel 6.6.87.2-microsoft-standard-WSL2

Python

3.11.15

How to read a cell

Each cell shows <reported_ms> <gate>. C++ and external library cells use Gate 2, the reference parity against the method’s canonical oracle. Internal binding cells use Gate 1, the binding parity against the native C++ baseline:

  • exact/pass — gate-specific tolerance passed

  • drift — finite mismatch, below 10× the method’s gate-2 tolerance or below the binding drift band

  • divergent — outside the gate’s tolerance band

  • ⏳ cell hit the 24 h wall-clock guard

  • see Why a cell is empty below

Bold = fastest cell on the row, counted only among cells whose relevant gate is ✓. For internal bindings that is Gate 1; for C++ and external libraries it is Gate 2. Drift / divergent / empty cells never carry the bold.

Timing uses the adaptive protocol: run #1 is the warmstart; if run #1 exceeds 5 min it is reported and the cell stops. Otherwise run #2 is the first scored sample and the warmstart is excluded. A 2-run cell reports run #2 alone; a 3-run cell reports the mean of runs #2-#3; 10/20/40-run cells report the median of runs after the warmstart. All backends in a single cell read the same orchestrator-generated CSV dataset. See methodology.md for the full details.

Why a cell is empty ()

An empty cell means the backend did not produce a timing for that (algorithm, size) combination. Four distinct reasons, all reported as in the matrix:

  1. External library doesn’t implement the algorithm. Example: sklearn has no native CPPLS or sparse SIMPLS; plsregress (Octave) only does plain PLS; ikpls is plain PLS only; ropls only does OPLS; mixOmics covers PLS / sparse PLS / PLS-DA. Filling this column requires the external maintainer to add the algorithm — out of our control.

  2. pls4all wrapper missing for that algorithm. Example: pls4all.sklearn (tier 2) doesn’t yet ship a class for continuum_regression or kernel_pls; pls4all.R.formula doesn’t have a formula wrapper for every algorithm yet. This is the chemin à parcourir on our side — visible TODO.

  3. Bench script missing the dispatch case. A few cells can fail because a binding bench script doesn’t yet route a specific algorithm to its underlying call. Pure tooling gap, no library impact.

  4. Run too slow / OOM / crashed. The cell hit the 24 h guard () or raised a runtime error.

Each represents one of these four reasons. The CSV (results/full_matrix.csv) carries a reason column that tells you exactly which one for any given cell.

Column names: anything starting with pls4all. is one of this project’s bindings; the others use their real package name (sklearn, ikpls, pls, ropls, mixOmics, plsregress). Every algorithm table keeps every column cells are intentional and show where coverage is still missing, either on our side (an algorithm not yet wrapped in a tier-2 class) or on the external side (e.g. sklearn doesn’t implement CPPLS / OPLS, plsregress only does plain PLS, ikpls only does plain PLS). Full per-column description: see Backend definitions at the bottom of this page.

aom_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

4.20 ms ✓

4.30 ms ✓

4.16 ms ✓

4.15 ms ✓

7.84 ms ✓

9.43 ms ✓

9.87 ms ✓

17.6 ms ✓

41.9 ms ✓

aom_preprocess — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.85 ms ✓

2.52 ms ✓

1.76 ms ✓

1.75 ms ✓

6.07 ms ✓

7.96 ms ✓

7.33 ms ✓

6.56 ms ✓

2.13 ms ✓

approximate_press — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

28.4 ms ✓

28.0 ms ✓

28.1 ms ✓

28.1 ms ✓

24.7 ms ✓

25.5 ms ✓

25.7 ms ✓

25.3 ms ✓

69.5 ms ✓

bagging_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

9.82 ms ✓

10.2 ms ✓

9.30 ms ✓

1.69 ms ✗

4.62 ms ✗

6.41 ms ✗

4.93 ms ✗

5.11 ms ✗

11.1 ms ✓

bipls_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

3.83 ms ✓

4.36 ms ✓

3.60 ms ✓

3.69 ms ✓

8.26 ms ✓

11.7 ms ✓

8.83 ms ✓

9.90 ms ✓

365.6 ms ✓

boosting_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.23 ms ✓

1.23 ms ✓

1.52 ms ✓

2.07 ms ✗

5.05 ms ✗

4.95 ms ✗

6.27 ms ✗

6.92 ms ✗

18.5 ms ✓

bve_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

510.0 ms ✓

443.3 ms ✓

563.8 ms ✓

42.4 ms ✗

58.7 ms ✗

66.5 ms ✗

141.0 ms ✗

152.1 ms ✗

46.9 ms ✓

cars_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

780.7 ms ✓

752.8 ms ✓

772.6 ms ✓

13.3 ms ✗

10.2 ms ✗

13.3 ms ✗

16.4 ms ✗

188.9 ms ✓

continuum_regression — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.73 ms ✓

2.76 ms ✓

2.63 ms ✓

2.77 ms ✓

5.55 ms ✓

6.02 ms ✓

6.62 ms ✓

6.62 ms ✓

2.27 ms ✓

31.6 ms —

cppls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.88 ms ✓

1.79 ms ✓

1.87 ms ✓

1.97 ms ✓

4.57 ms ✓

5.65 ms ✓

10.6 ms ✗

6.07 ms ✗

9.91 ms ✓

di_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.58 ms ✓

2.57 ms ✓

2.74 ms ✓

2.82 ms ✓

9.69 ms ✓

12.4 ms ✓

12.4 ms ✓

12.8 ms ✓

3.78 ms ✓

ds — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.64 ms ✓

1.73 ms ✓

2.09 ms ✓

2.27 ms ✓

10.2 ms ✓

14.0 ms ✓

12.6 ms ✓

11.4 ms ✓

31.0 ms ✓

ecr — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.16 ms ✓

2.15 ms ✓

2.24 ms ✓

2.37 ms ✓

5.88 ms ✓

6.96 ms ✓

8.61 ms ✓

7.41 ms ✓

62.4 ms ✓

emcuve_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.3 s ✓

1.3 s ✓

1.3 s ✓

1.98 ms ✓

4.51 ms ✓

5.44 ms ✓

5.57 ms ✓

5.25 ms ✓

922.4 ms ✓

fused_sparse_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.93 ms —

1.86 ms ✓

1.95 ms ✓

2.13 ms ✓

6.13 ms ✓

7.70 ms ✓

7.80 ms ✓

7.55 ms ✓

ga_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

607.6 ms ✓

625.8 ms ✓

756.5 ms ✓

3.94 ms ✗

7.38 ms ✗

8.59 ms ✗

9.76 ms ✗

16.0 ms ✗

218.7 ms ✓

gpr_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

120×25

5.91 ms ✓

6.75 ms ✓

6.17 ms ✓

2.75 ms ✓

20.9 ms ✓

12.6 ms ✓

14.2 ms ✓

8.10 ms ✓

2.25 ms ✓

group_sparse_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

8.36 ms ✓

4.69 ms ✓

7.86 ms ✓

3.79 ms ✗

9.70 ms ✗

11.0 ms ✗

11.0 ms ✗

10.2 ms ✗

2.98 ms ✓

33.7 ms —

interval_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.5 s ✓

2.0 s ✓

1.5 s ✓

3.75 ms ✗

10.9 ms ✗

11.7 ms ✗

10.3 ms ✗

13.9 ms ✗

632.3 ms ✓

ipw_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

360.4 ms ✓

358.1 ms ✓

366.9 ms ✓

1.81 ms ✗

4.86 ms ✗

5.51 ms ✗

5.86 ms ✗

5.15 ms ✗

22.0 ms ✓

irf_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

120×30

2.02 ms ✓

2.92 ms ✓

3.44 ms ✓

3.91 ms ✓

3.37 ms ✓

iriv_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

80×25

268.0 ms ✓

269.9 ms ✓

270.2 ms ✓

25.3 ms ✗

29.4 ms ✗

30.0 ms ✗

30.5 ms ✗

30.8 ms ✗

274.8 ms ✓

kernel_pls_rbf — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

3.07 ms ✓

3.02 ms ✓

3.23 ms ✓

3.23 ms ✓

6.34 ms ✓

7.05 ms ✓

7.21 ms ✓

6.83 ms ✓

28.6 ms ✓

lw_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

25.6 ms ✓

13.3 ms ✓

37.2 ms ✓

9.19 ms ✗

20.3 ms ✗

23.2 ms ✗

23.2 ms ✗

24.6 ms ✗

23.9 ms ✓

mb_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×60

2.37 ms ✓

2.73 ms ✓

2.85 ms ✓

2.59 ms ✓

7.82 ms ✓

10.9 ms ✓

10.2 ms ✓

11.5 ms ✓

2.99 ms ✓

mir_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.19 ms —

1.21 ms ✓

1.27 ms ✓

1.47 ms ✓

3.98 ms ✓

4.72 ms ✓

5.04 ms ✓

5.11 ms ✓

missing_aware_nipals — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.27 ms ✓

1.24 ms ✓

1.25 ms ✓

1.39 ms ✓

4.25 ms ✓

4.88 ms ✓

4.85 ms ✓

5.41 ms ✓

13.6 ms ✓

n_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×48

19.5 ms ✓

19.3 ms ✓

19.0 ms ✓

2.03 ms ✗

4.51 ms ✗

5.67 ms ✗

5.68 ms ✗

5.37 ms ✗

19.3 ms ✓

o2pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.21 ms ✓

1.20 ms ✓

1.19 ms ✓

1.37 ms ✓

2.69 ms ✓

3.44 ms ✓

3.58 ms ✓

3.42 ms ✓

7.21 ms ✓

on_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

6.20 ms ✓

7.71 ms ✓

3.02 ms ✓

2.69 ms ✓

12.2 ms ✓

one_se_rule — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

2.10 ms ✓

2.07 ms ✓

2.08 ms ✓

1.13 ms ✗

3.25 ms ✗

3.87 ms ✗

4.01 ms ✗

3.96 ms ✗

11.6 ms ✓

opls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.87 ms ✓

1.93 ms ✓

1.88 ms ✓

2.12 ms ✓

4.35 ms ✓

5.13 ms ✓

5.40 ms ✓

5.23 ms ✓

15.4 ms ✓

pcr — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.92 ms ✓

2.84 ms ✓

2.95 ms ✓

2.68 ms ✓

5.15 ms ✓

6.41 ms ✓

11.8 ms ✓

6.21 ms ✓

2.71 ms ✓

7.99 ms —

pds — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.37 ms ✓

1.55 ms ✓

1.44 ms ✓

1.86 ms ✓

10.6 ms ✓

10.1 ms ✓

14.2 ms ✓

13.7 ms ✓

43.1 ms ✓

pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.70 ms ✓

1.73 ms ✓

1.69 ms ✓

1.97 ms ✓

4.79 ms ✓

5.26 ms ✓

9.99 ms ✓

5.92 ms ✓

2.16 ms ✓

8.01 ms —

1.92 ms —

9.72 ms —

pls_cox — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.79 ms ✓

1.84 ms ✓

1.75 ms ✓

2.13 ms ✗

4.52 ms ✗

5.52 ms ✗

5.43 ms ✗

5.51 ms ✗

2.03 ms ✓

pls_diagnostic_dmodx — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.25 ms ✓

1.30 ms ✓

1.25 ms ✓

1.41 ms ✓

4.16 ms ✓

4.79 ms ✓

4.47 ms ✓

5.71 ms ✓

19.8 ms ✓

pls_diagnostic_q — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.22 ms ✓

1.19 ms ✓

1.19 ms ✓

1.30 ms ✓

3.10 ms ✓

3.57 ms ✓

3.47 ms ✓

3.96 ms ✓

13.8 ms ✓

pls_diagnostic_t2 — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.19 ms ✓

1.22 ms ✓

1.22 ms ✓

1.31 ms ✓

2.67 ms ✓

3.38 ms ✓

4.11 ms ✓

3.70 ms ✓

14.2 ms ✓

pls_glm — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

3.57 ms ✓

6.25 ms ✓

7.99 ms ✓

2.74 ms ✗

7.97 ms ✗

22.7 ms ✗

18.4 ms ✗

25.8 ms ✗

240.6 ms ✓

pls_lda — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

3.14 ms ✓

7.18 ms ✓

7.48 ms ✓

7.32 ms ✓

pls_logistic — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

3.14 ms ✓

4.04 ms ✓

3.34 ms ✓

3.44 ms ✓

pls_monitoring — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.23 ms ✓

1.23 ms ✓

1.18 ms ✓

1.32 ms ✓

2.90 ms ✓

3.54 ms ✓

3.74 ms ✓

3.81 ms ✓

14.2 ms ✓

pls_qda — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

2.65 ms ✓

2.09 ms ✓

2.12 ms ✓

2.11 ms ✗

4.06 ms ✗

4.67 ms ✗

4.99 ms ✗

5.46 ms ✗

2.36 ms ✓

pop_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

6.24 ms ✓

5.68 ms ✓

7.23 ms ✓

6.51 ms ✓

12.0 ms ✓

12.5 ms ✓

13.2 ms ✓

24.7 ms ✓

47.8 ms ✓

pso_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

80×25

219.8 ms ✓

384.2 ms ✓

219.3 ms ✓

4.05 ms ✗

6.11 ms ✗

6.29 ms ✗

7.12 ms ✗

7.33 ms ✗

163.8 ms ✓

random_frog_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

2.19 ms ✓

4.98 ms ✓

5.67 ms ✓

5.94 ms ✓

5.96 ms ✓

random_subspace_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

13.5 ms ✓

25.2 ms ✓

13.2 ms ✓

1.54 ms ✗

5.11 ms ✗

5.82 ms ✗

5.56 ms ✗

6.22 ms ✗

13.0 ms ✓

randomization_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

181.1 ms ✓

182.3 ms ✓

182.5 ms ✓

2.67 ms ✓

6.34 ms ✓

5.94 ms ✓

6.80 ms ✓

6.29 ms ✓

54.5 ms ✓

recursive_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.92 ms ✓

2.82 ms ✓

2.79 ms ✓

3.10 ms ✓

5.74 ms ✓

6.55 ms ✓

7.36 ms ✓

6.99 ms ✓

48.1 ms ✓

141.6 ms —

rep_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

605.7 ms ✓

592.6 ms ✓

588.4 ms ✓

3.35 ms ✗

5.16 ms ✗

6.34 ms ✗

6.07 ms ✗

6.53 ms ✗

241.7 ms ✓

ridge_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.75 ms ✓

2.14 ms ✓

1.83 ms ✓

1.75 ms ✓

4.62 ms ✓

6.20 ms ✓

5.59 ms ✓

5.56 ms ✓

2.19 ms ✓

robust_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

2.07 ms ✓

1.95 ms ✓

1.95 ms ✓

2.15 ms ✓

4.38 ms ✓

5.55 ms ✓

6.62 ms ✓

5.77 ms ✓

17.9 ms ✓

rosa — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

7.07 ms ✓

2.04 ms ✓

2.41 ms ✓

2.56 ms ✓

5.46 ms ✓

6.38 ms ✓

6.68 ms ✓

6.80 ms ✓

2.9 s —

1.43 ms ✓

scars_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

7.65 ms ✓

6.52 ms ✓

10.2 ms ✓

4.14 ms ✗

4.85 ms ✗

5.55 ms ✗

5.72 ms ✗

5.92 ms ✗

3.61 ms ✓

shaving_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.0 s ✓

411.6 ms ✓

440.9 ms ✓

2.32 ms ✗

5.59 ms ✗

7.94 ms ✗

6.29 ms ✗

6.31 ms ✗

38.2 ms ✓

sipls_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

2.52 ms —

3.21 ms ✓

3.18 ms ✓

2.82 ms ✓

7.86 ms ✓

8.15 ms ✓

8.12 ms ✓

8.80 ms ✓

so_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×30

1.62 ms ✓

1.62 ms ✓

1.67 ms ✓

1.77 ms ✓

3.26 ms ✓

3.99 ms ✓

4.11 ms ✓

4.00 ms ✓

981.7 ms ✓

spa_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

499.6 ms ✓

536.6 ms ✓

515.0 ms ✓

1.97 ms ✗

4.72 ms ✗

6.23 ms ✗

5.75 ms ✗

5.86 ms ✗

104.0 ms ✓

sparse_pls_da — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

7.43 ms ✓

11.1 ms ✓

4.50 ms ✓

2.45 ms ✗

7.20 ms ✓

8.68 ms ✓

8.53 ms ✓

8.43 ms ✓

82.9 ms —

3.58 ms ✓

sparse_simpls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.89 ms ✓

1.82 ms ✓

1.93 ms ✓

1.88 ms ✓

4.60 ms ✓

5.64 ms ✓

5.36 ms ✓

6.30 ms ✓

3.55 ms ✓

13.4 ms —

st_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

403.7 ms ✓

409.2 ms ✓

418.3 ms ✓

1.82 ms ✗

6.05 ms ✗

5.27 ms ✗

5.46 ms ✗

5.45 ms ✗

17.8 ms ✓

stability_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

690.4 ms ✓

820.9 ms ✓

1.7 s ✓

3.70 ms ✗

15.9 ms ✗

6.82 ms ✗

8.38 ms ✗

8.71 ms ✗

492.8 ms ✓

t2_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.67 ms —

1.67 ms ✓

1.69 ms ✓

1.83 ms ✓

4.21 ms ✓

6.34 ms ✓

5.80 ms ✓

6.75 ms ✓

37.0 ms ✓

uve_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.5 s ✓

1.5 s ✓

1.7 s ✓

3.28 ms ✗

10.3 ms ✗

7.89 ms ✗

6.77 ms ✗

6.20 ms ✗

222.0 ms ✓

variable_select_coef — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.56 ms ✓

1.56 ms ✓

1.61 ms ✓

2.87 ms ✓

15.0 ms ✓

9.19 ms ✓

17.2 ms ✓

18.1 ms ✓

50.9 ms ✓

variable_select_sr — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

542.8 ms ✓

1.5 s ✓

1.2 s ✓

8.28 ms ✗

24.1 ms ✗

11.2 ms ✗

31.6 ms ✗

22.3 ms ✗

18.9 ms ✓

variable_select_vip — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

2.55 ms ✓

2.70 ms ✓

2.47 ms ✓

1.97 ms ✓

6.19 ms ✓

6.51 ms ✓

5.86 ms ✓

6.61 ms ✓

16.2 ms ✓

vip_spa_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

80×40

1.34 ms ✓

2.19 ms ✓

2.80 ms ✓

2.83 ms ✓

2.87 ms ✓

vissa_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

80×25

10.8 ms ✓

11.2 ms ✓

11.1 ms ✓

21.4 ms ✓

49.1 ms ✓

weighted_pls — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×50

1.93 ms ✓

1.82 ms ✓

1.77 ms ✓

1.92 ms ✓

4.57 ms ✓

5.88 ms ✓

5.23 ms ✓

5.95 ms ✓

2.12 ms ✓

wvc_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

1.49 ms ✓

1.47 ms ✓

1.48 ms ✓

1.63 ms ✓

4.23 ms ✓

4.97 ms ✓

5.72 ms ✓

5.30 ms ✓

14.4 ms ✓

wvc_threshold_select — 1 thread

samples × features

pls4all.cpp.blas+omp

pls4all.registry

pls4all.python

pls4all.sklearn

pls4all.R

pls4all.R.formula

pls4all.R.pls_compat

pls4all.R.mdatools_compat

ref.python_scikit_learn

ref.r_pls

ref.python_ikpls

ref.r_mixomics

ref.r_ropls

ref.python_chun_keles_spls

ref.r_spls

ref.python_diplslib

ref.r_chemometrics

ref.python_stone_brooks_1990_py

ref.r_jico

ref.python_tensorly

ref.r_kernlab_pls

ref.r_omicspls

ref.r_mdatools

ref.r_multiblock

ref.python_onpls

ref.python_numpy

ref.python_auswahl

ref.python_pyswarms

ref.r_mboost

ref.r_plsrglm

ref.r_base

ref.r_softimpute

ref.python_chun_keles_splsda

ref.r_sgpls

ref.python_nirs4all

ref.r_plsvarsel

ref.r_enpls

ref.python_scars_numpy_port

ref.r_pls_stats

libPLS

ref.python_iriv_numpy_port

200×40

336.1 ms ✓

344.6 ms ✓

344.7 ms ✓

1.67 ms ✗

4.07 ms ✗

4.66 ms ✗

5.51 ms ✗

4.59 ms ✗

13.0 ms ✓

Backend definitions

Each column in the per-algorithm tables above is one of the entries below. Columns are named owner.language[.variant]: pls4all.* are this project’s own bindings; everything else is an external library shipped by its own maintainers.

Column

Language

Tier

What it actually runs

pls4all.cpp.blas+omp

C++

pls4all + BLAS + OpenMP

libn4m built with both PLS4ALL_WITH_BLAS=ON and PLS4ALL_WITH_OPENMP=ON — the recommended production config.

pls4all.registry

Python

pls4all canonical

benchmarks.parity_timing.registry.MethodSpec.pls4all_fn — the canonical per-method pls4all entry point

pls4all.python

Python

pls4all raw

pls4all._methods.<algo>_fit(ctx, cfg, X, y, …) — direct FFI binding

pls4all.sklearn

Python

pls4all idiomatic

pls4all.sklearn.<Class> — sklearn-style BaseEstimator with .fit() / .predict()

pls4all.R

R

pls4all raw

pls4all_method(algo, X, y, ...) — unified dispatcher (33 fits + 24 selectors + 4 diagnostics)

pls4all.R.formula

R

pls4all idiomatic

pls(y ~ ., data), cppls(...), sparse_pls(...), … — base R formula+S3 wrappers

pls4all.R.pls_compat

R

pls4all pls-compatible

plsr() / pcr() for PLS/PCR/CPPLS, formula-built dispatcher path for the rest of the method matrix

pls4all.R.mdatools_compat

R

pls4all mdatools-compatible

pls(x, y, ...) for PLS/PCR/CPPLS, matrix dispatcher path for the rest of the method matrix

ref.python_scikit_learn

external

reference

registry-declared external reference library

ref.r_pls

external

reference

registry-declared external reference library

ref.python_ikpls

external

reference

registry-declared external reference library

ref.r_mixomics

external

reference

registry-declared external reference library

ref.r_ropls

external

reference

registry-declared external reference library

ref.python_chun_keles_spls

external

reference

registry-declared external reference library

ref.r_spls

external

reference

registry-declared external reference library

ref.python_diplslib

external

reference

registry-declared external reference library

ref.r_chemometrics

external

reference

registry-declared external reference library

ref.python_stone_brooks_1990_py

external

reference

registry-declared external reference library

ref.r_jico

external

reference

registry-declared external reference library

ref.python_tensorly

external

reference

registry-declared external reference library

ref.r_kernlab_pls

external

reference

registry-declared external reference library

ref.r_omicspls

external

reference

registry-declared external reference library

ref.r_mdatools

external

reference

registry-declared external reference library

ref.r_multiblock

external

reference

registry-declared external reference library

ref.python_onpls

external

reference

registry-declared external reference library

ref.python_numpy

external

reference

registry-declared external reference library

ref.python_auswahl

external

reference

registry-declared external reference library

ref.python_pyswarms

external

reference

registry-declared external reference library

ref.r_mboost

external

reference

registry-declared external reference library

ref.r_plsrglm

external

reference

registry-declared external reference library

ref.r_base

external

reference

registry-declared external reference library

ref.r_softimpute

external

reference

registry-declared external reference library

ref.python_chun_keles_splsda

external

reference

registry-declared external reference library

ref.r_sgpls

external

reference

registry-declared external reference library

ref.python_nirs4all

external

reference

registry-declared external reference library

ref.r_plsvarsel

external

reference

registry-declared external reference library

ref.r_enpls

external

reference

registry-declared external reference library

ref.python_scars_numpy_port

external

reference

registry-declared external reference library

ref.r_pls_stats

external

reference

registry-declared external reference library

libPLS

external

reference

registry-declared external reference library

ref.python_iriv_numpy_port

external

reference

registry-declared external reference library

Versions per backend

Column

Versions

pls4all.cpp.blas+omp

language=C++ (via ctypes bridge) (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; libopenblas 0.3.33 blas=1; libomp ? openmp=1; libn4m=0.98.0+abi.1.9.0; numpy=2.4.6; registry_method=pls; timing_schema=adaptive-v1

pls4all.registry

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libopenblas 0.3.33 blas=1; libomp ? openmp=1; pls4all=0.98.0; numpy=2.4.6; registry_method=pls; timing_schema=adaptive-v1

pls4all.python

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libopenblas 0.3.33 blas=1; libomp ? openmp=1; pls4all=0.98.0; numpy=2.4.6; registry_method=pls; timing_schema=adaptive-v1

pls4all.sklearn

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libopenblas 0.3.33 blas=1; libomp ? openmp=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; pls4all=0.98.0; numpy=2.4.6; sklearn_class=PLSRegression; timing_schema=adaptive-v1

pls4all.R

language=R 4.3.3; pls4all=0.98.0; registry_method=pls; blas=linked-BLAS; timing_schema=adaptive-v1

pls4all.R.formula

language=R 4.3.3; pls4all=0.98.0; registry_method=pls; formula_facade=True; blas=linked-BLAS; timing_schema=adaptive-v1

pls4all.R.pls_compat

language=R 4.3.3; pls4all=0.98.0; registry_method=pls; facade=pls_compat; formula_facade=True; blas=linked-BLAS; timing_schema=adaptive-v1

pls4all.R.mdatools_compat

language=R 4.3.3; pls4all=0.98.0; registry_method=pls; facade=mdatools_compat; matrix_facade=True; blas=linked-BLAS; timing_schema=adaptive-v1

ref.python_scikit_learn

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_scikit_learn; reference_library=scikit-learn; reference_version=1.8.0; timing_schema=adaptive-v1

ref.r_pls

language=R 4.3.3; pls=2.8.5; timing_schema=adaptive-v1

ref.python_ikpls

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_ikpls; reference_library=ikpls; reference_version=4.0.1.post1; timing_schema=adaptive-v1

ref.r_mixomics

language=R 4.3.3; mixOmics=6.26.0; timing_schema=adaptive-v1

ref.r_ropls

language=R 4.3.3; ropls=1.34.0; timing_schema=adaptive-v1

ref.python_chun_keles_spls

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_chun_keles_spls; reference_library=chun_keles_spls; reference_version=1.0; timing_schema=adaptive-v1

ref.r_spls

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_spls; reference_library=spls; reference_version=2.3.2; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_diplslib

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_diplslib; reference_library=diPLSlib; reference_version=2.5.0; timing_schema=adaptive-v1

ref.r_chemometrics

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_chemometrics; reference_library=chemometrics; reference_version=0.7.x; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_stone_brooks_1990_py

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=python_stone_brooks_1990_py; reference_library=stone-brooks-1990-py; reference_version=1.0; timing_schema=adaptive-v1

ref.r_jico

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_jico; reference_library=JICO; reference_version=0.1; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_tensorly

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_tensorly; reference_library=tensorly; reference_version=0.9.0; timing_schema=adaptive-v1

ref.r_kernlab_pls

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_kernlab_pls; reference_library=kernlab+pls; reference_version=0.9.33+2.8.5; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_omicspls

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_omicspls; reference_library=OmicsPLS; reference_version=2.1.0; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_mdatools

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_mdatools; reference_library=mdatools; reference_version=0.15.0; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_multiblock

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_multiblock; reference_library=multiblock; reference_version=0.8.10; timing_schema=adaptive-v1

ref.python_onpls

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=python_onpls; reference_library=OnPLS; reference_version=github tomlof/OnPLS; timing_schema=adaptive-v1

ref.python_numpy

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=python_numpy; reference_library=numpy; reference_version=2.4.6; timing_schema=adaptive-v1

ref.python_auswahl

ref.python_pyswarms

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_pyswarms; reference_library=pyswarms; reference_version=1.3.0; timing_schema=adaptive-v1

ref.r_mboost

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_mboost; reference_library=mboost; reference_version=2.9-11; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_plsrglm

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_plsrglm; reference_library=plsRglm; reference_version=1.5.1; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_base

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_base; reference_library=base; reference_version=R 4.3.3; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_softimpute

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_softimpute; reference_library=softImpute; reference_version=1.4-1; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_chun_keles_splsda

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_chun_keles_splsda; reference_library=chun_keles_splsda; reference_version=1.0; timing_schema=adaptive-v1

ref.r_sgpls

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_sgpls; reference_library=sgPLS; reference_version=1.8.1; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_nirs4all

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_nirs4all; reference_library=nirs4all; reference_version=in-tree; timing_schema=adaptive-v1

ref.r_plsvarsel

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_plsvarsel; reference_library=plsVarSel; reference_version=0.10.0; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.r_enpls

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_enpls; reference_library=enpls; reference_version=6.1; timing_driver=rscript-batch; timing_schema=adaptive-v1

ref.python_scars_numpy_port

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_scars_numpy_port; reference_library=scars_numpy_port; reference_version=1.0.0; timing_schema=adaptive-v1

ref.r_pls_stats

language=R (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=r_pls_stats; reference_library=pls+stats; reference_version=R 4.3.3; timing_driver=rscript-batch; timing_schema=adaptive-v1

libPLS

language=matlab (host Linux x86_64); blas=libscipy_openblas 0.3.31.188.0 blas=1; numpy=2.4.6; reference_id=matlab_libpls; reference_library=libPLS; reference_version=1.95; timing_schema=adaptive-v1

ref.python_iriv_numpy_port

language=Python 3.11.15; blas=libscipy_openblas 0.3.31.188.0 blas=1; libscipy_openblas 0.3.30 blas=1; libgomp ? openmp=1; numpy=2.4.6; reference_id=python_iriv_numpy_port; reference_library=iriv_numpy_port; reference_version=1.0.0; timing_schema=adaptive-v1

Methodology

  • Gate 1 reference: cpp cell at 1 thread (libn4m via ctypes), or python_tier1 when cpp is unavailable for an algorithm

  • Gate 2 reference: the registry-declared canonical external reference for the method

  • Gate 1 tolerance: 1e-6 max-abs-diff; Gate 2 tolerance: MethodSpec.rmse_rel_tol (also emitted as reference_parity_tolerance by newer CSVs)

  • All backends read the same orchestrator-generated CSV dataset (benchmarks/cross_binding/data/data_<n>x<p>_seed<seed>.csv)

  • Adaptive timing: warmstart run #1; if there is any subsequent run, run #1 is excluded from the score. 2 total runs report run #2 alone; 3 total runs report the mean of runs #2-#3; 10/20/40 total runs report the median after the warmstart.

  • Per-cell timeout guard: 24 h

  • Thread control via OMP_NUM_THREADS = OPENBLAS_NUM_THREADS = MKL_NUM_THREADS = BLIS_NUM_THREADS set in the subprocess env, plus Context.num_threads for Python pls4all and maxNumCompThreads() for Octave

  • pls4all libn4m build: build/blas-omp/cpp/src/libn4m.so (BLAS + OpenMP enabled)