Skip to main content

PLS covariance analysis with statistical testing and visualisation

Project description

plsdo

DOI

Partial Least Squares (PLS) covariance analysis with permutation testing, bootstrap reliability, and publication-ready visualisation — from the command line.

(Pronounced: "please do")

plsdo was built out of necessity for project-specific neuroscience and neuroimaging pipelines, then generalised to handle flexible, diverse datasets beyond its origins. It implements two PLS variants used in neuroimaging and cognitive neuroscience research:

  • Correlational PLS — finds latent variables that maximise covariance between two continuous data matrices (e.g. brain measures and behaviour scores).
  • Discriminatory PLS — finds latent variables that maximise covariance between a continuous data matrix and a dummy-coded group matrix (i.e. group differences).

Statistical validity is built in: every analysis runs a permutation test on singular values and bootstraps loading stability. Only latent variables that pass both tests appear in the output.

Early alpha. The API and output format may change before the first stable release. Feedback and bug reports are very welcome — please open an issue.


Installation

Requires Python ≥ 3.10.

uv pip install plsdo

For discriminatory PLS with cross-validation (requires scikit-learn):

uv pip install "plsdo[cv]"

For development:

git clone https://github.com/braincentrekcl/plsdo.git
cd plsdo
uv venv .venv && source .venv/bin/activate
uv pip install -e ".[dev]"

Quick start

Correlational PLS

plsdo run --method c \
  --x brain_measures.csv \
  --y behaviour_scores.csv \
  --demographics participants.csv \
  --group-col treatment \
  --subject-id participant_id \
  --output results/

Discriminatory PLS

plsdo run --method d \
  --y mri_features.csv \
  --demographics participants.csv \
  --group-col drug_group \
  --subject-id participant_id \
  --output results/

Cross-validation (discriminatory only)

Requires plsdo[cv] — see Installation above.

plsdo cross-validate \
  --y mri_features.csv \
  --demographics participants.csv \
  --group-col drug_group \
  --subject-id participant_id \
  --output cv_results/

Output

Each run writes to the output directory:

results/
  figures/     cross-correlation heatmap, permutation test, loading bar plots, score plots
  data/        singular values, p-values, loadings, bootstrap ratios, subject scores (CSV)
  log.txt      parameters and version stamp

Documentation

Page Contents
Usage guide Full CLI options, multiple grouping variables, all flags
Input format How to structure X, Y, demographics, and metadata files
Interpreting output What each plot and CSV means
Statistical methods Design matrix encoding, p-value correction, LV filtering, bootstrap alignment
Missing data Why plsdo does not impute, and what to do instead

Contributing

Issues and pull requests are welcome. Please open an issue before starting significant work.

Contact: eilidh [dot] macnicol [at] kcl [dot] ac [dot] uk


Citation

If you use plsdo in your research, please cite it. GitHub will show a "Cite this repository" prompt from the CITATION.cff file, or you can use the BibTeX entry in docs/references.bib.

Licence

BSD 3-Clause. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plsdo-0.1.1.tar.gz (46.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plsdo-0.1.1-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file plsdo-0.1.1.tar.gz.

File metadata

  • Download URL: plsdo-0.1.1.tar.gz
  • Upload date:
  • Size: 46.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for plsdo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c6e47cbcc600bafbc8cf3a814845d7c93f0bc643403ee4fd0ac18b296a00bf0d
MD5 08de25e3d7bd1bc69dc3276f83da5f3b
BLAKE2b-256 ea728c3d039cda98a4880b75ef85cbec0f9300eb42eeecdab3f8e09d80c0067b

See more details on using hashes here.

Provenance

The following attestation bundles were made for plsdo-0.1.1.tar.gz:

Publisher: release.yml on braincentrekcl/plsdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plsdo-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: plsdo-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for plsdo-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c2f69b80157a5daac135b9c3f0f96badbdf4727339dce1eec1cea1ebde96c2d8
MD5 8688270338fab1fba958ee90b60711de
BLAKE2b-256 fc3fe06e238f0c8fade321b509519bbb0a799f695e5f6f93d4731484a9f09710

See more details on using hashes here.

Provenance

The following attestation bundles were made for plsdo-0.1.1-py3-none-any.whl:

Publisher: release.yml on braincentrekcl/plsdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page