Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

github action for integration pipeline #167

Merged
merged 27 commits into from
Feb 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
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
22 changes: 11 additions & 11 deletions .github/workflows/ingestion-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Tutorials CI
name: Run tutorials (ingestion)

on:
push:
Expand All @@ -18,15 +18,15 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest"] # , "macos-latest", "windows-latest"
python-version: ["3.9"]
python-version: ["3.11"]

steps:
- uses: actions/checkout@v4

- name: File tree
if: env.debug == 'true'
run: tree

- uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
Expand All @@ -42,7 +42,7 @@ jobs:
run: |
pip install -e .
conda list

- name: Conda info
if: env.debug == 'true'
shell: bash -el {0}
Expand All @@ -61,30 +61,30 @@ jobs:
curl -L -o adt.h5ad https://figshare.com/ndownloader/files/41671551
curl -L -o atac.h5ad https://figshare.com/ndownloader/files/41671554
curl -L -o rna.h5ad https://figshare.com/ndownloader/files/41671557

# Note: we run the following to test that the commands works
# However, the following task will replacing the file anyway
- name: Preparing the configuration file
shell: bash -el {0}
run: |
cd teaseq/ingest
panpipes ingest config

- name: Edit the submission file
run: |
cd teaseq/ingest
curl -o pipeline.yml https://panpipes-tutorials.readthedocs.io/en/latest/_downloads/9a4fcbc3c0a4fdc8e6578d086a88730f/pipeline.yml

- name: Preparing the submission file
run: |
cd teaseq/ingest
curl -o sample_file_qc.txt https://panpipes-tutorials.readthedocs.io/en/latest/_downloads/40ed291bf9a7ff73c4f396ec63cff2f7/sample_file_qc.txt

- name: Preparing the QC gene lists
run: |
cd teaseq/ingest
curl -o qc_genelist_1.0.csv https://panpipes-tutorials.readthedocs.io/en/latest/_downloads/fd38f25644105ea357a26e78a59139bb/qc_genelist_1.0.csv

- name: Replace template contents in configuration file
run: |
cd teaseq/ingest
Expand All @@ -105,11 +105,11 @@ jobs:
run: |
cd teaseq/ingest
panpipes ingest make full --local

- name: File tree
if: env.debug == 'true'
run: tree teaseq

- uses: actions/upload-artifact@v4
with:
name: teaseq_unfilt.h5mu
Expand Down
98 changes: 98 additions & 0 deletions .github/workflows/integration-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Run tutorials (integration)

on:
push:
branches:
- main
pull_request:
branches:
- main

env:
debug: 'true'
bio-la marked this conversation as resolved.
Show resolved Hide resolved

jobs:
integration:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"] # , "macos-latest", "windows-latest"
python-version: ["3.11"]

steps:
- uses: actions/checkout@v4

- name: File tree
if: env.debug == 'true'
run: tree

- uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
auto-activate-base: true
auto-update-conda: true
channels: conda-forge
channel-priority: strict
activate-environment: pipeline_env
environment-file: pipeline_env.yaml

- name: Install Panpipes
shell: bash -el {0}
run: |
pip install -e .
conda list

- name: Conda info
if: env.debug == 'true'
shell: bash -el {0}
run: conda info

- name: Conda list
if: env.debug == 'true'
shell: pwsh
run: conda list

# Note: all three files are renamed during the download to trim the "subsample_" prefix
- name: Preparing the data
run: |
mkdir -p teaseq/integration && cd teaseq/integration
curl -L -o teaseq.h5mu https://figshare.com/ndownloader/files/44471927

# Note: we run the following to test that the commands works
# However, the following task will replacing the file anyway
- name: Preparing the configuration file
shell: bash -el {0}
run: |
cd teaseq/integration
panpipes integration config

- name: Edit the submission file
run: |
cd teaseq/integration
curl -o pipeline.yml https://panpipes-tutorials.readthedocs.io/en/latest/_downloads/f834fdb0a65979b0e4d11d6d75188a8e/pipeline.yml

- name: Replace template contents in configuration file
run: |
cd teaseq/integration
sed -i 's+/Users/fabiola.curion/Documents/devel/miniconda3/envs/pipeline_env+pipeline_env+g' pipeline.yml

- name: File tree
if: env.debug == 'true'
run: tree teaseq

- name: Review pipeline tasks
shell: bash -el {0}
run: |
cd teaseq/integration
panpipes integration show full --local

- name: Run pipeline tasks
shell: bash -el {0}
run: |
cd teaseq/integration
panpipes integration make full --local

- name: File tree
if: env.debug == 'true'
run: tree teaseq
2 changes: 1 addition & 1 deletion panpipes/python_scripts/batch_correct_scvi.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@
vae.history["elbo_train"].plot()
plt.savefig(os.path.join(args.figdir, "scvi_elbo_train.png"))

fig, axs = plt.subplots(nrows=3, ncols=4, figsize=(16,8))
fig, axs = plt.subplots(nrows=4, ncols=4, figsize=(16,10))
bio-la marked this conversation as resolved.
Show resolved Hide resolved
axs = axs.ravel()
for i, kk in enumerate(vae.history.keys()):
vae.history[kk].plot(ax=axs[i])
Expand Down
2 changes: 1 addition & 1 deletion pipeline_env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ channels:
- conda-forge
- defaults
dependencies:
- python=3.9
- python=3.11
- r-base=4.3.0
- r-clustree
- r-ggforce
Expand Down
36 changes: 18 additions & 18 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,43 +26,43 @@ classifiers = [
"Programming Language :: R"
]

requires-python = ">= 3.9"
requires-python = ">= 3.11"

dependencies = [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a minor comment, but you don't need to specify transitive dependencies -> anndata, jax etc are already included in e.g. scvi-tools. Only if you need to pin them.

Moreover, dependencies such as pytest are not runtime dependencies and should be moved into a dev section

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you're making a lot of good points, but can we open those as issues, as they will otherwise get lost as comments

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True! Sorry, Fabiola merged the PR before my comment went out :)

"anndata>=0.8.0",
"apsw",
"bbknn",
"cgatcore",
"drmaa",
"apsw",
"bbknn",
"cgatcore",
"drmaa",
"gevent",
"harmonypy",
"jax<=0.4.23",
"jaxlib<=0.4.23",
"leidenalg",
"jax",
"jaxlib",
"leidenalg",
"louvain",
"matplotlib<=3.7.3",
"mofapy2",
"mudata>=0.2.1",
"muon",
"numpy==1.22.4",
"numpy>=1.22.4",
"openpyxl",
"packaging",
"pandas>=1.0",
"paramiko",
"packaging",
"pandas>=1.0",
"paramiko",
"pep8",
"pysam",
"pynndescent",
"pytest",
"pyyaml",
"ruffus",
"scanorama",
"scanpy>=1.9.1",
"ruffus",
"scanorama",
"scanpy>=1.9.1",
"scib",
"seaborn<=0.12.2",
"scikit-misc",
"scikit-misc",
"scirpy",
"scrublet",
"scvi-tools>=0.16.3",
"scrublet",
"scvi-tools>=1.1.1",
"sqlalchemy"]

[project.optional-dependencies]
Expand Down