Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
d4c77d8
:truck: move core of enrichmentplot from viz to it's own module
enryH Jul 6, 2026
54b6e3b
:art: add explicit arguments
enryH Jul 6, 2026
fdcbfaf
:art: cleanup module
enryH Jul 6, 2026
47506dc
:art: format and re-order
enryH Jul 6, 2026
588e64a
🚧 add static version and build common preprocessing
enryH Jul 6, 2026
6293ca9
🚧 start remodeling interface
enryH Jul 20, 2026
0dcb427
:art: rename function to get_enrichment_plot
enryH Jul 20, 2026
6ae2ddf
:format: format file
enryH Jul 20, 2026
78c6878
:art: update plotly version to follow static version (one figure at a…
enryH Jul 20, 2026
6047972
:bug: update tests
enryH Jul 20, 2026
46c4aa8
:art: rename scatter plot
enryH Jul 20, 2026
0f8bcf9
:fire: remove now unused code
enryH Jul 20, 2026
aa60d85
:art: add type annotation of Schema
enryH Jul 20, 2026
2f8de88
:art: Rename functions. Each submodule has a get_enrichment_plot
enryH Jul 20, 2026
26133cf
:wrench: add kwargs for future compatibily, but inform user when unus…
enryH Jul 20, 2026
bb6c1bc
:art: make colormaps more robust to arbitrary group or comparison names
enryH Jul 20, 2026
8e9caf4
:art: switch wording to upregulated in group x
enryH Jul 20, 2026
d39beb2
🔧 let the comparison separator be a parameter
enryH Jul 20, 2026
fa1ec12
:art: scale marker with p-value size, make it explicit in backend fcts
enryH Jul 20, 2026
2618a1b
:truck: move testing of basic plots to own folder to reflect repo str…
enryH Jul 20, 2026
4bfcae6
🚧 start adding a Claude.md
enryH Jul 20, 2026
baa7410
:truck: rename basic plot examples folder
enryH Jul 20, 2026
5e33bea
:memo: keep track of acore specific functions
enryH Jul 20, 2026
8babffd
:memo: document current API for enrichment plots
enryH Jul 21, 2026
105cfe5
🔧 add acore for type cross-references
enryH Jul 21, 2026
d39619f
:art: adapt headings and make sure plotly plots fit to page width
enryH Jul 21, 2026
605d633
:art: play with left and right margin
enryH Jul 21, 2026
1968e87
:art: play with plot margins
enryH Jul 21, 2026
48db508
:bug: kaleido needs chrome, remove margin printing here
enryH Jul 21, 2026
4fec1bb
:construction: check maximum pixels size of 799
enryH Jul 21, 2026
4c2b433
:art: set width to 790 to avoid scroling
enryH Jul 21, 2026
1e4c4cf
:bug: correct spelling of manual
enryH Jul 21, 2026
0e26e0f
:sparkles: add namespace for static and interactive plots
enryH Aug 12, 2026
f73ff5e
:art: format
enryH Aug 12, 2026
4bb363b
Merge branch 'main' into mv_enrichment_plot
enryH Aug 12, 2026
64fc9f4
🔧 update new code to adhere to latest ruff check
enryH Aug 12, 2026
4d43d64
:art: format
enryH Aug 13, 2026
5b81f3c
fix typos, imports and paths
enryH Aug 14, 2026
010de3c
:art: add variation to pathway foreground set size (to debug)
enryH Aug 14, 2026
095ccb9
:art: mention default DPI for static plots
enryH Aug 15, 2026
c508692
:art: use global markersize in case of several groups
enryH Aug 15, 2026
613df4a
:bug: do not hard-code markersize in plotly enrichment plot to 14
enryH Aug 15, 2026
315b76f
:art: ensure same markersize in plots
enryH Aug 15, 2026
30d8ee4
:art: fix markersize in interactive plot in legend
enryH Aug 15, 2026
0507642
:art: add markersize to general function
enryH Aug 15, 2026
c905fa3
:wrench: sync notebook
enryH Aug 15, 2026
ef2bf68
:art: add a docstring to get_enrichment_plot_mpl
enryH Aug 16, 2026
ca54b5e
:bug: ensure that non-unique indices do not fail
enryH Aug 16, 2026
6300805
:bug: only keep observed groupds in case of category
enryH Aug 16, 2026
3a5502c
🔧 do not lower bound figure size
enryH Aug 16, 2026
6b571bc
:art: add docstrings to plotly function
enryH Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# DataFrame

Each specific analysis plot is based on a type from acore `acore.types`. Use the pandera
schema to validate the input DataFrame.

- use the pandas API whenever you can

## Format

Use black to format the src folder

```bash
black src
```

## Ruff checks

```
ruff check src --fix
```

## Staging

Ask me if I want to stage the files and provide the command to do so.

## Docstrings

Use the default format for type annotated functions is numpy style.

https://numpydoc.readthedocs.io/en/latest/format.html#parameters
177 changes: 97 additions & 80 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
# Contributing to VueCore

[VueCore][vuecore-repo] is an **open source project**, and we welcome contributions of all kinds via **GitHub issues** and
**pull requests**: correct or improve our [documentation][vuecore-docs], report or fix bugs, propose changes, and
implement new features. Please follow these guidelines to make sure that your contribution is easily integrated
into the project.
[VueCore][vuecore-repo] is an **open source project**, and we welcome contributions of all
kinds via **GitHub issues** and **pull requests**: correct or improve our
[documentation][vuecore-docs], report or fix bugs, propose changes, and implement new
features. Please follow these guidelines to make sure that your contribution is easily
integrated into the project.

## Contributor Agreement

By contributing, you agree that we may redistribute your work under [our
license](LICENSE.md). In exchange, we will address your issues and/or assess
your change proposal as promptly as we can, and help you become a member of our
community.
license](LICENSE.md). In exchange, we will address your issues and/or assess your change
proposal as promptly as we can, and help you become a member of our community.

## What to Contribute?

The easiest way to get started is by **reporting an issue** that needs to be fixed,
such as a bug in the code, unclear explanations, conceptual errors, or other details.
If you are familiar with Python, Git,, and GitHub, you can **fix the bug** yourself
and submit a **pull request (PR)** with your changes, as described below.
The easiest way to get started is by **reporting an issue** that needs to be fixed, such
as a bug in the code, unclear explanations, conceptual errors, or other details. If you
are familiar with Python, Git,, and GitHub, you can **fix the bug** yourself and submit a
**pull request (PR)** with your changes, as described below.

You can also contribute by **fixing existing bugs** tagged with the `bug` and
`help wanted` labels in the [list of open issues][issues] of the repository. There are
**new features and imporvements** tagged with `enhancement` and `help wanted` as well, so
feel free to start a discussion if you would like to work on one of those. If you come up with
any **ideas for new features or improvements** that are not yet reported, we are also happy to hear about them.
You can also contribute by **fixing existing bugs** tagged with the `bug` and `help
wanted` labels in the [list of open issues][issues] of the repository. There are **new
features and imporvements** tagged with `enhancement` and `help wanted` as well, so feel
free to start a discussion if you would like to work on one of those. If you come up with
any **ideas for new features or improvements** that are not yet reported, we are also
happy to hear about them.

Feedback from beginners is especially valuable, as experienced users may overlook how
challenging certain aspects of the software can be for newcomers. Therefore, we encourage
Feedback from beginners is especially valuable, as experienced users may overlook how
challenging certain aspects of the software can be for newcomers. Therefore, we encourage
you to share any suggestions or observations you have.

## How to Contribute?
Expand All @@ -35,41 +36,44 @@ Here are the ways you can submit your suggestions and contribute to the project:

### 1. Reporting Issues or Suggesting Improvements

If you have a [GitHub][github] account (or are willing to [open one][github-join]) but are unfamiliar with
Git, you can report bugs or suggest improvements by [creating an issue][new-issue]. This GitHub feature allows
for discussion threads on reported issues and proposed enhancements.
If you have a [GitHub][github] account (or are willing to [open one][github-join]) but
are unfamiliar with Git, you can report bugs or suggest improvements by [creating an
issue][new-issue]. This GitHub feature allows for discussion threads on reported issues
and proposed enhancements.

When reporting an issue, please provide as much relevant information as possible, including:
When reporting an issue, please provide as much relevant information as possible,
including:

* A clear and descriptive title
* A detailed description of the problem or suggestion
* Steps to reproduce the issue (if applicable)
* Any relevant screenshots or error messages
* Your operating system, software version, and additonal details about your local setup that might be helpful in troubleshooting
- A clear and descriptive title
- A detailed description of the problem or suggestion
- Steps to reproduce the issue (if applicable)
- Any relevant screenshots or error messages
- Your operating system, software version, and additonal details about your local setup
that might be helpful in troubleshooting

> [!TIP]
> This guide from the [GitHub Docs][github-docs] provides useful tips on [how to write an issue][issue-github-guide].
> [!TIP] This guide from the [GitHub Docs][github-docs] provides useful tips on [how to
> write an issue][issue-github-guide].

### 2. Submitting Changes via Pull Requests (PR)

If you are comfortable using Git/GitHub and would like to add or modify a functionality, you can submit a **PR**.
You may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute].
In brief, we use [GitHub flow][github-flow] to manage changes:
If you are comfortable using Git/GitHub and would like to add or modify a functionality,
you can submit a **PR**. You may want to look at [How to Contribute to an Open Source
Project on GitHub][how-contribute]. In brief, we use [GitHub flow][github-flow] to manage
changes:

> [!TIP]
> Consider using an IDE (e.g., [VSCode][vscode]) or a GUI client (e.g., [GitHub Desktop][github-desktop]) to help
> you with some of the common steps described below.
> [!TIP] Consider using an IDE (e.g., [VSCode][vscode]) or a GUI client (e.g., [GitHub
> Desktop][github-desktop]) to help you with some of the common steps described below.

1. Fork the [vuecore][vuecore-repo] repo on GitHub.
1. Fork the [vuecore][vuecore-repo] repo on GitHub.
2. Clone your fork locally. Replace `yourusername` with your GitHub username.

```bash
git clone https://github.com/yourusername/vuecore.git
```

3. Install your local copy into a virtual environment. Assuming you have Python available
on your system, this can be done using `venv`. Alternatives are `conda`, `uv`, or `poetry`
to create and manage virtual environments.
3. Install your local copy into a virtual environment. Assuming you have Python available
on your system, this can be done using `venv`. Alternatives are `conda`, `uv`, or
`poetry` to create and manage virtual environments.

```bash
cd vuecore/
Expand All @@ -78,15 +82,16 @@ In brief, we use [GitHub flow][github-flow] to manage changes:
pip install -e .[dev]
```

4. Create a new branch in your desktop copy of this repository for each significant change.
4. Create a new branch in your desktop copy of this repository for each significant
change.

```bash
git checkout -b name-of-your-new-branch
```

5. When you're done making changes, check that your changes are formatted and pass `black` and
`ruff` checks (some changes ruff can automatically fix for you, if you pass the `--fix` flag).
Also, run the `tests` to make sure everything is working as expected:
5. When you're done making changes, check that your changes are formatted and pass `black`
and `ruff` checks (some changes ruff can automatically fix for you, if you pass the
`--fix` flag). Also, run the `tests` to make sure everything is working as expected:

```bash
black .
Expand All @@ -107,36 +112,41 @@ In brief, we use [GitHub flow][github-flow] to manage changes:
git push origin name-of-your-new-branch
```

8. Submit a pull request from that branch to the [upstream repository][vuecore-repo] via GitHub.
See the **PR General Guidelines** below for more details.
9. If you receive feedback, make changes on your desktop and push to your branch on GitHub: the
pull request will update automatically.
8. Submit a pull request from that branch to the [upstream repository][vuecore-repo] via
GitHub. See the **PR General Guidelines** below for more details.
9. If you receive feedback, make changes on your desktop and push to your branch on
GitHub: the pull request will update automatically.

> [!TIP]
> The documentation for [Git][git-docs] and [GitHub][github-docs] are easy to follow, and you can learn the
> basics using their official guides.
> [!TIP] The documentation for [Git][git-docs] and [GitHub][github-docs] are easy to
> follow, and you can learn the basics using their official guides.

#### PR General Guidelines

We have a general [PR template][general-pr-template] that is loaded autmatically when you open a new PR.
Also, if you are adding a new plot, we created a [new plot PR template][new-plot-pr-template]
with a checklist of all the steps to follow, which you can use with a query paramter by clicking [here][new-plot-pr-query-param].
We have a general [PR template][general-pr-template] that is loaded autmatically when you
open a new PR. Also, if you are adding a new plot, we created a [new plot PR
template][new-plot-pr-template] with a checklist of all the steps to follow, which you can
use with a query paramter by clicking [here][new-plot-pr-query-param].

Before you submit a PR, check that it meets these guidelines:

1. The pull request should include tests.
2. If the pull request adds functionality, the docs should be updated. Put
your new functionality into a function with a docstring.
2. If the pull request adds functionality, the docs should be updated. Put your new
functionality into a function with a docstring.
3. The pull request should pass the workflows on GitHub.

## Code & Documentation Standards

To maintain consistency across the codebase, please adhere to the following standards when contributing:
To maintain consistency across the codebase, please adhere to the following standards when
contributing:

* **Docstrings:** Follow the [NumPy docstring style][numpy-docstring-guide]. Include examples where relevant.
* **Type Hints:** Use Python type hints for function signatures and variable annotations (**PEP 484**).
* **Code Formatting:** Use `black` for code formatting and `ruff` for linting (as mentioned in the PR guidelines).
* **Naming Conventions:** Follow **PEP8** for naming (e.g., snake_case for variables/functions, CamelCase for classes).
- **Docstrings:** Follow the [NumPy docstring style][numpy-docstring-guide]. Include
examples where relevant.
- **Type Hints:** Use Python type hints for function signatures and variable annotations
(**PEP 484**).
- **Code Formatting:** Use `black` for code formatting and `ruff` for linting (as
mentioned in the PR guidelines).
- **Naming Conventions:** Follow **PEP8** for naming (e.g., snake_case for
variables/functions, CamelCase for classes).

Here is an example of a simple function with a proper docstring and type hints:

Expand All @@ -163,19 +173,23 @@ def calculate_average(values: List[float]) -> float:
return sum(values) / len(values)
```

## Test Guidelines
## Test Guidelines

We encourage comprehensive testing to maintain code quality, so all contributions should include
appropriate tests that verify functionality. We use `pytest` as our testing framework. Here are some considerations:
We encourage comprehensive testing to maintain code quality, so all contributions should
include appropriate tests that verify functionality. We use `pytest` as our testing
framework. Here are some considerations:

* **Structure:** Place tests in the tests/ directory, mirroring the source structure.
* **Coverage:** Aim for high test coverage, especially for new features or bug fixes. Try to cover typical use cases as well as edge cases.
* **Naming:** Use descriptive test function names that indicate what is being tested.
* **Docstrings:** Include docstrings in your test functions to explain their purpose, following the previous docstring guidelines.
* **Isolation:** Each test should be independent and not rely on other tests.
* **Local Execution:** Ensure that tests can be run locally using `pytest` before submitting a PR.
- **Structure:** Place tests in the tests/ directory, mirroring the source structure.
- **Coverage:** Aim for high test coverage, especially for new features or bug fixes. Try
to cover typical use cases as well as edge cases.
- **Naming:** Use descriptive test function names that indicate what is being tested.
- **Docstrings:** Include docstrings in your test functions to explain their purpose,
following the previous docstring guidelines.
- **Isolation:** Each test should be independent and not rely on other tests.
- **Local Execution:** Ensure that tests can be run locally using `pytest` before
submitting a PR.

Here is an example of a test script for the `calculate_average` function:
Here is an example of a test script for the `calculate_average` function:

```python
import pytest
Expand Down Expand Up @@ -203,23 +217,26 @@ Run the following command in the root directory to execute the tests locally:
pytest .
```

It's possible to run specific test files or functions by providing their paths.
See the [pytest documentation][pytest-docs] for more details.
It's possible to run specific test files or functions by providing their paths. See the
[pytest documentation][pytest-docs] for more details.

## Deployment

We created a [CI/CD worflow][cicd-workflow] using **GitHub Actions** to automatically deploy the Python package to
[PyP][vuecore-pypi] when a new release is created. To create a new release, make sure all changed are merged into the `main` branch,
then go to the [Releases section][releases-vuecore] of the GitHub repository and click on **Draft a new release**. Fill in the
release title and description, then click on **Publish release**. This will trigger the GitHub Actions workflow to build and deploy the package to PyPI.
We created a [CI/CD worflow][cicd-workflow] using **GitHub Actions** to automatically
deploy the Python package to [PyP][vuecore-pypi] when a new release is created. To create
a new release, make sure all changed are merged into the `main` branch, then go to the
[Releases section][releases-vuecore] of the GitHub repository and click on **Draft a new
release**. Fill in the release title and description, then click on **Publish release**.
This will trigger the GitHub Actions workflow to build and deploy the package to PyPI.

Also, we have a GitHub Action that automatically deploys the documentation to [Read the Docs][vuecore-docs] in
every push to a branch or when a PR is merged into `main`.
Also, we have a GitHub Action that automatically deploys the documentation to [Read the
Docs][vuecore-docs] in every push to a branch or when a PR is merged into `main`.

## Credits

This contribution guide was modified under the [Creative Commons Attribution 4.0 International License][ccby] from
the [Software Carpentry guides][soft-cp-guides] and the [acore][acore-repo] project.
This contribution guide was modified under the [Creative Commons Attribution 4.0
International License][ccby] from the [Software Carpentry guides][soft-cp-guides] and the
[acore][acore-repo] project.

[vuecore-repo]: https://github.com/Multiomics-Analytics-Group/vuecore
[vuecore-docs]: https://vuecore.readthedocs.io/
Expand Down
2 changes: 1 addition & 1 deletion docs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ _build
jupyter_execute

# VsCode
*.DS_Store
*.DS_Store
Loading
Loading