diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index adae0789..00b0a0d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,11 +5,18 @@ on: branches: - dev pull_request: + branches: + - dev + - master release: types: [published] workflow_dispatch: env: + NFT_DIFF: "pdiff" + NFT_DIFF_ARGS: "--line-numbers --expand-tabs=2" + NFT_VER: "0.9.2" + NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity @@ -20,28 +27,26 @@ concurrency: jobs: test: - name: "Run pipeline with test data (${{ matrix.NXF_VER }} | ${{ matrix.test_profile }} | ${{ matrix.compute_profile }})" + name: "${{ matrix.NXF_VER }} | ${{ matrix.test_profile }} | ${{ matrix.compute_profile }}" # Only run on push if this is the nf-core dev branch (merged PRs) if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/differentialabundance') }}" runs-on: ubuntu-latest strategy: + fail-fast: false matrix: NXF_VER: - "24.04.2" - "latest-everything" test_profile: - "test" - - "test_nogtf" - - "test_affy" - - "test_maxquant" - - "test_soft" - - "test_rnaseq_limma" + - "nogtf" + - "affy" + - "maxquant" + - "soft" + - "rnaseq_limma" compute_profile: - - "conda" - "docker" - "singularity" - test_name: - - "test" isMaster: - ${{ github.base_ref == 'master' }} # Exclude conda and singularity on dev @@ -53,6 +58,8 @@ jobs: steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + with: + fetch-depth: 0 - name: Set up Nextflow uses: nf-core/setup-nextflow@v2 @@ -87,6 +94,32 @@ jobs: - name: Clean up Disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.compute_profile }}" + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + architecture: "x64" + + - name: Install pdiff to see diff between nf-test snapshots run: | - nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.test_profile }},${{ matrix.compute_profile }} --outdir ./results + python -m pip install --upgrade pip + pip install pdiff + + - uses: nf-core/setup-nf-test@v1 + with: + version: ${{ env.NFT_VER }} + + - name: Run Tests (${{matrix.NXF_VER}} | ${{matrix.test_profile}} | ${{matrix.compute_profile}}) + run: | + nf-test test \ + --ci \ + --tag ${{matrix.test_profile}} \ + --profile "+${{ matrix.compute_profile }}" \ + --junitxml=test.xml \ + --debug + + - name: Publish Test Report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + report_paths: test.xml + annotate_only: true diff --git a/.gitignore b/.gitignore index a42ce016..9e307203 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ testing/ testing* *.pyc null/ +.nf-test +.nf-test.log diff --git a/CHANGELOG.md b/CHANGELOG.md index db83582f..93307b6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- [[#358](https://github.com/nf-core/differentialabundance/pull/358)] - Added software version check in nf-tests and gene biotype column check in `.Rmd` ([@atrigila](https://github.com/atrigila), review by [@pinin4fjords](https://github.com/pinin4fjords)) +- [[#345](https://github.com/nf-core/differentialabundance/pull/345)] - Plot differentially expressed genes by gene biotype ([@atrigila](https://github.com/atrigila), review by [@grst](https://github.com/grst)) +- [[#343](https://github.com/nf-core/differentialabundance/pull/343)] - Add pipeline-level nf-tests ([@atrigila](https://github.com/atrigila), review by [@pinin4fjords](https://github.com/pinin4fjords) and [@nschcolnicov](https://github.com/nschcolnicov)) - [[#286](https://github.com/nf-core/differentialabundance/pull/286)] - Integration of limma voom for rnaseq data ([@KamilMaliszArdigen](https://github.com/KamilMaliszArdigen), review by [@pinin4fjords](https://github.com/pinin4fjords)) +- [[#354](https://github.com/nf-core/differentialabundance/pull/354)] - Warning message within the R Markdown report to control when genes don't have annotation data ([@alanmmobbs93](https://github.com/alanmmobbs93)). Review by [@WackerO](https://github.com/WackerO) and [@pinin4fjords](https://github.com/pinin4fjords). - [[#325](https://github.com/nf-core/differentialabundance/pull/325)] - Integration of limma voom for rnaseq data with mixed models ([@KamilMaliszArdigen](https://github.com/KamilMaliszArdigen), review by [@pinin4fjords](https://github.com/pinin4fjords)) + ### Fixed +- [[#358](https://github.com/nf-core/differentialabundance/pull/358)] - Fixed nf-tests not running due to `--changed-since HEAD^`([@atrigila](https://github.com/atrigila), review by [@pinin4fjords](https://github.com/pinin4fjords)) +- [[#344](https://github.com/nf-core/differentialabundance/pull/344)] - Fixed replacement of NA sub-strings + ([@atrigila](https://github.com/atrigila), suggested by [@BEFH](https://github.com/BEFH), review by [@apeltzer](https://github.com/apeltzer) and [@nschcolnicov](https://github.com/nschcolnicov)) +- [[#342](https://github.com/nf-core/differentialabundance/pull/342)] - Fixed incorrectly colored dots in report volcano plots for logFC thresholds <1 ([@WackerO](https://github.com/WackerO), review by [@pinin4fjords](https://github.com/pinin4fjords)) +- [[#330](https://github.com/nf-core/differentialabundance/pull/330)] - Fixed broken docs by removing g:profiler colons ([@WackerO](https://github.com/WackerO), review by [@pinin4fjords](https://github.com/pinin4fjords)) - [[#304](https://github.com/nf-core/differentialabundance/pull/304)] - Removed TXT file options from nextflow_schema where they are equivalent to TSV to make the input files clearer ([@WackerO](https://github.com/WackerO), review by [@pinin4fjords](https://github.com/pinin4fjords)) - [[#299](https://github.com/nf-core/differentialabundance/pull/299)] - Add exclusions for 3.0.1 template update ([@pinin4fjords](https://github.com/pinin4fjords)) - [[#289](https://github.com/nf-core/differentialabundance/pull/289)] - Fix missing ch_gene_sets default for gprofiler2 ([@WackerO](https://github.com/WackerO), review by [@pinin4fjords](https://github.com/pinin4fjords)) @@ -22,6 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- [[#348](https://github.com/nf-core/differentialabundance/pull/348)] - Update test_full profile matrix file and indentation of profiles in nextflow.config ([@nschcolnicov](https://github.com/nschcolnicov), review by [@WackerO](https://github.com/WackerO) and [@pinin4fjords](https://github.com/pinin4fjords)) + ## v1.5.0 - 2024-05-08 ### `Added` diff --git a/assets/differentialabundance_report.Rmd b/assets/differentialabundance_report.Rmd index b13d321c..dc65e427 100644 --- a/assets/differentialabundance_report.Rmd +++ b/assets/differentialabundance_report.Rmd @@ -370,10 +370,13 @@ differential_files <- lapply(contrasts$id, function(d){ file.path(params$input_dir, paste0(gsub(' |;', '_', d), differential_file_suffix)) }) -differential_results <- lapply(differential_files, function(diff_file){ - if (! file.exists(diff_file)){ - stop(paste("Differential file", diff_file, "does not exist")) - } +# Initialize vector to store warning messages before merging tables +warnings_list <- c() + +# Read differential results and merge with features table +results <- lapply(differential_files, function(diff_file) { + if (!file.exists(diff_file)) stop(paste("Differential file", diff_file, "does not exist")) + diff <- read_differential( diff_file, feature_id_column = params$differential_feature_id_column, @@ -382,19 +385,49 @@ differential_results <- lapply(differential_files, function(diff_file){ qval_column = params$differential_qval_column ) - # If fold changes are not logged already, log them (we assume they're logged - # later on) - - if (! params$differential_foldchanges_logged){ + # Log transform fold changes if not already logged + if (!params$differential_foldchanges_logged) { diff[[params$differential_fc_column]] <- log2(diff[[params$differential_fc_column]]) } - # Annotate differential tables if possible - if (! is.null(params$features)){ - diff <- merge(features, diff, by.x = params$features_id_col, by.y = params$differential_feature_id_column) + # Annotate differential table if features table is provided + if (!is.null(params$features)) { + ## Merge Differential expression table on features table + merged <- merge(features, diff, by.x = params$features_id_col, by.y = params$differential_feature_id_column) + + ## Get number of missing rows + n_missing <- length(setdiff(diff[[params$differential_feature_id_column]], merged[[params$features_id_col]])) + + ## Create warnings if necessary + warnings <- c( + ## Missing IDs + if (n_missing > 0) sprintf( + '

WARNING: %d IDs from the differential table (%s) were lost on merge with features table (%s).

', + n_missing, basename(diff_file), basename(params$features) + ), + ## Check whether there are fewer rows, missing data + if (nrow(merged) < nrow(diff)) sprintf( + '

WARNING: Rows were lost on merge (%s -> %s). Original: %d, Merged: %d.

', + basename(diff_file), basename(params$features), nrow(diff), nrow(merged) + ), + ## Check whether there are more rows, possible duplications + if (nrow(merged) > nrow(diff)) sprintf( + '

WARNING: Rows were duplicated on merge (%s -> %s). Original: %d, Merged: %d.

', + basename(diff_file), basename(params$features), nrow(diff), nrow(merged) + ) + ) + } else { + merged <- diff + warnings <- character(0) } - diff + ## Collect results + list(diff_features = merged, warnings = warnings) }) + +# Separate differential_results and warnings_list from results +differential_results <- lapply(results, `[[`, "diff_features") +warnings_list <- unlist(lapply(results, `[[`, "warnings")) + names(differential_results) <- contrasts$id ``` @@ -726,7 +759,7 @@ iv_min_group_sizes <- unlist(lapply(informative_variables, function(x) min(table if (any(iv_min_group_sizes > 2)){ cat("\n### Outlier detection {.tabset}\n") - cat("\nOutlier detection based on [median absolute deviation](https://wiki.arrayserver.com/wiki/index.php?title=CorrelationQC.pdf) was undertaken, the outlier scoring is plotted below.\n") + cat("\nOutlier detection based on [median absolute deviation](https://archive.ph/o3thZ) was undertaken, the outlier scoring is plotted below. For more on MAD, see [this wiki article](https://en.wikipedia.org/wiki/Median_absolute_deviation).\n") } foo <- lapply(informative_variables[iv_min_group_sizes > 2], function(iv){ @@ -787,7 +820,6 @@ foo <- lapply(names(p_value_types), function(pvt){ ``` ```{r, echo=FALSE, results='asis', eval = FALSE} - differential_summary_string <- paste( paste( lapply( @@ -806,7 +838,13 @@ cat(differential_summary_string) ### Differential `r params$features_type` details -```{r, echo=FALSE, results='asis'} +```{r, echo=FALSE, results='asis', warning=FALSE, message=FALSE} + +# Display all warnings related to number of rows +if (length(warnings_list) > 0) { + for (warning in warnings_list) { cat(warning) } +} + for (i in 1:nrow(contrasts)){ cat("\n#### ", contrast_descriptions[i], " {.tabset}\n") @@ -833,7 +871,7 @@ for (i in 1:nrow(contrasts)){ cat("\n##### ", pvt, " p values\n") pval_column <- p_value_types[[pvt]] - de_fc <- abs(full_de[[params$differential_fc_column]]) >= log2(params$differential_min_fold_change) + de_fc <- abs(full_de[[params$differential_fc_column]]) >= abs(log2(params$differential_min_fold_change)) de_fc_label <- paste("abs(logFC) >=", log2(params$differential_min_fold_change)) de_pval <- full_de[[pval_column]] <= p_value_thresholds[[pvt]] @@ -895,6 +933,28 @@ for (i in 1:nrow(contrasts)){ if (nrow(contrast_de) > 0){ contrast_de <- round_dataframe_columns(contrast_de, digits=params$report_round_digits) print( htmltools::tagList(datatable(contrast_de, caption = paste('Differential genes', dir, 'in', contrast_descriptions[i], " (check", differential_files[[i]], "for more detail)"), rownames = FALSE) )) + + if ("Gene biotype" %in% colnames(contrast_de)) { + # Plot Differentially Expressed Genes by Gene Biotype + gene_biotype_table <- contrast_de %>% + group_by(`Gene biotype`) %>% + summarise(count = dplyr::n(), .groups = 'drop') %>% + filter(count > 0) %>% + arrange(desc(count)) + + gene_biotype_plot <- ggplot(gene_biotype_table, aes(x = reorder(`Gene biotype`, -count), y = count)) + + geom_bar(stat = "identity", position = position_dodge()) + + labs( + title = paste0("Differentially Expressed Genes by Gene Biotype (", dir, ")"), + x = "Gene Biotype", + y = "Number of Differentially Expressed Genes" ) + + theme_minimal() + + theme(axis.text.x = element_text(angle = 45, hjust = 1)) + + print(gene_biotype_plot) + } else { + cat("Column 'Gene biotype' does not exist. Skipping plot.\n") + } }else{ cat(paste0("No significantly differential '", dir, "' genes.\n\n")) } diff --git a/conf/test_full.config b/conf/test_full.config index dcc87126..1ae41281 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -17,7 +17,7 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/differentialabundance/testdata/rnaseq_featurecounts_sample_preparations.tsv' contrasts = 'https://raw.githubusercontent.com/nf-core/test-datasets/differentialabundance/testdata/rnaseq_featurecounts_contrast_file.csv' - matrix = 'https://raw.githubusercontent.com/nf-core/test-datasets/differentialabundance/testdata/rnaseq_featurecounts_merged_gene_counts.txt' + matrix = 'https://raw.githubusercontent.com/nf-core/test-datasets/differentialabundance/testdata/rnaseq_featurecounts_merged_gene_counts.tsv' gtf = 'https://ftp.ensembl.org/pub/release-81/gtf/mus_musculus/Mus_musculus.GRCm38.81.gtf.gz' // Configure inputs diff --git a/docs/usage.md b/docs/usage.md index 3909b0e9..7364d837 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -286,16 +286,16 @@ Currently, two tools can be used to do gene set enrichment analysis. --gene_sets_files gene_sets.gmt ``` -### g:Profiler +### gProfiler2 -The [gprofiler2](https://cran.r-project.org/web/packages/gprofiler2/vignettes/gprofiler2.html) package can be used to test which pathways are enriched in the sets of differential genes produced by the the DESeq2 or limma modules. It is an R interface for the g:Profiler webtool. In the simplest form, this feature can be enabled with the parameters from the following example: +The [gprofiler2](https://cran.r-project.org/web/packages/gprofiler2/vignettes/gprofiler2.html) package can be used to test which pathways are enriched in the sets of differential genes produced by the the DESeq2 or limma modules. It is an R interface for the gprofiler webtool. In the simplest form, this feature can be enabled with the parameters from the following example: ```bash --gprofiler2_run true \ --gprofiler2_organism mmusculus ``` -If gene sets have been specified to the workflow via `--gene_sets_files` these are used by default. Specifying `--gprofiler2_organism` (mmusculus for Mus musculus, hsapiens for Homo sapiens etc.) will override those gene sets with g:profiler's own for the relevant species. `--gprofiler2_token` will override both options and use gene sets from a previous g:profiler run. +If gene sets have been specified to the workflow via `--gene_sets_files` these are used by default. Specifying `--gprofiler2_organism` (mmusculus for Mus musculus, hsapiens for Homo sapiens etc.) will override those gene sets with gprofiler's own for the relevant species. `--gprofiler2_token` will override both options and use gene sets from a previous gprofiler run. By default the analysis will be run with a background list of genes that passed the abundance filter (i.e. those genes that actually had some expression); see for example https://doi.org/10.1186/s13059-015-0761-7 for why this is advisable. You can provide your own background list with `--gprofiler2_background_file background.txt`or if you want to not use any background, set `--gprofiler2_background_file false`. diff --git a/nextflow.config b/nextflow.config index a22e6736..230100ac 100644 --- a/nextflow.config +++ b/nextflow.config @@ -324,18 +324,18 @@ profiles { executor.cpus = 4 executor.memory = 8.GB } - test { includeConfig 'conf/test.config' } - test_nogtf { includeConfig 'conf/test_nogtf.config' } - test_full { includeConfig 'conf/test_full.config' } - affy { includeConfig 'conf/affy.config' } - maxquant { includeConfig 'conf/maxquant.config' } - rnaseq { includeConfig 'conf/rnaseq.config' } - rnaseq_limma { includeConfig 'conf/rnaseq_limma.config' } + test { includeConfig 'conf/test.config' } + test_nogtf { includeConfig 'conf/test_nogtf.config' } + test_full { includeConfig 'conf/test_full.config' } + affy { includeConfig 'conf/affy.config' } + maxquant { includeConfig 'conf/maxquant.config' } + rnaseq { includeConfig 'conf/rnaseq.config' } + rnaseq_limma { includeConfig 'conf/rnaseq_limma.config' } test_rnaseq_limma { includeConfig 'conf/test_rnaseq_limma.config' } - soft {includeConfig 'conf/soft.config'} - test_affy { includeConfig 'conf/test_affy.config' } - test_maxquant { includeConfig 'conf/test_maxquant.config' } - test_soft {includeConfig 'conf/test_soft.config' } + soft { includeConfig 'conf/soft.config' } + test_affy { includeConfig 'conf/test_affy.config' } + test_maxquant { includeConfig 'conf/test_maxquant.config' } + test_soft { includeConfig 'conf/test_soft.config' } } // Load nf-core custom profiles from different Institutions diff --git a/nextflow_schema.json b/nextflow_schema.json index 96aa5a5c..70af98c8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -373,7 +373,7 @@ "exploratory_mad_threshold": { "type": "integer", "default": -5, - "help_text": "MAD = median absolute deviation. A threshold on this value is used to define observations (samples) as outliers, or not, in exploratory plots. Based on the definition at https://wiki.arrayserver.com/wiki/index.php?title=CorrelationQC.pdf. ", + "help_text": "MAD = median absolute deviation. A threshold on this value is used to define observations (samples) as outliers, or not, in exploratory plots. Based on the definition at https://archive.ph/o3thZ. For more on MAD, see https://en.wikipedia.org/wiki/Median_absolute_deviation.", "description": "Threshold on MAD score for outlier identification", "fa_icon": "fas fa-angry" }, diff --git a/nf-test.config b/nf-test.config new file mode 100644 index 00000000..2884650d --- /dev/null +++ b/nf-test.config @@ -0,0 +1,20 @@ +config { + // location for all nf-tests + testsDir "tests" + + // nf-test directory including temporary files for each test + workDir ".nf-test" + + // location of library folder that is added automatically to the classpath + libDir "tests/pipeline/lib/" + + // location of an optional nextflow.config file specific for executing tests + configFile "nextflow.config" + + // run all test with the defined docker profile from the main nextflow.config + profile "docker" + + plugins { + load "nft-utils@0.0.3" + } +} diff --git a/tests/.nftignore b/tests/.nftignore new file mode 100644 index 00000000..cfb2b95c --- /dev/null +++ b/tests/.nftignore @@ -0,0 +1,15 @@ +pipeline_info/*.{html,json,txt,yml} +report/gsea/**/*.symbols.pvalues_vs_nes_plot.png +report/gsea/**/*.symbols.gset_rnd_es_dist_5.png +report/gsea/**/*butterfly_plot.png +report/gsea/**/*.gsea_report_for_hND6.tsv +report/gsea/**/*.symbols.Gsea.rpt +report/gsea/**/*.html +report/gsea/phenotype_uninvolved_lesional/**/*.png +report/gsea/**/phenotype_uninvolved_lesional.*.gsea_report_for_*.tsv +report/*.html +report/*.zip +*html +shinyngs_app/**/data.rds +report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_GLYCOLYSIS.{html,tsv} +report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_P53_PATHWAY.{html,tsv} diff --git a/tests/test.nf.test b/tests/test.nf.test new file mode 100644 index 00000000..744dc9c5 --- /dev/null +++ b/tests/test.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (test)" + script "../main.nf" + profile "+test" + tag "test" + tag "pipeline" + + test("Test profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test.nf.test.snap b/tests/test.nf.test.snap new file mode 100644 index 00000000..c270c2f6 --- /dev/null +++ b/tests/test.nf.test.snap @@ -0,0 +1,191 @@ +{ + "Test profile": { + "content": [ + 21, + { + "DESEQ2_DIFFERENTIAL": { + "r-base": "4.1.3", + "bioconductor-deseq2": "1.34.0" + }, + "GSEA_GSEA": { + "gsea": "4.3.2" + }, + "GTF_TO_TABLE": { + "atlas-gene-annotation-manipulation": "1.1.1" + }, + "GUNZIP_GTF": { + "gunzip": 1.1 + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "TABULAR_TO_GSEA_CHIP": { + "bash": "4.2.25 3" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/deseq2", + "other/deseq2/treatment_mCherry_hND6_.dds.rld.rds", + "other/deseq2/treatment_mCherry_hND6_.deseq2.sizefactors.tsv", + "other/deseq2/treatment_mCherry_hND6_sample_number.dds.rld.rds", + "other/deseq2/treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/treatment_mCherry_hND6_", + "plots/differential/treatment_mCherry_hND6_/png", + "plots/differential/treatment_mCherry_hND6_/png/volcano.png", + "plots/differential/treatment_mCherry_hND6_sample_number", + "plots/differential/treatment_mCherry_hND6_sample_number/png", + "plots/differential/treatment_mCherry_hND6_sample_number/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/treatment", + "plots/exploratory/treatment/png", + "plots/exploratory/treatment/png/boxplot.png", + "plots/exploratory/treatment/png/density.png", + "plots/exploratory/treatment/png/mad_correlation.png", + "plots/exploratory/treatment/png/pca2d.png", + "plots/exploratory/treatment/png/pca3d.png", + "plots/exploratory/treatment/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/qc", + "plots/qc/treatment_mCherry_hND6_.deseq2.dispersion.png", + "plots/qc/treatment_mCherry_hND6_sample_number.deseq2.dispersion.png", + "report", + "report/SRP254919.html", + "report/SRP254919.zip", + "report/gsea", + "report/gsea/treatment_mCherry_hND6_", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Gsea.rpt", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.butterfly_plot.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.global_es_histogram.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gset_rnd_es_dist_5.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_1.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_corr_plot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.index.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.neg_snapshot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.pos_snapshot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.pvalues_vs_nes_plot.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png", + "report/gsea/treatment_mCherry_hND6_sample_number", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Gsea.rpt", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.butterfly_plot.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.global_es_histogram.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gset_rnd_es_dist_5.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_1.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_corr_plot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.index.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.neg_snapshot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.pos_snapshot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.pvalues_vs_nes_plot.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png", + "shinyngs_app", + "shinyngs_app/SRP254919", + "shinyngs_app/SRP254919/app.R", + "shinyngs_app/SRP254919/data.rds", + "shinyngs_app/versions.yml", + "tables", + "tables/annotation", + "tables/annotation/Mus_musculus.anno.tsv", + "tables/differential", + "tables/differential/treatment_mCherry_hND6_.deseq2.results.tsv", + "tables/differential/treatment_mCherry_hND6_.deseq2.results_filtered.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.deseq2.results.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.deseq2.results_filtered.tsv", + "tables/processed_abundance", + "tables/processed_abundance/all.normalised_counts.tsv", + "tables/processed_abundance/all.vst.tsv" + ], + [ + "treatment_mCherry_hND6_.dds.rld.rds:md5,dfe51910e230ae9cc2bc9fa5651666ba", + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,0703c421c53b260f91568dfc0436c054", + "treatment_mCherry_hND6_sample_number.dds.rld.rds:md5,54d956233af15c43d48f09bb012a7d7e", + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,0703c421c53b260f91568dfc0436c054", + "volcano.png:md5,32d82a790e028f9476972a7f38190430", + "volcano.png:md5,592d4a7d9c40761c185d4f81922ca23b", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,776cdc3ee4e25b348ab0625213c6168f", + "density.png:md5,e70cb3d293f0823d12bb028bba8746a2", + "mad_correlation.png:md5,25d424021ef2bac231cb0d1b13cc1728", + "pca2d.png:md5,af05a9aed66f321b0d266d9c8fba84cc", + "pca3d.png:md5,3f2a80315f56a779dc95b32a682d0e42", + "sample_dendrogram.png:md5,ad6c58adf67436d69d390e0a7665b3e4", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "treatment_mCherry_hND6_.deseq2.dispersion.png:md5,dbe3720197761f3862d568879aa63977", + "treatment_mCherry_hND6_sample_number.deseq2.dispersion.png:md5,06d071c32b90ddec7c8d37728730d7f4", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv:md5,efd220be2b0215645dbf6a517ef1b5bf", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png:md5,c1953f2787972171746a358e0ed2cb17", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv:md5,e000a1b93ebbb7eb347d9ce666fd5e26", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png:md5,93aeaf605ce766a6a5fec954035d91b5", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv:md5,e3049abd72c25ff6d7cd75b14135d245", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.global_es_histogram.png:md5,644895110df73cc6af88ffe2457da33b", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv:md5,ce8792382ae299749445767ff16aaecc", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_1.png:md5,a14c4be775eb8a8c6deba857f5e2ce52", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv:md5,30cfd08715168536aab8a088009d3bc4", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png:md5,07e580fa86de237281de6a59b4d84716", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv:md5,efd220be2b0215645dbf6a517ef1b5bf", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png:md5,c1953f2787972171746a358e0ed2cb17", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv:md5,e000a1b93ebbb7eb347d9ce666fd5e26", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png:md5,93aeaf605ce766a6a5fec954035d91b5", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv:md5,e3049abd72c25ff6d7cd75b14135d245", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.global_es_histogram.png:md5,644895110df73cc6af88ffe2457da33b", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv:md5,ce8792382ae299749445767ff16aaecc", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_1.png:md5,a14c4be775eb8a8c6deba857f5e2ce52", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv:md5,30cfd08715168536aab8a088009d3bc4", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png:md5,07e580fa86de237281de6a59b4d84716", + "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", + "versions.yml:md5,892774f9d56ba10c8646736b7f777ecc", + "Mus_musculus.anno.tsv:md5,c1d7f21e64bd00f845ec6545c123a1fb", + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,42ad391a5d3b2e4e7931af3088cc6400", + "treatment_mCherry_hND6_.deseq2.results_filtered.tsv:md5,cd67e101a9f0edf196ee0cd8491f8774", + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,b41cbaacd04a25b45295f3f987ff7500", + "treatment_mCherry_hND6_sample_number.deseq2.results_filtered.tsv:md5,98fa3ec0992859d2a524ecce1259f0ed", + "all.normalised_counts.tsv:md5,1d7ad0c02b483f2eff1a5b357a74d011", + "all.vst.tsv:md5,a08d06d3c3218619b7bd85beead467bd" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:24:54.504828126" + } +} \ No newline at end of file diff --git a/tests/test_affy.nf.test b/tests/test_affy.nf.test new file mode 100644 index 00000000..5fab9052 --- /dev/null +++ b/tests/test_affy.nf.test @@ -0,0 +1,40 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (affy)" + script "../main.nf" + profile "+test_affy" + tag "affy" + tag "pipeline" + + test("Test affy profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}', + 'report/gsea/phenotype_uninvolved_lesional/**/*.png', + 'report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_GLYCOLYSIS.{html,tsv}', + 'report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_P53_PATHWAY.{html,tsv}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_affy.nf.test.snap b/tests/test_affy.nf.test.snap new file mode 100644 index 00000000..0e0ffd60 --- /dev/null +++ b/tests/test_affy.nf.test.snap @@ -0,0 +1,245 @@ +{ + "Test affy profile": { + "content": [ + 16, + { + "AFFY_JUSTRMA_RAW": { + "r-base": "4.3.1", + "bioconductor-affy": "1.78.0" + }, + "GSEA_GSEA": { + "gsea": "4.3.2" + }, + "LIMMA_DIFFERENTIAL": { + "r-base": "4.3.3", + "bioconductor-limma": "3.58.1" + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "TABULAR_TO_GSEA_CHIP": { + "bash": "4.2.25 3" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/affy", + "other/affy/raw.eset.rds", + "other/limma", + "other/limma/phenotype_uninvolved_lesional.MArrayLM.limma.rds", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/phenotype_uninvolved_lesional", + "plots/differential/phenotype_uninvolved_lesional/png", + "plots/differential/phenotype_uninvolved_lesional/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/phenotype", + "plots/exploratory/phenotype/png", + "plots/exploratory/phenotype/png/boxplot.png", + "plots/exploratory/phenotype/png/density.png", + "plots/exploratory/phenotype/png/mad_correlation.png", + "plots/exploratory/phenotype/png/pca2d.png", + "plots/exploratory/phenotype/png/pca3d.png", + "plots/exploratory/phenotype/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/qc", + "plots/qc/phenotype_uninvolved_lesional.limma.mean_difference.png", + "report", + "report/GSE50790.html", + "report/GSE50790.zip", + "report/gsea", + "report/gsea/phenotype_uninvolved_lesional", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.Gsea.rpt", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ADIPOGENESIS.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ADIPOGENESIS.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ALLOGRAFT_REJECTION.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ALLOGRAFT_REJECTION.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ANDROGEN_RESPONSE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ANDROGEN_RESPONSE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APICAL_JUNCTION.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APICAL_JUNCTION.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APOPTOSIS.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APOPTOSIS.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_BILE_ACID_METABOLISM.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_BILE_ACID_METABOLISM.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_CHOLESTEROL_HOMEOSTASIS.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_CHOLESTEROL_HOMEOSTASIS.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_COMPLEMENT.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_COMPLEMENT.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_DNA_REPAIR.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_DNA_REPAIR.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_E2F_TARGETS.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_E2F_TARGETS.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ESTROGEN_RESPONSE_EARLY.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ESTROGEN_RESPONSE_EARLY.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_FATTY_ACID_METABOLISM.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_FATTY_ACID_METABOLISM.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_G2M_CHECKPOINT.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_G2M_CHECKPOINT.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL2_STAT5_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL2_STAT5_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL6_JAK_STAT3_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL6_JAK_STAT3_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INFLAMMATORY_RESPONSE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INFLAMMATORY_RESPONSE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_ALPHA_RESPONSE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_ALPHA_RESPONSE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_GAMMA_RESPONSE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_GAMMA_RESPONSE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_KRAS_SIGNALING_DN.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MITOTIC_SPINDLE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MITOTIC_SPINDLE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MTORC1_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MTORC1_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V1.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V1.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V2.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V2.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYOGENESIS.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYOGENESIS.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_NOTCH_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_NOTCH_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_OXIDATIVE_PHOSPHORYLATION.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_OXIDATIVE_PHOSPHORYLATION.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PEROXISOME.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PEROXISOME.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PROTEIN_SECRETION.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PROTEIN_SECRETION.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_REACTIVE_OXYGEN_SPECIES_PATHWAY.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_REACTIVE_OXYGEN_SPECIES_PATHWAY.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TGF_BETA_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TGF_BETA_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TNFA_SIGNALING_VIA_NFKB.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TNFA_SIGNALING_VIA_NFKB.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UNFOLDED_PROTEIN_RESPONSE.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UNFOLDED_PROTEIN_RESPONSE.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UV_RESPONSE_DN.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UV_RESPONSE_DN.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_WNT_BETA_CATENIN_SIGNALING.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_WNT_BETA_CATENIN_SIGNALING.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.Symbol_to_probe_set_mapping_details.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gene_set_sizes.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gsea_report_for_lesional.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gsea_report_for_lesional.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gsea_report_for_uninvolved.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gsea_report_for_uninvolved.tsv", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.heat_map_corr_plot.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.index.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.neg_snapshot.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.pos_snapshot.html", + "report/gsea/phenotype_uninvolved_lesional/h.all.v2022.1.Hs.symbols/phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.ranked_gene_list_lesional_versus_uninvolved.tsv", + "shinyngs_app", + "shinyngs_app/GSE50790", + "shinyngs_app/GSE50790/app.R", + "shinyngs_app/GSE50790/data.rds", + "shinyngs_app/versions.yml", + "tables", + "tables/annotation", + "tables/annotation/hgu133plus2.annotation.tsv", + "tables/differential", + "tables/differential/phenotype_uninvolved_lesional.limma.results.tsv", + "tables/differential/phenotype_uninvolved_lesional.limma.results_filtered.tsv", + "tables/processed_abundance", + "tables/processed_abundance/normalised.matrix.tsv", + "tables/processed_abundance/raw.matrix.tsv", + "untar", + "untar/GSE50790", + "untar/GSE50790/GSM1229341_Gudjohnsson_001_6690_PP.CEL.gz", + "untar/GSE50790/GSM1229342_Gudjohnsson_002_6690_PN.CEL.gz", + "untar/GSE50790/GSM1229343_Gudjohnsson_003_7450_PN.CEL.gz", + "untar/GSE50790/GSM1229344_Gudjohnsson_004_7450_PP.CEL.gz", + "untar/GSE50790/GSM1229345_Gudjohnsson_005_7912_PP.CEL.gz", + "untar/GSE50790/GSM1229346_Gudjohnsson_006_7912_PN.CEL.gz", + "untar/GSE50790/GSM1229347_Gudjohnsson_007_8470_PP.CEL.gz", + "untar/GSE50790/GSM1229348_Gudjohnsson_008_8470_PN.CEL.gz" + ], + [ + "raw.eset.rds:md5,8c6c7807ce6c5d8204bd681b941eeb0f", + "phenotype_uninvolved_lesional.MArrayLM.limma.rds:md5,b5ef9fc63c87a83bf925f9284d83663f", + "volcano.png:md5,d4381dd34786c58e25b8e4ed1fa8bf26", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,552c6cf37521fae8170368e3adb4da80", + "density.png:md5,efbe403d45cb8c020b93577c49b288a9", + "mad_correlation.png:md5,2d448f4560bde14a1c56b42f8d9030ca", + "pca2d.png:md5,38cf71613192a86a72c44294b885aa41", + "pca3d.png:md5,1aa274734110ab804ce6503e5f555c85", + "sample_dendrogram.png:md5,69e00857f24a2aa4c02042bdb87d4fd8", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "phenotype_uninvolved_lesional.limma.mean_difference.png:md5,570bc62fbad15b7b25eaea786a416ace", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ADIPOGENESIS.tsv:md5,6dcf05651f6b0386fe089eaa421c3127", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ALLOGRAFT_REJECTION.tsv:md5,e9dd4c2530785273c996dbf8e989e4cb", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ANDROGEN_RESPONSE.tsv:md5,ed31e69bedf9bfdef793db64f60e0e3d", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APICAL_JUNCTION.tsv:md5,b7ffdef669d6e8a7d6065b0ee4d94f08", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_APOPTOSIS.tsv:md5,6ce114c47b7c57eb2713e7b193b42561", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_BILE_ACID_METABOLISM.tsv:md5,802fc042c26bdcabe683df4597c0086e", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_CHOLESTEROL_HOMEOSTASIS.tsv:md5,6cf88fbf37fc53d31d7731635703d73b", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_COMPLEMENT.tsv:md5,a928545b2651eb1978899a89c2a039f6", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_DNA_REPAIR.tsv:md5,ae2479a57c448a887af0d356b404601c", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_E2F_TARGETS.tsv:md5,3e9cb1309eef19fe0bbe6918ce2bb1f2", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_ESTROGEN_RESPONSE_EARLY.tsv:md5,695b5bd61210e9fd4e76993cee00c63d", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_FATTY_ACID_METABOLISM.tsv:md5,cb069d05610994d1e43ea84de165bcd0", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_G2M_CHECKPOINT.tsv:md5,09eba22af78006f69a9d0cb1bee27331", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL2_STAT5_SIGNALING.tsv:md5,38824ee08434a02049cf7f57c43545d5", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_IL6_JAK_STAT3_SIGNALING.tsv:md5,ab80e349a52b1b17d350d488d552f2b6", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INFLAMMATORY_RESPONSE.tsv:md5,99983d81cd0ee6bc9c5e078ea311147c", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_ALPHA_RESPONSE.tsv:md5,0ae74dbc3afa49b86418a819bf69e431", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_INTERFERON_GAMMA_RESPONSE.tsv:md5,3ebd3f6f7a503344dc241c9477bf5716", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv:md5,938d36847cf76e8c21701685f94b66b8", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MITOTIC_SPINDLE.tsv:md5,b65a1c48b013bca7fbee8ad817d7765d", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MTORC1_SIGNALING.tsv:md5,a0ccd62aae522f2639efd92f0da80c38", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V1.tsv:md5,8d3bc922ce0fad0eaa2d559cea0c93f1", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYC_TARGETS_V2.tsv:md5,86a9ffb8afabb8f2b5250455dffd1c80", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_MYOGENESIS.tsv:md5,332f9386161436cd69d4b830e0f392d6", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_NOTCH_SIGNALING.tsv:md5,53bc5acac191f31dcdbfe62fcf396358", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_OXIDATIVE_PHOSPHORYLATION.tsv:md5,faab3d7cea1ff32b5c224587246ad34e", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PEROXISOME.tsv:md5,66a120807b07d920c876b65b3925264c", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_PROTEIN_SECRETION.tsv:md5,d13300c61a1e99a0b05ef18fac74c42d", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_REACTIVE_OXYGEN_SPECIES_PATHWAY.tsv:md5,33429d1e3f2342c6c0e7b499035bd8da", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TGF_BETA_SIGNALING.tsv:md5,628b415522f9430bcc297e84e54ddd27", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_TNFA_SIGNALING_VIA_NFKB.tsv:md5,fa440cf1e030098632f5bd177a5f4abe", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UNFOLDED_PROTEIN_RESPONSE.tsv:md5,28f52aea571329ffeac92487bb728601", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_UV_RESPONSE_DN.tsv:md5,ee52c4c5f2063b0d1aabdf6301651a83", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.HALLMARK_WNT_BETA_CATENIN_SIGNALING.tsv:md5,4f11dba4f7cbc92f589bef27c182d91d", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.Symbol_to_probe_set_mapping_details.tsv:md5,a619edb7acb1a0208389f7faf35eb30c", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.gene_set_sizes.tsv:md5,77b53b0ca686ede9fe15ca448340f9f5", + "phenotype_uninvolved_lesional.h.all.v2022.1.Hs.symbols.ranked_gene_list_lesional_versus_uninvolved.tsv:md5,72dfaeff534ba9a2b32f63524e835dc4", + "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", + "versions.yml:md5,892774f9d56ba10c8646736b7f777ecc", + "hgu133plus2.annotation.tsv:md5,f2b82ef12b2a2e8e575de06766583d96", + "phenotype_uninvolved_lesional.limma.results.tsv:md5,686e871be0f1b435e161f84f6518cfc3", + "phenotype_uninvolved_lesional.limma.results_filtered.tsv:md5,f7f9f8914173ecb4a9af2d35afd62aae", + "normalised.matrix.tsv:md5,68d849e627d86095cfb48eba81c09853", + "raw.matrix.tsv:md5,ea5cccce75c3a9a5d2aab3e3a19910ad", + "GSM1229341_Gudjohnsson_001_6690_PP.CEL.gz:md5,259d0908211a071351450f366fd51cad", + "GSM1229342_Gudjohnsson_002_6690_PN.CEL.gz:md5,31cc2b8b26e210760b8ebd4b304b52ba", + "GSM1229343_Gudjohnsson_003_7450_PN.CEL.gz:md5,713a3ca75a883cbff6da0be7bd251422", + "GSM1229344_Gudjohnsson_004_7450_PP.CEL.gz:md5,6f9b8815282bd0fd51c575145acf08cb", + "GSM1229345_Gudjohnsson_005_7912_PP.CEL.gz:md5,69c709ce4ede2b85c931a903b3805d60", + "GSM1229346_Gudjohnsson_006_7912_PN.CEL.gz:md5,e05ae9fab96c299416878c4cbbd74327", + "GSM1229347_Gudjohnsson_007_8470_PP.CEL.gz:md5,951ce488dd3baf0141e6eabc233bd8c7", + "GSM1229348_Gudjohnsson_008_8470_PN.CEL.gz:md5,ec5129e035badf3b670178d53e24f0cc" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:29:47.480048632" + } +} \ No newline at end of file diff --git a/tests/test_maxquant.nf.test b/tests/test_maxquant.nf.test new file mode 100644 index 00000000..a9c7cc7f --- /dev/null +++ b/tests/test_maxquant.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (maxquant)" + script "../main.nf" + profile "+test_maxquant" + tag "maxquant" + tag "pipeline" + + test("Test maxquant profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_maxquant.nf.test.snap b/tests/test_maxquant.nf.test.snap new file mode 100644 index 00000000..3782d8e2 --- /dev/null +++ b/tests/test_maxquant.nf.test.snap @@ -0,0 +1,178 @@ +{ + "Test maxquant profile": { + "content": [ + 20, + { + "LIMMA_DIFFERENTIAL": { + "r-base": "4.3.3", + "bioconductor-limma": "3.58.1" + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "PROTEUS": { + "r-base": "4.2.1", + "r-proteus-bartongroup": "0.2.16", + "r-plotly": "4.10.2", + "bioconductor-limma": "3.54.0" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/limma", + "other/limma/fakebatch_fakeBatch_b1_b2.MArrayLM.limma.rds", + "other/limma/genotype_celltype_t1_FoB.MArrayLM.limma.rds", + "other/limma/genotype_celltype_t1_MZ_fakeBatch.MArrayLM.limma.rds", + "other/limma/genotype_celltype_t1_t2.MArrayLM.limma.rds", + "other/proteus", + "other/proteus/Celltype", + "other/proteus/Celltype/normalizeMedian.normalized_proteingroups.rds", + "other/proteus/Celltype/raw_proteingroups.rds", + "other/proteus/R_sessionInfo.log", + "other/proteus/fakeBatch", + "other/proteus/fakeBatch/normalizeMedian.normalized_proteingroups.rds", + "other/proteus/fakeBatch/raw_proteingroups.rds", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/fakebatch_fakeBatch_b1_b2", + "plots/differential/fakebatch_fakeBatch_b1_b2/png", + "plots/differential/fakebatch_fakeBatch_b1_b2/png/volcano.png", + "plots/differential/genotype_celltype_t1_FoB", + "plots/differential/genotype_celltype_t1_FoB/png", + "plots/differential/genotype_celltype_t1_FoB/png/volcano.png", + "plots/differential/genotype_celltype_t1_MZ_fakeBatch", + "plots/differential/genotype_celltype_t1_MZ_fakeBatch/png", + "plots/differential/genotype_celltype_t1_MZ_fakeBatch/png/volcano.png", + "plots/differential/genotype_celltype_t1_t2", + "plots/differential/genotype_celltype_t1_t2/png", + "plots/differential/genotype_celltype_t1_t2/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/Celltype", + "plots/exploratory/Celltype/png", + "plots/exploratory/Celltype/png/boxplot.png", + "plots/exploratory/Celltype/png/density.png", + "plots/exploratory/Celltype/png/mad_correlation.png", + "plots/exploratory/Celltype/png/pca2d.png", + "plots/exploratory/Celltype/png/pca3d.png", + "plots/exploratory/Celltype/png/sample_dendrogram.png", + "plots/exploratory/fakeBatch", + "plots/exploratory/fakeBatch/png", + "plots/exploratory/fakeBatch/png/boxplot.png", + "plots/exploratory/fakeBatch/png/density.png", + "plots/exploratory/fakeBatch/png/mad_correlation.png", + "plots/exploratory/fakeBatch/png/pca2d.png", + "plots/exploratory/fakeBatch/png/pca3d.png", + "plots/exploratory/fakeBatch/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/proteus", + "plots/proteus/Celltype", + "plots/proteus/Celltype/normalizeMedian.normalized_dendrogram.png", + "plots/proteus/Celltype/normalizeMedian.normalized_distributions.png", + "plots/proteus/Celltype/normalizeMedian.normalized_mean_variance_relationship.png", + "plots/proteus/Celltype/raw_distributions.png", + "plots/proteus/fakeBatch", + "plots/proteus/fakeBatch/normalizeMedian.normalized_dendrogram.png", + "plots/proteus/fakeBatch/normalizeMedian.normalized_distributions.png", + "plots/proteus/fakeBatch/normalizeMedian.normalized_mean_variance_relationship.png", + "plots/proteus/fakeBatch/raw_distributions.png", + "plots/qc", + "plots/qc/fakebatch_fakeBatch_b1_b2.limma.mean_difference.png", + "plots/qc/genotype_celltype_t1_FoB.limma.mean_difference.png", + "plots/qc/genotype_celltype_t1_MZ_fakeBatch.limma.mean_difference.png", + "plots/qc/genotype_celltype_t1_t2.limma.mean_difference.png", + "report", + "report/PXD043349.html", + "report/PXD043349.zip", + "tables", + "tables/differential", + "tables/differential/fakebatch_fakeBatch_b1_b2.limma.results.tsv", + "tables/differential/fakebatch_fakeBatch_b1_b2.limma.results_filtered.tsv", + "tables/differential/genotype_celltype_t1_FoB.limma.results.tsv", + "tables/differential/genotype_celltype_t1_FoB.limma.results_filtered.tsv", + "tables/differential/genotype_celltype_t1_MZ_fakeBatch.limma.results.tsv", + "tables/differential/genotype_celltype_t1_MZ_fakeBatch.limma.results_filtered.tsv", + "tables/differential/genotype_celltype_t1_t2.limma.results.tsv", + "tables/differential/genotype_celltype_t1_t2.limma.results_filtered.tsv", + "tables/proteus", + "tables/proteus/Celltype", + "tables/proteus/Celltype/normalizeMedian.normalized_proteingroups_tab.tsv", + "tables/proteus/Celltype/raw_proteingroups_tab.tsv", + "tables/proteus/fakeBatch", + "tables/proteus/fakeBatch/normalizeMedian.normalized_proteingroups_tab.tsv", + "tables/proteus/fakeBatch/raw_proteingroups_tab.tsv" + ], + [ + "fakebatch_fakeBatch_b1_b2.MArrayLM.limma.rds:md5,f321bf1e4fd44827810df9a9c38776d6", + "genotype_celltype_t1_FoB.MArrayLM.limma.rds:md5,4f0cb9d82aa3c0464cee5eca69248589", + "genotype_celltype_t1_MZ_fakeBatch.MArrayLM.limma.rds:md5,2021a25cc716b10830ff6851044b6b9d", + "genotype_celltype_t1_t2.MArrayLM.limma.rds:md5,34cc962386f20c6e001ab28f035df781", + "normalizeMedian.normalized_proteingroups.rds:md5,da660b225f066a1e87bf8bb4196adcc6", + "raw_proteingroups.rds:md5,0b38726c41e7b32213e5e15380c29612", + "R_sessionInfo.log:md5,411badddf7904da0ed1de02b544109d2", + "normalizeMedian.normalized_proteingroups.rds:md5,6f7def9ce31c8ee07f649675db394848", + "raw_proteingroups.rds:md5,daef7d25977a1628870dee75e2977ee3", + "volcano.png:md5,3d64aa38b9c321f1162565a28d254bd1", + "volcano.png:md5,2497d3bd1e925d358b5856a21209f4bc", + "volcano.png:md5,1b28d0983a895d0619c470553a1be47f", + "volcano.png:md5,198730d78767da2e46ce6e1d25f52e64", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,17074b29c8babf56c5b884c13429c81e", + "density.png:md5,245843935e441c32d69b788d0cdd9ef8", + "mad_correlation.png:md5,e2033c95c4c5b3d695d65158a6a246e4", + "pca2d.png:md5,50ff3bd8c8de40f32f078fe879c72d55", + "pca3d.png:md5,c3ced5600509551d5e0410019c717445", + "sample_dendrogram.png:md5,49bcc85503e49cb9da71e86973db3263", + "boxplot.png:md5,bb306103d822eecc37c29bb07674d29f", + "density.png:md5,a27331aa3cb96242140cba1f57a18215", + "mad_correlation.png:md5,e14dd0b2ab73187658b386dfc6227d37", + "pca2d.png:md5,ed7f1342d245d5764898b637a6530c8d", + "pca3d.png:md5,dcedf79d5795c48a57117a2279dd4a0e", + "sample_dendrogram.png:md5,bacaf55f4f5863992ce7c166cde9c5b9", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "normalizeMedian.normalized_dendrogram.png:md5,6bf22a6e3aba7d3c53dc80d3bbd2bb27", + "normalizeMedian.normalized_distributions.png:md5,39b6f96288b8cd2e7dd2d02f424d6d78", + "normalizeMedian.normalized_mean_variance_relationship.png:md5,4ed879017fcbe0ea8279bd362ac0d9bd", + "raw_distributions.png:md5,1def04dd0f8cb116164e91a6aaab11ce", + "normalizeMedian.normalized_dendrogram.png:md5,181e8e0ccad205a19414975dee1f3ca0", + "normalizeMedian.normalized_distributions.png:md5,eff54bf61eafda77f8891e41239aaf9c", + "normalizeMedian.normalized_mean_variance_relationship.png:md5,b5ba9b01fe4534191e3e577302beaead", + "raw_distributions.png:md5,086370f56bc89e418744dc77f445e5e5", + "fakebatch_fakeBatch_b1_b2.limma.mean_difference.png:md5,45da19bbbebe47c7b08216e585f0d6d1", + "genotype_celltype_t1_FoB.limma.mean_difference.png:md5,8c5902f2ce99d4e540349423153e01b8", + "genotype_celltype_t1_MZ_fakeBatch.limma.mean_difference.png:md5,7236512b3247375627c3fc26a0f03bb4", + "genotype_celltype_t1_t2.limma.mean_difference.png:md5,c1fa7df4bf312921631f1e9349b43b34", + "fakebatch_fakeBatch_b1_b2.limma.results.tsv:md5,2e04750d6c02cf37ed489601980d19b8", + "fakebatch_fakeBatch_b1_b2.limma.results_filtered.tsv:md5,6842d5af760839cda6f23d64a3300a09", + "genotype_celltype_t1_FoB.limma.results.tsv:md5,990fa0b6a9618bcb03d4c6726f0d518a", + "genotype_celltype_t1_FoB.limma.results_filtered.tsv:md5,941463996b8790278d7062a48fbc3419", + "genotype_celltype_t1_MZ_fakeBatch.limma.results.tsv:md5,a0cd63a2f76307016904a4463e3b1791", + "genotype_celltype_t1_MZ_fakeBatch.limma.results_filtered.tsv:md5,b3120632d1f653e97d18342089157930", + "genotype_celltype_t1_t2.limma.results.tsv:md5,8e6f5de58fc478aa954350fc159a9b57", + "genotype_celltype_t1_t2.limma.results_filtered.tsv:md5,9db67d9283e7fb2f4f604fd63ec40e4d", + "normalizeMedian.normalized_proteingroups_tab.tsv:md5,154fcd8d23409981b897d153e7b7e34e", + "raw_proteingroups_tab.tsv:md5,33a8791f84c676ea1aea4842231acb6a", + "normalizeMedian.normalized_proteingroups_tab.tsv:md5,154fcd8d23409981b897d153e7b7e34e", + "raw_proteingroups_tab.tsv:md5,33a8791f84c676ea1aea4842231acb6a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:32:05.655955914" + } +} \ No newline at end of file diff --git a/tests/test_nogtf.nf.test b/tests/test_nogtf.nf.test new file mode 100644 index 00000000..263513d2 --- /dev/null +++ b/tests/test_nogtf.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (nogtf)" + script "../main.nf" + profile "+test_nogtf" + tag "nogtf" + tag "pipeline" + + test("Test no gtf profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_nogtf.nf.test.snap b/tests/test_nogtf.nf.test.snap new file mode 100644 index 00000000..ec570320 --- /dev/null +++ b/tests/test_nogtf.nf.test.snap @@ -0,0 +1,107 @@ +{ + "Test no gtf profile": { + "content": [ + 13, + { + "DESEQ2_DIFFERENTIAL": { + "r-base": "4.1.3", + "bioconductor-deseq2": "1.34.0" + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/deseq2", + "other/deseq2/treatment_mCherry_hND6_.dds.rld.rds", + "other/deseq2/treatment_mCherry_hND6_.deseq2.sizefactors.tsv", + "other/deseq2/treatment_mCherry_hND6_sample_number.dds.rld.rds", + "other/deseq2/treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/treatment_mCherry_hND6_", + "plots/differential/treatment_mCherry_hND6_/png", + "plots/differential/treatment_mCherry_hND6_/png/volcano.png", + "plots/differential/treatment_mCherry_hND6_sample_number", + "plots/differential/treatment_mCherry_hND6_sample_number/png", + "plots/differential/treatment_mCherry_hND6_sample_number/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/treatment", + "plots/exploratory/treatment/png", + "plots/exploratory/treatment/png/boxplot.png", + "plots/exploratory/treatment/png/density.png", + "plots/exploratory/treatment/png/mad_correlation.png", + "plots/exploratory/treatment/png/pca2d.png", + "plots/exploratory/treatment/png/pca3d.png", + "plots/exploratory/treatment/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/qc", + "plots/qc/treatment_mCherry_hND6_.deseq2.dispersion.png", + "plots/qc/treatment_mCherry_hND6_sample_number.deseq2.dispersion.png", + "report", + "report/SRP254919.html", + "report/SRP254919.zip", + "shinyngs_app", + "shinyngs_app/SRP254919", + "shinyngs_app/SRP254919/app.R", + "shinyngs_app/SRP254919/data.rds", + "shinyngs_app/versions.yml", + "tables", + "tables/differential", + "tables/differential/treatment_mCherry_hND6_.deseq2.results.tsv", + "tables/differential/treatment_mCherry_hND6_.deseq2.results_filtered.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.deseq2.results.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.deseq2.results_filtered.tsv", + "tables/processed_abundance", + "tables/processed_abundance/all.normalised_counts.tsv", + "tables/processed_abundance/all.vst.tsv" + ], + [ + "treatment_mCherry_hND6_.dds.rld.rds:md5,6169c02c9c5dc9bfbd907d1d0ffe5442", + "treatment_mCherry_hND6_.deseq2.sizefactors.tsv:md5,402909515e7ae8d53d091bf5ad9bc5fd", + "treatment_mCherry_hND6_sample_number.dds.rld.rds:md5,4ef00951aa423f2b5d1ab797b16ff20d", + "treatment_mCherry_hND6_sample_number.deseq2.sizefactors.tsv:md5,402909515e7ae8d53d091bf5ad9bc5fd", + "volcano.png:md5,db4fda5e682a1659af157c11985d0783", + "volcano.png:md5,396facf5c1dbe8b445e3360e6280f9c1", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,25940632bb9493d3ca2868fdaffdf6c0", + "density.png:md5,a9ee49e9070b70bf55566edbba70e41e", + "mad_correlation.png:md5,9fbc55281829a254a99d735a729a332f", + "pca2d.png:md5,0406ba91b742676689417add1f20ebbd", + "pca3d.png:md5,99fd4104a7c08b5eae0ff88dc7eaf0d0", + "sample_dendrogram.png:md5,4fda57a4e2b34c063d233558d509f7a8", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "treatment_mCherry_hND6_.deseq2.dispersion.png:md5,ed14d196fadbe460d560982ef1e2ac91", + "treatment_mCherry_hND6_sample_number.deseq2.dispersion.png:md5,d0f07f97c7f5c660b173d85b85ed50b9", + "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", + "versions.yml:md5,892774f9d56ba10c8646736b7f777ecc", + "treatment_mCherry_hND6_.deseq2.results.tsv:md5,d9e894aeb89aa5bc79bf7ce31304d7c0", + "treatment_mCherry_hND6_.deseq2.results_filtered.tsv:md5,630820ec91287d8bcb2e5882431c09c3", + "treatment_mCherry_hND6_sample_number.deseq2.results.tsv:md5,02b1c8f3c2987b0cb1a64913dd90bf26", + "treatment_mCherry_hND6_sample_number.deseq2.results_filtered.tsv:md5,1e1c8edb0aa5acee308bc1fc81d1aa16", + "all.normalised_counts.tsv:md5,e960aa685547a3ea778523da84fae136", + "all.vst.tsv:md5,ea4e437ee57b2c5ef8c19d427656e3c6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:34:30.304565869" + } +} \ No newline at end of file diff --git a/tests/test_rnaseq_limma.nf.test b/tests/test_rnaseq_limma.nf.test new file mode 100644 index 00000000..5139b177 --- /dev/null +++ b/tests/test_rnaseq_limma.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (limma)" + script "../main.nf" + profile "+test_rnaseq_limma" + tag "rnaseq_limma" + tag "pipeline" + + test("Test rnaseq limma profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_rnaseq_limma.nf.test.snap b/tests/test_rnaseq_limma.nf.test.snap new file mode 100644 index 00000000..d3195034 --- /dev/null +++ b/tests/test_rnaseq_limma.nf.test.snap @@ -0,0 +1,182 @@ +{ + "Test rnaseq limma profile": { + "content": [ + 20, + { + "GSEA_GSEA": { + "gsea": "4.3.2" + }, + "GTF_TO_TABLE": { + "atlas-gene-annotation-manipulation": "1.1.1" + }, + "GUNZIP_GTF": { + "gunzip": 1.1 + }, + "LIMMA_DIFFERENTIAL": { + "r-base": "4.3.3", + "bioconductor-limma": "3.58.1" + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "TABULAR_TO_GSEA_CHIP": { + "bash": "4.2.25 3" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/limma", + "other/limma/treatment_mCherry_hND6_.MArrayLM.limma.rds", + "other/limma/treatment_mCherry_hND6_sample_number.MArrayLM.limma.rds", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/treatment_mCherry_hND6_", + "plots/differential/treatment_mCherry_hND6_/png", + "plots/differential/treatment_mCherry_hND6_/png/volcano.png", + "plots/differential/treatment_mCherry_hND6_sample_number", + "plots/differential/treatment_mCherry_hND6_sample_number/png", + "plots/differential/treatment_mCherry_hND6_sample_number/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/treatment", + "plots/exploratory/treatment/png", + "plots/exploratory/treatment/png/boxplot.png", + "plots/exploratory/treatment/png/density.png", + "plots/exploratory/treatment/png/mad_correlation.png", + "plots/exploratory/treatment/png/pca2d.png", + "plots/exploratory/treatment/png/pca3d.png", + "plots/exploratory/treatment/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/qc", + "plots/qc/treatment_mCherry_hND6_.limma.mean_difference.png", + "plots/qc/treatment_mCherry_hND6_sample_number.limma.mean_difference.png", + "report", + "report/SRP254919.html", + "report/SRP254919.zip", + "report/gsea", + "report/gsea/treatment_mCherry_hND6_", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Gsea.rpt", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.butterfly_plot.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.global_es_histogram.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gset_rnd_es_dist_5.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_1.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_corr_plot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.index.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.neg_snapshot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.pos_snapshot.html", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.pvalues_vs_nes_plot.png", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png", + "report/gsea/treatment_mCherry_hND6_sample_number", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Gsea.rpt", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.butterfly_plot.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.global_es_histogram.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_hND6.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gset_rnd_es_dist_5.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_1.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_corr_plot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.index.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.neg_snapshot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.pos_snapshot.html", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.pvalues_vs_nes_plot.png", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv", + "report/gsea/treatment_mCherry_hND6_sample_number/mh.all.v2022.1.Mm.symbols/treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png", + "shinyngs_app", + "shinyngs_app/SRP254919", + "shinyngs_app/SRP254919/app.R", + "shinyngs_app/SRP254919/data.rds", + "shinyngs_app/versions.yml", + "tables", + "tables/annotation", + "tables/annotation/Mus_musculus.anno.tsv", + "tables/differential", + "tables/differential/treatment_mCherry_hND6_.limma.results.tsv", + "tables/differential/treatment_mCherry_hND6_.limma.results_filtered.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.limma.results.tsv", + "tables/differential/treatment_mCherry_hND6_sample_number.limma.results_filtered.tsv" + ], + [ + "treatment_mCherry_hND6_.MArrayLM.limma.rds:md5,5727192a1f8175594f4a148306f23988", + "treatment_mCherry_hND6_sample_number.MArrayLM.limma.rds:md5,385f960f9330a1dd6bbf4b00166bc96e", + "volcano.png:md5,aa3d307fc1bb3284c5a29a469dc9a75e", + "volcano.png:md5,e24eaad248b42383269daaa8b98895b9", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,fddc3f29ff4561a856cd2d58a1dfe637", + "density.png:md5,0ba03b26bc8cfbf79d97c604fe9d142f", + "mad_correlation.png:md5,340df9eb381307cf4d98d79da3213e6f", + "pca2d.png:md5,ce23b7e9b1300fb83bd593781fc70648", + "pca3d.png:md5,458d2c497557113ec203fe38186f5e1c", + "sample_dendrogram.png:md5,eb02da7195194e0d56578df41022f9bf", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "treatment_mCherry_hND6_.limma.mean_difference.png:md5,88ec38c7fb92b3f52675e7c9650bfbcd", + "treatment_mCherry_hND6_sample_number.limma.mean_difference.png:md5,4f2ff615728c95914dc773b7d986b5e7", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv:md5,d47ccff0732fb808d25f91fd7ef15f1c", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png:md5,415d2e0dbe0caede5b51576fc87d6403", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv:md5,e000a1b93ebbb7eb347d9ce666fd5e26", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png:md5,797a90883b69b03fecf0c21158db4ef5", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv:md5,e3049abd72c25ff6d7cd75b14135d245", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.global_es_histogram.png:md5,cd78da35019246e48a0347f889927512", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv:md5,ce8792382ae299749445767ff16aaecc", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.heat_map_1.png:md5,7d54dd389febc1cd883685ff38f53334", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv:md5,2054b247acc714589b7f1e4f25a348d8", + "treatment_mCherry_hND6_.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png:md5,35c67dd6865094465ffbce6a237d46dc", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN.tsv:md5,d47ccff0732fb808d25f91fd7ef15f1c", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.HALLMARK_KRAS_SIGNALING_DN_4.png:md5,415d2e0dbe0caede5b51576fc87d6403", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.Symbol_to_probe_set_mapping_details.tsv:md5,e000a1b93ebbb7eb347d9ce666fd5e26", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.enplot_HALLMARK_KRAS_SIGNALING_DN_3.png:md5,797a90883b69b03fecf0c21158db4ef5", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gene_set_sizes.tsv:md5,e3049abd72c25ff6d7cd75b14135d245", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.global_es_histogram.png:md5,cd78da35019246e48a0347f889927512", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.gsea_report_for_mCherry.tsv:md5,ce8792382ae299749445767ff16aaecc", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.heat_map_1.png:md5,7d54dd389febc1cd883685ff38f53334", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_gene_list_hND6_versus_mCherry.tsv:md5,2054b247acc714589b7f1e4f25a348d8", + "treatment_mCherry_hND6_sample_number.mh.all.v2022.1.Mm.symbols.ranked_list_corr_2.png:md5,35c67dd6865094465ffbce6a237d46dc", + "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", + "versions.yml:md5,892774f9d56ba10c8646736b7f777ecc", + "Mus_musculus.anno.tsv:md5,c1d7f21e64bd00f845ec6545c123a1fb", + "treatment_mCherry_hND6_.limma.results.tsv:md5,26df55a9c0fd182977396f75337d5fc4", + "treatment_mCherry_hND6_.limma.results_filtered.tsv:md5,0bfc9215edc6aad064c3ce6abc81bfce", + "treatment_mCherry_hND6_sample_number.limma.results.tsv:md5,2a3937bfc95a1d0a0cbed1f2da4b0bd2", + "treatment_mCherry_hND6_sample_number.limma.results_filtered.tsv:md5,0bfc9215edc6aad064c3ce6abc81bfce" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:37:45.162699026" + } +} \ No newline at end of file diff --git a/tests/test_soft.nf.test b/tests/test_soft.nf.test new file mode 100644 index 00000000..0d8b6605 --- /dev/null +++ b/tests/test_soft.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - DIFFERENTIALABUNDANCE (soft)" + script "../main.nf" + profile "+test_soft" + tag "soft" + tag "pipeline" + + test("Test soft profile") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/collated_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_soft.nf.test.snap b/tests/test_soft.nf.test.snap new file mode 100644 index 00000000..4f279620 --- /dev/null +++ b/tests/test_soft.nf.test.snap @@ -0,0 +1,99 @@ +{ + "Test soft profile": { + "content": [ + 10, + { + "GEOQUERY_GETGEO": { + "r-base": "4.2.1", + "bioconductor-geoquery": "2.66.0" + }, + "LIMMA_DIFFERENTIAL": { + "r-base": "4.3.3", + "bioconductor-limma": "3.58.1" + }, + "PLOT_DIFFERENTIAL": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "PLOT_EXPLORATORY": { + "r-shinyngs": "2.0.0" + }, + "VALIDATOR": { + "r-base": "4.3.3", + "r-shinyngs": "2.0.0" + }, + "Workflow": { + "nf-core/differentialabundance": "v1.6.0dev" + } + }, + [ + "other", + "other/affy", + "other/affy/normalised.eset.rds", + "other/limma", + "other/limma/phenotype_uninvolved_lesional.MArrayLM.limma.rds", + "pipeline_info", + "pipeline_info/collated_versions.yml", + "plots", + "plots/differential", + "plots/differential/phenotype_uninvolved_lesional", + "plots/differential/phenotype_uninvolved_lesional/png", + "plots/differential/phenotype_uninvolved_lesional/png/volcano.png", + "plots/differential/versions.yml", + "plots/exploratory", + "plots/exploratory/phenotype", + "plots/exploratory/phenotype/png", + "plots/exploratory/phenotype/png/boxplot.png", + "plots/exploratory/phenotype/png/density.png", + "plots/exploratory/phenotype/png/mad_correlation.png", + "plots/exploratory/phenotype/png/pca2d.png", + "plots/exploratory/phenotype/png/pca3d.png", + "plots/exploratory/phenotype/png/sample_dendrogram.png", + "plots/exploratory/versions.yml", + "plots/qc", + "plots/qc/phenotype_uninvolved_lesional.limma.mean_difference.png", + "report", + "report/study.html", + "report/study.zip", + "shinyngs_app", + "shinyngs_app/study", + "shinyngs_app/study/app.R", + "shinyngs_app/study/data.rds", + "shinyngs_app/versions.yml", + "tables", + "tables/annotation", + "tables/annotation/normalised.annotation.tsv", + "tables/differential", + "tables/differential/phenotype_uninvolved_lesional.limma.results.tsv", + "tables/differential/phenotype_uninvolved_lesional.limma.results_filtered.tsv", + "tables/processed_abundance", + "tables/processed_abundance/normalised.matrix.tsv" + ], + [ + "normalised.eset.rds:md5,7f17b964d5a7b369767910635dfa23d7", + "phenotype_uninvolved_lesional.MArrayLM.limma.rds:md5,eecc9b0267ce9a5d3a1330da7fbce4cc", + "volcano.png:md5,18e35512a52ff82be16cc14330c1ac89", + "versions.yml:md5,b20728a34a3537e339078bbeaababee9", + "boxplot.png:md5,4d366be0ef28c1aaabebf1529e2b9dc0", + "density.png:md5,09b20c49c9f479fd5c36630f86ce8384", + "mad_correlation.png:md5,60f9c0e924d52a569d976a3fb2c22a43", + "pca2d.png:md5,aad430028daa7ffa7cd6bea1c6c41d43", + "pca3d.png:md5,d32182b1005d696da648170f3bd9dbe8", + "sample_dendrogram.png:md5,b66045a3c9df5310f3241544c50f3fd1", + "versions.yml:md5,9c47cbf6f2f30c711eb57fff84ea3736", + "phenotype_uninvolved_lesional.limma.mean_difference.png:md5,570bc62fbad15b7b25eaea786a416ace", + "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", + "versions.yml:md5,892774f9d56ba10c8646736b7f777ecc", + "normalised.annotation.tsv:md5,40300ae222ae35fa54daf10a1b86e830", + "phenotype_uninvolved_lesional.limma.results.tsv:md5,2cfa653fffb034be4b82abf306c87bc5", + "phenotype_uninvolved_lesional.limma.results_filtered.tsv:md5,6a198c35b193bab0b3148d147c7b08e3", + "normalised.matrix.tsv:md5,230f87f91c0c1a7e2ab354200c4b978c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-17T21:40:28.282036327" + } +} \ No newline at end of file diff --git a/workflows/differentialabundance.nf b/workflows/differentialabundance.nf index d97e7153..e49bebda 100644 --- a/workflows/differentialabundance.nf +++ b/workflows/differentialabundance.nf @@ -322,7 +322,7 @@ workflow DIFFERENTIALABUNDANCE { .map{it[1]} .splitCsv ( header:true, sep:'\t' ) .map{ - it.blocking = it.blocking.replace('NA', '') + it.blocking = it.blocking.replaceAll('^NA$', '') if (!it.id){ it.id = it.values().join('_') }