Skip to content

Commit c88875f

Browse files
authored
Merge branch 'main' into test_all_os
2 parents fd77e5f + 99e38d9 commit c88875f

File tree

18 files changed

+1896
-473
lines changed

18 files changed

+1896
-473
lines changed

.github/workflows/cdci.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ jobs:
1919
steps:
2020
- uses: actions/checkout@v4
2121
- uses: psf/black@stable
22+
with:
23+
jupyter: true
2224
- uses: isort/isort-action@v1
2325
- name: Set up Python ${{ matrix.python-version }}
2426
uses: actions/setup-python@v5
@@ -122,3 +124,58 @@ jobs:
122124
run: python -m build
123125
- name: Publish package distributions to PyPI
124126
uses: pypa/gh-action-pypi-publish@release/v1
127+
128+
build-executable:
129+
name: Build-exe-${{ matrix.os.label }}
130+
runs-on: ${{ matrix.os.runner }}
131+
needs:
132+
- test
133+
- other-reports
134+
strategy:
135+
matrix:
136+
python-version: ["3.12"]
137+
os:
138+
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/running-variations-of-jobs-in-a-workflow#example-using-a-multi-dimension-matrix
139+
- runner: "macos-13"
140+
label: "macos-13-x64"
141+
- runner: "macos-15"
142+
label: "macos-15-arm64"
143+
- runner: "windows-latest"
144+
label: "windows-x64"
145+
steps:
146+
- uses: actions/checkout@v4
147+
- uses: actions/setup-python@v5
148+
with:
149+
python-version: ${{ matrix.python-version }}
150+
- name: Install VueGen GUI and pyinstaller
151+
run: |
152+
python -m pip install ".[gui]" pyinstaller
153+
- name: Install quarto tools
154+
run: |
155+
quarto install chromium
156+
quarto install tinytex
157+
- name: Build executable
158+
run: |
159+
cd gui
160+
pyinstaller -n vuegen_gui --onefile --windowed --collect-all pyvis --collect-all streamlit --collect-all st_aggrid --collect-all customtkinter --collect-all quarto_cli --collect-all plotly --collect-all _plotly_utils --collect-all traitlets --collect-all referencing --collect-all rpds --collect-all tenacity --collect-all pyvis --collect-all pandas --collect-all numpy --collect-all matplotlib --collect-all openpyxl --collect-all xlrd --collect-all nbformat --collect-all nbclient --collect-all altair --collect-all itables --collect-all kaleido --collect-all pyarrow --collect-all dataframe_image --collect-all narwhals --collect-all PIL --collect-all vl_convert --add-data ../docs/example_data/Basic_example_vuegen_demo_notebook:example_data/Basic_example_vuegen_demo_notebook --add-data ../docs/images/vuegen_logo.png:. app.py
161+
# --windowed only for mac, see:
162+
# https://pyinstaller.org/en/stable/usage.html#building-macos-app-bundles
163+
# 'Under macOS, PyInstaller always builds a UNIX executable in dist.'
164+
# --onefile --windowed for Windows?
165+
# --collect-all yaml --collect-all strenum --collect-all jinja2 --collect-all fastjsonschema --collect-all jsonschema --collect-all jsonschema_specifications
166+
# replace by spec file once done...
167+
- name: Upload executable
168+
uses: actions/upload-artifact@v4
169+
with:
170+
name: vuegen_gui_${{ matrix.os.label }}
171+
path: gui/dist/
172+
- name: Upload Executable to a GitHub Release
173+
if: startsWith(github.ref, 'refs/tags')
174+
env:
175+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176+
run: |
177+
TAG_NAME=${GITHUB_REF#refs/tags/}
178+
cp
179+
gh release upload "$TAG_NAME" gui/dist/vuegen_gui.*#vuegen_gui_${{ matrix.os.label }}
180+
# https://cli.github.com/manual/gh_release_upload
181+
# either .app or .exe depending on the OS

CONTRIBUTING.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Contributing to VueGen
2+
3+
[VueGen][vuegen-repo] is an open source project, and we welcome contributions of all
4+
kinds via GitHub issues and pull requests: correct or improve our [documentation][vuegen-docs], report or fix bugs, propose changes, and implement new features. Please follow
5+
these guidelines to make sure that your contribution is easily integrated into the project.
6+
7+
## 1. Contributor Agreement
8+
9+
By contributing, you agree that we may redistribute your work under [our
10+
license](LICENSE). In exchange, we will address your issues and/or assess
11+
your change proposal as promptly as we can, and help you become a member of our
12+
community.
13+
14+
## 2. What to Contribute
15+
16+
The easiest way to get started is by reporting an issue that needs to be fixed,
17+
such as a bug in the code, unclear explanations, conceptual errors, or other details.
18+
You can also contribute by proposing new features or modules, improving existing
19+
functionality, or suggesting other ideas that might be useful. If you’re looking for
20+
inspiration, please check the [list of open issues][issues] in this repository.
21+
22+
Feedback from beginners is especially valuable, as experienced users may overlook how
23+
challenging certain aspects of the software can be for newcomers. Therefore, we encourage
24+
you to share any suggestions or observations you have about this project.
25+
26+
## 3. How to Contribute
27+
28+
Here are the ways you can submit your suggestions and contribute to the project:
29+
30+
1. **Reporting Issues or Suggesting Improvements:** If you have a [GitHub][github] account
31+
(or are willing to [open one][github-join]) but are unfamiliar with Git, you can report
32+
bugs or suggest improvements by [creating an issue][new-issue]. This GitHub feature allows
33+
for discussion threads on reported issues and proposed enhancements.
34+
35+
2. **Submitting Changes via Pull Requests:** If you are comfortable using Git and would like to
36+
add or modify a functionality, you can submit a **pull request (PR)**. Instructions on how to contribute this way are provided in the next section.
37+
38+
3. **Providing Feedback via Email:** If you don’t have a GitHub account and are
39+
unfamiliar with Git, you can send feedback via email to [[email protected]][contact]. However, using GitHub is preferred, as it allows us to respond more quickly and track discussions openly.
40+
41+
> [!NOTE]
42+
> The documentation for [Git][git-docs] and [GitHub][github-docs] are easy to follow, and you can learn the basics using their official guides.
43+
44+
## 4. Creating a Pull Request
45+
46+
If you choose to contribute via GitHub, 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:
47+
48+
1. Create a new branch in your desktop copy of this repository for each significant change.
49+
2. Commit the change in that branch.
50+
3. Push that branch to your fork of this repository on GitHub.
51+
4. Submit a pull request from that branch to the [upstream repository][vuegen-repo].
52+
5. If you receive feedback, make changes on your desktop and push to your branch on GitHub: the
53+
pull request will update automatically.
54+
55+
## 5. Credits
56+
57+
This contribution guide was modified under the [Creative Commons Attribution 4.0 International License][ccby] from the [Software Carpentry guides][soft-cp-guides].
58+
59+
[vuegen-repo]: https://github.com/Multiomics-Analytics-Group/vuegen
60+
[vuegen-docs]: https://vuegen.readthedocs.io/
61+
[issues]: https://github.com/Multiomics-Analytics-Group/vuegen/issues
62+
[new-issue]: https://github.com/Multiomics-Analytics-Group/vuegen/issues/new
63+
[github]: https://github.com
64+
[github-join]: https://github.com/join
65+
[contact]: mailto:[email protected]
66+
[git-docs]: https://git-scm.com/doc
67+
[github-docs]: https://guides.github.com/
68+
[how-contribute]: https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github
69+
[github-flow]: https://guides.github.com/introduction/flow/
70+
[soft-cp-guides]: https://software-carpentry.org/lessons/
71+
[ccby]: https://creativecommons.org/licenses/by/4.0/

README.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,19 @@
1414
| **Cite** | [![DOI:10.1101/2025.03.05.641152](https://img.shields.io/badge/DOI-10.1101/2025.03.05.641152-B31B1B.svg)][vuegen-preprint]|
1515

1616
## Table of contents:
17+
1718
- [About the project](#about-the-project)
1819
- [Installation](#installation)
1920
- [Execution](#execution)
2021
- [Case studies](#case-studies)
2122
- [Web application deployment](#web-application-deployment)
23+
- [Contributing](#contributing)
2224
- [Credits and acknowledgements](#credits-and-acknowledgements)
2325
- [Citation](#citation)
2426
- [Contact and feedback](#contact-and-feedback)
2527

2628
## About the project
29+
2730
VueGen automates the creation of reports based on a directory with plots, dataframes, and other files in different formats. A YAML configuration file is generated from the directory to define the structure of the report. Users can customize the report by modifying the configuration file, or they can create their own configuration file instead of passing a directory as input.
2831

2932
The configuration file specifies the structure of the report, including sections, subsections, and various components such as plots, dataframes, markdown, html, and API calls. Reports can be generated in various formats, including documents (PDF, HTML, DOCX, ODT), presentations (PPTX, Reveal.js), notebooks (Jupyter) or [Streamlit](streamlit) web applications.
@@ -38,10 +41,15 @@ Also, the class diagram for the project is presented below to illustrate the arc
3841

3942
An extended version of the class diagram with attributes and methods is available [here][vuegen-class-diag-att].
4043

41-
The VueGen documentation is available at [vuegen.readthedocs.io][vuegen-docs], where you can find detailed information of the package’s classes and functions, installation and execution instructions, and case studies to demonstrate its functionality.
44+
The VueGen documentation is available at [vuegen.readthedocs.io][vuegen-docs], where you can find detailed information of the package’s classes and functions, installation and execution instructions, and case studies to demonstrate its functionality.
4245

4346
## Installation
47+
48+
> [!TIP]
49+
> It is recommended to install VueGen inside a virtual environment to manage depenendencies and avoid conflicts with existing packages. You can use the virtual environment manager of your choice, such as `poetry`, `conda`, or `pipenv`.
50+
4451
### Pip
52+
4553
VueGen is available on [PyPI][vuegen-pypi] and can be installed using pip:
4654

4755
```bash
@@ -55,17 +63,16 @@ pip install -e path/to/vuegen # specify location
5563
pip install -e . # in case your pwd is in the vuegen directory
5664
```
5765

58-
> [!TIP]
59-
> It is recommended to install VueGen inside a virtual environment to manage depenendencies and avoid conflicts with existing packages. You can use the virtual environment manager of your choice, such as `poetry`, `conda`, or `pipenv`.
60-
6166
### Conda
67+
6268
VueGen is also available on [Bioconda][vuegen-conda] and can be installed using conda:
6369

6470
```bash
6571
conda install bioconda::vuegen
6672
```
6773

6874
### Dependencies
75+
6976
VueGen uses [Quarto][quarto] to generate various report types. The pip insallation includes quarto using the [quarto-cli Python library][quarto-cli-pypi]. To test if quarto is installed in your computer, run the following command:
7077

7178
```bash
@@ -76,12 +83,15 @@ quarto check
7683
> If quarto is not installed, you can download the command-line interface from the [Quarto website][quarto-cli] for your operating system.
7784
7885
### Docker
86+
7987
If you prefer not to install VueGen on your system, a pre-configured Docker container is available. It includes all dependencies, ensuring a fully reproducible execution environment. See the [Execution section](#execution) for details on running VueGen with Docker. The official Docker image is available at [quay.io/dtu_biosustain_dsp/vuegen][vuegen-docker-quay].
8088

8189
### Nextflow and nf-core
90+
8291
VueGen is also available as a [nf-core][nfcore] module, customised for compatibility with the [Nextflow][nextflow] environment. This module is designed to automate report generation from outputs produced by other modules, subworkflows, or pipelines. The code and documentation for the nf-core module are available in the [nf-VueGen repository][nf-vuegen].
8392

8493
## Execution
94+
8595
> [!IMPORTANT]
8696
> Here we use the `Earth_microbiome_vuegen_demo_notebook` directory and the `Earth_microbiome_vuegen_demo_notebook.yaml` configuration file as examples, which are available in the `docs/example_data` and `docs/example_config_files` folders, respectively. Make sure to clone this reposiotry to access these contents, or use your own directory and configuration file.
8797
@@ -111,6 +121,7 @@ The current report types supported by VueGen are:
111121
* Jupyter
112122

113123
### Running VueGen with Docker
124+
114125
Instead of installing VueGen locally, you can run it directly from a Docker container with the following command:
115126

116127
```bash
@@ -120,7 +131,28 @@ docker run --rm \
120131
quay.io/dtu_biosustain_dsp/vuegen:docker --directory /home/appuser/Earth_microbiome_vuegen_demo_notebook --report_type streamlit
121132
```
122133

134+
## GUI
135+
136+
We have a simple GUI for VueGen that can be run locally or through a standalone executable.
137+
138+
```bash
139+
cd gui
140+
python app.py
141+
```
142+
143+
The bundle GUI with the VueGen package is available under the releases. You will need to
144+
unzip the file and run `vuegen_gui` in the unpacked main folder. Most dependencies are included into
145+
the bundle under `_internals` using PyInstaller.
146+
147+
Streamlit works out of the box as a purely Python based package. For `html` creation you will have to
148+
have a global Python installation with the `jupyter` package installed. `quarto` needs to start
149+
a kernel for execution. This is also true if you install `quarto` globally on your machine.
150+
151+
More information can be found in the
152+
[GUI README](https://github.com/Multiomics-Analytics-Group/vuegen/blob/os_installers/gui/README.md).
153+
123154
## Case studies
155+
124156
VueGen’s functionality is demonstrated through two case studies:
125157

126158
**1. Predefined Directory**
@@ -139,6 +171,7 @@ This advanced case study demonstrates the application of VueGen in a real-world
139171
> The EMP case study is available online as [HTML][emp-html-demo] and [Streamlit][emp-st-demo] reports.
140172
141173
## Web application deployment
174+
142175
Once a Streamlit report is generated, it can be deployed as a web application to make it accessible online. There are multiple ways to achieve this:
143176

144177
* **Streamlit Community Cloud**: Deploy your report easily using [Streamlit Cloud][st-cloud], as demonstrated in the [EMP VueGen Demo][emp-st-demo]. The process involves moving the necessary scripts, data, and a requirements.txt file into a GitHub repository. Then, the app can be deployed via the Streamlit Cloud interface. The deployment example is available in the `streamlit-report-example` branch.
@@ -147,12 +180,18 @@ Once a Streamlit report is generated, it can be deployed as a web application to
147180

148181
These options provide flexibility depending on whether the goal is online accessibility, lightweight execution, or local application distribution.
149182

183+
## Contributing
184+
185+
VueGen is an open-source project, and we welcome contributions of all kinds via GitHub issues and pull requests. You can report bugs, suggest improvements, propose new features, or implement changes. Please follow the guidelines in the [CONTRIBUTING](CONTRIBUTING.md) file to ensure that your contribution is easily integrated into the project.
186+
150187
## Credits and acknowledgements
188+
151189
- VueGen was developed by the [Multiomics Network Analytics Group (MoNA)][Mona] at the [Novo Nordisk Foundation Center for Biosustainability (DTU Biosustain)][Biosustain].
152190
- VueGen relies on the work of numerous open-source projects like [Streamlit](streamlit), [Quarto][quarto], and others. A big thank you to their authors for making this possible!
153191
- The vuegen logo was designed based on an image created by [Scriberia][scriberia] for The [Turing Way Community][turingway], which is shared under a CC-BY licence. The original image can be found at [Zenodo][zenodo-turingway].
154192

155193
## Citation
194+
156195
If you use VueGen in your research or publications, please cite it as follows:
157196

158197
**APA:**
@@ -175,6 +214,7 @@ Ayala-Ruano, S., Webel, H., & Santos, A. (2025). *VueGen: Automating the generat
175214
```
176215

177216
## Contact and feedback
217+
178218
We appreciate your feedback! If you have any comments, suggestions, or run into issues while using VueGen, feel free to [open an issue][new-issue] in this repository. Your input helps us make VueGen better for everyone.
179219

180220
[streamlit]: https://streamlit.io/

0 commit comments

Comments
 (0)