Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
8e93a55
add parameter to fetch eatlas accessions only
OlivierCoen Jun 17, 2025
4170ed9
put idmapping in separate subworkflow
OlivierCoen Jun 17, 2025
b823bed
put multiqc in separate subworkflow
OlivierCoen Jun 17, 2025
03bdbf7
fix behaviour with accessions only param
OlivierCoen Jun 18, 2025
f14c20f
add arguments for including or excluding eatlas accessions
OlivierCoen Jun 18, 2025
ebb33f4
reorganize published files
OlivierCoen Jun 18, 2025
d272af5
improved handling of case when no gene mapping file is given (most ca…
OlivierCoen Jun 19, 2025
2a5c89b
add when statements in modules
OlivierCoen Jun 25, 2025
ffaee5c
first galaxy setup
OlivierCoen Jun 26, 2025
032b988
finalised frontend for galaxy tool
OlivierCoen Jul 6, 2025
7122c15
update galaxy conf
OlivierCoen Jul 6, 2025
e679699
allow not providing design data
OlivierCoen Jul 6, 2025
97d7d30
fix issue in eatlas fetdata workflow
OlivierCoen Jul 6, 2025
e7e76c0
finalised and tested local development galaxy tool
OlivierCoen Jul 6, 2025
f606f3f
replace environment.yml files by spec-file.txt files to lock conda en…
OlivierCoen Jul 7, 2025
754f5d4
update
OlivierCoen Jul 8, 2025
337af8b
added new exports in eatlas get_accessions
OlivierCoen Jul 9, 2025
efa0d2a
added eatlas tables in multiqc
OlivierCoen Jul 9, 2025
405b65d
changed species in some tests to go faster
OlivierCoen Jul 9, 2025
ac87458
update
OlivierCoen Jul 10, 2025
daa6761
removed recursively unwanted files
OlivierCoen Jul 10, 2025
7052de2
forcing drop of local project in Galaxy before pulling the new one
OlivierCoen Jul 10, 2025
516ce91
update github link in galaxy .shed
OlivierCoen Jul 10, 2025
89ca81e
update sections in galaxy .shed
OlivierCoen Jul 10, 2025
d1ca744
fix galaxy tool
OlivierCoen Jul 10, 2025
a29ef2f
fix example command in doc
OlivierCoen Jul 18, 2025
eb159c4
fix issue in eatlas get data when data type was not recognised
OlivierCoen Jul 18, 2025
7305f9a
better handle download issues with eatlas get data
OlivierCoen Aug 15, 2025
b57276e
ignore nf tests for editorconfig
OlivierCoen Aug 15, 2025
4f9756c
fix issue with deseq2 normalise
OlivierCoen Aug 15, 2025
8939a31
add parameter to change target distrib for quantile normalisation; se…
OlivierCoen Aug 15, 2025
21f740a
fix http issue in id mapping
OlivierCoen Aug 31, 2025
4bd7fe7
add micromamba profile
OlivierCoen Aug 31, 2025
a25ba66
add micromamba profile
OlivierCoen Aug 31, 2025
4b448df
add parameter to select only one platform from expression atlas
OlivierCoen Sep 2, 2025
1f8bebd
partial refactor of the pipeline; add steps to compute statistics for…
OlivierCoen Sep 3, 2025
afc8109
factorise code for computing gene statistics
OlivierCoen Sep 3, 2025
fa9c753
compute median and median absolute deviation and display in MultiQC r…
OlivierCoen Sep 3, 2025
a3aa5d0
script to get accessions from GEO datasets
OlivierCoen Sep 4, 2025
842516e
add gene id mapping test to filter out microarray datasets that are w…
OlivierCoen Sep 8, 2025
aa1105d
made script to download geo count and design functional
OlivierCoen Sep 10, 2025
746d2de
finalised integration and testing of GEO in the pipeline
OlivierCoen Sep 11, 2025
deb965e
now mandatory to give design file for each coutn dataset
OlivierCoen Sep 11, 2025
63938ee
refactoring and first functional version of the normfinder script
OlivierCoen Sep 12, 2025
495adb9
finalised and tested the normfinder module
OlivierCoen Sep 13, 2025
87fe029
reinsert genorm files
OlivierCoen Sep 13, 2025
0c45127
reinsert genorm files
OlivierCoen Sep 14, 2025
1cf411c
fix issue for triggering geo_fetchdata
OlivierCoen Sep 14, 2025
8186b45
big reformating to reintegrate genorm in the pipeline; display normfi…
OlivierCoen Sep 14, 2025
0fd11eb
modify formula for stability score
OlivierCoen Sep 14, 2025
5afd68f
apply quantile normalisation to ingredients of scoring for candidate …
OlivierCoen Sep 17, 2025
95de94e
pass nf-test tests
OlivierCoen Oct 18, 2025
7e7c8ca
remove "when" statements in processes
OlivierCoen Oct 18, 2025
af71279
Create pyproject.tom
OlivierCoen Oct 19, 2025
f640b9a
Template update for nf-core/tools version 3.4.1
OlivierCoen Oct 19, 2025
f936557
fix tests
OlivierCoen Oct 21, 2025
c35eb85
add dash app to workflow
OlivierCoen Oct 21, 2025
9e5233a
separate module confs
OlivierCoen Oct 21, 2025
510eefb
added all files of dash application
OlivierCoen Oct 21, 2025
b11a28f
separate module configs and change publish dir mode
OlivierCoen Oct 22, 2025
bb979ea
functional dash app in the workflow
OlivierCoen Oct 22, 2025
60203d4
fix display bugs in dash app
OlivierCoen Oct 22, 2025
b4b249a
add spec-file.txt to dash_app
OlivierCoen Oct 22, 2025
6b2b207
big refactoring of get_geo_dataset_accessions.py and related files in…
OlivierCoen Oct 23, 2025
d3e579c
fix errorStrategy statements that fail with nextflow update
OlivierCoen Oct 23, 2025
3d42414
refactor galaxy tooling and improve documentation
OlivierCoen Oct 24, 2025
0f267a5
replace terminate by ignore in clean count data
OlivierCoen Oct 24, 2025
1370b08
add local config
OlivierCoen Oct 24, 2025
bfb2bef
add pipelines tests to default.nf.test
OlivierCoen Oct 24, 2025
a2b296f
dynamic allocation of available port in dash app.py
OlivierCoen Oct 24, 2025
5225d2c
change gprofiler id mapping name and code to integrate directly in it…
OlivierCoen Oct 24, 2025
fbc6ce0
change way of merging designs
OlivierCoen Oct 24, 2025
c8a9935
fix bug in normfinder.py when of group chunk dataframe is full of nul…
OlivierCoen Oct 24, 2025
3370049
fix conflict of keywords and skip_fetch_eatlas_accessions / skip_fetc…
OlivierCoen Oct 24, 2025
96e4826
merge gene id mapping files and gene metadata files in the merge data…
OlivierCoen Oct 24, 2025
cf84887
normfinder and genorm and not run by default
OlivierCoen Oct 24, 2025
6022211
correction of weights by division by the sum of weights for the compu…
OlivierCoen Oct 24, 2025
53b8a0f
run normfinder automatically, genorm stays optional
OlivierCoen Oct 25, 2025
4c9fbde
add nb genes and nb samples in meta map at several steps of the workflow
OlivierCoen Oct 25, 2025
516280f
build memory requirement for MERGE_COUNTS dynamically based on total …
OlivierCoen Oct 26, 2025
dcbcb46
use dataframes instead of lazyframes during count merging
OlivierCoen Oct 26, 2025
79fcbb5
add filter on non empty datasets when computing dataset size
OlivierCoen Oct 26, 2025
4ad3f25
fix big bug with workflow.containerEngine
OlivierCoen Oct 26, 2025
5ff13af
upgraded synthax to better adapt to strict synthax
OlivierCoen Oct 26, 2025
7a006df
little fixes
OlivierCoen Oct 26, 2025
e9ff95e
made some cleaning
OlivierCoen Oct 26, 2025
ce07b87
fix bug with computation of total dataset size
OlivierCoen Oct 27, 2025
7ba5785
improve ouptut of get_geo_dataset_accessions
OlivierCoen Oct 27, 2025
1072dae
fix bug with scores not taken into account for final ranking
OlivierCoen Oct 27, 2025
8a6142f
fix multiple bugs linked to scoring and final display in multiqc
OlivierCoen Oct 27, 2025
6d6b324
Update data_management.py
OlivierCoen Oct 28, 2025
401e387
fix lag with sample and gene lists upload
OlivierCoen Oct 28, 2025
777259d
update dash app
OlivierCoen Oct 28, 2025
8dc490b
fix issue with output file naming in compute_base_statistics.py
OlivierCoen Oct 29, 2025
4ad94e4
undo filtering out genes having zero counts
OlivierCoen Oct 29, 2025
abd02bf
change dash_app containers following issue with python 3.14; now igno…
OlivierCoen Oct 29, 2025
cacd420
fixed issue with dash app versions and resource allocation
OlivierCoen Oct 29, 2025
78e7fc5
replace stats all genes by a summary table of all genes with all comp…
OlivierCoen Oct 29, 2025
1d8ab0f
improve dash app and allow selecting genes directly from the general …
OlivierCoen Oct 29, 2025
d04bb8b
fix micromamba config
OlivierCoen Oct 30, 2025
7387c3c
reformat galaxy part to pass lint and test on server
OlivierCoen Oct 30, 2025
71b2868
fix segmentation fault issue in get_candidate_genes.py
OlivierCoen Oct 30, 2025
9015b14
update doc in compute_stability_scores.py
OlivierCoen Oct 30, 2025
2d19097
update galaxy files to pass linter and web app UI tests
OlivierCoen Oct 30, 2025
dafd515
update nextflow_schema.json
OlivierCoen Oct 31, 2025
d591b37
update galaxy tooling for first publishing of downloadable galaxy tool
OlivierCoen Oct 31, 2025
ad6e587
fix null stability score when normfinder issues null score
OlivierCoen Oct 31, 2025
6882ace
place all errorStrategy statements in config files
OlivierCoen Nov 1, 2025
72a1238
fix issue with platform selection in get_geo_dataset_accessions.py
OlivierCoen Nov 2, 2025
4eae685
put errorStrategy and other configs back in processes to avoid errors
OlivierCoen Nov 2, 2025
b678f7f
add robust coefficient of variation on median as possible candidate g…
OlivierCoen Nov 3, 2025
7a2c296
fix issue with genorm envs
OlivierCoen Nov 3, 2025
63aced0
remove filter of gene ID mapping check in get_geo_dataset_accessions;…
OlivierCoen Nov 4, 2025
fb566e1
improve geo reporting in multiqc
OlivierCoen Nov 5, 2025
b410219
delete unused test confs; add nex nf-tests for pipeline
OlivierCoen Nov 5, 2025
5b70dd1
delete errorStrategy gstatement for eatlas getdata; write to file fai…
OlivierCoen Nov 5, 2025
4388e30
fix issue with accessions_only and download_only params and add corre…
OlivierCoen Nov 5, 2025
387126f
refactor eatlas and geo to display rejected datasets clearly in multi…
OlivierCoen Nov 5, 2025
d6d0b3d
add failure report of id mapping in multiqc
OlivierCoen Nov 5, 2025
07f343e
fix issue with expression atlas get data files not optional
OlivierCoen Nov 5, 2025
4d7b285
fix strict synthax issues
OlivierCoen Nov 7, 2025
441b73a
parse geo platform taxon and propagate in meta map
OlivierCoen Nov 7, 2025
a163678
mapping gene ids against geo platform taxon instead of species
OlivierCoen Nov 7, 2025
6460cae
add failures and warnings of normalisation and dataset cleaning to mu…
OlivierCoen Nov 7, 2025
a396d4e
update .gitignore to ignore galaxy test files
OlivierCoen Nov 7, 2025
83a3ae7
fix discrepancies following git am
OlivierCoen Nov 7, 2025
4659d78
Template update for nf-core/tools version 3.3.2
OlivierCoen Nov 7, 2025
ee84f92
Merge branch 'TEMPLATE' into dev
OlivierCoen Nov 8, 2025
77db12c
fix various issues linked to merge
OlivierCoen Nov 8, 2025
0fe67d1
fix output issue with expression atlas get accessions
OlivierCoen Nov 8, 2025
ab7922a
early fix of release_annoucements.yml
OlivierCoen Nov 8, 2025
134bb45
fix malformed nextflow schema
OlivierCoen Nov 8, 2025
6445bfd
pass all module tests
OlivierCoen Nov 8, 2025
f5d82d1
remove tag "module" in module tests
OlivierCoen Nov 8, 2025
e02ca8d
add missing module tests
OlivierCoen Nov 8, 2025
80f543f
allow tsv file as input dataset; modify id mapping script to allow that
OlivierCoen Nov 9, 2025
91b9155
allow tsv files in normalisation (deseq2 and edger)
OlivierCoen Nov 9, 2025
64bcdf8
update documentation
OlivierCoen Nov 9, 2025
433dfea
change species parameter to allow more complex species names; add spe…
OlivierCoen Nov 10, 2025
c9b9dd4
update README.md
OlivierCoen Nov 10, 2025
7ddbf89
fix .github/workflows/release-announcements.yml with latest code
OlivierCoen Nov 10, 2025
7bfb57c
update get_geo_dataset_accessions.py to improve output and allow rnas…
OlivierCoen Nov 10, 2025
efbaad3
clean code; remove superseries from geo accessions
OlivierCoen Nov 11, 2025
3b09364
allow geo datasets containing multiple datasets
OlivierCoen Nov 11, 2025
c6bbfad
change base.config times
OlivierCoen Nov 11, 2025
3821964
add troubleshooting doc
OlivierCoen Nov 11, 2025
90d5b87
pass pipeline nf-tests
OlivierCoen Nov 13, 2025
2c07114
allow and improve downloading of RNAseq data from GEO
OlivierCoen Nov 14, 2025
660214c
force integer count values after mapping to ensembl gene IDs
OlivierCoen Nov 16, 2025
404f85a
functional download and parsing of rnaseq data from GEO
OlivierCoen Nov 16, 2025
5aa1acc
set ks threshold pvalue as negative by default
OlivierCoen Nov 16, 2025
459d726
fix issue with deseq2 and edger in case of only one sample; improve l…
OlivierCoen Nov 16, 2025
2e380b1
fix merge_counts environment
OlivierCoen Nov 16, 2025
1976981
fix issue with file count file parsing when first column name is empty
OlivierCoen Nov 16, 2025
81f52a4
fix synthax issue
OlivierCoen Nov 17, 2025
11bb0ba
update doc
OlivierCoen Nov 17, 2025
39c3903
fix issue with data aggregation when gene id mapping or metadata are …
OlivierCoen Nov 18, 2025
7b59db3
removed subsampling in quantile normalisations to allow full reproduc…
OlivierCoen Nov 18, 2025
997b493
fix issue with design schema not taken into account
OlivierCoen Nov 19, 2025
d2f8b58
replace lazyframes by dataframes in clean_count_data.py
OlivierCoen Nov 19, 2025
cccac73
fix most test cases
OlivierCoen Nov 19, 2025
56ca964
check the number of datasets downloaded from Expression Atlas and pre…
OlivierCoen Nov 19, 2025
b6a7138
Template update for nf-core/tools version 3.5.1
nf-core-bot Nov 20, 2025
05abc9f
prevent download of geo suppl data when multiple species are present …
OlivierCoen Nov 20, 2025
2c1b389
separate the counts obtained in different supplementary file columns …
OlivierCoen Nov 20, 2025
857e85a
fix duplicated column names
OlivierCoen Nov 20, 2025
f7cc943
spearate idmapping step in 3 substeps to make it faster and more scal…
OlivierCoen Nov 20, 2025
553f3a9
change error / retry strategy for all processes
OlivierCoen Nov 20, 2025
09f49a9
add new tests for idmapping processes
OlivierCoen Nov 20, 2025
e74b4d2
fix get_candidate_genes.py when ids are Entrez gene ids
OlivierCoen Nov 20, 2025
7293377
remove data cleansing subworkflow from workflow
OlivierCoen Nov 20, 2025
e78dce6
fix issue in aggregate_results.py when gene ids are integers
OlivierCoen Nov 20, 2025
bf29940
fix issues with id mapping reformating
OlivierCoen Nov 20, 2025
2fcdb5a
remove E-GTEX-* Expression Atlas accesssions by default
OlivierCoen Nov 21, 2025
d0d97f7
fix issues with collection of gene ids
OlivierCoen Nov 21, 2025
919b8e1
fix bug in collect_gene_ids.py when ids are integer
OlivierCoen Nov 22, 2025
a94ffcd
remove deseq2 and edger from pipeline; add new steps for computation …
OlivierCoen Nov 22, 2025
1316c54
remove unecessary tag (1) from global processes
OlivierCoen Nov 22, 2025
5aa5945
script to download annotation gff3 file given a species name
OlivierCoen Nov 22, 2025
bb60780
increase to process_high all modules that handle all data
OlivierCoen Nov 22, 2025
803227e
increase dragstically number of retries for OOM related erros
OlivierCoen Nov 23, 2025
6eb7719
make script to compute max cdna length gene per gene from GGF3 file
OlivierCoen Nov 23, 2025
e8a5916
add computation of tpm in workflow and set it as default
OlivierCoen Nov 23, 2025
c1f90eb
replace quantile normalisation by linear scaling to [0,1] in stabilit…
OlivierCoen Nov 23, 2025
ea87986
make script and module to download latest annotation from ncbi
OlivierCoen Nov 24, 2025
1ae9906
big reformating of the steps for fetching accessions and download dat…
OlivierCoen Nov 24, 2025
11d36d4
replace request to NCBI taxonomy to get species taxid in download_lat…
OlivierCoen Nov 24, 2025
583af6a
improved logging of warning and failures in multiqc
OlivierCoen Nov 24, 2025
c80eba6
improve speed of rename_gene_ids.py
OlivierCoen Nov 24, 2025
84c9417
control nb of cpus in eatlas get accessions
OlivierCoen Nov 25, 2025
9a97eee
reduce and better handle base config for cpus and memory to adapt it …
OlivierCoen Nov 25, 2025
d4e9861
fix bug in eatlas get accessions
OlivierCoen Nov 25, 2025
4729cb5
fix issue with input datasets not being used anymore
OlivierCoen Nov 25, 2025
95a894e
add more checks for input accession format
OlivierCoen Nov 25, 2025
b34612a
improve scalability
OlivierCoen Nov 25, 2025
7db7908
add process to clean gene IDs before collecting them
OlivierCoen Nov 26, 2025
4fdde27
improve gene ID logging and QC
OlivierCoen Nov 26, 2025
c5982fc
add QC statistics (ratio zeros and skewness) in multiqc
OlivierCoen Nov 26, 2025
d0ab387
add error handling when no gene ID mapping is possible
OlivierCoen Nov 26, 2025
c9d996c
fix bug in download_geo_data.R when multiple suppl columns are found
OlivierCoen Nov 26, 2025
5b3b350
handle case where there is no library_strategy column in geo metadata…
OlivierCoen Nov 27, 2025
7f010f0
major refactoring of conda/micromamba environments; update some modul…
OlivierCoen Nov 27, 2025
660f52a
add script to normalise CEL files from microarray data
OlivierCoen Nov 27, 2025
a853af3
limit number of polars threads when not using containers
OlivierCoen Dec 3, 2025
d8b5827
fix tests
OlivierCoen Dec 4, 2025
8f4fe1b
replace "Channel" by "channel" to adapt to new synthax
OlivierCoen Dec 4, 2025
3b91c74
Template update for nf-core/tools version 3.5.1
OlivierCoen Dec 8, 2025
2d4581b
merge branch TEMPLATE into dev
OlivierCoen Dec 8, 2025
7007b60
pass linters
OlivierCoen Dec 8, 2025
7b352f7
update citations
OlivierCoen Dec 8, 2025
e8ee9ee
remove profile apptainer from nf-test config in order to fix CI tests
OlivierCoen Dec 9, 2025
2a7de4d
pass prettier and ruff linters
OlivierCoen Dec 9, 2025
a1af98c
add files to skip for files_unchanged during nf-core pipelines lint
OlivierCoen Dec 9, 2025
56899e7
change base config process_high modules
OlivierCoen Dec 9, 2025
82ebd98
add random sampling based on nb of samples direclty in Expression Atl…
OlivierCoen Dec 10, 2025
bca5fc7
reinstalled appropriate version of multiqc
OlivierCoen Dec 10, 2025
7363503
propadata random sampling to geo when not enough samples were collect…
OlivierCoen Dec 10, 2025
b8eda8e
set sampling quota in geo
OlivierCoen Dec 10, 2025
d5a4a8b
set fetching geo accessions as optional
OlivierCoen Dec 11, 2025
413d313
update method description
OlivierCoen Dec 11, 2025
5757d92
fix issue with gene id mapping stats in multiqc report
OlivierCoen Dec 11, 2025
34587ce
remove set statements to prepare for strict synthax
OlivierCoen Dec 11, 2025
d3bd377
rename top stable genes by most stable genes
OlivierCoen Dec 11, 2025
ce578b3
remove access to params in merge_data and multiqc subworkflows
OlivierCoen Dec 11, 2025
026a840
add default hard limits for resources in base.config
OlivierCoen Dec 12, 2025
079be55
fix some tests
OlivierCoen Dec 15, 2025
d9b58e7
improve doc
OlivierCoen Dec 15, 2025
e30e736
fix test failures
OlivierCoen Dec 16, 2025
7814723
set default random_sampling_size at 5000 to fit with homo sapiens on …
OlivierCoen Dec 16, 2025
d7c9b09
improve doc and pass linters
OlivierCoen Dec 18, 2025
63678df
add new metromap
OlivierCoen Dec 18, 2025
9677dd9
remove geo datasets from pipeline test snapshots
OlivierCoen Dec 18, 2025
09666bc
add possibility to provide custom gene length file instead of
OlivierCoen Dec 22, 2025
4d2d9a9
update doc
OlivierCoen Dec 22, 2025
909f984
improve reproducibility of nf-tests
OlivierCoen Dec 23, 2025
ddcb9e6
add pyarrow in dash_app environmen.yml
OlivierCoen Dec 30, 2025
86faace
add subworkflow to filter out samplesthat are not valid
OlivierCoen Dec 30, 2025
44d03dd
fix issue when removing samples not valid
OlivierCoen Dec 30, 2025
047fbbc
pipeline lint
OlivierCoen Jan 3, 2026
0116d68
add nb of merged gene IDs in multiqc id mapping stat graph
OlivierCoen Jan 3, 2026
c96b9b7
big refactoring to filter out rare genes
OlivierCoen Jan 3, 2026
4dd05e2
implement filtering on rare genes; add to multiqc
OlivierCoen Jan 4, 2026
f8b10f3
fix issue when cleaning ENSG ids
OlivierCoen Jan 4, 2026
fae0fdb
increase default value of min_occurrence_quantile to 0.2
OlivierCoen Jan 4, 2026
50a0c1c
replace pandas by polars in remove_samples_not_valid.py
OlivierCoen Jan 5, 2026
2106da3
add log2 normalisation when computing tpm and cpm
OlivierCoen Jan 5, 2026
6e618d7
replace pandas by polars in quantile normalisation
OlivierCoen Jan 5, 2026
98d707a
change pandas to polars in compute_dataset_statistics.py
OlivierCoen Jan 5, 2026
5122121
big refactoring in order to better scale
OlivierCoen Jan 5, 2026
50472fe
pass nf-tests
OlivierCoen Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 14 additions & 14 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"name": "nfcore",
"image": "nfcore/gitpod:latest",
"remoteUser": "gitpod",
"runArgs": ["--privileged"],
"image": "nfcore/devcontainer:latest",

// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"python.defaultInterpreterPath": "/opt/conda/bin/python"
},
"remoteUser": "root",
"privileged": true,

// Add the IDs of extensions you want installed when the container is created.
"extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"]
}
"remoteEnv": {
// Workspace path on the host for mounting with docker-outside-of-docker
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
},

"onCreateCommand": "./.devcontainer/setup.sh",

"hostRequirements": {
"cpus": 4,
"memory": "16gb",
"storage": "32gb"
}
}
13 changes: 13 additions & 0 deletions .devcontainer/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/usr/bin/env bash

# Customise the terminal command prompt
echo "export PROMPT_DIRTRIM=2" >> $HOME/.bashrc
echo "export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] '" >> $HOME/.bashrc
export PROMPT_DIRTRIM=2
export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] '

# Update Nextflow
nextflow self-update

# Update welcome message
echo "Welcome to the nf-core/stableexpression devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt
37 changes: 0 additions & 37 deletions .editorconfig

This file was deleted.

2 changes: 1 addition & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ If you wish to contribute a new step, please use the following coding standards:
5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool).
6. Add sanity checks and validation for all relevant parameters.
7. Perform local tests to validate that the new code works as expected.
8. If applicable, add a new test command in `.github/workflow/ci.yml`.
8. If applicable, add a new test in the `tests` directory.
9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module.
10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`.

Expand Down
69 changes: 69 additions & 0 deletions .github/actions/get-shards/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: "Get number of shards"
description: "Get the number of nf-test shards for the current CI job"
inputs:
max_shards:
description: "Maximum number of shards allowed"
required: true
paths:
description: "Component paths to test"
required: false
tags:
description: "Tags to pass as argument for nf-test --tag parameter"
required: false
outputs:
shard:
description: "Array of shard numbers"
value: ${{ steps.shards.outputs.shard }}
total_shards:
description: "Total number of shards"
value: ${{ steps.shards.outputs.total_shards }}
runs:
using: "composite"
steps:
- name: Install nf-test
uses: nf-core/setup-nf-test@v1
with:
version: ${{ env.NFT_VER }}
- name: Get number of shards
id: shards
shell: bash
run: |
# Run nf-test with dynamic parameter
nftest_output=$(nf-test test \
--profile +docker \
$(if [ -n "${{ inputs.tags }}" ]; then echo "--tag ${{ inputs.tags }}"; fi) \
--dry-run \
--ci \
--changed-since HEAD^) || {
echo "nf-test command failed with exit code $?"
echo "Full output: $nftest_output"
exit 1
}
echo "nf-test dry-run output: $nftest_output"
# Default values for shard and total_shards
shard="[]"
total_shards=0
# Check if there are related tests
if echo "$nftest_output" | grep -q 'No tests to execute'; then
echo "No related tests found."
else
# Extract the number of related tests
number_of_shards=$(echo "$nftest_output" | sed -n 's|.*Executed \([0-9]*\) tests.*|\1|p')
if [[ -n "$number_of_shards" && "$number_of_shards" -gt 0 ]]; then
shards_to_run=$(( $number_of_shards < ${{ inputs.max_shards }} ? $number_of_shards : ${{ inputs.max_shards }} ))
shard=$(seq 1 "$shards_to_run" | jq -R . | jq -c -s .)
total_shards="$shards_to_run"
else
echo "Unexpected output format. Falling back to default values."
fi
fi
# Write to GitHub Actions outputs
echo "shard=$shard" >> $GITHUB_OUTPUT
echo "total_shards=$total_shards" >> $GITHUB_OUTPUT
# Debugging output
echo "Final shard array: $shard"
echo "Total number of shards: $total_shards"
111 changes: 111 additions & 0 deletions .github/actions/nf-test/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: "nf-test Action"
description: "Runs nf-test with common setup steps"
inputs:
profile:
description: "Profile to use"
required: true
shard:
description: "Shard number for this CI job"
required: true
total_shards:
description: "Total number of test shards(NOT the total number of matrix jobs)"
required: true
paths:
description: "Test paths"
required: true
tags:
description: "Tags to pass as argument for nf-test --tag parameter"
required: false
runs:
using: "composite"
steps:
- name: Setup Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "${{ env.NXF_VERSION }}"

- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
with:
python-version: "3.14"

- name: Install nf-test
uses: nf-core/setup-nf-test@v1
with:
version: "${{ env.NFT_VER }}"
install-pdiff: true

- name: Setup apptainer
if: contains(inputs.profile, 'singularity')
uses: eWaterCycle/setup-apptainer@main

- name: Set up Singularity
if: contains(inputs.profile, 'singularity')
shell: bash
run: |
mkdir -p $NXF_SINGULARITY_CACHEDIR
mkdir -p $NXF_SINGULARITY_LIBRARYDIR

- name: Conda setup
if: contains(inputs.profile, 'conda')
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3
with:
auto-update-conda: true
conda-solver: libmamba
channels: conda-forge
channel-priority: strict
conda-remove-defaults: true

- name: Run nf-test
shell: bash
env:
NFT_WORKDIR: ${{ env.NFT_WORKDIR }}
run: |
nf-test test \
--profile=+${{ inputs.profile }} \
$(if [ -n "${{ inputs.tags }}" ]; then echo "--tag ${{ inputs.tags }}"; fi) \
--ci \
--changed-since HEAD^ \
--verbose \
--tap=test.tap \
--shard ${{ inputs.shard }}/${{ inputs.total_shards }}

# Save the absolute path of the test.tap file to the output
echo "tap_file_path=$(realpath test.tap)" >> $GITHUB_OUTPUT

- name: Generate test summary
if: always()
shell: bash
run: |
# Add header if it doesn't exist (using a token file to track this)
if [ ! -f ".summary_header" ]; then
echo "# 🚀 nf-test results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Status | Test Name | Profile | Shard |" >> $GITHUB_STEP_SUMMARY
echo "|:------:|-----------|---------|-------|" >> $GITHUB_STEP_SUMMARY
touch .summary_header
fi

if [ -f test.tap ]; then
while IFS= read -r line; do
if [[ $line =~ ^ok ]]; then
test_name="${line#ok }"
# Remove the test number from the beginning
test_name="${test_name#* }"
echo "| ✅ | ${test_name} | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY
elif [[ $line =~ ^not\ ok ]]; then
test_name="${line#not ok }"
# Remove the test number from the beginning
test_name="${test_name#* }"
echo "| ❌ | ${test_name} | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY
fi
done < test.tap
else
echo "| ⚠️ | No test results found | ${{ inputs.profile }} | ${{ inputs.shard }}/${{ inputs.total_shards }} |" >> $GITHUB_STEP_SUMMARY
fi

- name: Clean up
if: always()
shell: bash
run: |
sudo rm -rf /home/ubuntu/tests/
16 changes: 8 additions & 8 deletions .github/workflows/awsfulltest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
run-platform:
name: Run AWS full tests
# run only if the PR is approved by at least 2 reviewers and against the master/main branch or manually triggered
if: github.repository == 'nf-core/stableexpression' && github.event.review.state == 'approved' && (github.event.pull_request.base.ref == 'master' || github.event.pull_request.base.ref == 'main') || github.event_name == 'workflow_dispatch'
if: github.repository == 'nf-core/stableexpression' && github.event.review.state == 'approved' && (github.event.pull_request.base.ref == 'master' || github.event.pull_request.base.ref == 'main') || github.event_name == 'workflow_dispatch' || github.event_name == 'release'
runs-on: ubuntu-latest
steps:
- name: Set revision variable
Expand All @@ -28,21 +28,21 @@ jobs:
# Add full size test data (but still relatively small datasets for few samples)
# on the `test_full.config` test runs with only one set of parameters
with:
workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
workspace_id: ${{ vars.TOWER_WORKSPACE_ID }}
access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
compute_env: ${{ vars.TOWER_COMPUTE_ENV }}
revision: ${{ steps.revision.outputs.revision }}
workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/stableexpression/work-${{ steps.revision.outputs.revision }}
workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/stableexpression/work-${{ steps.revision.outputs.revision }}
parameters: |
{
"hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}",
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/stableexpression/results-${{ steps.revision.outputs.revision }}"
"outdir": "s3://${{ vars.AWS_S3_BUCKET }}/stableexpression/results-${{ steps.revision.outputs.revision }}"
}
profiles: test_full

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: Seqera Platform debug log file
path: |
seqera_platform_action_*.log
seqera_platform_action_*.json
tower_action_*.log
tower_action_*.json
14 changes: 7 additions & 7 deletions .github/workflows/awstest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,20 @@ jobs:
- name: Launch workflow via Seqera Platform
uses: seqeralabs/action-tower-launch@v2
with:
workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
workspace_id: ${{ vars.TOWER_WORKSPACE_ID }}
access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
compute_env: ${{ vars.TOWER_COMPUTE_ENV }}
revision: ${{ github.sha }}
workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/stableexpression/work-${{ github.sha }}
workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/stableexpression/work-${{ github.sha }}
parameters: |
{
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/stableexpression/results-test-${{ github.sha }}"
"outdir": "s3://${{ vars.AWS_S3_BUCKET }}/stableexpression/results-test-${{ github.sha }}"
}
profiles: test

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: Seqera Platform debug log file
path: |
seqera_platform_action_*.log
seqera_platform_action_*.json
tower_action_*.log
tower_action_*.json
Loading