- The pipeline finished successfully, but samples were skipped. Please check warnings at the top of the MultiQC report.
-
-
-
-
""" } else { out << """
0) {
- out << """##################################################
-## nf-core/rnaseq execution completed with warnings ##
-##################################################
-The pipeline finished successfully, but samples were skipped.
-Please check warnings at the top of the MultiQC report.
-"""
} else {
out << "## nf-core/rnaseq execution completed successfully! ##"
}
diff --git a/docs/images/mqc_fastqc_adapter.png b/docs/images/mqc_fastqc_adapter.png
new file mode 100755
index 000000000..361d0e47a
Binary files /dev/null and b/docs/images/mqc_fastqc_adapter.png differ
diff --git a/docs/images/mqc_fastqc_counts.png b/docs/images/mqc_fastqc_counts.png
new file mode 100755
index 000000000..cb39ebb80
Binary files /dev/null and b/docs/images/mqc_fastqc_counts.png differ
diff --git a/docs/images/mqc_fastqc_quality.png b/docs/images/mqc_fastqc_quality.png
new file mode 100755
index 000000000..a4b89bf56
Binary files /dev/null and b/docs/images/mqc_fastqc_quality.png differ
diff --git a/docs/output.md b/docs/output.md
index ca828e9fc..34326ea23 100644
--- a/docs/output.md
+++ b/docs/output.md
@@ -19,6 +19,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d
- [Pipeline overview](#pipeline-overview)
- [Preprocessing](#preprocessing)
- [cat](#cat)
+ [fq lint](#fq-lint)
- [FastQC](#fastqc)
- [UMI-tools extract](#umi-tools-extract)
- [TrimGalore](#trimgalore)
@@ -73,6 +74,20 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d
If multiple libraries/runs have been provided for the same sample in the input samplesheet (e.g. to increase sequencing depth) then these will be merged at the very beginning of the pipeline in order to have consistent sample naming throughout the pipeline. Please refer to the [usage documentation](https://nf-co.re/rnaseq/usage#samplesheet-input) to see how to specify these samples in the input samplesheet.
+### fq lint
+
+
+Output files
+
+- `fq_lint/*`
+ - `*.fq_lint.txt`: Linting report per library from `fq lint`.
+
+> **NB:** You will see subdirectories here based on the stage of preprocessing for the files that have been linted, for example `raw`, `trimmed`.
+
+
+
+[fq lint](https://github.com/stjude-rust-labs/fq) runs several checks on input FASTQ files. It will fail with a non-zero error code when issues are found, which will terminate the workflow execution. In the absence of this, the successful linting produces the logs you will find here.
+
### FastQC
@@ -105,7 +120,7 @@ If multiple libraries/runs have been provided for the same sample in the input s
-[UMI-tools](https://github.com/CGATOxford/UMI-tools) deduplicates reads based on unique molecular identifiers (UMIs) to address PCR-bias. Firstly, the UMI-tools `extract` command removes the UMI barcode information from the read sequence and adds it to the read name. Secondly, reads are deduplicated based on UMI identifier after mapping as highlighted in the [UMI-tools dedup](#umi-tools-dedup) section.
+[UMI-tools](https://github.com/CGATOxford/UMI-tools) and [UMICollapse](https://github.com/Daniel-Liu-c0deb0t/UMICollapse) deduplicate reads based on unique molecular identifiers (UMIs) to address PCR-bias. Firstly, the UMI-tools `extract` command removes the UMI barcode information from the read sequence and adds it to the read name. Secondly, reads are deduplicated based on UMI identifier after mapping as highlighted in the [UMI dedup](#umi-dedup) section.
To facilitate processing of input data which has the UMI barcode already embedded in the read name from the start, `--skip_umi_extract` can be specified in conjunction with `--with_umi`.
@@ -290,7 +305,7 @@ The original BAM files generated by the selected alignment algorithm are further
![MultiQC - SAMtools mapped reads per contig plot](images/mqc_samtools_idxstats.png)
-### UMI-tools dedup
+### UMI dedup
Output files
@@ -299,7 +314,7 @@ The original BAM files generated by the selected alignment algorithm are further
- `.umi_dedup.sorted.bam`: If `--save_umi_intermeds` is specified the UMI deduplicated, coordinate sorted BAM file containing read alignments will be placed in this directory.
- `.umi_dedup.sorted.bam.bai`: If `--save_umi_intermeds` is specified the BAI index file for the UMI deduplicated, coordinate sorted BAM file will be placed in this directory.
- `.umi_dedup.sorted.bam.csi`: If `--save_umi_intermeds --bam_csi_index` is specified the CSI index file for the UMI deduplicated, coordinate sorted BAM file will be placed in this directory.
-- `/umitools/`
+- `/umitools/` (UMI-tools only)
- `*_edit_distance.tsv`: Reports the (binned) average edit distance between the UMIs at each position.
- `*_per_umi.tsv`: UMI-level summary statistics.
- `*_per_umi_per_position.tsv`: Tabulates the counts for unique combinations of UMI and position.
@@ -308,7 +323,7 @@ The content of the files above is explained in more detail in the [UMI-tools doc
-After extracting the UMI information from the read sequence (see [UMI-tools extract](#umi-tools-extract)), the second step in the removal of UMI barcodes involves deduplicating the reads based on both mapping and UMI barcode information using the UMI-tools `dedup` command. This will generate a filtered BAM file after the removal of PCR duplicates.
+After extracting the UMI information from the read sequence (see [UMI-tools extract](#umi-tools-extract)), the second step in the removal of UMI barcodes involves deduplicating the reads based on both mapping and UMI barcode information. UMI deduplication can be carried out either with [UMI-tools](https://github.com/CGATOxford/UMI-tools) or [UMICollapse](https://github.com/Daniel-Liu-c0deb0t/UMICollapse), set via the `umi_dedup_tool` parameter. The output BAM files are the same, though UMI-tools has some additional outputs, as described above. Either method will generate a filtered BAM file after the removal of PCR duplicates.
### picard MarkDuplicates
diff --git a/docs/usage.md b/docs/usage.md
index 851e20c7d..48cafce85 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -27,6 +27,12 @@ CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz,a
CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz,auto
```
+### Linting
+
+By default, the pipeline will run [fq lint](https://github.com/stjude-rust-labs/fq) on all input FASTQ files, both at the start of preprocessing and after each preprocessing step that manipulates FASTQ files. If errors are found, and error will be reported and the workflow will stop.
+
+The `extra_fqlint_args` parameter can be manipulated to disable [any validator](https://github.com/stjude-rust-labs/fq?tab=readme-ov-file#validators) from `fq` you wish. For example, we have found that checks on the names of paired reads are prone to failure, so that check is disabled by default (setting `extra_fqlint_args` to `--disable-validator P001`).
+
### Strandedness Prediction
If you set the strandedness value to `auto`, the pipeline will sub-sample the input FastQ files to 1 million reads, use Salmon Quant to automatically infer the strandedness, and then propagate this information through the rest of the pipeline. This behavior is controlled by the `--stranded_threshold` and `--unstranded_threshold` parameters, which are set to 0.8 and 0.1 by default, respectively. This means:
diff --git a/docs/usage/DEanalysis/de_rstudio.md b/docs/usage/DEanalysis/de_rstudio.md
new file mode 100644
index 000000000..f3adcc30b
--- /dev/null
+++ b/docs/usage/DEanalysis/de_rstudio.md
@@ -0,0 +1,609 @@
+---
+order: 4
+---
+
+# Differential Analysis with DESeq2
+
+In this section of the tutorial, we will guide you through the practical steps necessary to set up the RStudio environment, load the required libraries and data, and execute the DESeq2 analysis. By the end of this section, you will have a fully functional DESeq2 analysis pipeline set up in RStudio, ready to uncover the differentially expressed genes in your dataset.
+
+## Launching the RStudio environment
+
+Once the nf-core/rnaseq pipeline is terminated, the resulting data are stored in the folder `results_star_salmon`. Now, we can analyse the results by running DESeq2 on RStudio. First of all, we need to launch it:
+
+```bash
+sudo rstudio-server start && sleep 5000
+```
+
+A pop-up will appear and by clicking on **Open**, we will be redirected to the RStudio login page. By inserting the username and the password reported below, we will be able to connect to RStudio:
+
+```bash
+Username: gitpod
+Password: pass
+```
+
+:::note
+Using `sleep` will keep the Gitpod session active, preventing disconnection and providing enough time to complete our analysis without interruptions
+:::
+
+## Differential Expression Analysis
+
+As in all analysis, firstly we need to create a new project:
+
+1. Go to the **File** menu and select **New Project**;
+
+2. Select **New Directory**, **New Project**, name the project as shown below and click on **Create Project**;
+
+
+
+3. The new project will be automatically opened in RStudio.
+
+We can check whether we are in the correct working directory with `getwd()`. The path `/workspace/gitpod/training/DE_analysis/` should appear on your console.
+To store our results in an organized way, we will create a folder named **de_results** using the **New Folder** button in the bottom right panel. We will save all our resulting tables and plots in this folder. Next, go to the **File menu**, select **New File** and then **R Script** to create a script editor in which we will save all commands required for the analysis. In the editor type:
+
+```r
+#### Differential expression analysis with DESeq2 ####
+```
+
+and save the file as **de_script.R**. From now on, each command described in the tutorial can be added to your script. The resulting working directory should look like this:
+
+
+
+The analysis requires several R packages. To utilise them, we need to load the following libraries:
+
+```r
+#### Loading libraries ####
+
+# tidyverse: collection of R packages for data manipulation, visualization and modeling
+
+library("tidyverse")
+
+# DESeq2: package for differential gene expression analysis
+
+library("DESeq2")
+
+# pheatmap: package for creating heatmaps, which will be used to visualise the results
+
+install.packages("pheatmap") # To install the package missing in the current RStudio env
+
+library("pheatmap")
+
+# RColorBrewer: package for creating color palettes, which will be used to customise the heatmaps
+
+library("RColorBrewer")
+
+# ggrepel: package that provides geoms for ggplot2 to repel overlapping text labels in the plots
+
+library("ggrepel")
+```
+
+and the pre-computed DESeq2 object (`dds`) generated by the nfcore/rnaseq pipeline. In this tutorial we will analyse the `dds` object generated by running the alignment with **STAR** and the quantification with **Salmon**:
+
+```r
+#### Import the dds obtained from nfcore/rnaseq ####
+
+load("/workspace/gitpod/training/results_star_salmon/star_salmon/deseq2_qc/deseq2.dds.RData")
+```
+
+Alternatively, a user could choose to analyse the the `dds` object generated by running only **Salmon** for both lightweight alignment and quantification.
+
+In DESEq2, the `dds` object is a central data structure that contains the following components:
+
+- `countData`: a matrix of raw count data, where each row represents a gene and each column represents a sample;
+
+- `colData`: a data frame containing information about the samples, such as the experimental design, treatment and other relevant metadata;
+
+- `design`: a formula specifying the experimental design utilised to estimate the dispersion and the log2 fold change.
+
+All these components can be checked with specific commands:
+
+```r
+#### dds inspection ####
+
+head(counts(dds)) # to check the raw counts
+
+colData(dds) # to check the sample info
+
+design(dds) # to check the design formula
+```
+
+The `colData` and the `design` are the ones created within the nfcore/rnaseq pipeline and must be reorganised prior to the analysis. With the following commands we will create our metadata starting from the info stored in the `dds`. We will rename the column of the `colData`, we will ensure that the rownames of the metadata are present in the same order as the column names and finally we will update the `colData` of the `dds` object with our newly created metadata.
+
+```r
+#### Creation of metadata starting from the dds colData ####
+
+metadata <- DataFrame(
+ sample = colData(dds)$sample,
+ condition = colData(dds)$Group1,
+ replica = colData(dds)$Group2
+)
+
+# Assign names to rows of metadata
+
+rownames(metadata) <- colnames(counts(dds))
+
+# Fill the dds colData with the generated metadata
+
+colData(dds) <- metadata
+```
+
+:::note
+With this operation we also eliminate the `sizeFactors` already estimated by the nfcore/rnaseq pipeline.
+:::
+
+To avoid errors in DESeq2 is essential to check that sample names match between the `colData` and the `countData`, and that the sample are in the correct order:
+
+```r
+#### Check that sample names match in both files ####
+
+all(colnames(dds$counts) %in% rownames(metadata)) # Must be TRUE
+
+all(colnames(dds$counts) == rownames(metadata)) # Must be TRUE
+```
+
+Now that everything is setted up, we can proceed to generate a new DESeq2 object with the corrected metadata and the right design:
+
+```r
+#### Creation of a new dds ####
+
+dds_new <- DESeqDataSet(dds, design = ~ condition)
+
+# dds inspection
+
+head(counts(dds_new)) # to check the raw counts
+
+colData(dds_new) # to check the sample info
+
+design(dds_new) # to check the design formula
+```
+
+Comparing the structure of the newly created dds (`dds_new`) with the one automatically produced by the pipeline (`dds`), we can observe the differences:
+
+
+
+Before running the different steps of the analysis, a good practice consists in pre-filtering the genes to remove those with very low counts. This is useful to improve computional efficiency and enhance interpretability. In general, it is reasonable to keep only genes with a sum counts of at least 10 for a minimal number of 3 samples:
+
+```r
+#### Pre-filtering ####
+
+# Select a minimal number of samples = 3
+
+smallestGroupSize <- 3
+
+# Select genes with a sum counts of at least 10 in 3 samples
+
+keep <- rowSums(counts(dds_new) >= 10) >= smallestGroupSize
+
+# Keep only the genes that pass the threshold
+
+dds_filtered <- dds_new[keep,]
+```
+
+Now, it is time to run the differential expression analysis with the `DESeq()` function:
+
+```r
+#### Run the DESeq2 analysis ####
+
+dds_final <- DESeq(dds_filtered)
+```
+
+The `DESeq()` function is a high-level wrapper that simplifies the process of differential expression analysis by combining multiple steps into a single function call. This makes the workflow more user-friendly and ensures that all necessary preprocessing and statistical steps are executed in the correct order. The key functions that **DESeq2** calls include:
+
+- `estimateSizeFactors`: to normalise the count data;
+
+- `estimateDispersion`: to estimate the dispersion;
+
+- `nbinomWaldTest`: to perform differential expression test.
+
+The individual functions can be carried out also singularly as shown below:
+
+```r
+#### Differential expression analysis step-by-step ####
+
+dds_final <- estimateSizeFactors(dds_filtered)
+
+dds_final <- estimateDispersions(dds_final)
+
+dds_final <- nbinomWaldTest(dds_final)
+```
+
+The next step in the DESeq2 workflow is to perform quality control (QC) analysis on our data. This analysis is crucial for identifying potential issues ensuring that the data are suitable for downstream analysis. For QC analysis, it is useful to work with transformed versions of the count data, `variance-stabilised (vst)` or `regularised log-transformed (rlog)` counts. While, the rlog is more robust to outliers and extreme values, vst is computationally faster and so preferred for larger dataset.
+
+:::warning
+These transformations are used for visualisation purposes, while DESeq2 requires raw counts for differential expression analysis.
+:::
+
+```r
+#### Transform normalised counts for data visualisation ####
+# A user can choose among vst and rlog. In this tutorial we will work with rlog transformed data.
+
+rld <- rlog(dds_final, blind = TRUE)
+```
+
+The `rlog` and the `vst` transformations have an argument, **blind** that can be set to:
+
+- **TRUE** (default): useful for QC analysis because it re-estimates the dispersion, allowing for comparison of samples in an unbiased manner with respect to experimental conditions;
+
+- **FALSE**: the function utilizes the already estimated dispersion, generally applied when differences in counts are expected to be due to the experimental design.
+
+Next, we perform Principal Component Analysis (PCA) to explore the data. DESeq2 provides a built-in function, `plotPCA()`, which uses [ggplot2](https://ggplot2.tidyverse.org) for visualisation, taking the `rld` (or the `vst`) object as input.
+Since the **treatment** is the principal condition of interest in our metadata, we will use the `condition` information from our metadata to plot the PCA:
+
+```r
+#### Plot PCA ####
+
+pca_plot <- plotPCA(rld, intgroup = "condition")
+
+# Save the plot
+
+ggsave("de_results/pca_plot.png", plot = pca_plot, width = 6, height = 5, dpi = 300)
+```
+
+The second essential step in QC analysis is hierarchical clustering. Although DESeq2 does not have a built-in function for this analysis, we can use the `pheatmap()` function from the **pheatmap** package.
+We will extract the matrix of rlog-transformed counts from the `rld` object (pheatmap input), compute pairwise correlations and plot the heatmap:
+
+```r
+#### Plot sample to sample distance (hierarchical clustering) ####
+
+# Extract the matrix of rlog-transformed counts from the rld object
+
+sampleDists <- dist(t(assay(rld))) # Calculate pairwise distances between samples using the dist() function with Euclidean distance as the default method. By transposing the matrix with t(), we ensure that samples become rows and genes become columns, so that the dist function computes pairwise distances between samples.
+
+# Convert distances to a matrix
+
+sampleDistMatrix <- as.matrix(sampleDists)
+
+# Set the row and column names of the distance matrix
+
+rownames(sampleDistMatrix) <- paste(rld$condition, rld$replica, sep = "_")
+
+colnames(sampleDistMatrix) <- paste(rld$condition, rld$replica, sep = "_")
+
+# Define a color palette for the heatmap
+
+colors <- colorRampPalette(rev(brewer.pal(9, "Greens")))(255) # function from RColorBrewer package
+
+# Create the heatmap
+
+clustering_plot <- pheatmap(sampleDistMatrix,
+ clustering_distance_rows = sampleDists,
+ clustering_distance_cols = sampleDists,
+ col = colors,
+ fontsize_col = 8,
+ fontsize_row = 8)
+
+# Save the plot
+
+ggsave("de_results/clustering_plot.png", plot = clustering_plot, width = 6, height = 5, dpi = 300)
+```
+
+The normalised counts stored in the `dds` can be inspected with the `counts()` function and saved in our results folder:
+
+```r
+#### Inspect the normalised counts ####
+
+# Display the first few rows of the normalised counts to inspect the data
+
+head(counts(dds_final, normalized = TRUE))
+
+# Display the first few rows of the raw counts (not normalised) to compare with the normalised counts
+
+head(counts(dds_final))
+
+# Convert the normalised counts from the DESeq2 object to a tibble
+
+normalised_counts <- as_tibble(counts(dds_final, normalized = TRUE))
+
+# Add a column for gene names to the normalised counts tibble
+
+normalised_counts$gene <- rownames(counts(dds_final))
+
+# Relocate the gene column to the first position
+
+normalised_counts <- normalised_counts %>%
+ relocate(gene, .before = control_rep1)
+
+# Save the normalised counts
+
+write.csv(normalised_counts, file = "de_results/normalised_counts.csv")
+```
+
+The `results()` function in DESeq2 is used to extract the results of the DE analysis. This function takes the `dds` object as input and returns a DataFrame containing the results of the analysis:
+
+- **baseMean**: the average expression level of the gene across all samples;
+
+- **log2FoldChange**: the log2 fold change of the gene between the condition of interest and the reference level;
+
+- **lfcSE**: the standard error of the log2 fold change;
+
+- **stat**: the Wald statistic, which is used to calculate the p-value;
+
+- **pvalue**: the p-value from the Wald test indicates the probability of observing the measured difference in gene expression (log2 fold change) by chance, assuming no true difference exists (null hypothesis). A low p-value suggests that the observed expression change between samples is unlikely due to random chance, so we can reject the null hypothesis --> the gene is differentially expressed;
+
+- **padj**: the adjusted p-value, which takes into account multiple testing corrections, (Benjamini-Hochberg method default) to control the false discovery rate;
+
+The `results()` function returns the results for all genes in the analysis with an adjusted p-value below a specific FDR cutoff, set by default to 0.1. This threshold can be modified with the parameter `alpha`. The `results()` function can also be customised to filter the results based on certain criteria (log2 fold change or padj) or to set a specific contrast (specific comparison between two or more levels).
+
+:::tip
+The order of the contrast names determines the direction of the fold change that is reported in the results. Specifically, the first level of the contrast is the condition of interest and the second level is the reference level.
+:::
+
+Notice that in this tutorial the contrast is already correctly specified.
+
+```r
+#### Extract results table from the dds object ####
+
+res <- results(dds_final)
+
+# Visualise the results
+
+head(res)
+
+# Summarise the results showing the number of tested genes (genes with non-zero total read count), the genes up- and down-regulated at the selected threshold (alpha) and the number of genes excluded by the multiple testing due to a low mean count
+
+summary(res)
+
+# DESeq2 function to extract the name of the contrast
+
+resultsNames(dds_final)
+
+# res <- results(dds, contrast = c("design_formula", "condition_of_interest", "reference_condition"))
+# Command to set the contrast, if necessary
+
+# Store the res object inside another variable because the original res file will be required for other functions
+
+res_viz <- res
+
+# Add gene names as a new column to the results table
+
+res_viz$gene <- rownames(res)
+
+# Convert the results to a tibble for easier manipulation and relocate the gene column to the first position
+
+res_viz <- as_tibble(res_viz) %>%
+ relocate(gene, .before = baseMean)
+
+# Save the results table
+
+write.csv(res_viz, file = "de_results/de_result_table.csv")
+```
+
+In the _Experimental Design_ section, we emphasised the importance of estimating the log2 fold change threshold using a statistical power calculation, rather than selecting it arbitrarily. This approach ensures that the chosen threshold is statistically appropriate and tailored to the specifics of the experiment. However, since we are working with simulated data for demonstration purposes, we will use a padj threshold of 0.05 and consider genes with a log2 fold change of at least 1 or -1 as differentially expressed.
+
+```r
+#### Extract significant DE genes from the results ####
+
+# Filter the results to include only significantly DE genes with a padj less than 0.05 and a log2FoldChange of at least 1 or -1
+
+resSig <- subset(res_viz, padj < 0.05 & abs(log2FoldChange) > 1)
+
+# Convert the results to a tibble for easier manipulation and relocate the gene column to the first position
+
+resSig <- as_tibble(resSig) %>%
+ relocate(gene, .before = baseMean)
+
+# Order the significant genes by their adjusted p-value (padj) in ascending order
+
+resSig <- resSig[order(resSig$padj),]
+
+# Display the final results table of significant genes
+
+resSig
+
+# Save the significant DE genes
+
+write.csv(resSig, file = "de_results/sig_de_genes.csv")
+```
+
+## Plot the results
+
+Now that we have obtained the results of the differential expression analysis, it's time to visualise the data to gain a deeper understanding of the biological processes that are affected by the experimental conditions. Visualisation is a crucial step in RNA-seq analysis, as it allows us to identify patterns and trends in the data that may not be immediately apparent from the numerical results.
+
+In the following sections, we will explore different types of plots that are commonly used to visualise the results of RNA-seq analysis, including:
+
+- **MA plot**: scatter plot commonly utilised to visualise the results of the DE analysis for all the samples. The plot displays the mean of the normalised counts on the x-axis and the log2 fold change on the y-axis. This allows the visualisation of the relationship between the magnitude of the fold change and the mean expression level of the genes. Genes that are differentially expressed will appear farthest from the horizontal line, while genes with low expression levels will appear closer to the line.
+
+```r
+#### MA plot ####
+
+# The MA plot is not a ggplot, so we have to save it in a different way
+
+# Open a graphics device to save the plot as a PNG file
+
+png("MA_plot.png", width = 1500, height = 100, res = 300)
+
+# Generate the MA plot (it will be saved to the file instead of displayed on screen)
+
+plotMA(res, ylim = c(-2, 2))
+
+# Close the device to save the file
+
+dev.off()
+```
+
+- **counts plot**: plot of the normalised counts for a single gene across the different conditions in your experiment. It’s particularly useful for visualising the expression levels of specific genes of interest and comparing them across sample groups.
+
+```r
+#### Plot a specific gene in this case ENSG00000142192, a DE gene ####
+
+png("de_results/plotCounts.png", width = 1000, height = 1200, res = 300)
+
+plotCounts(dds_final, gene = "ENSG00000142192")
+
+dev.off()
+```
+
+**heatmap**: plot of the normalised counts for all the significant genes obtained with the `pheatmap()` function. The heatmap provides insights into genes and sample relationships that may not be apparent from individual gene plots alone.
+
+```r
+#### Heatmap ####
+
+# Extract only the first column (gene names) from the result object containing the significant genes
+
+significant_genes <- resSig[, 1]
+
+# Extract normalised counts for significant genes from the normalised counts matrix and convert the gene column to row names
+
+significant_counts <- inner_join(normalised_counts, significant_genes, by = "gene") %>%
+ column_to_rownames("gene")
+
+# Create the heatmap using pheatmap
+
+heatmap <- pheatmap(significant_counts,
+ cluster_rows = TRUE,
+ fontsize = 8,
+ scale = "row",
+ fontsize_row = 8,
+ height = 10)
+
+# Save the plot
+
+ggsave("de_results/heatmap.png", plot = heatmap, width = 6, height = 5, dpi = 300)
+
+```
+
+- **volcano plot**: scatter plot that displays the log2 fold change on the x-axis and the log transformed padj on the y-axis. This allows for the visualisation of both the magnitude and significance of the changes in gene expression between two conditions. Genes that are differentially expressed (i.e., have a large log2 fold change) and are statistically significant (i.e., have a low padj) will appear in the left (downregulated genes) or in the right (upregulated genes) corners of the plot making easier their identification.
+
+```r
+#### Volcano plot ####
+
+# Convert the results to a tibble and add a column indicating differential expression status
+
+res_tb <- as_tibble(res) %>%
+ mutate(diffexpressed = case_when(
+ log2FoldChange > 1 & padj < 0.05 ~ 'upregulated',
+ log2FoldChange < -1 & padj < 0.05 ~ 'downregulated',
+ TRUE ~ 'not_de'))
+
+# Add a new column with gene names
+
+res_tb$gene <- rownames(res)
+
+# Relocate the gene column to the first position
+
+res_tb <- res_tb %>%
+ relocate(gene, .before = baseMean)
+
+# Order the table by padj and add a new column for gene labels
+
+res_tb <- res_tb %>% arrange(padj) %>%
+ mutate(genelabels = "")
+
+# Label the top 5 most significant genes
+
+res_tb$genelabels[1:5] <- res_tb$gene[1:5]
+
+# Create a volcano plot using ggplot2
+
+volcano_plot <- ggplot(data = res_tb, aes(x = log2FoldChange, y = -log10(padj), col = diffexpressed)) +
+ geom_point(size = 0.6) +
+ geom_text_repel(aes(label = genelabels), size = 2.5, max.overlaps = Inf) +
+ ggtitle("DE genes treatment versus control") +
+ geom_vline(xintercept = c(-1, 1), col = "black", linetype = 'dashed', linewidth = 0.2) +
+ geom_hline(yintercept = -log10(0.05), col = "black", linetype = 'dashed', linewidth = 0.2) +
+ theme(plot.title = element_text(size = rel(1.25), hjust = 0.5),
+ axis.title = element_text(size = rel(1))) +
+ scale_color_manual(values = c("upregulated" = "red",
+ "downregulated" = "blue",
+ "not_de" = "grey")) +
+ labs(color = 'DE genes') +
+ xlim(-3,5)
+
+# Save the plot
+
+ggsave("de_results/volcano_plot.png", plot = volcano_plot, width = 6, height = 5, dpi = 300)
+```
+
+## Functional analysis
+
+The output of the differential expression analysis is a list of significant DE genes. To uncover the underlying biological mechanisms, various downstream analyses can be performed, such as functional enrichment analysis (identify overrepresented biological processes, molecular functions, cellular components or pathways), and network analysis (group genes based on similar expression patterns to identify novel interactions). To facilitate the interpretation of the resulting list of DE genes, a range of freely available web- and R-based tools can be employed.
+
+In this tutorial, we will explore an enrichment analysis technique known as Over-Representation Analysis (ORA), a powerful tool for identifying biological pathways or processes significantly enriched within the list of DE genes. The underlying statistic behind ORA is the **hypergeometric test**, which considers three key components:
+
+- **Universe**: the background list of genes (for example the genes annotated in a genome);
+
+- **GeneSet**: a collection of genes annotated by a reference database (such as Gene Ontology), and known to be involved in a particular biological pathway or process;
+
+- **Gene List**: the differentially expressed genes.
+
+The hypergeometric test calculates the probability of observing a certain number of genes from the gene set (pathway or process) within the gene list (DE genes) by chance.
+An important aspect of this analysis is the concept of **membership**. It defines the relationship between DE genes and genes from the analysed gene set. By knowing which genes belong to which pathway/process, we can determine whether the observed overlap between DE genes and the particular pathway/process is greater than what would be expected by random chance.
+
+```r
+#### Enrichment analysis (ORA) ####
+
+# Loading libraries
+
+# clusterProfiler: package for enrichment analysis
+
+library(clusterProfiler)
+
+# org.Hs.eg.db: package for the human gene annotation database
+
+library(org.Hs.eg.db)
+
+# cowplot: package for combining multiple plots
+
+install.packages("cowplot") # To install the package missing in the current RStudio env
+
+library(cowplot)
+
+# Prepare gene list
+# Extract the log2 fold change values from the results data frame
+
+gene_list <- res$log2FoldChange
+
+# Name the vector with the corresponding gene identifiers
+
+names(gene_list) <- res$gene
+
+# Sort the list in decreasing order (required for clusterProfiler)
+
+gene_list <- sort(gene_list, decreasing = TRUE)
+
+# Extract the significantly differentially expressed genes from the results data frame
+
+res_genes <- resSig$gene
+
+# Run GO enrichment analysis using the enrichGO function
+
+go_enrich <- enrichGO(
+ gene = res_genes, # Genes of interest
+ universe = names(gene_list), # Background gene set
+ OrgDb = org.Hs.eg.db, # Annotation database
+ keyType = 'ENSEMBL', # Key type for gene identifiers
+ readable = TRUE, # Convert gene IDs to gene names
+ ont = "ALL", # Ontology: can be "BP", "MF", "CC", or "ALL"
+ pvalueCutoff = 0.05, # P-value cutoff for significance
+ qvalueCutoff = 0.10 # Q-value cutoff for significance
+)
+
+# Create a bar plot of the top enriched GO terms
+
+barplot <- barplot(
+ go_enrich,
+ title = "Enrichment analysis barplot",
+ font.size = 8
+)
+
+# Create a dot plot of the top enriched GO terms
+
+dotplot <- dotplot(
+ go_enrich,
+ title = "Enrichment analysis dotplot",
+ font.size = 8
+)
+
+# Combine the bar plot and dot plot into a single plot grid
+
+go_plot <- plot_grid(barplot, dotplot, col = 2)
+
+# Save the plot
+
+ggsave("de_results/go_plot.png", plot = go_plot, width = 13, height = 6, dpi = 300)
+```
diff --git a/docs/usage/DEanalysis/img/DESeq_function.png b/docs/usage/DEanalysis/img/DESeq_function.png
new file mode 100644
index 000000000..0d4abd5fb
Binary files /dev/null and b/docs/usage/DEanalysis/img/DESeq_function.png differ
diff --git a/docs/usage/DEanalysis/img/Excalidraw_RNAseq.png b/docs/usage/DEanalysis/img/Excalidraw_RNAseq.png
new file mode 100644
index 000000000..f90da8214
Binary files /dev/null and b/docs/usage/DEanalysis/img/Excalidraw_RNAseq.png differ
diff --git a/docs/usage/DEanalysis/img/MA_plot.png b/docs/usage/DEanalysis/img/MA_plot.png
new file mode 100644
index 000000000..2891bfd4a
Binary files /dev/null and b/docs/usage/DEanalysis/img/MA_plot.png differ
diff --git a/docs/usage/DEanalysis/img/RNA_seq_scheme_tutorial.png b/docs/usage/DEanalysis/img/RNA_seq_scheme_tutorial.png
new file mode 100644
index 000000000..c278dffe2
Binary files /dev/null and b/docs/usage/DEanalysis/img/RNA_seq_scheme_tutorial.png differ
diff --git a/docs/usage/DEanalysis/img/count_distribution.png b/docs/usage/DEanalysis/img/count_distribution.png
new file mode 100644
index 000000000..213ea68ab
Binary files /dev/null and b/docs/usage/DEanalysis/img/count_distribution.png differ
diff --git a/docs/usage/DEanalysis/img/dds_comparison.png b/docs/usage/DEanalysis/img/dds_comparison.png
new file mode 100644
index 000000000..cc940808a
Binary files /dev/null and b/docs/usage/DEanalysis/img/dds_comparison.png differ
diff --git a/docs/usage/DEanalysis/img/dispersion_estimates.png b/docs/usage/DEanalysis/img/dispersion_estimates.png
new file mode 100644
index 000000000..2b50a84ff
Binary files /dev/null and b/docs/usage/DEanalysis/img/dispersion_estimates.png differ
diff --git a/docs/usage/DEanalysis/img/enrichment_plot.png b/docs/usage/DEanalysis/img/enrichment_plot.png
new file mode 100644
index 000000000..f073bdc3f
Binary files /dev/null and b/docs/usage/DEanalysis/img/enrichment_plot.png differ
diff --git a/docs/usage/DEanalysis/img/heatmap_de_genes.png b/docs/usage/DEanalysis/img/heatmap_de_genes.png
new file mode 100644
index 000000000..656e00934
Binary files /dev/null and b/docs/usage/DEanalysis/img/heatmap_de_genes.png differ
diff --git a/docs/usage/DEanalysis/img/hierarchical_clustering.png b/docs/usage/DEanalysis/img/hierarchical_clustering.png
new file mode 100644
index 000000000..ece9bc431
Binary files /dev/null and b/docs/usage/DEanalysis/img/hierarchical_clustering.png differ
diff --git a/docs/usage/DEanalysis/img/nf-core-rnaseq_metro_map_grey.png b/docs/usage/DEanalysis/img/nf-core-rnaseq_metro_map_grey.png
new file mode 100644
index 000000000..0dbf23f81
Binary files /dev/null and b/docs/usage/DEanalysis/img/nf-core-rnaseq_metro_map_grey.png differ
diff --git a/docs/usage/DEanalysis/img/overdispersion.png b/docs/usage/DEanalysis/img/overdispersion.png
new file mode 100644
index 000000000..0ba5bae17
Binary files /dev/null and b/docs/usage/DEanalysis/img/overdispersion.png differ
diff --git a/docs/usage/DEanalysis/img/pca_plot.png b/docs/usage/DEanalysis/img/pca_plot.png
new file mode 100644
index 000000000..73008fe90
Binary files /dev/null and b/docs/usage/DEanalysis/img/pca_plot.png differ
diff --git a/docs/usage/DEanalysis/img/plotCounts.png b/docs/usage/DEanalysis/img/plotCounts.png
new file mode 100644
index 000000000..2865d0575
Binary files /dev/null and b/docs/usage/DEanalysis/img/plotCounts.png differ
diff --git a/docs/usage/DEanalysis/img/project_R.png b/docs/usage/DEanalysis/img/project_R.png
new file mode 100644
index 000000000..6514107a4
Binary files /dev/null and b/docs/usage/DEanalysis/img/project_R.png differ
diff --git a/docs/usage/DEanalysis/img/volcanoplot.png b/docs/usage/DEanalysis/img/volcanoplot.png
new file mode 100644
index 000000000..fa72cb9b5
Binary files /dev/null and b/docs/usage/DEanalysis/img/volcanoplot.png differ
diff --git a/docs/usage/DEanalysis/img/workdir_RStudio.png b/docs/usage/DEanalysis/img/workdir_RStudio.png
new file mode 100644
index 000000000..06b0374ab
Binary files /dev/null and b/docs/usage/DEanalysis/img/workdir_RStudio.png differ
diff --git a/docs/usage/DEanalysis/index.md b/docs/usage/DEanalysis/index.md
new file mode 100644
index 000000000..56d9d5e24
--- /dev/null
+++ b/docs/usage/DEanalysis/index.md
@@ -0,0 +1,44 @@
+---
+order: 1
+---
+
+# Welcome
+
+These pages are a tutorial workshop for the [Nextflow](https://www.nextflow.io) pipeline [nf-core/rnaseq](https://nf-co.re/rnaseq).
+
+In this workshop, we will recap the application of next generation sequencing to identify differentially expressed genes. You will learn how to use the rnaseq pipeline to carry out this data-intensive workflow efficiently. We will cover topics such as configuration of the pipeline, code execution and data interpretation.
+
+Please note that this is not an introductory workshop, and we will assume some basic familiarity with Nextflow.
+
+By the end of this workshop, you will be able to:
+
+- analyse simple NGS datasets with the nf-core/rnaseq workflow
+- understand the key concepts behind RNAseq differential expression analysis
+- customise some of its features for your own analyses
+- integrate different sources of information to interpret the results
+
+Let's get started!
+
+## Running with Gitpod
+
+In order to run this using GitPod, please make sure:
+
+1. You have a GitHub account: if not, create one [here](https://github.com/signup)
+2. Once you have a GitHub account, sign up for GitPod using your GitHub user [here](https://gitpod.io/login/) choosing "continue with GitHub".
+
+Now you're all set and can use the following button to launch the service:
+
+[![Open in GitPod](https://img.shields.io/badge/Gitpod-%20Open%20in%20Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/lescai-teaching/rnaseq-tutorial)
+
+## Additional documentation
+
+- You can find detailed documentation on **Nextflow** [here](https://www.nextflow.io/docs/latest/)
+- You can find additional training on [these pages](https://training.nextflow.io)
+
+## Credits & Copyright
+
+This training material has been written and completed by [Lorenzo Sola](https://github.com/LorenzoS96), [Francesco Lescai](https://github.com/lescai), and [Mariangela Santorsola](https://github.com/msantorsola) during the [nf-core](https://nf-co.re) Hackathon in Barcellona, 2024. Thank you to [Victoria Cepeda](https://github.com/vcepeda) for her contributions to the tutorial's revision. The tutorial is aimed at anyone who is interested in using nf-core pipelines for their studies or research activities.
+
+The Docker image and Gitpod environment used in this repository have been created by [Seqera](https://seqera.io) but have been made open-source ([CC BY-NC-ND](https://creativecommons.org/licenses/by-nc-nd/4.0/)) for the community.
+
+All examples and descriptions are licensed under the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License](http://creativecommons.org/licenses/by-nc-nd/4.0/).
diff --git a/docs/usage/DEanalysis/interpretation.md b/docs/usage/DEanalysis/interpretation.md
new file mode 100644
index 000000000..476f627cd
--- /dev/null
+++ b/docs/usage/DEanalysis/interpretation.md
@@ -0,0 +1,91 @@
+---
+order: 5
+---
+
+# Interpretation
+
+Once DE genes have been identified, the next crucial step is to interpret the results. This involves the inspection of tables and plots generated during the analysis to understand the biological significance of the data. In this part of the tutorial, we will explore the results by discussing the significant DE genes and we will examine various plots generated during the analysis.
+
+:::note
+The results illustrated in this section might show slight variations compared to your runs due to randomness in the STAR algorithm. This randomness arises from using variable seed values and parallel processing, leading to minor differences in results between runs on the same data. These small discrepancies are not biologically significant and may affect counts and subsequent plots (such as PCA and count plots). However, the overall patterns and main findings should remain consistent. While exact reproducibility is ideal, minor variations are acceptable in practice, as long as they do not impact the main conclusions of the study.
+:::
+
+## Quality control plots
+
+The first plot we will examine is the Principal Component Analysis (PCA) plot. Since we're working with simulated data, our metadata is relatively simple, consisting of just three variables: `sample`, `condition`, and `replica`. In a typical RNA-seq experiment, however, metadata can be complex and encompass a wide range of variables that could contribute to sample variation, such as sex, age, and developmental stage.
+
+
+
+By plotting the PCA on the PC1 and PC2 axes, using `condition` as the main variable of interest, we can quickly identify the primary source of variation in our data. By accounting for this variation in our design model, we should be able to detect more differentially expressed genes related to `condition`. When working with real data, it's often useful to plot the data using different variables to explore how much variation is explained by the first two PCs. Depending on the results, it may be informative to examine variation on additional PC axes, such as PC3 and PC4, to gain a more comprehensive understanding of the data.
+
+Next, we will examine the hierarchical clustering plot to explore the relationships between samples based on their gene expression profiles. The heatmap is organized such that samples with similar expression profiles are close to each other, allowing us to identify patterns in the data.
+
+
+
+Remember that to create this plot, we utilized the `dist()` function, so in the legend on the right, a value of 0 corresponds to high correlation, while a value of 5 corresponds to very low correlation. Similar to PCA, we can see that samples tend to cluster together according to `condition`, indeed we can observe a high degree of correlation between the three control samples and between the three treated samples.
+
+Overall, the integration of these plots suggests that we are working with high-quality data and we can confidently proceed to the differential expression analysis.
+
+## Differential expression results
+
+In this part of the tutorial, we will examine plots that are generated after the differential expression analysis. These plots are not quality control plots, but rather plots that help us to interpret the results.
+After running the `results()` function, a good way to start to have an idea about the results is to look at the MA plot.
+
+
+
+By default, genes are coloured in blue if the padj is less than 0.1 and the log2 fold change greater than or less than 0. Genes that fall outside the plotting region are represented as open triangles. At this stage, we have not yet applied a filter to select only significant DE genes, which we define as those with a padj value less than 0.5 and a log2 fold change of at least 1 or -1.
+
+After filtering our genes of interest according to our threshold, let's have a look to our significatnt genes:
+
+```tsv
+gene baseMean log2FoldChange lfcSE stat pvalue padj
+ENSG00000205726 121645.5908 2.894480 0.1515387 19.100600 2.496005e-81 5.840651e-79
+ENSG00000142192 51065.3192 3.025489 0.1891258 15.997230 1.335883e-57 1.562983e-55
+ENSG00000142156 20805.8078 2.977705 0.2159277 13.790287 2.915972e-43 2.274458e-41
+ENSG00000159231 458.9277 -1.194777 0.3058100 -3.906926 9.347790e-05 5.468457e-03
+ENSG00000156282 481.7624 1.095272 0.2969594 3.688289 2.257672e-04 1.056590e-02
+```
+
+To gain a comprehensive overview of the transcriptional profile, the volcano plot represents a highly informative tool.
+
+
+
+The treatment induced differential expression in five genes: one downregulated and four upregulated. This plot visually represents the numerical results reported in the table above.
+
+After the identification of DE genes, it's informative to visualise the expression of specific genes of interest. The `plotCounts()` function applied directly on the `dds` object allows us to examine individual gene expression profiles without accessing the full `res` object.
+
+
+
+In our example, post-treatment, we observe a significant increase in the expression of the _ENSG00000142192_ gene, highlighting its responsiveness to the experimental conditions.
+
+Finally, we can create a heatmap using the normalised expression counts of DE genes. The resulting heatmap visualises how the expression of significant genes varies across samples. Each row represents a gene, and each column represents a sample. The color intensity in the heatmap reflects the normalised expression levels: red colors indicate higher expression, while blue colors indicate lower expression.
+
+
+
+By examining the heatmap, we can visually identify the expression patterns of our five significant differentially expressed genes. This visualisation allows us to identify how these genes respond to the treatment. The heatmap provides a clear and intuitive way to explore gene expression dynamics.
+
+## Over Representation Analysis (ORA)
+
+Finally, we can attempt to assign biological significance to our differentially expressed genes through **Over Representation Analysis (ORA)**. The ORA analysis identifies specific biological pathways, molecular functions and cellular processes, according to the **Gene Ontology (GO)** database, that are enriched within our differentially expressed genes.
+
+
+
+The enrichment analysis reveals a possible involvement of cellular structures and processes, including "clathrin-coated pit", "dendritic spine", "neuron spine" and "endoplasmic reticulum lumen". These terms suggest a focus on cellular transport, structural integrity and protein processing, especially in neural contexts. This pattern points to pathways related to cellular organization and maintenance, possibly playing an important role in the biological condition under study.
+
+## Conclusions
+
+In this tutorial, we have walked through the steps of the RNA-seq analysis, from launching the nfcore/rnaseq pipeline to interpreting differential expression results. You learned how the data are generated, identified differentially expressed genes, and conducted enrichment analysis. By following this tutorial, you should now be able to use the nfcore/rnaseq pipeline and perform differential expression analysis with DESeq2, interpreting the results within the context of your research.
diff --git a/docs/usage/DEanalysis/rnaseq.md b/docs/usage/DEanalysis/rnaseq.md
new file mode 100644
index 000000000..9fd0e123e
--- /dev/null
+++ b/docs/usage/DEanalysis/rnaseq.md
@@ -0,0 +1,138 @@
+---
+order: 3
+---
+
+# The nf-core/rnaseq pipeline
+
+In order to carry out a RNA-Seq analysis we will use the nf-core pipeline [rnaseq](https://nf-co.re/rnaseq/3.14.0).
+
+## Overview
+
+The pipeline is organised following the diffent blocks shown below: pre-processing, traditional alignment (or lightweight alignment) and quantification, post-processing and final QC.
+
+
+
+In each process, the users can choose among a range of different options. Importantly, the users can decide to follow one of the two different routes in the alignment and quantification step:
+
+- traditional alignment and quantification (stage 2);
+
+- lightweight alignment and quantification (stage 3).
+
+## Experimental Design
+
+The number of reads and the number of biological replicates are two critical factors that researchers need to carefully consider during the design of a RNA-seq experiment. While it may seem intuitive that having a large number of reads is always desirable, an excessive number can lead to unnecessary costs and computational burdens, without providing significant improvements. Instead, it is often more beneficial to prioritise the number of biological replicates, as it allows to capture the natural biological variation of the data. Biological replicates involve collecting and sequencing RNA from distinct biological samples (e.g., different individuals, tissues, or time points), helping to detect genuine changes in gene expression.
+
+:::warning
+This concept must not be confused with technical replicates that asses the technical variability of the sequencing platform by sequencing the same RNA sample multiple time.
+:::
+
+To obtain optimal results, it is crucial to balance the number of biological replicates and the sequencing depth. While increasing the depth of sequencing enhances the ability to detect genes with low expression levels, there is a plateau beyond which no further benefits are gained. Statistical power calculations can inform experimental design by estimating the optimal number of reads and replicates required. For instance, this approach helps to establish a suitable log2 fold change threshold for the DE analysis. By incorporating multiple biological replicates into the design and optimizing sequencing depth, researchers can enhance the statistical power of the analysis, reducing the number of false positive results, and increasing the reliability of the findings.
+
+## Library design
+
+RNA-seq library design involves important decisions, particularly the choice between paired-end and single-end sequencing. Paired-end sequencing offers insights into structural variations and transcript isoforms, significantly improving mapping accuracy for longer transcripts and repetitive regions. In contrast, single-end sequencing—where only one end of the fragment is sequenced—can be a more cost-effective option while still delivering high-quality data for gene expression analysis. The choice between these two methods ultimately depends on the research question and experimental objectives. Paired-end sequencing is ideal for identifying novel transcripts or characterizing isoforms, whereas single-end sequencing is often sufficient for quantifying gene expression. Factors such as the type of RNA (e.g., mRNA or total RNA), read length, budget, and available computational resources also influence this decision.
+
+## Reference genome
+
+nf-core pipelines make use of the Illumina iGenomes collection as [reference genomes](https://nf-co.re/docs/usage/reference_genomes).
+
+Before starting the analysis, the users might want to check whether the genome they need is part of this collection. They also might want to consider downloading the reference locally, when running on premises: this would be useful for multiple runs and to speed up the analysis. In this case the parameter `--igenomes_base` might be used to pass the root directory of the downloaded references.
+
+One might also need to use custom files: in this case the users might either provide specific parameters at command line (`--fasta` option followed by the genome of choiche), or create a config file adding a new section to the `genome` object. See [here](https://nf-co.re/docs/usage/reference_genomes#custom-genomes) for more details.
+
+In this tutorial we will edit the config file, since the data we will be using have been simulated on chromosome 21 of the Human GRCh38 reference, and we have prepared genome fasta and genome index containing only this chromosome locally.
+
+The two files are `/workspace/gitpod/training/data/refs/Homo_sapiens_assembly38_chr21.fa` and `/workspace/gitpod/training/data/refs/Homo_sapiens_assembly38_chr21.fa.fai`, respectively.
+
+## Reference annoation
+
+The reference annotation plays a crucial role in the RNA-seq analysis. Without a high-quality reference annotation, RNA-seq analysis would result in inaccurate or incomplete results. The reference annotation provides a precise guide for aligning sequencing reads to specific genomic regions, allowing to identify genes, transcripts, and regulatory elements, as well as novel transcripts and alternative splicing events.
+
+nf-core pipelines make use of the Illumina iGenomes collection also as [reference annotation](https://nf-co.re/docs/usage/reference_genomes).
+The reference annotations are vastly out of date with respect to current annotations and miss certain features. So, the general recommendation is to download a newest annotation version compatible with the genome. A user can utilize the `--gtf` or the `--gff` options to specify the annottation files of choiche, or create a config file adding a new section to the `genome` object.
+
+Similarly to the approach utilised for the genome, in this tutorial we will edit the config file. The annotation files include only the annotated transcripts on chromosome 21 of the Human GRCh38 reference genome and we have already prepared these files locally.
+
+The two files are `/workspace/gitpod/training/data/refs/gencode_v29_chr21.gff` and `/workspace/gitpod/training/data/refs/gencode_v29_transcripts_chr21.fa`, respectively.
+
+## Input files
+
+The input data should be provided in a CSV file, according to a format that is largely common for nf-core pipelines.
+The format is described in the [rnaseq usage page](https://nf-co.re/rnaseq/3.14.0/docs/usage).
+
+The input file is `/workspace/gitpod/training/data/reads/rnaseq_samplesheet.csv`.
+
+## Running nf-core/rnaseq
+
+In the following sections we will:
+
+- prepare our references;
+
+- set our computational resources in order to be able to run the pipeline on a gitpod VM;
+
+- edit the optional settings;
+
+- run the pipeline.
+
+## Reference and annotation files
+
+Following the considerations above, we will first of all edit the `nextflow.config` file in our working directory to add a new genome.
+It is sufficient to add the following code to the `parameters` directive in the config.
+
+```groovy title="nextflow.config"
+igenomes_base = '/workspace/gitpod/training/data/refs/'
+genomes {
+ 'GRCh38chr21' {
+ fasta = "${params.igenomes_base}/sequence/Homo_sapiens_assembly38_chr21.fasta"
+ fasta_fai = "${params.igenomes_base}/sequence/Homo_sapiens_assembly38_chr21.fasta.fai"
+ gff = "${params.igenomes_base}/gencode_v29_chr21_parsed.gff"
+ transcript_fasta = "${params.igenomes_base}/gencode.v29.transcripts_chr21.fa"
+ star_index = "${params.igenomes_base}/star_index_chr21.tar.gz"
+ salmon_index = "${params.igenomes_base}/salmon_index_chr21.tar.gz"
+ }
+}
+```
+
+To speed up the analysis we will include the `star_index` and the `salmon_index` in the config. These files have already been created locally.
+
+## Computing resources
+
+Based on the choices we made when starting up the gitpod environment, we recommend to use the following additional parameters.
+They can also be added to the parameters directive in the config file we just edited.
+
+```groovy title="nextflow.config"
+params {
+ max_cpus = 2
+ max_memory = '6.5GB'
+ max_time = '2.h'
+}
+```
+
+## Launching the pipeline
+
+Now we are ready to launch the pipeline, and we can use the following command line:
+
+```bash
+nextflow run nf-core/rnaseq -r 3.12.0 \
+--input /workspace/gitpod/training/data/reads/rnaseq_samplesheet.csv \
+--outdir ./results_star_salmon \
+--genome GRCh38chr21 \
+--aligner star_salmon \
+--pseudo_aligner salmon \
+--skip_biotype_qc \
+--skip_stringtie \
+--skip_bigwig \
+--skip_umi_extract \
+--skip_trimming \
+--skip_fastqc \
+--skip_markduplicates \
+--skip_dupradar \
+--skip_rseqc \
+--skip_qualimap
+```
+
+Notice that we will run the pipeline with STAR as aligner and Salmon in alignment-based mode to quantify gene expression. We will also run the pipeline with Salmon in quasi-mapping mode to perform a lightweight alignment and quantification.
+
+The `skip` parameters were inserted to reduce the running time.
diff --git a/docs/usage/DEanalysis/theory.md b/docs/usage/DEanalysis/theory.md
new file mode 100644
index 000000000..dd932fbb6
--- /dev/null
+++ b/docs/usage/DEanalysis/theory.md
@@ -0,0 +1,169 @@
+---
+order: 2
+---
+
+# RNAseq Analysis
+
+Before we dive into the nf-core pipeline for analysing RNA-sequencing data, it's worth looking at some theoretical aspects of RNA-seq.
+
+## Overview
+
+Given the central role of RNA in a wide range of molecular functions, RNA-seq has emerged as a powerful tool for measuring the presence and levels of RNA species in biological samples. The technique is based on next-generation sequencing (NGS) technologies and is now considered the gold standard in the field of transcriptomics.
+
+After RNA extraction and reverse transcription into complementary DNA (cDNA), the biological material is sequenced, generating NGS "reads" that correspond to the RNA captured in a specific cell, tissue, or organ at a given time. The sequencing data is then bioinformatically processed through a typical workflow summarised in the diagram below:
+
+
+
+In the scheme, we can identify three key phases in the workflow:
+
+- **data pre-processing**: raw reads are handled to remove adapters or contaminants enhancing their quality;
+
+- **traditional or lightweight alignment and quantification**: reads are mapped to a reference genome, and gene abundance is estimated. The workflow can also follow an alternative route based on lightweight alignment and quantification, reducing the time required for the analysis.
+
+- **differential expression analysis**: differentially expressed genes are identified using statistical tests, annotated, and visualised.
+
+Depending on the user's needs, the workflow can include additional downstream analyses such as functional enrichment analysis, co-expression analysis, and integration with other omics data.
+
+## Pre-processing
+
+The pre-processing of sequencing reads from RNA-seq data is a critical step to ensure the quality and accuracy of downstream analysis. The raw reads obtained from the sequencer are stored as [FASTQ](https://en.wikipedia.org/wiki/FASTQ_format) files, which contain both the sequence data and quality scores. The initial processing step involves evaluating the quality of the reads to identify potential issues such as adapter contamination, sequencing errors, or low-quality bases. The presence of adapters (short DNA sequences ligated to the ends of DNA fragments during library preparation) is firstly detected through comparison with known adapter sequences or by using algorithms that identify adapter-like sequences. These sequences are then removed in a process known as **read trimming**. Next, reads containing contaminants (genomic DNA and/or rRNA), and those with low-quality bases are filtered out. Finally, the quality of the filtered reads is checked to ensure their suitability for downstream processing.
+
+## Alignment (or lightweight alignment) and quantification
+
+In the RNA-seq workflow, the alignment step involves mapping sequencing reads to a reference genome or transcriptome to determine the position and orientation of each read relative to the reference sequence.
+
+Errors, gaps, regions of poor sequence quality, insertions/deletions (INDELs), as well as duplicated, and repetitive regions in the reference sequence, make this step challenging. Addressing these issues by choosing a high-quality reference and an appropriate aligner is essential for accurate results. A crucial component in the alignment step is the [annotation](https://www.ncbi.nlm.nih.gov/genbank/genomes_gff) file, which can be in General Feature Format (GFF) or Gene Transfer Format (GTF). These files contain key information about the location, and structure of genes and transcripts, playing an essential role in accurate mapping and gene expression quantification. Additionally, RNA-seq data often includes reads that span exon-exon junctions, and the annotation files provide information about splice junctions, allowing for the detection of different isoforms.
+
+The alignment and quantification steps can follow two different approaches depending on user preferences:
+
+- traditional alignment and quantification;
+
+- lightweight alignment and quantification.
+
+In RNA-seq analysis, traditional alignment is often performed with **splice-aware aligners**, which are designed to recognise the splicing process. These aligners can align reads across known splice junctions and detect novel splice sites or alternative splicing events. Popular splice-aware aligners include [STAR](https://github.com/alexdobin/STAR), and [HISAT2](https://github.com/DaehwanKimLab/hisat2). Once alignment is complete, the following step is quantification, which involves estimating the abundance (number of reads) associated with each gene. Tools like [featureCounts](https://subread.sourceforge.net/featureCounts.html), [HTSeq](https://htseq.readthedocs.io), [Salmon](http://combine-lab.github.io/salmon), and [RSEM](http://deweylab.github.io/RSEM) are commonly used for this purpose.
+
+Traditional alignment tools are time-consuming and require substantial computational resources, particularly in terms of memory, and CPU usage. Alternatively, methods based on **lightweight alignment** allows for faster analysis by determining the likely origin of reads without a full, base-by-base alignment. Lightweight alignment tools like [Kallisto](https://pachterlab.github.io/kallisto/about.html), [Sailfish](http://www.cs.cmu.edu/~ckingsf/software/sailfish), and [Salmon](https://salmon.readthedocs.io/en/latest/salmon.html) avoid full-scale alignment, providing quantification estimates more quickly than traditional splice-aware algorithms, while still maintaining high accuracy. The quantification results from these tools are often called **pseudocounts** or **abundance estimates**, which can be used for downstream analysis.
+
+:::info
+Salmon can be run in two different modes: alignment-based mode or quasi-mapping mode. In the first mode, Salmon estimates abudance starting from `bam` file obtained with the chosen aligner. In the second mode, Salmon requires a reference transcriptome and raw reads to perform both mapping and quantification.
+:::
+
+## Differential expression (DE) analysis with DESeq2
+
+Differential expression analysis is a statistical method for comparing gene expression levels between different experimental conditions, such as disease vs healthy (e.g., tumour tissue vs healthy tissue), treatment vs control (e.g., a sample treated with a specific stimulus, drug, or compound vs an untreated sample), and tissue vs tissue (e.g., brain vs heart). Differential expression analysis aims to assess, for each gene, whether the observed differences in expression between groups are statistically significant, accounting for the variation observed within groups (replicates). This part of the analysis is typically performed in R using various packages, such as [DESeq2](https://bioconductor.org/packages/release/bioc/html/DESeq2.html), [edgeR](https://bioconductor.org/packages/release/bioc/html/edgeR.html), and [limma](https://bioconductor.org/packages/release/bioc/html/limma.html). This tutorial focuses on **DESeq2**, a popular R package known for its robustness. For more detailed information, see the [DESeq2 vignette](https://bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html).
+
+The analysis begins with the input data, which generally consist of a count matrix obtained during the alignment and quantification step, summarising the expression levels of the different genes in each sample of the dataset. The rows of the matrix typically correspond to genes, while the columns represent the samples. Another essential prerequisite is a metadata table describing the samples.
+
+### Quality Control
+
+To ensure robust differential expression results, it is common to start by exploring the sources of variation in the data. DESeq2 provides quality control tools, including Principal Component Analysis (PCA) and hierarchical clustering. PCA is used to reduce the dimensionality of the data, allowing the visualisation of the samples in a lower-dimensional space. In contrast, hierarchical clustering shows the correlation of gene expression for all pairwise combinations of samples in the dataset. These methods can identify groups of samples with similar behaviour, as well as potential outliers or unexpected patterns.
+
+Quality control in DESeq2 typically uses **variance-stabilised (vst)** or **regularised log-transformed (rlog)** counts. Since raw counts in RNA-seq follow a discrete distribution, which is not suitable for many statistical and machine learning algorithms that assume continuous distributions, transformations such as `vst` and `rlog` are applied to stabilise the variance across genes. This stabilisation ensures that, after transformation, genes with both low and high expression levels have variances that are more comparable, making the data more suitable for downstream analyses.
+
+Finally, it is often beneficial to filter out genes that are unlikely to show differential expression, such as those with zero counts across samples or extreme count outliers. By filtering out these genes, we can increase the sensitivity of our differential expression analysis, and reduce the risk of false positives.
+
+:::note
+The `vst` or `rlog` transformations are applied to the normalised counts stored in the `dds` object, which is generated by running either the `DESeq()` or `estimateSizeFactors()` function. Since the estimation of size factors is an early step in the `DESeq()` function, the transformations are generally applied immediately afterwards.
+:::
+
+### Design Formula
+
+The design formula specifies the sources of variation that the statistical model needs to account for. It defines how the counts will be related to the experimental conditions, allowing the software to model the relationship between gene expression and the factors of interest, such as treatment, time points or batch effects. It is important to specify the main factor of interest as well as additional covariates in the design formula.
+
+A well-defined design formula can account for potential confounding variables. For instance, if the experiment includes multiple conditions, specifying these in the design helps to isolate the effect of the primary variable of interest on gene expression. An example is provided below:
+
+```r
+# Basic design with a single factor of interest
+
+design = ~ condition
+
+# Design including covariates to control for sex and developmental stage
+
+design = ~ sex + developmental_stage + condition
+```
+
+:::tip
+In R, the tilde (`~`) is used in formula syntax to specify relationships between variables in statistical models. Here, it indicates that gene counts (dependent variable) will be modelled as a function of the specified variables (predictors).
+:::
+
+The results will not be affected by the order of variables but the common practice is to specify the main source of variation in the last position of the design formula.
+
+### Differential Expression Analysis
+
+RNA-seq data typically contain a large number of genes with low expression counts, indicating that many genes are expressed at very low levels across samples. At the same time, RNA-seq data exhibit a skewed distribution with a long right tail due to the absence of an upper limit for gene expression levels. This means that while most genes have low to moderate expression levels, a small number are expressed at high levels. Accurate statistical modelling must therefore account for this distribution to avoid misleading conclusions.
+
+
+
+The core of the differential expression analysis is the `DESeq()` function, a wrapper that streamlines several key steps into a single command. The different functions are listed below:
+
+
+
+:::note
+While `DESeq()` combines these steps, a user could choose to perform each function separately to have more control over the whole process.
+:::
+
+The different steps are explained in detail below:
+
+1. **Normalisation**: since DESeq2 compares counts between sample groups for the same gene, it does not need to adjust for gene length. However, it is essential to account for variations in sequencing depth and RNA composition among samples. To normalise the data, DESeq2 utilises **size factors**.
+
+The size factors are calculated using the **median ratio** method:
+
+- **Calculate the geometric mean**: for each gene, compute the geometric mean of its counts across all samples. This gives a row-wise geometric mean for each gene;
+
+- **Calculate ratios**: divide each gene's count by its geometric mean to obtain a ratio for each sample;
+
+- **Determine size factors**: for each sample, take the median of these ratios (column-wise) to derive the size factors;
+
+- **Normalise counts**: divide each raw count by the corresponding sample size factor to generate normalised counts.
+
+:::warning
+While normalised counts are useful for downstream visualisation of results, they should not be used as input for DESeq2. Instead, DESeq2 requires raw count data in the form of a matrix of integer values.
+:::
+
+2. **Estimate dispersion and gene-wise dispersion**: the dispersion is a measure of how much the variance deviates from the mean. The dispersion estimates indicate the variance in gene expression at a specific mean expression level. Importantly, RNA-seq data are characterised by **overdispersion**, where the variance in gene expression levels often exceeds the mean (variance > mean).
+
+
+
+DESeq2 addresses this issue by employing the **negative binomial distribution**, which generalises the Poisson distribution by introducing an additional dispersion parameter. This parameter quantifies the extra variability present in RNA-seq data, providing a more realistic representation than the Poisson distribution, which assumes mean = variance. DESeq2 starts by estimating the **common dispersion**, a single estimate of dispersion applicable to all genes in the dataset. This estimate provides a baseline for variability across all genes in the dataset. Next, DESeq2 estimates **gene-wise dispersion**, a separate estimate of dispersion for each individual gene, taking into account that different genes may exhibit varying levels of expression variability due to biological differences.
+The dispersion parameter (α) is related to the mean (μ), and variance of the data, as described by the equation:
+
+$$
+Var = μ + α ⋅ μ²
+$$
+
+A key feature of DESeq2's dispersion estimates is their negative correlation with the mean, and positive correlation with the variance. Genes with low expression tend to have higher dispersion values, while genes with high expression tend to have lower dispersion.
+
+3. **Mean-dispersion relationship**: this process, known as dispersion fitting, models the relationship between the mean expression level of a gene, and its dispersion. DESeq2 assumes that genes with similar expression profiles share similar dispersion patterns, and leverages this information to refine the estimates identifying a trend in the dispersion estimates across genes. The fitted curve, typically a smooth curve, describes how dispersion changes as a function of the mean expression level.
+
+4. **Final dispersion estimates**: DESeq2 refines the gene-wise dispersion by shrinking it towards the fitted curve. The "shrinkage" helps control for overfitting, and makes the dispersion estimates more reliable. The strength of the shrinkage depends on the sample size (more samples = less shrinkage), and how close the initial estimates are to the fitted curve.
+
+
+
+The initial estimates (black dots) are shrunk toward the fitted curve (red line) to obtain the final estimates (blue dots). However, genes with exceptionally high dispersion values are not shrunk, as they likely deviate from the model assumptions exhibiting elevated variability due to biological or technical factors. Shrinking these values could lead to false positives.
+
+5. **Fitting model and testing**: the initial step in hypothesis testing involves defining a **null hypothesis** for each gene. In DESeq2, The null hypothesis states that there is no difference in expression between the sample groups (log2 fold change == 0). Next, DESeq applies a statistical test to assess whether the null hypothesis is true.
+ DESeq2 fits a **generalised linear model (GLM)** to the normalised counts using the calculated size factors and final dispersion estimates. A GLM is a flexible extension of linear regression that models the relationship between a response variable (normalised counts), and predictors (e.g., condition).
+ By using a **negative binomial distribution**, DESeq2's GLM can handle the additional variability in gene expression counts that often occurs in RNA-seq data. Once the model is fit, coefficients are estimated for each sample group along with their standard errors. These coefficients represent the estimated log2 fold changes between groups, and serve as the basis for hypothesis testing, using either a **Wald test** or a **Likelihood Ratio Test (LRT)**, depending on the experimental design:
+
+- **Wald Test**: The Wald test is ideal for simpler experimental designs, such as comparing two conditions (e.g., treated vs untreated). In DESeq2, the Wald test is implemented by calculating the log2 fold change and dividing it by its standard error to obtain a z-statistic. This z-statistic is then evaluated against a standard normal distribution, leading to the computation of a p-value that indicates the likelihood of observing a z-statistic as extreme as the calculated value under the null hypothesis. When the p-value is small, we reject the null hypothesis, concluding that the gene is differentially expressed.
+
+- **Likelihood Ratio Test (LRT)**: The LRT is more suitable for complex experimental designs involving multiple variables. It compares the fit of two nested models: the full model, which includes the factor of interest (e.g., treatment), and the reduced model, which excludes that factor. This approach allows DESeq2 to account for confounding variables and to isolate the effect of specific variables on gene expression. In contrast to the Wald test, which assesses up- or down-regulation between two conditions, the LRT identifies genes that exhibit changes in expression in any direction across multiple sample classes, thereby making it more appropriate for multi-factor analyses.
+
+Regardless of the utilised test, for each gene DESeq2 computes a log2 fold change along with an associated p-value. The p-value is the result of a single test (single gene), but in the case of RNA-seq data thousands of genes are tested, increasing the false positive rate.
+To account for this, DESeq2 employs multiple test correction methods (the Benjamini-Hochberg procedure is the default) to adjust the p-values, and control the false discovery rate (FDR). The FDR is the expected proportion of false positives among the identified significant results.
+
+:::info
+By setting the FDR cutoff to < 0.05, 5% of genes identified as differentially expressed are expected to be false positives. For instance, if 400 genes are identified as differentially expressed with an FDR cutoff of 0.05, you would expect 20 of them to be false positives.
+:::
+
+After identifying DE genes using DESeq2, it is essential to interpret the biological significance of these genes through functional analysis. This involves examining the roles of the differentially expressed genes in various biological processes, molecular functions, and pathways, providing insights into the underlying mechanisms driving the observed changes in gene expression. This interpretation can help in discovering pathways involved in disease or identifying potential therapeutic targets. Different tools are available to carry out these functional analyses, such as [Gene Ontology](https://geneontology.org), [Reactome](https://reactome.org/), [KEGG](https://www.genome.jp/kegg), [clusterProfiler](https://bioconductor.org/packages/release/bioc/html/clusterProfiler.html), [g:Profiler](https://biit.cs.ut.ee/gprofiler), and [WikiPathways](https://www.wikipathways.org).
diff --git a/modules.json b/modules.json
index 9667d1b6b..496b6a7d9 100644
--- a/modules.json
+++ b/modules.json
@@ -57,6 +57,11 @@
"git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"]
},
+ "fq/lint": {
+ "branch": "master",
+ "git_sha": "2c0260ed80daeca9c6dfa477a4daf04ff336dc37",
+ "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"]
+ },
"fq/subsample": {
"branch": "master",
"git_sha": "a1abf90966a2a4016d3c3e41e228bfcbd4811ccc",
@@ -198,6 +203,7 @@
"branch": "master",
"git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
"installed_by": [
+ "bam_dedup_stats_samtools_umicollapse",
"bam_dedup_stats_samtools_umitools",
"bam_markduplicates_picard",
"bam_sort_stats_samtools"
@@ -206,7 +212,7 @@
"samtools/sort": {
"branch": "master",
"git_sha": "b7800db9b069ed505db3f9d91b8c72faea9be17b",
- "installed_by": ["bam_sort_stats_samtools"]
+ "installed_by": ["bam_dedup_umi", "bam_sort_stats_samtools"]
},
"samtools/stats": {
"branch": "master",
@@ -221,13 +227,13 @@
},
"star/align": {
"branch": "master",
- "git_sha": "a5ad53288c79fa52c5ae708c317e09ec2dd149ab",
+ "git_sha": "6a367612c2c27aa659293c656afa764361223db4",
"installed_by": ["modules"],
"patch": "modules/nf-core/star/align/star-align.diff"
},
"star/genomegenerate": {
"branch": "master",
- "git_sha": "a5ad53288c79fa52c5ae708c317e09ec2dd149ab",
+ "git_sha": "6a367612c2c27aa659293c656afa764361223db4",
"installed_by": ["modules"],
"patch": "modules/nf-core/star/genomegenerate/star-genomegenerate.diff"
},
@@ -266,9 +272,14 @@
"git_sha": "49f4e50534fe4b64101e62ea41d5dc43b1324358",
"installed_by": ["bedgraph_bedclip_bedgraphtobigwig"]
},
+ "umicollapse": {
+ "branch": "master",
+ "git_sha": "0b27602842d3d79fd0e8db79f4afa764967fc3d1",
+ "installed_by": ["bam_dedup_stats_samtools_umicollapse"]
+ },
"umitools/dedup": {
"branch": "master",
- "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
+ "git_sha": "0b27602842d3d79fd0e8db79f4afa764967fc3d1",
"installed_by": ["bam_dedup_stats_samtools_umitools"]
},
"umitools/extract": {
@@ -279,7 +290,7 @@
"umitools/prepareforrsem": {
"branch": "master",
"git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
- "installed_by": ["modules"]
+ "installed_by": ["bam_dedup_umi", "modules"]
},
"untar": {
"branch": "master",
@@ -290,9 +301,19 @@
},
"subworkflows": {
"nf-core": {
+ "bam_dedup_stats_samtools_umicollapse": {
+ "branch": "master",
+ "git_sha": "0b27602842d3d79fd0e8db79f4afa764967fc3d1",
+ "installed_by": ["bam_dedup_umi", "subworkflows"]
+ },
"bam_dedup_stats_samtools_umitools": {
"branch": "master",
- "git_sha": "763d4b5c05ffda3ac1ac969dc67f7458cfb2eb1d",
+ "git_sha": "0b27602842d3d79fd0e8db79f4afa764967fc3d1",
+ "installed_by": ["bam_dedup_umi", "subworkflows"]
+ },
+ "bam_dedup_umi": {
+ "branch": "master",
+ "git_sha": "b5828f47c17c41ce3a4c70b863c99207e3f6d37c",
"installed_by": ["subworkflows"]
},
"bam_markduplicates_picard": {
@@ -308,12 +329,13 @@
"bam_sort_stats_samtools": {
"branch": "master",
"git_sha": "763d4b5c05ffda3ac1ac969dc67f7458cfb2eb1d",
- "installed_by": ["fastq_align_hisat2"]
+ "installed_by": ["bam_dedup_umi", "fastq_align_hisat2"]
},
"bam_stats_samtools": {
"branch": "master",
"git_sha": "763d4b5c05ffda3ac1ac969dc67f7458cfb2eb1d",
"installed_by": [
+ "bam_dedup_stats_samtools_umicollapse",
"bam_dedup_stats_samtools_umitools",
"bam_markduplicates_picard",
"bam_sort_stats_samtools"
@@ -341,7 +363,7 @@
},
"fastq_qc_trim_filter_setstrandedness": {
"branch": "master",
- "git_sha": "9082d6440bdffbb4f5d9bd9d753361933b3febcb",
+ "git_sha": "8a01490596dbe8443bd6bc6ae4207ae9485f33e3",
"installed_by": ["subworkflows"]
},
"fastq_subsample_fq_salmon": {
diff --git a/modules/nf-core/fq/lint/environment.yml b/modules/nf-core/fq/lint/environment.yml
new file mode 100644
index 000000000..74b146083
--- /dev/null
+++ b/modules/nf-core/fq/lint/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::fq=0.12.0
diff --git a/modules/nf-core/fq/lint/main.nf b/modules/nf-core/fq/lint/main.nf
new file mode 100644
index 000000000..27107b465
--- /dev/null
+++ b/modules/nf-core/fq/lint/main.nf
@@ -0,0 +1,44 @@
+process FQ_LINT {
+ tag "$meta.id"
+ label 'process_low'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/fq:0.12.0--h9ee0642_0':
+ 'biocontainers/fq:0.12.0--h9ee0642_0' }"
+
+ input:
+ tuple val(meta), path(fastq)
+
+ output:
+ tuple val(meta), path("*.fq_lint.txt"), emit: lint
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ fq lint \\
+ $args \\
+ $fastq > ${prefix}.fq_lint.txt
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fq: \$(echo \$(fq lint --version | sed 's/fq-lint //g'))
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.fq_lint.txt
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fq: \$(echo \$(fq lint --version | sed 's/fq-lint //g'))
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/fq/lint/meta.yml b/modules/nf-core/fq/lint/meta.yml
new file mode 100644
index 000000000..7240fb579
--- /dev/null
+++ b/modules/nf-core/fq/lint/meta.yml
@@ -0,0 +1,43 @@
+name: "fq_lint"
+description: fq lint is a FASTQ file pair validator.
+keywords:
+ - lint
+ - fastq
+ - validate
+tools:
+ - "fq":
+ description: "fq is a library to generate and validate FASTQ file pairs."
+ homepage: "https://github.com/stjude-rust-labs/fq"
+ documentation: "https://github.com/stjude-rust-labs/fq"
+ tool_dev_url: "https://github.com/stjude-rust-labs/fq"
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fastq:
+ type: file
+ description: FASTQ file list
+ pattern: "*.fastq{,.gz}"
+output:
+ - lint:
+ - meta:
+ type: file
+ description: Lint output
+ pattern: "*.fq_lint.txt"
+ - "*.fq_lint.txt":
+ type: file
+ description: Lint output
+ pattern: "*.fq_lint.txt"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@adamrtalbot"
+maintainers:
+ - "@adamrtalbot"
diff --git a/modules/nf-core/fq/lint/tests/main.nf.test b/modules/nf-core/fq/lint/tests/main.nf.test
new file mode 100644
index 000000000..f96a7c21a
--- /dev/null
+++ b/modules/nf-core/fq/lint/tests/main.nf.test
@@ -0,0 +1,58 @@
+nextflow_process {
+
+ name "Test Process FQ_LINT"
+ script "../main.nf"
+ process "FQ_LINT"
+
+ test("test_fq_lint_success") {
+ when {
+ params {
+ outdir = "$outputDir"
+ }
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ]
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert process.out.lint.get(0).get(1) ==~ ".*/test.fq_lint.txt" },
+ { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint start") },
+ { assert path(process.out.lint.get(0).get(1)).getText().contains("read 100 records") },
+ { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint end") },
+ )
+ }
+
+ }
+
+ test("test_fq_lint_fail") {
+ when {
+ params {
+ outdir = "$outputDir"
+ }
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ]
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert !process.success },
+ { assert snapshot(process.out).match() },
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/fq/lint/tests/main.nf.test.snap b/modules/nf-core/fq/lint/tests/main.nf.test.snap
new file mode 100644
index 000000000..fec8e5243
--- /dev/null
+++ b/modules/nf-core/fq/lint/tests/main.nf.test.snap
@@ -0,0 +1,25 @@
+{
+ "test_fq_lint_fail": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+
+ ],
+ "lint": [
+
+ ],
+ "versions": [
+
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-10-19T16:37:02.133847389"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/star/align/environment.yml b/modules/nf-core/star/align/environment.yml
index 7c57530a3..9ed1940fa 100644
--- a/modules/nf-core/star/align/environment.yml
+++ b/modules/nf-core/star/align/environment.yml
@@ -3,7 +3,7 @@ channels:
- bioconda
dependencies:
- - bioconda::htslib=1.20
- - bioconda::samtools=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
- bioconda::star=2.7.11b
- conda-forge::gawk=5.1.0
diff --git a/modules/nf-core/star/align/main.nf b/modules/nf-core/star/align/main.nf
index eadddb03f..c6b651bdd 100644
--- a/modules/nf-core/star/align/main.nf
+++ b/modules/nf-core/star/align/main.nf
@@ -3,7 +3,7 @@ process STAR_ALIGN {
label 'process_high'
conda "${moduleDir}/environment.yml"
- container 'nf-core/star_samtools_htslib_gawk:10c6e8c834460019'
+ container 'nf-core/htslib_samtools_star_gawk:311d422a50e6d829'
input:
tuple val(meta), path(reads, stageAs: "input*/*")
diff --git a/modules/nf-core/star/align/star-align.diff b/modules/nf-core/star/align/star-align.diff
index ea28fb1aa..ed59490be 100644
--- a/modules/nf-core/star/align/star-align.diff
+++ b/modules/nf-core/star/align/star-align.diff
@@ -1,4 +1,6 @@
Changes in module 'nf-core/star/align'
+'modules/nf-core/star/align/environment.yml' is unchanged
+'modules/nf-core/star/align/meta.yml' is unchanged
Changes in 'star/align/main.nf':
--- modules/nf-core/star/align/main.nf
+++ modules/nf-core/star/align/main.nf
@@ -7,19 +9,18 @@ Changes in 'star/align/main.nf':
conda "${moduleDir}/environment.yml"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
-- 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b425bc2a95806d878993f9a66dae3ae80ac2dafff4c208c5ae01b7a90a32fa91/data' :
-- 'community.wave.seqera.io/library/star_samtools_htslib_gawk:10c6e8c834460019' }"
-+ container 'nf-core/star_samtools_htslib_gawk:10c6e8c834460019'
+- 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/10/101ea47973178f85ff66a34de6a7462aaf99d947d3924c27ce8a2d5a63009065/data' :
+- 'community.wave.seqera.io/library/htslib_samtools_star_gawk:311d422a50e6d829' }"
++ container 'nf-core/htslib_samtools_star_gawk:311d422a50e6d829'
input:
tuple val(meta), path(reads, stageAs: "input*/*")
-'modules/nf-core/star/align/meta.yml' is unchanged
-'modules/nf-core/star/align/environment.yml' is unchanged
'modules/nf-core/star/align/tests/main.nf.test.snap' is unchanged
-'modules/nf-core/star/align/tests/nextflow.config' is unchanged
-'modules/nf-core/star/align/tests/nextflow.starfusion.config' is unchanged
'modules/nf-core/star/align/tests/nextflow.arriba.config' is unchanged
+'modules/nf-core/star/align/tests/tags.yml' is unchanged
+'modules/nf-core/star/align/tests/nextflow.starfusion.config' is unchanged
+'modules/nf-core/star/align/tests/nextflow.config' is unchanged
Changes in 'star/align/tests/main.nf.test':
--- modules/nf-core/star/align/tests/main.nf.test
+++ modules/nf-core/star/align/tests/main.nf.test
@@ -36,5 +37,4 @@ Changes in 'star/align/tests/main.nf.test':
test("homo_sapiens - single_end") {
config "./nextflow.config"
-'modules/nf-core/star/align/tests/tags.yml' was removed
************************************************************
diff --git a/modules/nf-core/star/align/tests/main.nf.test.snap b/modules/nf-core/star/align/tests/main.nf.test.snap
index b533fb8b4..a1ec3a3d0 100644
--- a/modules/nf-core/star/align/tests/main.nf.test.snap
+++ b/modules/nf-core/star/align/tests/main.nf.test.snap
@@ -97,7 +97,7 @@
]
],
"3": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"4": [
[
@@ -307,7 +307,7 @@
]
],
"versions": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"wig": [
[
@@ -321,10 +321,10 @@
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:09:08.738074176"
+ "timestamp": "2024-12-11T16:28:39.242074494"
},
"homo_sapiens - paired_end - arriba - stub": {
"content": [
@@ -424,7 +424,7 @@
]
],
"3": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"4": [
[
@@ -634,7 +634,7 @@
]
],
"versions": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"wig": [
[
@@ -648,10 +648,10 @@
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:09:36.122131869"
+ "timestamp": "2024-12-11T16:29:08.392620556"
},
"homo_sapiens - single_end": {
"content": [
@@ -703,14 +703,14 @@
],
[
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:01:22.197991909"
+ "timestamp": "2024-12-11T16:21:34.549483887"
},
"homo_sapiens - paired_end": {
"content": [
@@ -762,14 +762,14 @@
],
[
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:02:06.988663857"
+ "timestamp": "2024-12-11T16:22:17.011253146"
},
"homo_sapiens - paired_end - multiple - stub": {
"content": [
@@ -869,7 +869,7 @@
]
],
"3": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"4": [
[
@@ -1079,7 +1079,7 @@
]
],
"versions": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"wig": [
[
@@ -1093,10 +1093,10 @@
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:10:12.005468781"
+ "timestamp": "2024-12-11T16:29:31.072104862"
},
"homo_sapiens - paired_end - multiple": {
"content": [
@@ -1148,14 +1148,14 @@
],
[
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:08:54.877286681"
+ "timestamp": "2024-12-11T16:28:26.645008336"
},
"homo_sapiens - paired_end - stub": {
"content": [
@@ -1255,7 +1255,7 @@
]
],
"3": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"4": [
[
@@ -1465,7 +1465,7 @@
]
],
"versions": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"wig": [
[
@@ -1479,10 +1479,10 @@
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:09:20.911466345"
+ "timestamp": "2024-12-11T16:28:53.816280805"
},
"homo_sapiens - paired_end - starfusion": {
"content": [
@@ -1525,14 +1525,14 @@
],
[
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:07:25.0639914"
+ "timestamp": "2024-12-11T16:27:14.136111964"
},
"homo_sapiens - paired_end - arriba": {
"content": [
@@ -1574,14 +1574,14 @@
],
[
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:04:00.685784211"
+ "timestamp": "2024-12-11T16:24:00.829462526"
},
"homo_sapiens - paired_end - starfusion - stub": {
"content": [
@@ -1681,7 +1681,7 @@
]
],
"3": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"4": [
[
@@ -1891,7 +1891,7 @@
]
],
"versions": [
- "versions.yml:md5,a149bba1dbb5194560abdd813c7848e3"
+ "versions.yml:md5,b416145d7b5b8a080e832a7f7cde4c44"
],
"wig": [
[
@@ -1905,9 +1905,9 @@
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-20T17:09:53.173671551"
+ "timestamp": "2024-12-11T16:29:20.015372487"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/star/genomegenerate/environment.yml b/modules/nf-core/star/genomegenerate/environment.yml
index 7c57530a3..9ed1940fa 100644
--- a/modules/nf-core/star/genomegenerate/environment.yml
+++ b/modules/nf-core/star/genomegenerate/environment.yml
@@ -3,7 +3,7 @@ channels:
- bioconda
dependencies:
- - bioconda::htslib=1.20
- - bioconda::samtools=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
- bioconda::star=2.7.11b
- conda-forge::gawk=5.1.0
diff --git a/modules/nf-core/star/genomegenerate/main.nf b/modules/nf-core/star/genomegenerate/main.nf
index af72f920b..4402ff963 100644
--- a/modules/nf-core/star/genomegenerate/main.nf
+++ b/modules/nf-core/star/genomegenerate/main.nf
@@ -3,7 +3,7 @@ process STAR_GENOMEGENERATE {
label 'process_high'
conda "${moduleDir}/environment.yml"
- container 'nf-core/star_samtools_htslib_gawk:10c6e8c834460019'
+ container 'nf-core/htslib_samtools_star_gawk:311d422a50e6d829'
input:
tuple val(meta), path(fasta)
diff --git a/modules/nf-core/star/genomegenerate/star-genomegenerate.diff b/modules/nf-core/star/genomegenerate/star-genomegenerate.diff
index dea48619b..85f11ae52 100644
--- a/modules/nf-core/star/genomegenerate/star-genomegenerate.diff
+++ b/modules/nf-core/star/genomegenerate/star-genomegenerate.diff
@@ -1,4 +1,6 @@
Changes in module 'nf-core/star/genomegenerate'
+'modules/nf-core/star/genomegenerate/environment.yml' is unchanged
+'modules/nf-core/star/genomegenerate/meta.yml' is unchanged
Changes in 'star/genomegenerate/main.nf':
--- modules/nf-core/star/genomegenerate/main.nf
+++ modules/nf-core/star/genomegenerate/main.nf
@@ -7,16 +9,15 @@ Changes in 'star/genomegenerate/main.nf':
conda "${moduleDir}/environment.yml"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
-- 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b425bc2a95806d878993f9a66dae3ae80ac2dafff4c208c5ae01b7a90a32fa91/data' :
-- 'community.wave.seqera.io/library/star_samtools_htslib_gawk:10c6e8c834460019' }"
-+ container 'nf-core/star_samtools_htslib_gawk:10c6e8c834460019'
+- 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/10/101ea47973178f85ff66a34de6a7462aaf99d947d3924c27ce8a2d5a63009065/data' :
+- 'community.wave.seqera.io/library/htslib_samtools_star_gawk:311d422a50e6d829' }"
++ container 'nf-core/htslib_samtools_star_gawk:311d422a50e6d829'
input:
tuple val(meta), path(fasta)
-'modules/nf-core/star/genomegenerate/meta.yml' is unchanged
-'modules/nf-core/star/genomegenerate/environment.yml' is unchanged
'modules/nf-core/star/genomegenerate/tests/main.nf.test.snap' is unchanged
+'modules/nf-core/star/genomegenerate/tests/tags.yml' is unchanged
Changes in 'star/genomegenerate/tests/main.nf.test':
--- modules/nf-core/star/genomegenerate/tests/main.nf.test
+++ modules/nf-core/star/genomegenerate/tests/main.nf.test
@@ -32,5 +33,4 @@ Changes in 'star/genomegenerate/tests/main.nf.test':
test("fasta_gtf") {
-'modules/nf-core/star/genomegenerate/tests/tags.yml' was removed
************************************************************
diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap
index 3db256782..b79da991d 100644
--- a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap
+++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap
@@ -3,14 +3,14 @@
"content": [
"[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]",
[
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-19T20:37:47.410432728"
+ "timestamp": "2024-12-11T16:29:40.748676908"
},
"fasta_gtf_stub": {
"content": [
@@ -41,7 +41,7 @@
]
],
"1": [
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
],
"index": [
[
@@ -69,15 +69,15 @@
]
],
"versions": [
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
]
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-19T20:38:09.165234795"
+ "timestamp": "2024-12-11T16:30:11.024076742"
},
"fasta_stub": {
"content": [
@@ -101,7 +101,7 @@
]
],
"1": [
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
],
"index": [
[
@@ -122,27 +122,27 @@
]
],
"versions": [
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
]
}
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-19T20:38:19.530862664"
+ "timestamp": "2024-12-11T16:30:22.674364031"
},
"fasta": {
"content": [
"[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]",
[
- "versions.yml:md5,14b05d04c9eca568e9ed4888aaf26fa6"
+ "versions.yml:md5,0c6c5fab50cc8601f9072268a2f49aad"
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-19T20:37:58.667436398"
+ "timestamp": "2024-12-11T16:29:57.958812354"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/umicollapse/environment.yml b/modules/nf-core/umicollapse/environment.yml
new file mode 100644
index 000000000..066f55eef
--- /dev/null
+++ b/modules/nf-core/umicollapse/environment.yml
@@ -0,0 +1,5 @@
+channels:
+ - conda-forge
+ - bioconda
+dependencies:
+ - bioconda::umicollapse=1.1.0
diff --git a/modules/nf-core/umicollapse/main.nf b/modules/nf-core/umicollapse/main.nf
new file mode 100644
index 000000000..aec10e851
--- /dev/null
+++ b/modules/nf-core/umicollapse/main.nf
@@ -0,0 +1,73 @@
+process UMICOLLAPSE {
+ tag "$meta.id"
+ label "process_high"
+ label "process_high_memory"
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/umicollapse:1.1.0--hdfd78af_0' :
+ 'biocontainers/umicollapse:1.1.0--hdfd78af_0' }"
+
+ input:
+ tuple val(meta), path(input), path(bai)
+ val(mode)
+
+ output:
+ tuple val(meta), path("*.bam"), emit: bam, optional: true
+ tuple val(meta), path("*dedup*fastq.gz"), emit: fastq, optional: true
+ tuple val(meta), path("*_UMICollapse.log"), emit: log
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def VERSION = '1.1.0-0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ // Memory allocation: We need to make sure that both heap and stack size is sufficiently large for
+ // umicollapse. We set the stack size to 5% of the available memory, the heap size to 90%
+ // which leaves 5% for stuff happening outside of java without the scheduler killing the process.
+ def max_heap_size_mega = (task.memory.toMega() * 0.9).intValue()
+ def max_stack_size_mega = 999 //most java jdks will not allow Xss > 1GB, so fixing this to the allowed max
+ if ( mode !in [ 'fastq', 'bam' ] ) {
+ error "Mode must be one of 'fastq' or 'bam'."
+ }
+ extension = mode.contains("fastq") ? "fastq.gz" : "bam"
+ """
+ # Getting the umicollapse jar file like this because `umicollapse` is a Python wrapper script generated
+ # by conda that allows to set the heap size (Xmx), but not the stack size (Xss).
+ # `which` allows us to get the directory that contains `umicollapse`, independent of whether we
+ # are in a container or conda environment.
+ UMICOLLAPSE_JAR=\$(dirname \$(which umicollapse))/../share/umicollapse-${VERSION}/umicollapse.jar
+ java \\
+ -Xmx${max_heap_size_mega}M \\
+ -Xss${max_stack_size_mega}M \\
+ -jar \$UMICOLLAPSE_JAR \\
+ $mode \\
+ -i ${input} \\
+ -o ${prefix}.${extension} \\
+ $args | tee ${prefix}_UMICollapse.log
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ umicollapse: $VERSION
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def VERSION = '1.0.0-1'
+ if ( mode !in [ 'fastq', 'bam' ] ) {
+ error "Mode must be one of 'fastq' or 'bam'."
+ }
+ extension = mode.contains("fastq") ? "fastq.gz" : "bam"
+ """
+ touch ${prefix}.dedup.${extension}
+ touch ${prefix}_UMICollapse.log
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ umicollapse: $VERSION
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/umicollapse/meta.yml b/modules/nf-core/umicollapse/meta.yml
new file mode 100644
index 000000000..7c4ebc5ec
--- /dev/null
+++ b/modules/nf-core/umicollapse/meta.yml
@@ -0,0 +1,82 @@
+name: "umicollapse"
+description: Deduplicate reads based on the mapping co-ordinate and the UMI attached
+ to the read.
+keywords:
+ - umicollapse
+ - deduplication
+ - genomics
+tools:
+ - "umicollapse":
+ description: "UMICollapse contains tools for dealing with Unique Molecular Identifiers
+ (UMIs)/Random Molecular Tags (RMTs)."
+ homepage: "https://github.com/Daniel-Liu-c0deb0t/UMICollapse"
+ documentation: "https://github.com/Daniel-Liu-c0deb0t/UMICollapse"
+ tool_dev_url: "https://github.com/siddharthab/UMICollapse"
+ doi: "10.7717/peerj.8275"
+ licence: ["MIT"]
+ identifier: ""
+input:
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: Input bam file
+ pattern: "*.bam"
+ - bai:
+ type: file
+ description: |
+ BAM index files corresponding to the input BAM file. Optionally can be skipped using [] when using FastQ input.
+ pattern: "*.{bai}"
+ - - mode:
+ type: string
+ description: |
+ Selects the mode of Umicollapse - either fastq or bam need to be provided.
+ pattern: "{fastq,bam}"
+output:
+ - bam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bam":
+ type: file
+ description: BAM file with deduplicated UMIs.
+ pattern: "*.{bam}"
+ - fastq:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*dedup*fastq.gz":
+ type: file
+ description: FASTQ file with deduplicated UMIs.
+ pattern: "*dedup*fastq.gz"
+ - log:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*_UMICollapse.log":
+ type: file
+ description: A log file with the deduplication statistics.
+ pattern: "*_{UMICollapse.log}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@CharlotteAnne"
+ - "@chris-cheshire"
+maintainers:
+ - "@CharlotteAnne"
+ - "@chris-cheshire"
+ - "@apeltzer"
+ - "@siddharthab"
+ - "@MatthiasZepper"
diff --git a/modules/nf-core/umicollapse/tests/main.nf.test b/modules/nf-core/umicollapse/tests/main.nf.test
new file mode 100644
index 000000000..db578775e
--- /dev/null
+++ b/modules/nf-core/umicollapse/tests/main.nf.test
@@ -0,0 +1,177 @@
+nextflow_process {
+
+ name "Test Process UMICOLLAPSE"
+ script "../main.nf"
+ process "UMICOLLAPSE"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "umicollapse"
+
+ test("umicollapse single end test") {
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:true ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam.bai', checkIfExists: true)
+ ])
+ input[1] = 'bam'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getSamLinesMD5(),
+ process.out.versions).match() }
+ )
+ }
+
+ }
+
+ test("umicollapse paired tests") {
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
+ ])
+ input[1] = 'bam'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ bam(process.out.bam[0][1]).getSamLinesMD5(),
+ process.out.versions).match() }
+ )
+ }
+
+ }
+
+ test("umicollapse fastq test (single-end)") {
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:true ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.umi_extract_single.fastq.gz', checkIfExists: true),
+ []
+ ]
+ input[1] = 'fastq'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ process.out.fastq,
+ process.out.versions).match() }
+ )
+ }
+ }
+
+ test("umicollapse fastq test (paired-end)") {
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.umi_extract_1.fastq.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.umi_extract_2.fastq.gz', checkIfExists: true)
+ ]
+ input[1] = 'fastq'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ process.out.fastq,
+ process.out.versions).match() }
+ )
+ }
+ }
+
+ // Stub tests
+
+ test("umicollapse single end test - stub") {
+
+ options "-stub"
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test', single_end:true ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam.bai', checkIfExists: true)
+ ])
+ input[1] = 'bam'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ process.out.bam,
+ process.out.versions).match() }
+ )
+ }
+
+ }
+
+ test("umicollapse paired tests - stub") {
+
+ options "-stub"
+
+ when {
+ config "./nextflow.config"
+ process {
+ """
+ input[0] = Channel.of([
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
+ ])
+ input[1] = 'bam'
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ process.out.bam,
+ process.out.versions).match() }
+ )
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/nf-core/umicollapse/tests/main.nf.test.snap b/modules/nf-core/umicollapse/tests/main.nf.test.snap
new file mode 100644
index 000000000..e903c0ce0
--- /dev/null
+++ b/modules/nf-core/umicollapse/tests/main.nf.test.snap
@@ -0,0 +1,110 @@
+{
+ "umicollapse single end test": {
+ "content": [
+ "9158ea6e7a0e54819e25cbac5fbc5cc0",
+ [
+ "versions.yml:md5,03fdbcb1ba9bd40325ca42859d39deb1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-25T17:31:45.024306"
+ },
+ "umicollapse paired tests": {
+ "content": [
+ "b7be15ac7aae194b04bdbb56f3534495",
+ [
+ "versions.yml:md5,03fdbcb1ba9bd40325ca42859d39deb1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-25T17:31:52.072799"
+ },
+ "umicollapse fastq test (paired-end)": {
+ "content": [
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.dedup.fastq.gz:md5,721a84a2accac988d636e837c60e47bc"
+ ]
+ ],
+ [
+ "versions.yml:md5,03fdbcb1ba9bd40325ca42859d39deb1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T13:57:36.968147"
+ },
+ "umicollapse fastq test (single-end)": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.dedup.fastq.gz:md5,2e602ed23eb87f434e4f0a9e491c0310"
+ ]
+ ],
+ [
+ "versions.yml:md5,03fdbcb1ba9bd40325ca42859d39deb1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T13:57:28.328682"
+ },
+ "umicollapse single end test - stub": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.dedup.dedup.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ [
+ "versions.yml:md5,c1e0275d81b1c97a9344d216f9154996"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T14:09:40.277318"
+ },
+ "umicollapse paired tests - stub": {
+ "content": [
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.dedup.dedup.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ [
+ "versions.yml:md5,c1e0275d81b1c97a9344d216f9154996"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T14:09:44.224965"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/umicollapse/tests/nextflow.config b/modules/nf-core/umicollapse/tests/nextflow.config
new file mode 100644
index 000000000..105d8e132
--- /dev/null
+++ b/modules/nf-core/umicollapse/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: UMICOLLAPSE {
+ ext.prefix = { "${meta.id}.dedup" }
+ }
+}
diff --git a/modules/nf-core/umicollapse/tests/tags.yml b/modules/nf-core/umicollapse/tests/tags.yml
new file mode 100644
index 000000000..912879c4d
--- /dev/null
+++ b/modules/nf-core/umicollapse/tests/tags.yml
@@ -0,0 +1,2 @@
+umicollapse:
+ - "modules/nf-core/umicollapse/**"
diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test b/modules/nf-core/umitools/dedup/tests/main.nf.test
index 883e2d9d7..f00a8cbed 100644
--- a/modules/nf-core/umitools/dedup/tests/main.nf.test
+++ b/modules/nf-core/umitools/dedup/tests/main.nf.test
@@ -4,6 +4,11 @@ nextflow_process {
script "../main.nf"
process "UMITOOLS_DEDUP"
+ tag "modules"
+ tag "modules_nfcore"
+ tag "umitools"
+ tag "umitools/dedup"
+
test("se - no stats") {
config "./nextflow.config"
@@ -14,8 +19,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:true ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
@@ -43,8 +48,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:false ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
@@ -56,7 +61,7 @@ nextflow_process {
{ assert process.success },
{ assert path("${process.out.log[0][1]}").exists() },
{ assert snapshot(
- process.out.bam,
+ bam(process.out.bam[0][1]).getSamLinesMD5(),
process.out.versions).match() }
)
}
@@ -72,8 +77,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:false ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
@@ -85,7 +90,7 @@ nextflow_process {
{ assert process.success },
{ assert path("${process.out.log[0][1]}").exists() },
{ assert snapshot(
- process.out.bam,
+ bam(process.out.bam[0][1]).getSamLinesMD5(),
process.out.tsv_edit_distance,
process.out.tsv_per_umi,
process.out.tsv_umi_per_position,
@@ -107,8 +112,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:true ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
@@ -136,8 +141,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:false ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
@@ -165,8 +170,8 @@ nextflow_process {
input[0] = [
[ id:'test', single_end:false ], // meta map
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true),
- file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true)
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam", checkIfExists: true),
+ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai", checkIfExists: true)
]
input[1] = get_output_stats
"""
diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap
index f7f4e94f1..04b81692a 100644
--- a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap
+++ b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap
@@ -37,13 +37,14 @@
},
"pe - with stats": {
"content": [
+ "b7be15ac7aae194b04bdbb56f3534495",
[
[
{
"id": "test",
"single_end": false
},
- "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed"
+ "test.dedup_edit_distance.tsv:md5,c247a49b58768e6e2e86a6c08483e612"
]
],
[
@@ -52,7 +53,7 @@
"id": "test",
"single_end": false
},
- "test.dedup_edit_distance.tsv:md5,65186b0964e2f8d970cc04d736d8b119"
+ "test.dedup_per_umi.tsv:md5,ced75f7bdbf38bf78f3137d5325a8773"
]
],
[
@@ -61,16 +62,7 @@
"id": "test",
"single_end": false
},
- "test.dedup_per_umi.tsv:md5,8e6783a4a79437b095f095f2aefe7c01"
- ]
- ],
- [
- [
- {
- "id": "test",
- "single_end": false
- },
- "test.dedup_per_umi_per_position.tsv:md5,9386db4a104b8e4e32f3ca4a84efa4ac"
+ "test.dedup_per_umi_per_position.tsv:md5,2e1a12e6f720510880068deddeefe063"
]
],
[
@@ -79,9 +71,9 @@
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nextflow": "24.10.1"
},
- "timestamp": "2024-07-03T11:27:24.231325"
+ "timestamp": "2024-11-25T17:25:28.939957"
},
"se - no stats - stub": {
"content": [
@@ -103,36 +95,28 @@
},
"se - no stats": {
"content": [
- "a114abd9fccce6fe2869852b5cd18964",
+ "9158ea6e7a0e54819e25cbac5fbc5cc0",
[
"versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nextflow": "24.10.1"
},
- "timestamp": "2024-07-03T13:45:48.553561"
+ "timestamp": "2024-11-23T09:06:54.373171"
},
"pe - no stats": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": false
- },
- "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed"
- ]
- ],
+ "b7be15ac7aae194b04bdbb56f3534495",
[
"versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nextflow": "24.10.1"
},
- "timestamp": "2024-07-03T11:27:06.957467"
+ "timestamp": "2024-11-25T17:24:51.423637"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/umitools/dedup/tests/tags.yml b/modules/nf-core/umitools/dedup/tests/tags.yml
new file mode 100644
index 000000000..5934c5cb7
--- /dev/null
+++ b/modules/nf-core/umitools/dedup/tests/tags.yml
@@ -0,0 +1,2 @@
+umitools/dedup:
+ - "modules/nf-core/umitools/dedup/**"
diff --git a/nextflow.config b/nextflow.config
index 468792d0f..aacf937c3 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -30,6 +30,7 @@ params {
with_umi = false
skip_umi_extract = false
umitools_extract_method = 'string'
+ umi_dedup_tool = 'umitools'
umitools_grouping_method = 'directional'
umitools_dedup_stats = false
umitools_bc_pattern = null
@@ -38,6 +39,10 @@ params {
umi_discard_read = null
save_umi_intermeds = false
+ // Linting
+ skip_linting = false
+ extra_fqlint_args = '--disable-validator P001'
+
// Trimming
trimmer = 'trimgalore'
min_trimmed_reads = 10000
@@ -328,7 +333,7 @@ manifest {
description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control."""
mainScript = 'main.nf'
nextflowVersion = '!>=24.04.2'
- version = '3.17.0'
+ version = '3.18.0'
doi = 'https://doi.org/10.5281/zenodo.1400710'
}
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 802209b42..5bd25ca0d 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -305,6 +305,13 @@
"fa_icon": "fas fa-barcode",
"description": "Enable UMI-based read deduplication."
},
+ "umi_dedup_tool": {
+ "type": "string",
+ "default": "umitools",
+ "description": "Specifies the tool to use for UMI deduplication - available options are 'umitools' and 'umicollapse'.",
+ "fa_icon": "fas fa-barcode",
+ "enum": ["umitools", "umicollapse"]
+ },
"umitools_extract_method": {
"type": "string",
"default": "string",
@@ -411,7 +418,7 @@
},
"min_mapped_reads": {
"type": "number",
- "default": 5.0,
+ "default": 5,
"fa_icon": "fas fa-percentage",
"description": "Minimum percentage of uniquely mapped reads below which samples are removed from further processing.",
"help_text": "Some downstream steps in the pipeline will fail if this threshold is too low."
@@ -456,14 +463,14 @@
"stranded_threshold": {
"type": "number",
"minimum": 0.5,
- "maximum": 1.0,
+ "maximum": 1,
"default": 0.8,
"description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5."
},
"unstranded_threshold": {
"type": "number",
- "minimum": 0.0,
- "maximum": 1.0,
+ "minimum": 0,
+ "maximum": 1,
"default": 0.1,
"description": "The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'. By default the forward and reverse fractions must differ by less than 0.1 for the sample to be called as unstranded."
}
@@ -539,6 +546,12 @@
"description": "Additional quality control options.",
"default": "",
"properties": {
+ "extra_fqlint_args": {
+ "type": "string",
+ "default": "--disable-validator P001",
+ "description": "Extra arguments to pass to the fq lint command.",
+ "fa_icon": "far fa-check-square"
+ },
"deseq2_vst": {
"type": "boolean",
"description": "Use vst transformation instead of rlog with DESeq2.",
@@ -602,6 +615,11 @@
"fa_icon": "fas fa-compress-alt",
"description": "Skip the UMI extraction from the read in case the UMIs have been moved to the headers in advance of the pipeline run."
},
+ "skip_linting": {
+ "type": "boolean",
+ "fa_icon": "fas fa-fast-forward",
+ "description": "Skip linting checks during FASTQ preprocessing and filtering."
+ },
"skip_trimming": {
"type": "boolean",
"description": "Skip the adapter trimming step.",
diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap
index b8224b7fd..992e9b231 100644
--- a/subworkflows/local/align_star/tests/main.nf.test.snap
+++ b/subworkflows/local/align_star/tests/main.nf.test.snap
@@ -230,8 +230,8 @@
]
],
[
+ "versions.yml:md5,57e0ecbc0fd3d1f5cfc9d9ed285826e8",
"versions.yml:md5,5ad5e88ee4e52ccabeef61dcd368d30b",
- "versions.yml:md5,708098dd31c984730b066ead621a33f7",
"versions.yml:md5,92f25606f0ee994dac8c00fe49676e5a",
"versions.yml:md5,9611f602102b5aed0fe2b947f9d2270c",
"versions.yml:md5,b92d6ad60847882b0089f551c5cfc366",
@@ -239,10 +239,10 @@
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.3"
},
- "timestamp": "2024-10-21T20:42:29.835710637"
+ "timestamp": "2024-12-19T09:49:19.874380799"
},
"star - no igenomes": {
"content": [
@@ -333,8 +333,8 @@
]
],
[
+ "versions.yml:md5,57e0ecbc0fd3d1f5cfc9d9ed285826e8",
"versions.yml:md5,5ad5e88ee4e52ccabeef61dcd368d30b",
- "versions.yml:md5,708098dd31c984730b066ead621a33f7",
"versions.yml:md5,92f25606f0ee994dac8c00fe49676e5a",
"versions.yml:md5,9611f602102b5aed0fe2b947f9d2270c",
"versions.yml:md5,b92d6ad60847882b0089f551c5cfc366",
@@ -342,10 +342,10 @@
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.3"
},
- "timestamp": "2024-10-21T20:40:55.299198285"
+ "timestamp": "2024-12-19T09:47:39.98853048"
},
"star - with igenomes - stub": {
"content": [
diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf
index 92f8cc04a..c1b8b4c66 100644
--- a/subworkflows/local/prepare_genome/main.nf
+++ b/subworkflows/local/prepare_genome/main.nf
@@ -233,16 +233,18 @@ workflow PREPARE_GENOME {
if ('sortmerna' in prepare_tool_indices) {
ribo_db = file(sortmerna_fasta_list)
+ // SortMeRNA needs the rRNAs even if we're providing the index
+ ch_rrna_fastas = Channel.from(ribo_db.readLines())
+ .map { row -> file(row, checkIfExists: true) }
+
if (sortmerna_index) {
if (sortmerna_index.endsWith('.tar.gz')) {
ch_sortmerna_index = UNTAR_SORTMERNA_INDEX ( [ [:], sortmerna_index ] ).untar.map { it[1] }
ch_versions = ch_versions.mix(UNTAR_SORTMERNA_INDEX.out.versions)
} else {
- ch_sortmerna_index = Channel.value(file(sortmerna_index))
+ ch_sortmerna_index = Channel.value([[:], file(sortmerna_index)])
}
} else {
- ch_rrna_fastas = Channel.from(ribo_db.readLines())
- .map { row -> file(row, checkIfExists: true) }
SORTMERNA_INDEX (
Channel.of([ [],[] ]),
diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf
index aa0dd4ed7..5e8820ddc 100644
--- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf
+++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf
@@ -116,6 +116,8 @@ workflow PIPELINE_COMPLETION {
id, status -> pass_strand_check[id] = status
}
+ def multiqc_report_list = multiqc_report.toList()
+
//
// Completion email and summary
//
@@ -128,7 +130,7 @@ workflow PIPELINE_COMPLETION {
plaintext_email,
outdir,
monochrome_logs,
- multiqc_report.toList()
+ multiqc_report_list.getVal()
)
}
@@ -216,6 +218,10 @@ def validateInputParameters() {
}
}
+ if (params.with_umi && params.umi_dedup_tool == "umicollapse" && params.umitools_grouping_method !in ['directional', 'adjacency', 'cluster']) {
+ error("UMI grouping method '${params.umitools_grouping_method}' unsupported for umicollapse, supported methods are 'cluster', 'adjacency' and 'directional'")
+ }
+
if (params.skip_alignment) {
skipAlignmentWarn()
}
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/main.nf b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/main.nf
new file mode 100644
index 000000000..54c42b986
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/main.nf
@@ -0,0 +1,55 @@
+//
+// umicollapse, index BAM file and run samtools stats, flagstat and idxstats
+//
+
+include { UMICOLLAPSE } from '../../../modules/nf-core/umicollapse/main'
+include { SAMTOOLS_INDEX } from '../../../modules/nf-core/samtools/index/main'
+include { BAM_STATS_SAMTOOLS } from '../bam_stats_samtools/main'
+
+workflow BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE {
+ take:
+ ch_bam_bai // channel: [ val(meta), path(bam), path(bai/csi) ]
+
+ main:
+
+ ch_versions = Channel.empty()
+
+ //
+ // umicollapse in bam mode (thus hardcode mode input channel to 'bam')
+ //
+ UMICOLLAPSE ( ch_bam_bai, channel.value( 'bam' ))
+ ch_versions = ch_versions.mix(UMICOLLAPSE.out.versions.first())
+
+ //
+ // Index BAM file and run samtools stats, flagstat and idxstats
+ //
+ SAMTOOLS_INDEX ( UMICOLLAPSE.out.bam )
+ ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first())
+
+ ch_bam_bai_dedup = UMICOLLAPSE.out.bam
+ .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true)
+ .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true)
+ .map {
+ meta, bam, bai, csi ->
+ if (bai) {
+ [ meta, bam, bai ]
+ } else {
+ [ meta, bam, csi ]
+ }
+ }
+
+ BAM_STATS_SAMTOOLS ( ch_bam_bai_dedup, [ [:], [] ] )
+ ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions)
+
+ emit:
+ bam = UMICOLLAPSE.out.bam // channel: [ val(meta), path(bam) ]
+
+ bai = SAMTOOLS_INDEX.out.bai // channel: [ val(meta), path(bai) ]
+ csi = SAMTOOLS_INDEX.out.csi // channel: [ val(meta), path(csi) ]
+ dedup_stats = UMICOLLAPSE.out.log // channel: [ val(meta), path(stats) ]
+ stats = BAM_STATS_SAMTOOLS.out.stats // channel: [ val(meta), path(stats) ]
+ flagstat = BAM_STATS_SAMTOOLS.out.flagstat // channel: [ val(meta), path(flagstat) ]
+ idxstats = BAM_STATS_SAMTOOLS.out.idxstats // channel: [ val(meta), path(idxstats) ]
+
+ versions = ch_versions // channel: [ path(versions.yml) ]
+}
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/meta.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/meta.yml
new file mode 100644
index 000000000..a24e0448d
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/meta.yml
@@ -0,0 +1,59 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json
+name: "bam_dedup_stats_samtools_umicollapse"
+description: umicollapse, index BAM file and run samtools stats, flagstat and idxstats
+keywords:
+ - umi
+ - dedup
+ - index
+ - bam
+ - sam
+ - cram
+components:
+ - umicollapse
+ - samtools/index
+ - samtools/stats
+ - samtools/idxstats
+ - samtools/flagstat
+ - bam_stats_samtools
+input:
+ - ch_bam_bai:
+ description: |
+ input BAM file
+ Structure: [ val(meta), path(bam), path(bai) ]
+output:
+ - bam:
+ description: |
+ Umi deduplicated BAM/SAM file
+ Structure: [ val(meta), path(bam) ]
+ - bai:
+ description: |
+ Umi deduplicated BAM/SAM samtools index
+ Structure: [ val(meta), path(bai) ]
+ - csi:
+ description: |
+ CSI samtools index
+ Structure: [ val(meta), path(csi) ]
+ - dedupstats:
+ description: |
+ File containing umicollapse deduplication stats
+ Structure: [ val(meta), path(stats) ]
+ - stats:
+ description: |
+ File containing samtools stats output
+ Structure: [ val(meta), path(stats) ]
+ - flagstat:
+ description: |
+ File containing samtools flagstat output
+ Structure: [ val(meta), path(flagstat) ]
+ - idxstats:
+ description: |
+ File containing samtools idxstats output
+ Structure: [ val(meta), path(idxstats) ]
+ - versions:
+ description: |
+ Files containing software versions
+ Structure: [ path(versions.yml) ]
+authors:
+ - "@MatthiasZepper"
+maintainers:
+ - "@MatthiasZepper"
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test
new file mode 100644
index 000000000..f4f14c71b
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test
@@ -0,0 +1,57 @@
+// nf-core subworkflows test bam_dedup_stats_samtools_umicollapse
+nextflow_workflow {
+
+ name "Test Subworkflow BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE"
+ script "../main.nf"
+ workflow "BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE"
+
+ tag "subworkflows"
+ tag "subworkflows_nfcore"
+ tag "subworkflows/bam_dedup_stats_samtools_umicollapse"
+ tag "subworkflows/bam_stats_samtools"
+ tag "bam_stats_samtools"
+ tag "bwa/index"
+ tag "bwa/mem"
+ tag "samtools"
+ tag "samtools/index"
+ tag "samtools/stats"
+ tag "samtools/idxstats"
+ tag "samtools/flagstat"
+ tag "umicollapse"
+ tag "umitools/extract"
+
+ test("sarscov2_bam_bai") {
+
+ when {
+ config "./paired-end-umis.config"
+ params {
+ outdir = "$outputDir"
+ }
+ workflow {
+ """
+ input[0] = Channel.of([
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert workflow.success},
+ { assert snapshot(bam(workflow.out.bam[0][1]).getSamLinesMD5()).match("test_bam_dedup_stats_samtools_umicollapse_bam")}, // separate, because of linting error otherwise
+ { assert snapshot(workflow.out.versions).match("test_bam_dedup_stats_samtools_umicollapse_versions") },
+ { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"},
+ { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"},
+ { assert workflow.out.dedup_stats.get(0).get(1) ==~ ".*_UMICollapse.log"},
+ { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umicollapse_stats") },
+ { assert snapshot(workflow.out.flagstat).match("test_bam_dedup_stats_samtools_umicollapse_flagstats") },
+ { assert snapshot(workflow.out.idxstats).match("test_bam_dedup_stats_samtools_umicollapse_idxstats") }
+ )
+ }
+
+}
+}
+
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test.snap
new file mode 100644
index 000000000..9694c6d5f
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/main.nf.test.snap
@@ -0,0 +1,79 @@
+{
+ "test_bam_dedup_stats_samtools_umicollapse_stats": {
+ "content": [
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.stats:md5,498621f92e86d55e4f7ae93170e6e733"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T13:57:02.323104"
+ },
+ "test_bam_dedup_stats_samtools_umicollapse_versions": {
+ "content": [
+ [
+ "versions.yml:md5,20605eb79c410c0ed179ba660d82f75b",
+ "versions.yml:md5,23617661d2c899996bee2b05db027e25",
+ "versions.yml:md5,657bce03545b4c57f9c5fc4314bf85f7",
+ "versions.yml:md5,e02a62a393a833778e16542eeed0d148",
+ "versions.yml:md5,ef00762e264b99ac45713dc0dedf4060"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-25T18:39:15.637444"
+ },
+ "test_bam_dedup_stats_samtools_umicollapse_flagstats": {
+ "content": [
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.flagstat:md5,18d602435a02a4d721b78d1812622159"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T13:57:02.366866"
+ },
+ "test_bam_dedup_stats_samtools_umicollapse_idxstats": {
+ "content": [
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.idxstats:md5,85d20a901eef23ca50c323638a2eb602"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-24T13:57:02.410712"
+ },
+ "test_bam_dedup_stats_samtools_umicollapse_bam": {
+ "content": [
+ "b7be15ac7aae194b04bdbb56f3534495"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
+ },
+ "timestamp": "2024-11-25T18:39:15.613319"
+ }
+}
\ No newline at end of file
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/paired-end-umis.config b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/paired-end-umis.config
new file mode 100644
index 000000000..8d58a861f
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/paired-end-umis.config
@@ -0,0 +1,6 @@
+process {
+
+ withName: UMICOLLAPSE {
+ ext.prefix = { "${meta.id}.dedup" }
+ }
+}
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/tags.yml
new file mode 100644
index 000000000..a3ba5b726
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/tests/tags.yml
@@ -0,0 +1,2 @@
+subworkflows/bam_dedup_stats_samtools_umicollapse:
+ - subworkflows/nf-core/bam_dedup_stats_samtools_umicollapse/**
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test
index ab541cb88..93e624857 100644
--- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test
@@ -3,6 +3,19 @@ nextflow_workflow {
name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS"
script "../main.nf"
workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS"
+ tag "subworkflows"
+ tag "subworkflows_nfcore"
+ tag "subworkflows/bam_dedup_stats_samtools_umitools"
+ tag "subworkflows/bam_stats_samtools"
+ tag "bam_dedup_stats_samtools_umitools"
+ tag "bam_stats_samtools"
+ tag "samtools"
+ tag "samtools/index"
+ tag "samtools/stats"
+ tag "samtools/idxstats"
+ tag "samtools/flagstat"
+ tag "umitools"
+ tag "umitools/dedup"
test("sarscov2_bam_bai") {
@@ -13,8 +26,8 @@ nextflow_workflow {
input[0] = Channel.of([
[ id:'test'], // meta map
- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
])
input[1] = val_get_dedup_stats
"""
@@ -28,6 +41,7 @@ nextflow_workflow {
{ assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"},
{ assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"},
{ assert snapshot(
+ bam(workflow.out.bam[0][1]).getSamLinesMD5(),
workflow.out.stats,
workflow.out.flagstat,
workflow.out.idxstats,
@@ -48,8 +62,8 @@ nextflow_workflow {
input[0] = Channel.of([
[ id:'test'], // meta map
- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
])
input[1] = val_get_dedup_stats
"""
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap
index d39f9129b..3b3613572 100644
--- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap
@@ -1,12 +1,13 @@
{
"sarscov2_bam_bai": {
"content": [
+ "b7be15ac7aae194b04bdbb56f3534495",
[
[
{
"id": "test"
},
- "test.stats:md5,84891a894010aeb882c4092db9248d2c"
+ "test.stats:md5,41ba57a9b90b54587e7d154e5405ea5e"
]
],
[
@@ -14,7 +15,7 @@
{
"id": "test"
},
- "test.flagstat:md5,0bb716e40fae381b97484b58e0b16efe"
+ "test.flagstat:md5,18d602435a02a4d721b78d1812622159"
]
],
[
@@ -22,7 +23,7 @@
{
"id": "test"
},
- "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d"
+ "test.idxstats:md5,85d20a901eef23ca50c323638a2eb602"
]
],
[
@@ -34,10 +35,10 @@
]
],
"meta": {
- "nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nf-test": "0.8.4",
+ "nextflow": "24.10.1"
},
- "timestamp": "2024-09-16T08:04:23.444693448"
+ "timestamp": "2024-11-25T17:23:13.841219"
},
"sarscov2_bam_bai - stub": {
"content": [
diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml
new file mode 100644
index 000000000..bfd5e023e
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml
@@ -0,0 +1,2 @@
+subworkflows/bam_dedup_stats_samtools_umitools:
+ - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/**
diff --git a/subworkflows/nf-core/bam_dedup_umi/main.nf b/subworkflows/nf-core/bam_dedup_umi/main.nf
new file mode 100644
index 000000000..d091a5824
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_umi/main.nf
@@ -0,0 +1,132 @@
+//
+// BAM deduplication with UMI processing
+//
+
+include { BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE as BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME } from '../bam_dedup_stats_samtools_umicollapse'
+include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../bam_dedup_stats_samtools_umitools'
+include { BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE as BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME } from '../bam_dedup_stats_samtools_umicollapse'
+include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME } from '../bam_dedup_stats_samtools_umitools'
+include { BAM_SORT_STATS_SAMTOOLS } from '../bam_sort_stats_samtools'
+
+include { UMITOOLS_PREPAREFORRSEM } from '../../../modules/nf-core/umitools/prepareforrsem'
+include { SAMTOOLS_SORT } from '../../../modules/nf-core/samtools/sort/main'
+
+workflow BAM_DEDUP_UMI {
+ take:
+ ch_genome_bam // channel: [ val(meta), path(bam), path(bai) ]
+ ch_fasta // channel: [ val(meta), path(fasta) ]
+ umi_dedup_tool // string: 'umicollapse' or 'umitools'
+ umitools_dedup_stats // boolean: whether to generate UMI-tools dedup stats
+ bam_csi_index // boolean: whether to generate CSI index
+ ch_transcriptome_bam // channel: [ val(meta), path(bam) ]
+ ch_transcript_fasta // channel: [ val(meta), path(fasta) ]
+
+ main:
+ ch_versions = Channel.empty()
+
+ if (umi_dedup_tool != "umicollapse" && umi_dedup_tool != "umitools"){
+ error("Unknown umi_dedup_tool '${umi_dedup_tool}'")
+ }
+
+ // Genome BAM deduplication
+ if (umi_dedup_tool == "umicollapse") {
+ BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME (
+ ch_genome_bam
+ )
+ UMI_DEDUP_GENOME = BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME
+ ch_dedup_log = UMI_DEDUP_GENOME.out.dedup_stats
+
+ } else if (umi_dedup_tool == "umitools") {
+ BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME (
+ ch_genome_bam,
+ umitools_dedup_stats
+ )
+ UMI_DEDUP_GENOME = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME
+ ch_dedup_log = UMI_DEDUP_GENOME.out.deduplog
+ }
+
+ // Co-ordinate sort, index and run stats on transcriptome BAM. This takes
+ // some preparation- we have to coordinate sort the BAM, run the
+ // deduplication, then restore name sorting and run a script from umitools
+ // to prepare for rsem or salmon
+
+ // 1. Coordinate sort
+
+ BAM_SORT_STATS_SAMTOOLS (
+ ch_transcriptome_bam,
+ ch_transcript_fasta
+ )
+ ch_sorted_transcriptome_bam = BAM_SORT_STATS_SAMTOOLS.out.bam
+ .join(BAM_SORT_STATS_SAMTOOLS.out.bai)
+
+ // 2. Transcriptome BAM deduplication
+ if (umi_dedup_tool == "umicollapse") {
+ BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME (
+ ch_sorted_transcriptome_bam
+ )
+ UMI_DEDUP_TRANSCRIPTOME = BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME
+ ch_dedup_log = ch_dedup_log.mix(UMI_DEDUP_GENOME.out.dedup_stats)
+
+ } else if (umi_dedup_tool == "umitools") {
+ BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME (
+ ch_sorted_transcriptome_bam,
+ umitools_dedup_stats
+ )
+ UMI_DEDUP_TRANSCRIPTOME = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME
+ ch_dedup_log = ch_dedup_log.mix(UMI_DEDUP_GENOME.out.deduplog)
+ }
+
+ // 3. Restore name sorting
+ SAMTOOLS_SORT (
+ UMI_DEDUP_TRANSCRIPTOME.out.bam,
+ ch_fasta
+ )
+
+ // 4. Run prepare_for_rsem.py on paired-end BAM files
+ // This fixes paired-end reads in name sorted BAM files
+ // See: https://github.com/nf-core/rnaseq/issues/828
+ ended_transcriptome_dedup_bam = SAMTOOLS_SORT.out.bam
+ .branch {
+ meta, bam ->
+ single_end: meta.single_end
+ return [ meta, bam ]
+ paired_end: !meta.single_end
+ return [ meta, bam ]
+ }
+
+ UMITOOLS_PREPAREFORRSEM (
+ ended_transcriptome_dedup_bam.paired_end
+ .map { meta, bam -> [ meta, bam, [] ] }
+ )
+
+ ch_dedup_transcriptome_bam = ended_transcriptome_dedup_bam.single_end
+ .mix(UMITOOLS_PREPAREFORRSEM.out.bam)
+
+ // Collect files useful for MultiQC into one helpful emission. Don't
+ // automatically add transcriptome stats- difficult to separate in multiqc
+ // without a bit more work
+
+ ch_multiqc_files = ch_dedup_log
+ .mix(UMI_DEDUP_GENOME.out.stats)
+ .mix(UMI_DEDUP_GENOME.out.flagstat)
+ .mix(UMI_DEDUP_GENOME.out.idxstats)
+ .transpose()
+ .map{it[1]}
+
+ // Record versions
+
+ ch_versions = UMI_DEDUP_GENOME.out.versions
+ .mix(BAM_SORT_STATS_SAMTOOLS.out.versions)
+ .mix(UMITOOLS_PREPAREFORRSEM.out.versions)
+
+ emit:
+ bam = UMI_DEDUP_GENOME.out.bam // channel: [ val(meta), path(bam) ]
+ bai = bam_csi_index ? UMI_DEDUP_GENOME.out.csi : UMI_DEDUP_GENOME.out.bai // channel: [ val(meta), path(bai) ]
+ dedup_log = ch_dedup_log // channel: [ val(meta), path(log) ]
+ stats = UMI_DEDUP_GENOME.out.stats.mix(UMI_DEDUP_TRANSCRIPTOME.out.stats) // channel: [ val(meta), path(stats)]
+ flagstat = UMI_DEDUP_GENOME.out.flagstat.mix(UMI_DEDUP_TRANSCRIPTOME.out.flagstat) // channel: [ val(meta), path(flagstat)]
+ idxstats = UMI_DEDUP_GENOME.out.idxstats.mix(UMI_DEDUP_TRANSCRIPTOME.out.idxstats) // channel: [ val(meta), path(idxstats)]
+ multiqc_files = ch_multiqc_files // channel: file
+ transcriptome_bam = ch_dedup_transcriptome_bam // channel: [ val(meta), path(bam) ]
+ versions = ch_versions // channel: [ path(versions.yml) ]
+}
diff --git a/subworkflows/nf-core/bam_dedup_umi/meta.yml b/subworkflows/nf-core/bam_dedup_umi/meta.yml
new file mode 100644
index 000000000..f88fa2f1c
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_umi/meta.yml
@@ -0,0 +1,181 @@
+name: "bam_dedup_umi"
+description: BAM deduplication with UMI processing for both genome and transcriptome alignments
+keywords:
+ - deduplication
+ - UMI
+ - BAM
+ - genome
+ - transcriptome
+ - umicollapse
+ - umitools
+
+components:
+ - umitools/prepareforrsem
+ - samtools/sort
+ - bam_dedup_stats_samtools_umicollapse
+ - bam_dedup_stats_samtools_umitools
+ - bam_sort_stats_samtools
+
+input:
+ - ch_genome_bam:
+ description: Channel with genome BAM files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - bam:
+ type: file
+ description: BAM file
+ pattern: "*.bam"
+ - bai:
+ type: file
+ description: BAM index file
+ pattern: "*.bai"
+ - ch_fasta:
+ description: Channel with genome FASTA file
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - fasta:
+ type: file
+ description: Genome FASTA file
+ pattern: "*.{fa,fasta}"
+ - umi_dedup_tool:
+ description: UMI deduplication tool to use
+ structure:
+ - value:
+ type: string
+ description: Either 'umicollapse' or 'umitools'
+ - umitools_dedup_stats:
+ description: Whether to generate UMI-tools deduplication stats
+ structure:
+ - value:
+ type: boolean
+ description: True or False
+ - bam_csi_index:
+ description: Whether to generate CSI index
+ structure:
+ - value:
+ type: boolean
+ description: True or False
+ - ch_transcriptome_bam:
+ description: Channel with transcriptome BAM files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - bam:
+ type: file
+ description: BAM file
+ pattern: "*.bam"
+ - ch_transcript_fasta:
+ description: Channel with transcript FASTA file
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - fasta:
+ type: file
+ description: Transcript FASTA file
+ pattern: "*.{fa,fasta}"
+
+output:
+ - bam:
+ description: Channel containing deduplicated genome BAM files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - bam:
+ type: file
+ description: Deduplicated BAM file
+ pattern: "*.bam"
+ - bai:
+ description: Channel containing indexed BAM (BAI) files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - bai:
+ type: file
+ description: BAM index file
+ pattern: "*.bai"
+ - csi:
+ description: Channel containing CSI files (if bam_csi_index is true)
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - csi:
+ type: file
+ description: CSI index file
+ pattern: "*.csi"
+ - dedup_log:
+ description: Channel containing deduplication log files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - log:
+ type: file
+ description: Deduplication log file
+ pattern: "*.log"
+ - stats:
+ description: Channel containing BAM statistics files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - stats:
+ type: file
+ description: BAM statistics file
+ pattern: "*.stats"
+ - flagstat:
+ description: Channel containing flagstat files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - flagstat:
+ type: file
+ description: Flagstat file
+ pattern: "*.flagstat"
+ - idxstats:
+ description: Channel containing idxstats files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - idxstats:
+ type: file
+ description: Idxstats file
+ pattern: "*.idxstats"
+ - multiqc_files:
+ description: Channel containing files for MultiQC
+ structure:
+ - file:
+ type: file
+ description: File for MultiQC
+ - transcriptome_bam:
+ description: Channel containing deduplicated transcriptome BAM files
+ structure:
+ - meta:
+ type: map
+ description: Metadata map
+ - bam:
+ type: file
+ description: Deduplicated transcriptome BAM file
+ pattern: "*.bam"
+ - versions:
+ description: Channel containing software versions file
+ structure:
+ - versions:
+ type: file
+ description: File containing versions of the software used
+ pattern: "versions.yml"
+
+authors:
+ - "@pinin4fjords"
+maintainers:
+ - "@pinin4fjords"
diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test
new file mode 100644
index 000000000..b8e9da9ab
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test
@@ -0,0 +1,99 @@
+nextflow_workflow {
+
+ name "Test Workflow BAM_DEDUP_UMI"
+ script "../main.nf"
+ workflow "BAM_DEDUP_UMI"
+ config "./nextflow.config"
+
+ tag "subworkflows"
+ tag "subworkflows_nfcore"
+ tag "subworkflows/bam_dedup_umi"
+ tag "bam_dedup_stats_samtools_umicollapse"
+ tag "bam_dedup_stats_samtools_umitools"
+ tag "bam_sort_stats_samtools"
+ tag "umitools/prepareforrsem"
+ tag "samtools/sort"
+
+ test("sarscov2_bam_bai - umitools - with transcriptome bams") {
+
+ when {
+ workflow {
+ """
+ input[0] = [
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
+ ]
+ input[1] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[2] = 'umitools'
+ input[3] = false
+ input[4] = false
+ input[5] = [
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true) ]
+ input[6] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert workflow.success },
+ { assert snapshot(
+ bam(workflow.out.bam[0][1]).getReadsMD5(),
+ bam(workflow.out.transcriptome_bam[0][1]).getReadsMD5(),
+ workflow.out.stats,
+ workflow.out.flagstat,
+ workflow.out.idxstats,
+ workflow.out.versions
+ ).match() },
+ { assert path(workflow.out.bai.get(0).get(1)).exists() }
+ )
+ }
+
+ }
+
+ test("sarscov2_bam_bai - umicollapse - no transcriptome bams") {
+
+ when {
+ workflow {
+ """
+ input[0] = [
+ [ id:'test'], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true)
+ ]
+ input[1] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[2] = 'umicollapse'
+ input[3] = false
+ input[4] = false
+ input[5] = Channel.empty()
+ input[6] = Channel.empty()
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert workflow.success },
+ { assert snapshot(
+ bam(workflow.out.bam[0][1]).getReadsMD5(),
+ workflow.out.stats,
+ workflow.out.flagstat,
+ workflow.out.idxstats,
+ workflow.out.versions
+ ).match() },
+ { assert path(workflow.out.bai.get(0).get(1)).exists() }
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap
new file mode 100644
index 000000000..94151f04b
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap
@@ -0,0 +1,109 @@
+{
+ "sarscov2_bam_bai - umicollapse - no transcriptome bams": {
+ "content": [
+ "c1917631c47d16320d002b867e226a2e",
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.stats:md5,a03e635b85a846a2650c7b747926c7ed"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602"
+ ]
+ ],
+ [
+ "versions.yml:md5,3fe6727d1a90130a932400464233ab5d",
+ "versions.yml:md5,5d91176bd409dc54816e7e3a7773b5ef",
+ "versions.yml:md5,7eaf0c81f627dde8e2710a57e19b4d87",
+ "versions.yml:md5,d6bba04463b79564f053e7e5033025dd",
+ "versions.yml:md5,f90574f645fd8876ba52b89b2272afc1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
+ },
+ "timestamp": "2024-12-12T13:04:25.48875"
+ },
+ "sarscov2_bam_bai - umitools - with transcriptome bams": {
+ "content": [
+ "c1917631c47d16320d002b867e226a2e",
+ "fe38ce657d4208a850702bdbfaa062ca",
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.stats:md5,a03e635b85a846a2650c7b747926c7ed"
+ ],
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.transcriptome.sorted.bam.stats:md5,720f03daf649606a50c2cccbf135edc5"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159"
+ ],
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.transcriptome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.genome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602"
+ ],
+ [
+ {
+ "id": "test"
+ },
+ "test.umi_dedup.transcriptome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602"
+ ]
+ ],
+ [
+ "versions.yml:md5,017dce06e6fadba312ce46808e2b19ff",
+ "versions.yml:md5,0ca2bd583dd1951c792b526f768db343",
+ "versions.yml:md5,1e761d924c3e0f35284799aa566e7c1a",
+ "versions.yml:md5,43e34c4518b8d546b632b372bc282ac4",
+ "versions.yml:md5,9d7724974d6dc288b485b5509c89297b",
+ "versions.yml:md5,a4562f4cc5d04041a79ba57761e231d9",
+ "versions.yml:md5,acfef82b716e50563fb22f47f33de00a",
+ "versions.yml:md5,afd68b9511aecba9cc5d6f7dd4c34bbd",
+ "versions.yml:md5,c2fda58ea2b120a510502b9db24d8a16",
+ "versions.yml:md5,d531cd7e744b2f95659bdb544f2cd8a5",
+ "versions.yml:md5,e22174a7d3003395e8e8c34ebfba1719"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
+ },
+ "timestamp": "2024-12-12T13:04:12.182087"
+ }
+}
\ No newline at end of file
diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config b/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config
new file mode 100644
index 000000000..cd10b5c78
--- /dev/null
+++ b/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config
@@ -0,0 +1,38 @@
+process {
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:UMI(COLLAPSE|TOOLS_DEDUP)' {
+ ext.prefix = { "${meta.id}_umi_dedup.genome" }
+ }
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:UMI(COLLAPSE|TOOLS_DEDUP)' {
+ ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" }
+ }
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:UMI(COLLAPSE|TOOLS_DEDUP)' {
+ ext.prefix = { "${meta.id}.umi_dedup.genome.sorted" }
+ }
+
+ withName: 'UMITOOLS_PREPAREFORRSEM' {
+ ext.prefix = { "${meta.id}_preparedforrsem" }
+ }
+
+ withName: 'BAM_DEDUP_UMI:SAMTOOLS_SORT' {
+ ext.args = '-n'
+ ext.prefix = { "${meta.id}.umi_dedup.transcriptome" }
+ }
+
+ withName: 'BAM_DEDUP_UMI:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' {
+ ext.prefix = { "${meta.id}.transcriptome.sorted" }
+ }
+
+ withName: 'BAM_DEDUP_UMI:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' {
+ ext.prefix = { "${meta.id}.transcriptome.sorted.bam" }
+ }
+
+ withName: 'BAM_DEDUP_UMI:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' {
+ ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" }
+ }
+
+ withName: 'BAM_DEDUP_UMI:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:BAM_STATS_SAMTOOLS:.*' {
+ ext.prefix = { "${meta.id}.umi_dedup.genome.sorted.bam" }
+ }
+}
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf
index c655af415..6149143ad 100644
--- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf
@@ -1,13 +1,17 @@
import groovy.json.JsonSlurper
-include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit'
-include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq/main'
-include { SORTMERNA } from '../../../modules/nf-core/sortmerna/main'
-include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna/main'
-
-include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../fastq_subsample_fq_salmon'
-include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore'
-include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp'
+include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit'
+include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq/main'
+include { SORTMERNA } from '../../../modules/nf-core/sortmerna/main'
+include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna/main'
+include { FQ_LINT } from '../../../modules/nf-core/fq/lint/main'
+include { FQ_LINT as FQ_LINT_AFTER_TRIMMING } from '../../../modules/nf-core/fq/lint/main'
+include { FQ_LINT as FQ_LINT_AFTER_BBSPLIT } from '../../../modules/nf-core/fq/lint/main'
+include { FQ_LINT as FQ_LINT_AFTER_SORTMERNA } from '../../../modules/nf-core/fq/lint/main'
+
+include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../fastq_subsample_fq_salmon'
+include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore'
+include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp'
def pass_trimmed_reads = [:]
@@ -106,6 +110,8 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
umi_discard_read // integer: 0, 1 or 2
stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5
unstranded_threshold // float: The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'
+ skip_linting // boolean: true/false
+ fastp_merge // boolean: true/false: whether to stitch paired end reads together in FASTP output
main:
@@ -113,6 +119,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
ch_filtered_reads = Channel.empty()
ch_trim_read_count = Channel.empty()
ch_multiqc_files = Channel.empty()
+ ch_lint_log = Channel.empty()
ch_reads
.branch {
@@ -136,6 +143,19 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first())
+ //
+ // MODULE: Lint FastQ files
+ //
+
+ if(!skip_linting) {
+ FQ_LINT (
+ ch_filtered_reads
+ )
+ ch_versions = ch_versions.mix(FQ_LINT.out.versions.first())
+ ch_lint_log = ch_lint_log.mix(FQ_LINT.out.lint)
+ ch_reads = ch_reads.join(FQ_LINT.out.lint.map{it[0]})
+ }
+
//
// SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore!
//
@@ -172,7 +192,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
skip_trimming,
[],
save_trimmed,
- save_trimmed,
+ fastp_merge,
min_trimmed_reads
)
ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads
@@ -212,6 +232,14 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
.map { [[:], it] }
)
+ if((!skip_linting) && (!skip_trimming)) {
+ FQ_LINT_AFTER_TRIMMING (
+ ch_filtered_reads
+ )
+ ch_lint_log = ch_lint_log.mix(FQ_LINT_AFTER_TRIMMING.out.lint)
+ ch_filtered_reads = ch_filtered_reads.join(FQ_LINT_AFTER_TRIMMING.out.lint.map{it[0]})
+ }
+
//
// MODULE: Remove genome contaminant reads
//
@@ -228,6 +256,14 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
.set { ch_filtered_reads }
ch_versions = ch_versions.mix(BBMAP_BBSPLIT.out.versions.first())
+
+ if(!skip_linting) {
+ FQ_LINT_AFTER_BBSPLIT (
+ ch_filtered_reads
+ )
+ ch_lint_log = ch_lint_log.mix(FQ_LINT_AFTER_BBSPLIT.out.lint)
+ ch_filtered_reads = ch_filtered_reads.join(FQ_LINT_AFTER_BBSPLIT.out.lint.map{it[0]})
+ }
}
//
@@ -260,6 +296,14 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
.mix(SORTMERNA.out.log)
ch_versions = ch_versions.mix(SORTMERNA.out.versions.first())
+
+ if(!skip_linting) {
+ FQ_LINT_AFTER_SORTMERNA (
+ ch_filtered_reads
+ )
+ ch_lint_log = ch_lint_log.mix(FQ_LINT_AFTER_SORTMERNA.out.lint)
+ ch_filtered_reads = ch_filtered_reads.join(FQ_LINT_AFTER_SORTMERNA.out.lint.map{it[0]})
+ }
}
// Branch FastQ channels if 'auto' specified to infer strandedness
@@ -312,6 +356,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS {
emit:
+ lint_log = ch_lint_log
reads = ch_strand_inferred_fastq
trim_read_count = ch_trim_read_count
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml
index 6f92f56a0..4cf6a0096 100644
--- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml
@@ -1,6 +1,5 @@
-# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json
name: "fastq_qc_trim_filter_setstrandedness"
-description: Basic FASTQ preprocessing for RNA-seq
+description: Performs linting, quality control, trimming, filtering, and strandedness determination on RNA-seq FASTQ files, preparing them for downstream analysis.
keywords:
- fastq
- rnaseq
@@ -19,39 +18,84 @@ components:
- fastq_fastqc_umitools_trimgalore
- fastq_fastqc_umitools_fastp
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test' ]
- ch_reads:
- type: file
- description: |
- Channel with input FastQ files of size 1 and 2 for single-end and
- paired-end data, respectively.
+ description: Channel with input FastQ files
+ structure:
+ - meta:
+ type: map
+ description: Groovy Map containing sample information e.g. [ id:'test' ]
+ - reads:
+ type: file
+ description: FastQ files
+ pattern: "*.{fq,fastq},{,.gz}"
- ch_fasta:
- type: file
description: Channel with genome sequence in fasta format
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the fasta file
+ - fasta:
+ type: file
+ description: Genome fasta file
+ pattern: "*.{fa,fasta}"
- ch_transcript_fasta:
- type: file
description: Channel with transcriptome sequence in fasta format
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the transcript fasta file
+ - fasta:
+ type: file
+ description: Transcript fasta file
+ pattern: "*.{fa,fasta}"
- ch_gtf:
- type: file
description: Channel with features in GTF format
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the GTF file
+ - gtf:
+ type: file
+ description: GTF file
+ pattern: "*.gtf"
- ch_salmon_index:
- type: file
description: Directory containing Salmon index
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the Salmon index
+ - index:
+ type: directory
+ description: Salmon index directory
- ch_sortmerna_index:
- type: file
description: Directory containing sortmerna index
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the SortMeRNA index
+ - index:
+ type: directory
+ description: SortMeRNA index directory
- ch_bbsplit_index:
- type: file
description: Path to directory or tar.gz archive for pre-built BBSplit index
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the BBSplit index
+ - index:
+ type: file
+ description: BBSplit index directory or tar.gz archive
+ pattern: "{*,*.tar.gz}"
- ch_rrna_fastas:
- type: file
- description: |
- Channel containing one or more FASTA files containing rRNA sequences
- for use with SortMeRNA
+ description: Channel containing one or more FASTA files containing rRNA sequences for use with SortMeRNA
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the rRNA fasta files
+ - fasta:
+ type: file
+ description: rRNA fasta files
+ pattern: "*.{fa,fasta}"
- skip_bbsplit:
type: boolean
description: Whether to skip BBSplit for removal of non-reference genome reads
@@ -63,9 +107,7 @@ input:
description: Whether to skip trimming
- skip_umi_extract:
type: boolean
- description: |
- Skip the UMI extraction from the read in case the UMIs have been moved
- to the headers in advance of the pipeline run
+ description: Skip the UMI extraction from the read in case the UMIs have been moved to the headers in advance of the pipeline run
- make_salmon_index:
type: boolean
description: Whether to create salmon index before running salmon quant
@@ -74,14 +116,10 @@ input:
description: Whether to create sortmerna index before running sortmerna
- trimmer:
type: string
- description: |
- Specifies the trimming tool to use - available options are 'trimgalore'
- and 'fastp'
+ description: Specifies the trimming tool to use - available options are 'trimgalore' and 'fastp'
- min_trimmed_reads:
type: integer
- description: |
- Minimum number of trimmed reads below which samples are removed from
- further processing
+ description: Minimum number of trimmed reads below which samples are removed from further processing
- save_trimmed:
type: boolean
description: Save the trimmed FastQ files in the results directory?
@@ -93,39 +131,70 @@ input:
description: Enable UMI-based read deduplication
- umi_discard_read:
type: integer
- description: |
- After UMI barcode extraction discard either R1 or R2 by setting this
- parameter to 1 or 2, respectively
+ description: After UMI barcode extraction discard either R1 or R2 by setting this parameter to 1 or 2, respectively
- stranded_threshold:
type: float
min: 0.5
- description: |
- The fraction of stranded reads that must be assigned to a strandedness
- for confident assignment. Must be at least 0.5.
+ description: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5.
- unstranded_threshold:
type: float
+ description: The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'.
+ - skip_linting:
+ type: boolean
+ description: Whether to skip linting of FastQ files
+ - fastp_merge:
+ type: boolean
description: |
- The difference in fraction of stranded reads assigned to 'forward' and
- 'reverse' below which a sample is classified as 'unstranded'.
+ For FASTP, save merged fastqs stitching together read1 and read2 for paired end reads
output:
- reads:
- type: file
description: Preprocessed fastq reads
- pattern: "*.{fq,fastq}{,.gz}"
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the preprocessed reads
+ - reads:
+ type: file
+ description: Preprocessed FastQ files
+ pattern: "*.{fq,fastq},{,.gz}"
- multiqc_files:
- type: file
- description: MultiQC-compatible output files from tools used in prepreocessing
- pattern: "*"
+ description: MultiQC-compatible output files from tools used in preprocessing
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the MultiQC files
+ - mqc:
+ type: file
+ description: MultiQC-compatible files
+ pattern: "*"
- trim_read_count:
- type: integer
description: Number of reads remaining after trimming for all input samples
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the trim read count
+ - count:
+ type: integer
+ description: Number of reads after trimming
- versions:
- type: file
- description: |
- File containing software versions
- Structure: [ path(versions.yml) ]
- pattern: "versions.yml"
+ description: File containing software versions
+ structure:
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - lint_log:
+ description: Log files from FastQ linting
+ structure:
+ - meta:
+ type: map
+ description: Metadata for the lint log
+ - log:
+ type: file
+ description: FastQ lint log file
+ pattern: "*.log"
+
authors:
- "@pinin4fjords"
maintainers:
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/nextflow.config b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/nextflow.config
new file mode 100644
index 000000000..05d9e8f94
--- /dev/null
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/nextflow.config
@@ -0,0 +1,36 @@
+process {
+
+ withName: 'FQ_LINT' {
+ ext.args = { params.extra_fqlint_args ?: '' }
+ publishDir = [
+ path: { "${params.outdir}/fq_lint/raw" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+
+ withName: 'FQ_LINT_AFTER_TRIMMING' {
+ publishDir = [
+ path: { "${params.outdir}/fq_lint/trimmed" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+
+ withName: 'FQ_LINT_AFTER_BBSPLIT' {
+ publishDir = [
+ path: { "${params.outdir}/fq_lint/sortmerna" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+
+ withName: 'FQ_LINT_AFTER_SORTMERNA' {
+ publishDir = [
+ path: { "${params.outdir}/fq_lint/trimmed" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+ ]
+ }
+
+}
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test
index c752e176c..c5fc4aec9 100644
--- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test
@@ -5,6 +5,21 @@ nextflow_workflow {
workflow "FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS"
config "./nextflow.config"
+ tag "subworkflows"
+ tag "subworkflows_nfcore"
+ tag "subworkflows/fastq_qc_trim_filter_setstrandedness"
+
+ tag "bbmap/bbsplit"
+ tag "cat"
+ tag "cat/fastq"
+ tag "fastqc"
+ tag "sortmerna"
+ tag "subworkflows/fastq_fastqc_umitools_trimgalore"
+ tag "subworkflows/fastq_fastqc_umitools_fastp"
+ tag "subworkflows/fastq_subsample_fq_salmon"
+
+
+
test("homo_sapiens paired-end [fastq] fastp") {
when {
@@ -25,7 +40,7 @@ nextflow_workflow {
input[4] = [] // ch_salmon_index
input[5] = [] // ch_sortmerna_index
input[6] = [] // ch_bbsplit_index
- input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas
+ input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas
input[8] = true // skip_bbsplit
input[9] = false // skip_fastqc
input[10] = false // skip_trimming
@@ -40,6 +55,8 @@ nextflow_workflow {
input[19] = 0 // umi_discard_read
input[20] = 0.8 // stranded_threshold
input[21] = 0.1 // unstranded_threshold
+ input[22] = false // skip_linting
+ input[23] = true // fastp_merge
"""
}
}
@@ -47,13 +64,22 @@ nextflow_workflow {
then {
def pelines1 = path(workflow.out.reads[0][1][0]).linesGzip
def pelines2 = path(workflow.out.reads[0][1][1]).linesGzip
+
+ // First part of each fq lint report line is a timestamp, remove it before snapshotting
+ def processed_sortmerna_lint_report = path(workflow.out.lint_log.find { entry -> entry[1].contains('sortmerna')}?.getAt(1))
+ .getText()
+ .readLines()
+ .collect { line -> line.split(' ', 2)[1] } // Split by the first space and take everything after it
+ .join('\n') // Join the processed lines back into a single text block
+
assertAll(
{ assert workflow.success},
{ assert snapshot(pelines1).md5().match("fastp_test_pe_reads_1_lines") },
{ assert snapshot(pelines1.size()).match("fastp_test_pe_reads_1_size") },
{ assert snapshot(pelines2).md5().match("fastp_test_pe_reads_2_lines") },
{ assert snapshot(pelines2.size()).match("fastp_test_pe_reads_2_size") },
- { assert snapshot(workflow.out.trim_read_count).match("fastp_read_count") }
+ { assert snapshot(workflow.out.trim_read_count).match("fastp_read_count") },
+ { assert snapshot(processed_sortmerna_lint_report).md5().match("fastp_lint") }
// This doesn't work- 'cat' changes between Conda and Docker -
// leaving it here until we find a way to address that
// { assert snapshot(workflow.out.versions).match("fastp_versions") }
@@ -80,7 +106,7 @@ nextflow_workflow {
input[4] = [] // ch_salmon_index
input[5] = [] // ch_sortmerna_index
input[6] = [] // ch_bbsplit_index
- input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas
+ input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas
input[8] = true // skip_bbsplit
input[9] = false // skip_fastqc
input[10] = false // skip_trimming
@@ -95,6 +121,8 @@ nextflow_workflow {
input[19] = 0 // umi_discard_read
input[20] = 0.8 // stranded_threshold
input[21] = 0.1 // unstranded_threshold
+ input[22] = false // skip_linting
+ input[23] = true // fastp_merge
"""
}
}
@@ -102,19 +130,28 @@ nextflow_workflow {
then {
def pelines1 = path(workflow.out.reads[0][1][0]).linesGzip
def pelines2 = path(workflow.out.reads[0][1][1]).linesGzip
+
+ // First part of each fq lint report line is a timestamp, remove it before snapshotting
+ def processed_sortmerna_lint_report = path(workflow.out.lint_log.find { entry -> entry[1].contains('sortmerna')}?.getAt(1))
+ .getText()
+ .readLines()
+ .collect { line -> line.split(' ', 2)[1] } // Split by the first space and take everything after it
+ .join('\n') // Join the processed lines back into a single text block
+
assertAll(
{ assert workflow.success},
{ assert snapshot(pelines1).md5().match("trimgalore_test_pe_reads_1_lines") },
{ assert snapshot(pelines1.size()).match("trimgalore_test_pe_reads_1_size") },
{ assert snapshot(pelines2).md5().match("trimgalore_test_pe_reads_2_lines") },
{ assert snapshot(pelines2.size()).match("trimgalore_test_pe_reads_2_size") },
- { assert snapshot(workflow.out.trim_read_count).match("trimgalore_read_count") }
+ { assert snapshot(workflow.out.trim_read_count).match("trimgalore_read_count") },
+ { assert snapshot(processed_sortmerna_lint_report).md5().match("trimgalore_lint") }
// This doesn't work- 'cat' changes between Conda and Docker -
// leaving it here until we find a way to address that
//{ assert snapshot(workflow.out.versions).match("trimgalore_versions") }
)
}
}
-
+
}
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap
index 985349317..b02450659 100644
--- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap
@@ -13,82 +13,98 @@
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:00.044553245"
+ "timestamp": "2024-12-02T12:56:09.941793"
},
"trimgalore_test_pe_reads_2_lines": {
"content": "eccf3e9e74589ff01c77fce7f4548e41",
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:26.838793051"
+ "timestamp": "2024-12-02T12:56:34.948679"
},
"fastp_test_pe_reads_1_size": {
"content": [
4508
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:23:59.889337984"
+ "timestamp": "2024-12-02T12:56:09.889501"
},
"trimgalore_test_pe_reads_1_size": {
"content": [
4508
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:26.778599725"
+ "timestamp": "2024-12-02T12:56:34.91497"
+ },
+ "trimgalore_lint": {
+ "content": "daec499818124330ef90e5af47383f00",
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
+ },
+ "timestamp": "2024-12-02T12:56:34.952929"
},
"trimgalore_test_pe_reads_1_lines": {
"content": "3868fc1caf09367141d2bbf47e158823",
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
+ },
+ "timestamp": "2024-12-02T12:56:34.913312"
+ },
+ "fastp_lint": {
+ "content": "daec499818124330ef90e5af47383f00",
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:26.774975135"
+ "timestamp": "2024-12-02T12:56:09.943788"
},
"fastp_test_pe_reads_2_lines": {
"content": "eccf3e9e74589ff01c77fce7f4548e41",
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:23:59.997625278"
+ "timestamp": "2024-12-02T12:56:09.93962"
},
"fastp_test_pe_reads_2_size": {
"content": [
4508
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:00.042449965"
+ "timestamp": "2024-12-02T12:56:09.940673"
},
"trimgalore_test_pe_reads_2_size": {
"content": [
4508
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:26.841434261"
+ "timestamp": "2024-12-02T12:56:34.949981"
},
"fastp_test_pe_reads_1_lines": {
"content": "3868fc1caf09367141d2bbf47e158823",
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:23:59.882844295"
+ "timestamp": "2024-12-02T12:56:09.887546"
},
"trimgalore_read_count": {
"content": [
@@ -104,9 +120,9 @@
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.3"
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-07-17T10:24:26.84402498"
+ "timestamp": "2024-12-02T12:56:34.951137"
}
}
\ No newline at end of file
diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config
index 9e33e4b33..71f2d0d25 100644
--- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config
+++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config
@@ -3,6 +3,19 @@
//
process {
+
+ withName: 'FQ_LINT_AFTER_TRIMMING' {
+ ext.prefix = { "${meta.id}.trimmed" }
+ }
+
+ withName: 'FQ_LINT_AFTER_BBMAP' {
+ ext.prefix = { "${meta.id}.bbmap" }
+ }
+
+ withName: 'FQ_LINT_AFTER_SORTMERNA' {
+ ext.prefix = { "${meta.id}.sortmerna" }
+ }
+
withName: 'FQ_SUBSAMPLE' {
ext.args = '--record-count 1000000 --seed 1'
ext.prefix = { "${meta.id}.subsampled" }
diff --git a/tests/.nftignore b/tests/.nftignore
index 6d2f0b8a8..8043747d3 100644
--- a/tests/.nftignore
+++ b/tests/.nftignore
@@ -1,3 +1,4 @@
+fq_lint/*/*.fq_lint.txt
bbsplit/*.stats.txt
fastqc/*/*.{html,zip}
hisat2/log/*.hisat2.summary.log
@@ -12,6 +13,7 @@ star_rsem/*.{genes,isoforms}.results
star_rsem/log/*.log
star_salmon/log/*.Log.{final.out,out,progress.out}
trimgalore/*fastq.gz_trimming_report.txt
+umitools/*.umi_extract.log
{hisat2,star_rsem,star_salmon}/*.{bam,bam.bai}
{hisat2,star_rsem,star_salmon}/bigwig/*.{forward,reverse}.bigWig
{hisat2,star_rsem,star_salmon}/dupradar/box_plot/*_duprateExpBoxplot.pdf
@@ -30,6 +32,7 @@ trimgalore/*fastq.gz_trimming_report.txt
{hisat2,star_rsem,star_salmon}/stringtie/*.ballgown/t_data.ctab
{hisat2,star_rsem,star_salmon}/stringtie/*.gene.abundance.txt
{hisat2,star_rsem,star_salmon}/stringtie/*.{coverage,transcripts}.gtf
+{hisat2,star_rsem,star_salmon}/{umitools,umicollapse}/{genomic,transcriptomic}_dedup_log/*.log
{multiqc,multiqc/**}/multiqc_report.html
{multiqc,multiqc/**}/multiqc_report_data/fastqc_{raw,trimmed}_top_overrepresented_sequences_table.txt
{multiqc,multiqc/**}/multiqc_report_data/hisat2_pe_plot.txt
@@ -80,6 +83,8 @@ trimgalore/*fastq.gz_trimming_report.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/deseq2.sample.dists.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/size_factors/*.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/size_factors/deseq2.size_factors.RData
+{salmon,star_rsem,star_salmon}/umitools/{genomic,transcriptomic}_dedup_log/*
+{salmon,star_rsem,star_salmon}/umitools/prepare_for_salmon_log/*
{salmon,star_salmon}/*/aux_info/fld.gz
{salmon,star_salmon}/*/aux_info/meta_info.json
{salmon,star_salmon}/*/libParams/flenDist.txt
diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap
index 4165436ac..8fdef2729 100644
--- a/tests/default.nf.test.snap
+++ b/tests/default.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: default - stub": {
"content": [
- 22,
+ 27,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -18,6 +18,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -32,7 +35,7 @@
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"TRIMGALORE": {
@@ -43,7 +46,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -64,6 +67,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_data",
@@ -88,13 +98,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T10:43:40.33664602"
+ "timestamp": "2024-12-03T12:26:32.825018567"
},
"Params: default": {
"content": [
- 198,
+ 213,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -128,6 +138,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -196,12 +209,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -227,7 +240,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -276,6 +289,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -1457,8 +1489,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T10:42:45.202573855"
+ "timestamp": "2024-12-03T12:39:04.406597796"
}
}
\ No newline at end of file
diff --git a/tests/featurecounts_group_type.nf.test.snap b/tests/featurecounts_group_type.nf.test.snap
index dfd3f3d2c..96f7b3778 100644
--- a/tests/featurecounts_group_type.nf.test.snap
+++ b/tests/featurecounts_group_type.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --featurecounts_group_type false - stub": {
"content": [
- 22,
+ 27,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -18,6 +18,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -32,7 +35,7 @@
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"TRIMGALORE": {
@@ -43,7 +46,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -64,6 +67,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_data",
@@ -88,13 +98,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T10:54:29.62339584"
+ "timestamp": "2024-12-03T17:26:42.742119846"
},
"Params: --featurecounts_group_type false": {
"content": [
- 188,
+ 203,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -128,6 +138,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -193,12 +206,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -221,7 +234,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -270,6 +283,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -1407,8 +1439,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T10:53:28.969150716"
+ "timestamp": "2024-12-03T17:25:47.179044158"
}
}
\ No newline at end of file
diff --git a/tests/hisat2.nf.test.snap b/tests/hisat2.nf.test.snap
index 4b39b7703..e765de22a 100644
--- a/tests/hisat2.nf.test.snap
+++ b/tests/hisat2.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --aligner hisat2 - stub": {
"content": [
- 23,
+ 28,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -18,6 +18,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -44,7 +47,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -65,6 +68,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/hisat2",
"multiqc/hisat2/multiqc_data",
@@ -89,13 +99,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:01:31.33505759"
+ "timestamp": "2024-12-03T17:39:53.585492305"
},
"Params: --aligner hisat2": {
"content": [
- 187,
+ 202,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -125,6 +135,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -224,7 +237,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -273,6 +286,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"hisat2",
"hisat2/RAP1_IAA_30M_REP1.markdup.sorted.bam",
"hisat2/RAP1_IAA_30M_REP1.markdup.sorted.bam.bai",
@@ -1307,8 +1339,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:00:43.422573373"
+ "timestamp": "2024-12-03T17:38:50.917761241"
}
}
\ No newline at end of file
diff --git a/tests/kallisto.nf.test.snap b/tests/kallisto.nf.test.snap
index 8bd57f925..192ddaedc 100644
--- a/tests/kallisto.nf.test.snap
+++ b/tests/kallisto.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --pseudo_aligner kallisto --skip_qc --skip_alignment": {
"content": [
- 35,
+ 50,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -18,6 +18,9 @@
"CUSTOM_TX2GENE": {
"python": "3.10.4"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -56,7 +59,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -88,6 +91,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"kallisto",
"kallisto/RAP1_IAA_30M_REP1",
"kallisto/RAP1_IAA_30M_REP1/abundance.h5",
@@ -251,13 +273,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:04:57.579312846"
+ "timestamp": "2024-12-03T17:48:16.536464395"
},
"Params: --pseudo_aligner kallisto --skip_qc --skip_alignment - stub": {
"content": [
- 17,
+ 22,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -271,6 +293,9 @@
"CUSTOM_GETCHROMSIZES": {
"getchromsizes": 1.21
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -294,7 +319,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -304,6 +329,13 @@
"custom/out/genome_transcriptome.gtf",
"fastqc",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/multiqc_data",
"multiqc/multiqc_plots",
@@ -327,8 +359,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:05:54.052864085"
+ "timestamp": "2024-12-03T17:49:02.306667165"
}
}
\ No newline at end of file
diff --git a/tests/min_mapped_reads.nf.test.snap b/tests/min_mapped_reads.nf.test.snap
index bc6454c98..7c0412a2e 100644
--- a/tests/min_mapped_reads.nf.test.snap
+++ b/tests/min_mapped_reads.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --min_mapped_reads 90": {
"content": [
- 152,
+ 167,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -35,6 +35,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -103,12 +106,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -134,7 +137,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -183,6 +186,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -1173,13 +1195,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:18:04.553985917"
+ "timestamp": "2024-12-03T17:57:05.836924025"
},
"Params: --min_mapped_reads 90 - stub": {
"content": [
- 22,
+ 27,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -1196,6 +1218,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -1210,7 +1235,7 @@
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"TRIMGALORE": {
@@ -1221,7 +1246,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -1242,6 +1267,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_data",
@@ -1266,8 +1298,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:19:22.443482528"
+ "timestamp": "2024-12-03T17:57:59.273391037"
}
}
\ No newline at end of file
diff --git a/tests/nextflow.config b/tests/nextflow.config
index 86b7ac5b4..942f65737 100644
--- a/tests/nextflow.config
+++ b/tests/nextflow.config
@@ -25,6 +25,10 @@ process {
memory = 3.GB
time = 2.h
}
+
+ withName: 'FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS:FQ_LINT_AFTER_SORTMERNA' {
+ ext.args = null
+ }
}
// Impose same minimum Nextflow version as the pipeline for testing
diff --git a/tests/remove_ribo_rna.nf.test.snap b/tests/remove_ribo_rna.nf.test.snap
index 0a379aea9..6abd45320 100644
--- a/tests/remove_ribo_rna.nf.test.snap
+++ b/tests/remove_ribo_rna.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --remove_ribo_rna": {
"content": [
- 205,
+ 225,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -35,6 +35,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -109,12 +112,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -140,7 +143,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -189,6 +192,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -1384,13 +1406,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:36:09.902195192"
+ "timestamp": "2024-12-03T18:13:03.469655405"
},
"Params: --remove_ribo_rna - stub": {
"content": [
- 24,
+ 29,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -1407,6 +1429,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -1424,7 +1449,7 @@
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"TRIMGALORE": {
@@ -1435,7 +1460,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -1456,6 +1481,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_data",
@@ -1480,8 +1512,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:37:11.90905171"
+ "timestamp": "2024-12-03T18:13:56.979730403"
}
}
\ No newline at end of file
diff --git a/tests/salmon.nf.test.snap b/tests/salmon.nf.test.snap
index 1e6827546..87a9a3e14 100644
--- a/tests/salmon.nf.test.snap
+++ b/tests/salmon.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --pseudo_aligner salmon --skip_qc --skip_alignment": {
"content": [
- 34,
+ 49,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -18,6 +18,9 @@
"CUSTOM_TX2GENE": {
"python": "3.10.4"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -50,7 +53,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -82,6 +85,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/multiqc_report.html",
"multiqc/multiqc_report_data",
@@ -327,13 +349,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:41:47.859384178"
+ "timestamp": "2024-12-03T19:45:33.529844191"
},
"Params: --pseudo_aligner salmon --skip_qc --skip_alignment - stub": {
"content": [
- 16,
+ 21,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -347,6 +369,9 @@
"CUSTOM_GETCHROMSIZES": {
"getchromsizes": 1.21
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -367,7 +392,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -377,6 +402,13 @@
"custom/out/genome_transcriptome.gtf",
"fastqc",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/multiqc_data",
"multiqc/multiqc_plots",
@@ -400,8 +432,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:42:36.34114827"
+ "timestamp": "2024-12-03T19:46:22.63337267"
}
}
\ No newline at end of file
diff --git a/tests/skip_qc.nf.test.snap b/tests/skip_qc.nf.test.snap
index a07a6dd43..0c6fd0e1c 100644
--- a/tests/skip_qc.nf.test.snap
+++ b/tests/skip_qc.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --skip_qc - stub": {
"content": [
- 17,
+ 22,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -15,6 +15,9 @@
"CUSTOM_GETCHROMSIZES": {
"getchromsizes": 1.21
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -29,7 +32,7 @@
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"TRIMGALORE": {
@@ -40,7 +43,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -50,6 +53,13 @@
"custom/out/genome_transcriptome.gtf",
"fastqc",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_data",
@@ -74,13 +84,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:50:42.323505833"
+ "timestamp": "2024-12-03T18:20:52.010478721"
},
"Params: --skip_qc": {
"content": [
- 136,
+ 151,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -100,6 +110,9 @@
"CUSTOM_TX2GENE": {
"python": "3.10.4"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -141,12 +154,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -169,7 +182,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -201,6 +214,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -785,8 +817,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T11:49:49.131172185"
+ "timestamp": "2024-12-03T18:20:07.800214285"
}
}
\ No newline at end of file
diff --git a/tests/skip_trimming.nf.test.snap b/tests/skip_trimming.nf.test.snap
index a0bfa97e4..7a9edbf1b 100644
--- a/tests/skip_trimming.nf.test.snap
+++ b/tests/skip_trimming.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --skip_trimming": {
"content": [
- 193,
+ 203,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -35,6 +35,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -103,12 +106,12 @@
},
"STAR_ALIGN": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STAR_GENOMEGENERATE": {
"star": "2.7.11b",
- "samtools": 1.2,
+ "samtools": 1.21,
"gawk": "5.1.0"
},
"STRINGTIE_STRINGTIE": {
@@ -130,7 +133,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -162,6 +165,19 @@
"fastqc/raw/WT_REP2_raw_1_fastqc.zip",
"fastqc/raw/WT_REP2_raw_2_fastqc.html",
"fastqc/raw/WT_REP2_raw_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_salmon",
"multiqc/star_salmon/multiqc_report.html",
@@ -1255,8 +1271,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-21T20:23:07.88998048"
+ "timestamp": "2024-12-03T18:28:59.906095781"
}
}
\ No newline at end of file
diff --git a/tests/star_rsem.nf.test.snap b/tests/star_rsem.nf.test.snap
index 31e9150d8..ab6ed8d6c 100644
--- a/tests/star_rsem.nf.test.snap
+++ b/tests/star_rsem.nf.test.snap
@@ -1,7 +1,7 @@
{
"Params: --aligner star_rsem": {
"content": [
- 188,
+ 203,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -35,6 +35,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"FQ_SUBSAMPLE": {
"fq": "0.12.0 (2024-07-08)"
},
@@ -134,7 +137,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -183,6 +186,25 @@
"fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
"fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/sortmerna",
+ "fq_lint/sortmerna/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP1.fq_lint.txt",
+ "fq_lint/sortmerna/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_rsem",
"multiqc/star_rsem/multiqc_report.html",
@@ -1268,13 +1290,13 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T12:16:02.205058346"
+ "timestamp": "2024-12-03T18:37:23.242230621"
},
"Params: --aligner star_rsem - stub": {
"content": [
- 22,
+ 27,
{
"BBMAP_BBSPLIT": {
"bbmap": 39.1
@@ -1291,6 +1313,9 @@
"FASTQC": {
"fastqc": "0.12.1"
},
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
"GTF2BED": {
"perl": "5.26.2"
},
@@ -1314,7 +1339,7 @@
"untar": 1.34
},
"Workflow": {
- "nf-core/rnaseq": "v3.17.0"
+ "nf-core/rnaseq": "v3.18.0"
}
},
[
@@ -1335,6 +1360,13 @@
"fastqc/raw/WT_REP2_raw.html",
"fastqc/raw/WT_REP2_raw.zip",
"fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
"multiqc",
"multiqc/star_rsem",
"multiqc/star_rsem/multiqc_data",
@@ -1359,8 +1391,8 @@
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.4"
+ "nextflow": "24.10.2"
},
- "timestamp": "2024-10-23T12:17:33.292700445"
+ "timestamp": "2024-12-03T18:38:21.04782292"
}
}
\ No newline at end of file
diff --git a/tests/umi.nf.test b/tests/umi.nf.test
new file mode 100644
index 000000000..3a7083a28
--- /dev/null
+++ b/tests/umi.nf.test
@@ -0,0 +1,112 @@
+nextflow_pipeline {
+
+ name "Test pipeline with dummy UMI settings"
+ script "../main.nf"
+
+ test("Params: --aligner hisat2 --umi_dedup_tool 'umicollapse'") {
+
+ when {
+ params {
+ with_umi = true
+ umitools_extract_method = "regex"
+ umitools_bc_pattern = "^(?PCGA.{8}){s<=2}.*"
+ umitools_dedup_stats = true
+ skip_bbsplit = true
+ umi_dedup_tool = 'umicollapse'
+ aligner = 'hisat2'
+ outdir = "$outputDir"
+ save_umi_intermeds = true
+ }
+ }
+
+ 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/nf_core_rnaseq_software_mqc_versions.yml"),
+ // All stable path name, with a relative path
+ stable_name,
+ // All files with stable contents
+ stable_path
+ ).match() }
+ )
+ }
+ }
+
+ test("--umi_dedup_tool 'umitools'") {
+
+ when {
+ params {
+ with_umi = true
+ umitools_extract_method = "regex"
+ umitools_bc_pattern = "^(?PCGA.{8}){s<=2}.*"
+ umitools_dedup_stats = true
+ skip_bbsplit = true
+ outdir = "$outputDir"
+ save_umi_intermeds = true
+ }
+ }
+
+ 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/nf_core_rnaseq_software_mqc_versions.yml"),
+ // All stable path name, with a relative path
+ stable_name,
+ // All files with stable contents
+ stable_path
+ ).match() }
+ )
+ }
+ }
+
+ test("--umi_dedup_tool 'umitools - stub") {
+
+ options "-stub"
+
+ when {
+ params {
+ with_umi = true
+ umitools_extract_method = "regex"
+ umitools_bc_pattern = "^(?PCGA.{8}){s<=2}.*"
+ umitools_dedup_stats = true
+ 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/nf_core_rnaseq_software_mqc_versions.yml"),
+ // All stable path name, with a relative path
+ stable_name,
+ // All files with stable contents
+ stable_path
+ ).match() }
+ )
+ }
+ }
+}
diff --git a/tests/umi.nf.test.snap b/tests/umi.nf.test.snap
new file mode 100644
index 000000000..1d0df4de3
--- /dev/null
+++ b/tests/umi.nf.test.snap
@@ -0,0 +1,2862 @@
+{
+ "--umi_dedup_tool 'umitools'": {
+ "content": [
+ 265,
+ {
+ "BEDTOOLS_GENOMECOV_FW": {
+ "bedtools": "2.31.1"
+ },
+ "CAT_FASTQ": {
+ "cat": 9.5
+ },
+ "CUSTOM_CATADDITIONALFASTA": {
+ "python": "3.12.2"
+ },
+ "CUSTOM_GETCHROMSIZES": {
+ "getchromsizes": 1.21
+ },
+ "CUSTOM_TX2GENE": {
+ "python": "3.10.4"
+ },
+ "DESEQ2_QC_PSEUDO": {
+ "r-base": "4.0.3",
+ "bioconductor-deseq2": "1.28.0"
+ },
+ "DESEQ2_QC_STAR_SALMON": {
+ "r-base": "4.0.3",
+ "bioconductor-deseq2": "1.28.0"
+ },
+ "DUPRADAR": {
+ "bioconductor-dupradar": "1.32.0"
+ },
+ "FASTQC": {
+ "fastqc": "0.12.1"
+ },
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
+ "FQ_SUBSAMPLE": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
+ "GTF2BED": {
+ "perl": "5.26.2"
+ },
+ "GTF_FILTER": {
+ "python": "3.9.5"
+ },
+ "GUNZIP_ADDITIONAL_FASTA": {
+ "gunzip": 1.1
+ },
+ "GUNZIP_GTF": {
+ "gunzip": 1.1
+ },
+ "MULTIQC_CUSTOM_BIOTYPE": {
+ "python": "3.9.5"
+ },
+ "QUALIMAP_RNASEQ": {
+ "qualimap": 2.3
+ },
+ "RSEQC_BAMSTAT": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_INFEREXPERIMENT": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_INNERDISTANCE": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_JUNCTIONANNOTATION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_JUNCTIONSATURATION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_READDISTRIBUTION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_READDUPLICATION": {
+ "rseqc": "5.0.2"
+ },
+ "SALMON_QUANT": {
+ "salmon": "1.10.3"
+ },
+ "SAMTOOLS_FLAGSTAT": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_IDXSTATS": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_INDEX": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_SORT": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_STATS": {
+ "samtools": 1.21
+ },
+ "SE_GENE": {
+ "bioconductor-summarizedexperiment": "1.32.0"
+ },
+ "STAR_ALIGN": {
+ "star": "2.7.11b",
+ "samtools": 1.21,
+ "gawk": "5.1.0"
+ },
+ "STAR_GENOMEGENERATE": {
+ "star": "2.7.11b",
+ "samtools": 1.21,
+ "gawk": "5.1.0"
+ },
+ "STRINGTIE_STRINGTIE": {
+ "stringtie": "2.2.3"
+ },
+ "SUBREAD_FEATURECOUNTS": {
+ "subread": "2.0.6"
+ },
+ "TRIMGALORE": {
+ "trimgalore": "0.6.10",
+ "cutadapt": 4.9
+ },
+ "TXIMETA_TXIMPORT": {
+ "bioconductor-tximeta": "1.20.1"
+ },
+ "UCSC_BEDCLIP": {
+ "ucsc": 377
+ },
+ "UCSC_BEDGRAPHTOBIGWIG": {
+ "ucsc": 469
+ },
+ "UMITOOLS_DEDUP": {
+ "umitools": "1.1.5"
+ },
+ "UMITOOLS_EXTRACT": {
+ "umitools": "1.1.5"
+ },
+ "UMITOOLS_PREPAREFORRSEM": {
+ "umitools": "1.1.5"
+ },
+ "UNTAR_SALMON_INDEX": {
+ "untar": 1.34
+ },
+ "Workflow": {
+ "nf-core/rnaseq": "v3.18.0"
+ }
+ },
+ [
+ "custom",
+ "custom/out",
+ "custom/out/genome_gfp.fasta",
+ "custom/out/genome_gfp.gtf",
+ "fastqc",
+ "fastqc/raw",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.html",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.zip",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.html",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.zip",
+ "fastqc/raw/WT_REP1_raw_1_fastqc.html",
+ "fastqc/raw/WT_REP1_raw_1_fastqc.zip",
+ "fastqc/raw/WT_REP1_raw_2_fastqc.html",
+ "fastqc/raw/WT_REP1_raw_2_fastqc.zip",
+ "fastqc/raw/WT_REP2_raw_1_fastqc.html",
+ "fastqc/raw/WT_REP2_raw_1_fastqc.zip",
+ "fastqc/raw/WT_REP2_raw_2_fastqc.html",
+ "fastqc/raw/WT_REP2_raw_2_fastqc.zip",
+ "fastqc/trim",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.zip",
+ "fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.html",
+ "fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.zip",
+ "fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.html",
+ "fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.zip",
+ "fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.zip",
+ "fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
+ "multiqc",
+ "multiqc/star_salmon",
+ "multiqc/star_salmon/multiqc_report.html",
+ "multiqc/star_salmon/multiqc_report_data",
+ "multiqc/star_salmon/multiqc_report_data/cutadapt_filtered_reads_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw-status-check-heatmap.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_adapter_content_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_overrepresented_sequences_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_per_base_n_content_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_per_base_sequence_quality_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_per_sequence_gc_content_plot_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_per_sequence_gc_content_plot_Percentages.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_per_sequence_quality_scores_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_sequence_counts_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_sequence_duplication_levels_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_raw_top_overrepresented_sequences_table.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_sequence_length_distribution_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed-status-check-heatmap.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_overrepresented_sequences_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_per_base_n_content_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_per_base_sequence_quality_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_per_sequence_gc_content_plot_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_per_sequence_quality_scores_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_sequence_counts_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_sequence_duplication_levels_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/fastqc_trimmed_top_overrepresented_sequences_table.txt",
+ "multiqc/star_salmon/multiqc_report_data/junction_saturation_known.txt",
+ "multiqc/star_salmon/multiqc_report_data/junction_saturation_novel.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc.log",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_citations.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_cutadapt.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_data.json",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_dupradar.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_fail_strand_check_table.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_fastqc_fastqc_raw.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_fastqc_fastqc_trimmed.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_featurecounts_biotype_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_general_stats.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_bam_stat.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_infer_experiment.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_junction_annotation.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_read_distribution.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_salmon.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_sample-relationships.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_sample-relationships_1.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_sample-relationships_2.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_sample-relationships_3.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_samtools_flagstat.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_samtools_idxstats.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_samtools_stats.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_software_versions.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_sources.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_star.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_umitools_dedup.txt",
+ "multiqc/star_salmon/multiqc_report_data/multiqc_umitools_extract.txt",
+ "multiqc/star_salmon/multiqc_report_data/qualimap_gene_coverage_profile_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/qualimap_gene_coverage_profile_Normalised.txt",
+ "multiqc/star_salmon/multiqc_report_data/qualimap_genomic_origin.txt",
+ "multiqc/star_salmon/multiqc_report_data/qualimap_rnaseq_cov_hist.txt",
+ "multiqc/star_salmon/multiqc_report_data/qualimap_rnaseq_genome_results.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_bam_stat.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_infer_experiment_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance_plot_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance_plot_Percentages.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Events.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Junctions.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_all.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_All_Junctions.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_Known_Junctions.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_Novel_Junctions.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_read_distribution_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_read_dups.txt",
+ "multiqc/star_salmon/multiqc_report_data/rseqc_read_dups_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/salmon_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-flagstat-dp_Percentage_of_total.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-flagstat-dp_Read_counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Normalised_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Raw_Counts.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools-stats-dp.txt",
+ "multiqc/star_salmon/multiqc_report_data/samtools_alignment_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/star_alignment_plot.txt",
+ "multiqc/star_salmon/multiqc_report_data/star_summary_table.txt",
+ "multiqc/star_salmon/multiqc_report_data/umitools_deduplication_barplot.txt",
+ "multiqc/star_salmon/multiqc_report_data/umitools_stats_violin.txt",
+ "multiqc/star_salmon/multiqc_report_plots",
+ "multiqc/star_salmon/multiqc_report_plots/pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Obs_Exp.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/dupradar.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fail_strand_check_table.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw-status-check-heatmap.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_adapter_content_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_overrepresented_sequences_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_per_base_n_content_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_per_base_sequence_quality_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_per_sequence_gc_content_plot_Counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_per_sequence_gc_content_plot_Percentages.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_per_sequence_quality_scores_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_sequence_counts_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_sequence_counts_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_sequence_duplication_levels_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_raw_top_overrepresented_sequences_table.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_length_distribution_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed-status-check-heatmap.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_overrepresented_sequences_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_per_base_n_content_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_per_base_sequence_quality_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_gc_content_plot_Counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_quality_scores_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_sequence_counts_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_sequence_counts_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_sequence_duplication_levels_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_trimmed_top_overrepresented_sequences_table.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/featurecounts_biotype_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/featurecounts_biotype_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/general_stats_table.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Normalised.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_genomic_origin-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_genomic_origin-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_bam_stat.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_infer_experiment_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Percentages.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_All_Junctions.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Known_Junctions.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Novel_Junctions.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_distribution_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_distribution_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_dups_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/salmon_plot.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/sample-relationships.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-flagstat-dp_Percentage_of_total.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-flagstat-dp_Read_counts.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools-stats-dp.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools_alignment_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/samtools_alignment_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/star_alignment_plot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/star_alignment_plot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/star_summary_table.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/umitools_deduplication_barplot-cnt.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/umitools_deduplication_barplot-pct.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/pdf/umitools_stats_violin.pdf",
+ "multiqc/star_salmon/multiqc_report_plots/png",
+ "multiqc/star_salmon/multiqc_report_plots/png/cutadapt_filtered_reads_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/cutadapt_filtered_reads_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Obs_Exp.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/dupradar.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fail_strand_check_table.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw-status-check-heatmap.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_adapter_content_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_overrepresented_sequences_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_per_base_n_content_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_per_base_sequence_quality_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_per_sequence_gc_content_plot_Counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_per_sequence_gc_content_plot_Percentages.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_per_sequence_quality_scores_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_sequence_counts_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_sequence_counts_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_sequence_duplication_levels_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_raw_top_overrepresented_sequences_table.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_length_distribution_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed-status-check-heatmap.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_overrepresented_sequences_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_per_base_n_content_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_per_base_sequence_quality_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_per_sequence_gc_content_plot_Counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_per_sequence_quality_scores_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_sequence_counts_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_sequence_counts_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_sequence_duplication_levels_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/fastqc_trimmed_top_overrepresented_sequences_table.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/featurecounts_biotype_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/featurecounts_biotype_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/general_stats_table.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/qualimap_gene_coverage_profile_Counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/qualimap_gene_coverage_profile_Normalised.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/qualimap_genomic_origin-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/qualimap_genomic_origin-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_bam_stat.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_infer_experiment_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_inner_distance_plot_Counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_inner_distance_plot_Percentages.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_All_Junctions.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_Known_Junctions.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_Novel_Junctions.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_distribution_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_distribution_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_dups_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/salmon_plot.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/sample-relationships.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-flagstat-dp_Percentage_of_total.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-flagstat-dp_Read_counts.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools-stats-dp.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools_alignment_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/samtools_alignment_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/star_alignment_plot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/star_alignment_plot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/star_summary_table.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/umitools_deduplication_barplot-cnt.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/umitools_deduplication_barplot-pct.png",
+ "multiqc/star_salmon/multiqc_report_plots/png/umitools_stats_violin.png",
+ "multiqc/star_salmon/multiqc_report_plots/svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Obs_Exp.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/dupradar.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fail_strand_check_table.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw-status-check-heatmap.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_adapter_content_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_overrepresented_sequences_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_per_base_n_content_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_per_base_sequence_quality_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_per_sequence_gc_content_plot_Counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_per_sequence_gc_content_plot_Percentages.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_per_sequence_quality_scores_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_sequence_counts_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_sequence_counts_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_sequence_duplication_levels_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_raw_top_overrepresented_sequences_table.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_length_distribution_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed-status-check-heatmap.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_overrepresented_sequences_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_per_base_n_content_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_per_base_sequence_quality_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_gc_content_plot_Counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_quality_scores_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_sequence_counts_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_sequence_counts_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_sequence_duplication_levels_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/fastqc_trimmed_top_overrepresented_sequences_table.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/featurecounts_biotype_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/featurecounts_biotype_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/general_stats_table.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Normalised.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/qualimap_genomic_origin-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/qualimap_genomic_origin-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_bam_stat.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_infer_experiment_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_inner_distance_plot_Counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_inner_distance_plot_Percentages.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_All_Junctions.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Known_Junctions.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Novel_Junctions.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_distribution_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_distribution_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_dups_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/salmon_plot.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/sample-relationships.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-flagstat-dp_Percentage_of_total.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-flagstat-dp_Read_counts.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools-stats-dp.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools_alignment_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/samtools_alignment_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/star_alignment_plot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/star_alignment_plot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/star_summary_table.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/umitools_deduplication_barplot-cnt.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/umitools_deduplication_barplot-pct.svg",
+ "multiqc/star_salmon/multiqc_report_plots/svg/umitools_stats_violin.svg",
+ "pipeline_info",
+ "pipeline_info/nf_core_rnaseq_software_mqc_versions.yml",
+ "salmon",
+ "salmon/RAP1_IAA_30M_REP1",
+ "salmon/RAP1_IAA_30M_REP1/aux_info",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/ambig_info.tsv",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/expected_bias.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/fld.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/meta_info.json",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_IAA_30M_REP1/cmd_info.json",
+ "salmon/RAP1_IAA_30M_REP1/libParams",
+ "salmon/RAP1_IAA_30M_REP1/libParams/flenDist.txt",
+ "salmon/RAP1_IAA_30M_REP1/lib_format_counts.json",
+ "salmon/RAP1_IAA_30M_REP1/logs",
+ "salmon/RAP1_IAA_30M_REP1/logs/salmon_quant.log",
+ "salmon/RAP1_IAA_30M_REP1/quant.genes.sf",
+ "salmon/RAP1_IAA_30M_REP1/quant.sf",
+ "salmon/RAP1_UNINDUCED_REP1",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/ambig_info.tsv",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/expected_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/fld.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/meta_info.json",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_UNINDUCED_REP1/cmd_info.json",
+ "salmon/RAP1_UNINDUCED_REP1/libParams",
+ "salmon/RAP1_UNINDUCED_REP1/libParams/flenDist.txt",
+ "salmon/RAP1_UNINDUCED_REP1/lib_format_counts.json",
+ "salmon/RAP1_UNINDUCED_REP1/logs",
+ "salmon/RAP1_UNINDUCED_REP1/logs/salmon_quant.log",
+ "salmon/RAP1_UNINDUCED_REP1/quant.genes.sf",
+ "salmon/RAP1_UNINDUCED_REP1/quant.sf",
+ "salmon/RAP1_UNINDUCED_REP2",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/ambig_info.tsv",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/expected_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/fld.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/meta_info.json",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_UNINDUCED_REP2/cmd_info.json",
+ "salmon/RAP1_UNINDUCED_REP2/libParams",
+ "salmon/RAP1_UNINDUCED_REP2/libParams/flenDist.txt",
+ "salmon/RAP1_UNINDUCED_REP2/lib_format_counts.json",
+ "salmon/RAP1_UNINDUCED_REP2/logs",
+ "salmon/RAP1_UNINDUCED_REP2/logs/salmon_quant.log",
+ "salmon/RAP1_UNINDUCED_REP2/quant.genes.sf",
+ "salmon/RAP1_UNINDUCED_REP2/quant.sf",
+ "salmon/WT_REP1",
+ "salmon/WT_REP1/aux_info",
+ "salmon/WT_REP1/aux_info/ambig_info.tsv",
+ "salmon/WT_REP1/aux_info/expected_bias.gz",
+ "salmon/WT_REP1/aux_info/fld.gz",
+ "salmon/WT_REP1/aux_info/meta_info.json",
+ "salmon/WT_REP1/aux_info/observed_bias.gz",
+ "salmon/WT_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/WT_REP1/cmd_info.json",
+ "salmon/WT_REP1/libParams",
+ "salmon/WT_REP1/libParams/flenDist.txt",
+ "salmon/WT_REP1/lib_format_counts.json",
+ "salmon/WT_REP1/logs",
+ "salmon/WT_REP1/logs/salmon_quant.log",
+ "salmon/WT_REP1/quant.genes.sf",
+ "salmon/WT_REP1/quant.sf",
+ "salmon/WT_REP2",
+ "salmon/WT_REP2/aux_info",
+ "salmon/WT_REP2/aux_info/ambig_info.tsv",
+ "salmon/WT_REP2/aux_info/expected_bias.gz",
+ "salmon/WT_REP2/aux_info/fld.gz",
+ "salmon/WT_REP2/aux_info/meta_info.json",
+ "salmon/WT_REP2/aux_info/observed_bias.gz",
+ "salmon/WT_REP2/aux_info/observed_bias_3p.gz",
+ "salmon/WT_REP2/cmd_info.json",
+ "salmon/WT_REP2/libParams",
+ "salmon/WT_REP2/libParams/flenDist.txt",
+ "salmon/WT_REP2/lib_format_counts.json",
+ "salmon/WT_REP2/logs",
+ "salmon/WT_REP2/logs/salmon_quant.log",
+ "salmon/WT_REP2/quant.genes.sf",
+ "salmon/WT_REP2/quant.sf",
+ "salmon/deseq2_qc",
+ "salmon/deseq2_qc/R_sessionInfo.log",
+ "salmon/deseq2_qc/deseq2.dds.RData",
+ "salmon/deseq2_qc/deseq2.pca.vals.txt",
+ "salmon/deseq2_qc/deseq2.plots.pdf",
+ "salmon/deseq2_qc/deseq2.sample.dists.txt",
+ "salmon/deseq2_qc/size_factors",
+ "salmon/deseq2_qc/size_factors/RAP1_IAA_30M_REP1.txt",
+ "salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP1.txt",
+ "salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP2.txt",
+ "salmon/deseq2_qc/size_factors/WT_REP1.txt",
+ "salmon/deseq2_qc/size_factors/WT_REP2.txt",
+ "salmon/deseq2_qc/size_factors/deseq2.size_factors.RData",
+ "salmon/salmon.merged.gene_counts.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts.tsv",
+ "salmon/salmon.merged.gene_counts_length_scaled.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts_length_scaled.tsv",
+ "salmon/salmon.merged.gene_counts_scaled.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts_scaled.tsv",
+ "salmon/salmon.merged.gene_lengths.tsv",
+ "salmon/salmon.merged.gene_tpm.tsv",
+ "salmon/salmon.merged.transcript_counts.SummarizedExperiment.rds",
+ "salmon/salmon.merged.transcript_counts.tsv",
+ "salmon/salmon.merged.transcript_lengths.tsv",
+ "salmon/salmon.merged.transcript_tpm.tsv",
+ "salmon/tx2gene.tsv",
+ "star_salmon",
+ "star_salmon/RAP1_IAA_30M_REP1",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.bai",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.bam",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.filtered.bam",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.bam",
+ "star_salmon/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.bam.bai",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/ambig_info.tsv",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/expected_bias.gz",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/fld.gz",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/meta_info.json",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias.gz",
+ "star_salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias_3p.gz",
+ "star_salmon/RAP1_IAA_30M_REP1/cmd_info.json",
+ "star_salmon/RAP1_IAA_30M_REP1/libParams",
+ "star_salmon/RAP1_IAA_30M_REP1/libParams/flenDist.txt",
+ "star_salmon/RAP1_IAA_30M_REP1/logs",
+ "star_salmon/RAP1_IAA_30M_REP1/logs/salmon_quant.log",
+ "star_salmon/RAP1_IAA_30M_REP1/quant.genes.sf",
+ "star_salmon/RAP1_IAA_30M_REP1/quant.sf",
+ "star_salmon/RAP1_UNINDUCED_REP1",
+ "star_salmon/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam",
+ "star_salmon/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.bai",
+ "star_salmon/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.bam",
+ "star_salmon/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.bam",
+ "star_salmon/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.bam.bai",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/ambig_info.tsv",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/expected_bias.gz",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/fld.gz",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/meta_info.json",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias.gz",
+ "star_salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias_3p.gz",
+ "star_salmon/RAP1_UNINDUCED_REP1/cmd_info.json",
+ "star_salmon/RAP1_UNINDUCED_REP1/libParams",
+ "star_salmon/RAP1_UNINDUCED_REP1/libParams/flenDist.txt",
+ "star_salmon/RAP1_UNINDUCED_REP1/logs",
+ "star_salmon/RAP1_UNINDUCED_REP1/logs/salmon_quant.log",
+ "star_salmon/RAP1_UNINDUCED_REP1/quant.genes.sf",
+ "star_salmon/RAP1_UNINDUCED_REP1/quant.sf",
+ "star_salmon/RAP1_UNINDUCED_REP2",
+ "star_salmon/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam",
+ "star_salmon/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.bai",
+ "star_salmon/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.bam",
+ "star_salmon/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.bam",
+ "star_salmon/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.bam.bai",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/ambig_info.tsv",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/expected_bias.gz",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/fld.gz",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/meta_info.json",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias.gz",
+ "star_salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias_3p.gz",
+ "star_salmon/RAP1_UNINDUCED_REP2/cmd_info.json",
+ "star_salmon/RAP1_UNINDUCED_REP2/libParams",
+ "star_salmon/RAP1_UNINDUCED_REP2/libParams/flenDist.txt",
+ "star_salmon/RAP1_UNINDUCED_REP2/logs",
+ "star_salmon/RAP1_UNINDUCED_REP2/logs/salmon_quant.log",
+ "star_salmon/RAP1_UNINDUCED_REP2/quant.genes.sf",
+ "star_salmon/RAP1_UNINDUCED_REP2/quant.sf",
+ "star_salmon/WT_REP1",
+ "star_salmon/WT_REP1.umi_dedup.sorted.bam",
+ "star_salmon/WT_REP1.umi_dedup.sorted.bam.bai",
+ "star_salmon/WT_REP1.umi_dedup.transcriptome.bam",
+ "star_salmon/WT_REP1.umi_dedup.transcriptome.filtered.bam",
+ "star_salmon/WT_REP1.umi_dedup.transcriptome.sorted.bam",
+ "star_salmon/WT_REP1.umi_dedup.transcriptome.sorted.bam.bai",
+ "star_salmon/WT_REP1/aux_info",
+ "star_salmon/WT_REP1/aux_info/ambig_info.tsv",
+ "star_salmon/WT_REP1/aux_info/expected_bias.gz",
+ "star_salmon/WT_REP1/aux_info/fld.gz",
+ "star_salmon/WT_REP1/aux_info/meta_info.json",
+ "star_salmon/WT_REP1/aux_info/observed_bias.gz",
+ "star_salmon/WT_REP1/aux_info/observed_bias_3p.gz",
+ "star_salmon/WT_REP1/cmd_info.json",
+ "star_salmon/WT_REP1/libParams",
+ "star_salmon/WT_REP1/libParams/flenDist.txt",
+ "star_salmon/WT_REP1/logs",
+ "star_salmon/WT_REP1/logs/salmon_quant.log",
+ "star_salmon/WT_REP1/quant.genes.sf",
+ "star_salmon/WT_REP1/quant.sf",
+ "star_salmon/WT_REP2",
+ "star_salmon/WT_REP2.umi_dedup.sorted.bam",
+ "star_salmon/WT_REP2.umi_dedup.sorted.bam.bai",
+ "star_salmon/WT_REP2.umi_dedup.transcriptome.bam",
+ "star_salmon/WT_REP2.umi_dedup.transcriptome.filtered.bam",
+ "star_salmon/WT_REP2.umi_dedup.transcriptome.sorted.bam",
+ "star_salmon/WT_REP2.umi_dedup.transcriptome.sorted.bam.bai",
+ "star_salmon/WT_REP2/aux_info",
+ "star_salmon/WT_REP2/aux_info/ambig_info.tsv",
+ "star_salmon/WT_REP2/aux_info/expected_bias.gz",
+ "star_salmon/WT_REP2/aux_info/fld.gz",
+ "star_salmon/WT_REP2/aux_info/meta_info.json",
+ "star_salmon/WT_REP2/aux_info/observed_bias.gz",
+ "star_salmon/WT_REP2/aux_info/observed_bias_3p.gz",
+ "star_salmon/WT_REP2/cmd_info.json",
+ "star_salmon/WT_REP2/libParams",
+ "star_salmon/WT_REP2/libParams/flenDist.txt",
+ "star_salmon/WT_REP2/logs",
+ "star_salmon/WT_REP2/logs/salmon_quant.log",
+ "star_salmon/WT_REP2/quant.genes.sf",
+ "star_salmon/WT_REP2/quant.sf",
+ "star_salmon/bigwig",
+ "star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig",
+ "star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig",
+ "star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig",
+ "star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig",
+ "star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig",
+ "star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig",
+ "star_salmon/bigwig/WT_REP1.forward.bigWig",
+ "star_salmon/bigwig/WT_REP1.reverse.bigWig",
+ "star_salmon/bigwig/WT_REP2.forward.bigWig",
+ "star_salmon/bigwig/WT_REP2.reverse.bigWig",
+ "star_salmon/deseq2_qc",
+ "star_salmon/deseq2_qc/R_sessionInfo.log",
+ "star_salmon/deseq2_qc/deseq2.dds.RData",
+ "star_salmon/deseq2_qc/deseq2.pca.vals.txt",
+ "star_salmon/deseq2_qc/deseq2.plots.pdf",
+ "star_salmon/deseq2_qc/deseq2.sample.dists.txt",
+ "star_salmon/deseq2_qc/size_factors",
+ "star_salmon/deseq2_qc/size_factors/RAP1_IAA_30M_REP1.txt",
+ "star_salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP1.txt",
+ "star_salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP2.txt",
+ "star_salmon/deseq2_qc/size_factors/WT_REP1.txt",
+ "star_salmon/deseq2_qc/size_factors/WT_REP2.txt",
+ "star_salmon/deseq2_qc/size_factors/deseq2.size_factors.RData",
+ "star_salmon/dupradar",
+ "star_salmon/dupradar/box_plot",
+ "star_salmon/dupradar/box_plot/RAP1_IAA_30M_REP1_duprateExpBoxplot.pdf",
+ "star_salmon/dupradar/box_plot/RAP1_UNINDUCED_REP1_duprateExpBoxplot.pdf",
+ "star_salmon/dupradar/box_plot/RAP1_UNINDUCED_REP2_duprateExpBoxplot.pdf",
+ "star_salmon/dupradar/box_plot/WT_REP1_duprateExpBoxplot.pdf",
+ "star_salmon/dupradar/box_plot/WT_REP2_duprateExpBoxplot.pdf",
+ "star_salmon/dupradar/gene_data",
+ "star_salmon/dupradar/gene_data/RAP1_IAA_30M_REP1_dupMatrix.txt",
+ "star_salmon/dupradar/gene_data/RAP1_UNINDUCED_REP1_dupMatrix.txt",
+ "star_salmon/dupradar/gene_data/RAP1_UNINDUCED_REP2_dupMatrix.txt",
+ "star_salmon/dupradar/gene_data/WT_REP1_dupMatrix.txt",
+ "star_salmon/dupradar/gene_data/WT_REP2_dupMatrix.txt",
+ "star_salmon/dupradar/histogram",
+ "star_salmon/dupradar/histogram/RAP1_IAA_30M_REP1_expressionHist.pdf",
+ "star_salmon/dupradar/histogram/RAP1_UNINDUCED_REP1_expressionHist.pdf",
+ "star_salmon/dupradar/histogram/RAP1_UNINDUCED_REP2_expressionHist.pdf",
+ "star_salmon/dupradar/histogram/WT_REP1_expressionHist.pdf",
+ "star_salmon/dupradar/histogram/WT_REP2_expressionHist.pdf",
+ "star_salmon/dupradar/intercepts_slope",
+ "star_salmon/dupradar/intercepts_slope/RAP1_IAA_30M_REP1_intercept_slope.txt",
+ "star_salmon/dupradar/intercepts_slope/RAP1_UNINDUCED_REP1_intercept_slope.txt",
+ "star_salmon/dupradar/intercepts_slope/RAP1_UNINDUCED_REP2_intercept_slope.txt",
+ "star_salmon/dupradar/intercepts_slope/WT_REP1_intercept_slope.txt",
+ "star_salmon/dupradar/intercepts_slope/WT_REP2_intercept_slope.txt",
+ "star_salmon/dupradar/scatter_plot",
+ "star_salmon/dupradar/scatter_plot/RAP1_IAA_30M_REP1_duprateExpDens.pdf",
+ "star_salmon/dupradar/scatter_plot/RAP1_UNINDUCED_REP1_duprateExpDens.pdf",
+ "star_salmon/dupradar/scatter_plot/RAP1_UNINDUCED_REP2_duprateExpDens.pdf",
+ "star_salmon/dupradar/scatter_plot/WT_REP1_duprateExpDens.pdf",
+ "star_salmon/dupradar/scatter_plot/WT_REP2_duprateExpDens.pdf",
+ "star_salmon/featurecounts",
+ "star_salmon/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_rrna_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt",
+ "star_salmon/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt.summary",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_rrna_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt.summary",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_rrna_mqc.tsv",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt",
+ "star_salmon/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt.summary",
+ "star_salmon/featurecounts/WT_REP1.biotype_counts_mqc.tsv",
+ "star_salmon/featurecounts/WT_REP1.biotype_counts_rrna_mqc.tsv",
+ "star_salmon/featurecounts/WT_REP1.featureCounts.txt",
+ "star_salmon/featurecounts/WT_REP1.featureCounts.txt.summary",
+ "star_salmon/featurecounts/WT_REP2.biotype_counts_mqc.tsv",
+ "star_salmon/featurecounts/WT_REP2.biotype_counts_rrna_mqc.tsv",
+ "star_salmon/featurecounts/WT_REP2.featureCounts.txt",
+ "star_salmon/featurecounts/WT_REP2.featureCounts.txt.summary",
+ "star_salmon/log",
+ "star_salmon/log/RAP1_IAA_30M_REP1.Log.final.out",
+ "star_salmon/log/RAP1_IAA_30M_REP1.Log.out",
+ "star_salmon/log/RAP1_IAA_30M_REP1.Log.progress.out",
+ "star_salmon/log/RAP1_IAA_30M_REP1.SJ.out.tab",
+ "star_salmon/log/RAP1_UNINDUCED_REP1.Log.final.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP1.Log.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP1.Log.progress.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP1.SJ.out.tab",
+ "star_salmon/log/RAP1_UNINDUCED_REP2.Log.final.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP2.Log.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP2.Log.progress.out",
+ "star_salmon/log/RAP1_UNINDUCED_REP2.SJ.out.tab",
+ "star_salmon/log/WT_REP1.Log.final.out",
+ "star_salmon/log/WT_REP1.Log.out",
+ "star_salmon/log/WT_REP1.Log.progress.out",
+ "star_salmon/log/WT_REP1.SJ.out.tab",
+ "star_salmon/log/WT_REP2.Log.final.out",
+ "star_salmon/log/WT_REP2.Log.out",
+ "star_salmon/log/WT_REP2.Log.progress.out",
+ "star_salmon/log/WT_REP2.SJ.out.tab",
+ "star_salmon/qualimap",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/agogo.css",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/ajax-loader.gif",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/basic.css",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/bgfooter.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/bgtop.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/comment-bright.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/comment-close.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/comment.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/doctools.js",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/down-pressed.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/down.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/file.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/jquery.js",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/minus.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/plus.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/pygments.css",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/qualimap_logo_small.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/report.css",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/searchtools.js",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/underscore.js",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/up-pressed.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/up.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/css/websupport.js",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Junction Analysis.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/qualimapReport.html",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "star_salmon/qualimap/RAP1_IAA_30M_REP1/rnaseq_qc_results.txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/agogo.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/ajax-loader.gif",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/basic.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/bgfooter.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/bgtop.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/comment-bright.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/comment-close.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/comment.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/doctools.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/down-pressed.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/down.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/file.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/jquery.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/minus.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/plus.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/pygments.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/qualimap_logo_small.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/report.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/searchtools.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/underscore.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/up-pressed.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/up.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/css/websupport.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Junction Analysis.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/qualimapReport.html",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP1/rnaseq_qc_results.txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/agogo.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/ajax-loader.gif",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/basic.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/bgfooter.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/bgtop.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/comment-bright.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/comment-close.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/comment.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/doctools.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/down-pressed.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/down.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/file.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/jquery.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/minus.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/plus.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/pygments.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/qualimap_logo_small.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/report.css",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/searchtools.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/underscore.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/up-pressed.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/up.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/css/websupport.js",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Junction Analysis.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Reads Genomic Origin.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Transcript coverage histogram.png",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/qualimapReport.html",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "star_salmon/qualimap/RAP1_UNINDUCED_REP2/rnaseq_qc_results.txt",
+ "star_salmon/qualimap/WT_REP1",
+ "star_salmon/qualimap/WT_REP1/css",
+ "star_salmon/qualimap/WT_REP1/css/agogo.css",
+ "star_salmon/qualimap/WT_REP1/css/ajax-loader.gif",
+ "star_salmon/qualimap/WT_REP1/css/basic.css",
+ "star_salmon/qualimap/WT_REP1/css/bgfooter.png",
+ "star_salmon/qualimap/WT_REP1/css/bgtop.png",
+ "star_salmon/qualimap/WT_REP1/css/comment-bright.png",
+ "star_salmon/qualimap/WT_REP1/css/comment-close.png",
+ "star_salmon/qualimap/WT_REP1/css/comment.png",
+ "star_salmon/qualimap/WT_REP1/css/doctools.js",
+ "star_salmon/qualimap/WT_REP1/css/down-pressed.png",
+ "star_salmon/qualimap/WT_REP1/css/down.png",
+ "star_salmon/qualimap/WT_REP1/css/file.png",
+ "star_salmon/qualimap/WT_REP1/css/jquery.js",
+ "star_salmon/qualimap/WT_REP1/css/minus.png",
+ "star_salmon/qualimap/WT_REP1/css/plus.png",
+ "star_salmon/qualimap/WT_REP1/css/pygments.css",
+ "star_salmon/qualimap/WT_REP1/css/qualimap_logo_small.png",
+ "star_salmon/qualimap/WT_REP1/css/report.css",
+ "star_salmon/qualimap/WT_REP1/css/searchtools.js",
+ "star_salmon/qualimap/WT_REP1/css/underscore.js",
+ "star_salmon/qualimap/WT_REP1/css/up-pressed.png",
+ "star_salmon/qualimap/WT_REP1/css/up.png",
+ "star_salmon/qualimap/WT_REP1/css/websupport.js",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Junction Analysis.png",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "star_salmon/qualimap/WT_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "star_salmon/qualimap/WT_REP1/qualimapReport.html",
+ "star_salmon/qualimap/WT_REP1/raw_data_qualimapReport",
+ "star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "star_salmon/qualimap/WT_REP1/rnaseq_qc_results.txt",
+ "star_salmon/qualimap/WT_REP2",
+ "star_salmon/qualimap/WT_REP2/css",
+ "star_salmon/qualimap/WT_REP2/css/agogo.css",
+ "star_salmon/qualimap/WT_REP2/css/ajax-loader.gif",
+ "star_salmon/qualimap/WT_REP2/css/basic.css",
+ "star_salmon/qualimap/WT_REP2/css/bgfooter.png",
+ "star_salmon/qualimap/WT_REP2/css/bgtop.png",
+ "star_salmon/qualimap/WT_REP2/css/comment-bright.png",
+ "star_salmon/qualimap/WT_REP2/css/comment-close.png",
+ "star_salmon/qualimap/WT_REP2/css/comment.png",
+ "star_salmon/qualimap/WT_REP2/css/doctools.js",
+ "star_salmon/qualimap/WT_REP2/css/down-pressed.png",
+ "star_salmon/qualimap/WT_REP2/css/down.png",
+ "star_salmon/qualimap/WT_REP2/css/file.png",
+ "star_salmon/qualimap/WT_REP2/css/jquery.js",
+ "star_salmon/qualimap/WT_REP2/css/minus.png",
+ "star_salmon/qualimap/WT_REP2/css/plus.png",
+ "star_salmon/qualimap/WT_REP2/css/pygments.css",
+ "star_salmon/qualimap/WT_REP2/css/qualimap_logo_small.png",
+ "star_salmon/qualimap/WT_REP2/css/report.css",
+ "star_salmon/qualimap/WT_REP2/css/searchtools.js",
+ "star_salmon/qualimap/WT_REP2/css/underscore.js",
+ "star_salmon/qualimap/WT_REP2/css/up-pressed.png",
+ "star_salmon/qualimap/WT_REP2/css/up.png",
+ "star_salmon/qualimap/WT_REP2/css/websupport.js",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Junction Analysis.png",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Reads Genomic Origin.png",
+ "star_salmon/qualimap/WT_REP2/images_qualimapReport/Transcript coverage histogram.png",
+ "star_salmon/qualimap/WT_REP2/qualimapReport.html",
+ "star_salmon/qualimap/WT_REP2/raw_data_qualimapReport",
+ "star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "star_salmon/qualimap/WT_REP2/rnaseq_qc_results.txt",
+ "star_salmon/rseqc",
+ "star_salmon/rseqc/bam_stat",
+ "star_salmon/rseqc/bam_stat/RAP1_IAA_30M_REP1.bam_stat.txt",
+ "star_salmon/rseqc/bam_stat/RAP1_UNINDUCED_REP1.bam_stat.txt",
+ "star_salmon/rseqc/bam_stat/RAP1_UNINDUCED_REP2.bam_stat.txt",
+ "star_salmon/rseqc/bam_stat/WT_REP1.bam_stat.txt",
+ "star_salmon/rseqc/bam_stat/WT_REP2.bam_stat.txt",
+ "star_salmon/rseqc/infer_experiment",
+ "star_salmon/rseqc/infer_experiment/RAP1_IAA_30M_REP1.infer_experiment.txt",
+ "star_salmon/rseqc/infer_experiment/RAP1_UNINDUCED_REP1.infer_experiment.txt",
+ "star_salmon/rseqc/infer_experiment/RAP1_UNINDUCED_REP2.infer_experiment.txt",
+ "star_salmon/rseqc/infer_experiment/WT_REP1.infer_experiment.txt",
+ "star_salmon/rseqc/infer_experiment/WT_REP2.infer_experiment.txt",
+ "star_salmon/rseqc/inner_distance",
+ "star_salmon/rseqc/inner_distance/pdf",
+ "star_salmon/rseqc/inner_distance/pdf/RAP1_IAA_30M_REP1.inner_distance_plot.pdf",
+ "star_salmon/rseqc/inner_distance/pdf/WT_REP1.inner_distance_plot.pdf",
+ "star_salmon/rseqc/inner_distance/pdf/WT_REP2.inner_distance_plot.pdf",
+ "star_salmon/rseqc/inner_distance/rscript",
+ "star_salmon/rseqc/inner_distance/rscript/RAP1_IAA_30M_REP1.inner_distance_plot.r",
+ "star_salmon/rseqc/inner_distance/rscript/WT_REP1.inner_distance_plot.r",
+ "star_salmon/rseqc/inner_distance/rscript/WT_REP2.inner_distance_plot.r",
+ "star_salmon/rseqc/inner_distance/txt",
+ "star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance.txt",
+ "star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_freq.txt",
+ "star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_mean.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance_freq.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance_mean.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance_freq.txt",
+ "star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance_mean.txt",
+ "star_salmon/rseqc/junction_annotation",
+ "star_salmon/rseqc/junction_annotation/bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.Interact.bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.Interact.bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.Interact.bed",
+ "star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.bed",
+ "star_salmon/rseqc/junction_annotation/bed/WT_REP1.junction.Interact.bed",
+ "star_salmon/rseqc/junction_annotation/bed/WT_REP1.junction.bed",
+ "star_salmon/rseqc/junction_annotation/bed/WT_REP2.junction.Interact.bed",
+ "star_salmon/rseqc/junction_annotation/bed/WT_REP2.junction.bed",
+ "star_salmon/rseqc/junction_annotation/log",
+ "star_salmon/rseqc/junction_annotation/log/RAP1_IAA_30M_REP1.junction_annotation.log",
+ "star_salmon/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP1.junction_annotation.log",
+ "star_salmon/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP2.junction_annotation.log",
+ "star_salmon/rseqc/junction_annotation/log/WT_REP1.junction_annotation.log",
+ "star_salmon/rseqc/junction_annotation/log/WT_REP2.junction_annotation.log",
+ "star_salmon/rseqc/junction_annotation/pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_events.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_junction.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_events.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_junction.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_events.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_junction.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/WT_REP1.splice_events.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/WT_REP1.splice_junction.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/WT_REP2.splice_events.pdf",
+ "star_salmon/rseqc/junction_annotation/pdf/WT_REP2.splice_junction.pdf",
+ "star_salmon/rseqc/junction_annotation/rscript",
+ "star_salmon/rseqc/junction_annotation/rscript/RAP1_IAA_30M_REP1.junction_plot.r",
+ "star_salmon/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP1.junction_plot.r",
+ "star_salmon/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP2.junction_plot.r",
+ "star_salmon/rseqc/junction_annotation/rscript/WT_REP1.junction_plot.r",
+ "star_salmon/rseqc/junction_annotation/rscript/WT_REP2.junction_plot.r",
+ "star_salmon/rseqc/junction_annotation/xls",
+ "star_salmon/rseqc/junction_annotation/xls/RAP1_IAA_30M_REP1.junction.xls",
+ "star_salmon/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP1.junction.xls",
+ "star_salmon/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP2.junction.xls",
+ "star_salmon/rseqc/junction_annotation/xls/WT_REP1.junction.xls",
+ "star_salmon/rseqc/junction_annotation/xls/WT_REP2.junction.xls",
+ "star_salmon/rseqc/junction_saturation",
+ "star_salmon/rseqc/junction_saturation/pdf",
+ "star_salmon/rseqc/junction_saturation/pdf/RAP1_IAA_30M_REP1.junctionSaturation_plot.pdf",
+ "star_salmon/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP1.junctionSaturation_plot.pdf",
+ "star_salmon/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP2.junctionSaturation_plot.pdf",
+ "star_salmon/rseqc/junction_saturation/pdf/WT_REP1.junctionSaturation_plot.pdf",
+ "star_salmon/rseqc/junction_saturation/pdf/WT_REP2.junctionSaturation_plot.pdf",
+ "star_salmon/rseqc/junction_saturation/rscript",
+ "star_salmon/rseqc/junction_saturation/rscript/RAP1_IAA_30M_REP1.junctionSaturation_plot.r",
+ "star_salmon/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP1.junctionSaturation_plot.r",
+ "star_salmon/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP2.junctionSaturation_plot.r",
+ "star_salmon/rseqc/junction_saturation/rscript/WT_REP1.junctionSaturation_plot.r",
+ "star_salmon/rseqc/junction_saturation/rscript/WT_REP2.junctionSaturation_plot.r",
+ "star_salmon/rseqc/read_distribution",
+ "star_salmon/rseqc/read_distribution/RAP1_IAA_30M_REP1.read_distribution.txt",
+ "star_salmon/rseqc/read_distribution/RAP1_UNINDUCED_REP1.read_distribution.txt",
+ "star_salmon/rseqc/read_distribution/RAP1_UNINDUCED_REP2.read_distribution.txt",
+ "star_salmon/rseqc/read_distribution/WT_REP1.read_distribution.txt",
+ "star_salmon/rseqc/read_distribution/WT_REP2.read_distribution.txt",
+ "star_salmon/rseqc/read_duplication",
+ "star_salmon/rseqc/read_duplication/pdf",
+ "star_salmon/rseqc/read_duplication/pdf/RAP1_IAA_30M_REP1.DupRate_plot.pdf",
+ "star_salmon/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP1.DupRate_plot.pdf",
+ "star_salmon/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP2.DupRate_plot.pdf",
+ "star_salmon/rseqc/read_duplication/pdf/WT_REP1.DupRate_plot.pdf",
+ "star_salmon/rseqc/read_duplication/pdf/WT_REP2.DupRate_plot.pdf",
+ "star_salmon/rseqc/read_duplication/rscript",
+ "star_salmon/rseqc/read_duplication/rscript/RAP1_IAA_30M_REP1.DupRate_plot.r",
+ "star_salmon/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP1.DupRate_plot.r",
+ "star_salmon/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP2.DupRate_plot.r",
+ "star_salmon/rseqc/read_duplication/rscript/WT_REP1.DupRate_plot.r",
+ "star_salmon/rseqc/read_duplication/rscript/WT_REP2.DupRate_plot.r",
+ "star_salmon/rseqc/read_duplication/xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.pos.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.seq.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.pos.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.seq.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.pos.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.seq.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/WT_REP1.pos.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/WT_REP1.seq.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/WT_REP2.pos.DupRate.xls",
+ "star_salmon/rseqc/read_duplication/xls/WT_REP2.seq.DupRate.xls",
+ "star_salmon/salmon.merged.gene_counts.SummarizedExperiment.rds",
+ "star_salmon/salmon.merged.gene_counts.tsv",
+ "star_salmon/salmon.merged.gene_counts_length_scaled.SummarizedExperiment.rds",
+ "star_salmon/salmon.merged.gene_counts_length_scaled.tsv",
+ "star_salmon/salmon.merged.gene_counts_scaled.SummarizedExperiment.rds",
+ "star_salmon/salmon.merged.gene_counts_scaled.tsv",
+ "star_salmon/salmon.merged.gene_lengths.tsv",
+ "star_salmon/salmon.merged.gene_tpm.tsv",
+ "star_salmon/salmon.merged.transcript_counts.SummarizedExperiment.rds",
+ "star_salmon/salmon.merged.transcript_counts.tsv",
+ "star_salmon/salmon.merged.transcript_lengths.tsv",
+ "star_salmon/salmon.merged.transcript_tpm.tsv",
+ "star_salmon/samtools_stats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.stats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP1.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP1.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP1.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.transcriptome.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.transcriptome.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP1.umi_dedup.transcriptome.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP2.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP2.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP2.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.sorted.bam.stats",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.transcriptome.sorted.bam.flagstat",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.transcriptome.sorted.bam.idxstats",
+ "star_salmon/samtools_stats/WT_REP2.umi_dedup.transcriptome.sorted.bam.stats",
+ "star_salmon/stringtie",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/e2t.ctab",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/e_data.ctab",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/i2t.ctab",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/i_data.ctab",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/t_data.ctab",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.coverage.gtf",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.gene.abundance.txt",
+ "star_salmon/stringtie/RAP1_IAA_30M_REP1.transcripts.gtf",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/e2t.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/e_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/i2t.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/i_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/t_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.coverage.gtf",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.gene.abundance.txt",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP1.transcripts.gtf",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/e2t.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/e_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/i2t.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/i_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/t_data.ctab",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.coverage.gtf",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.gene.abundance.txt",
+ "star_salmon/stringtie/RAP1_UNINDUCED_REP2.transcripts.gtf",
+ "star_salmon/stringtie/WT_REP1.ballgown",
+ "star_salmon/stringtie/WT_REP1.ballgown/e2t.ctab",
+ "star_salmon/stringtie/WT_REP1.ballgown/e_data.ctab",
+ "star_salmon/stringtie/WT_REP1.ballgown/i2t.ctab",
+ "star_salmon/stringtie/WT_REP1.ballgown/i_data.ctab",
+ "star_salmon/stringtie/WT_REP1.ballgown/t_data.ctab",
+ "star_salmon/stringtie/WT_REP1.coverage.gtf",
+ "star_salmon/stringtie/WT_REP1.gene.abundance.txt",
+ "star_salmon/stringtie/WT_REP1.transcripts.gtf",
+ "star_salmon/stringtie/WT_REP2.ballgown",
+ "star_salmon/stringtie/WT_REP2.ballgown/e2t.ctab",
+ "star_salmon/stringtie/WT_REP2.ballgown/e_data.ctab",
+ "star_salmon/stringtie/WT_REP2.ballgown/i2t.ctab",
+ "star_salmon/stringtie/WT_REP2.ballgown/i_data.ctab",
+ "star_salmon/stringtie/WT_REP2.ballgown/t_data.ctab",
+ "star_salmon/stringtie/WT_REP2.coverage.gtf",
+ "star_salmon/stringtie/WT_REP2.gene.abundance.txt",
+ "star_salmon/stringtie/WT_REP2.transcripts.gtf",
+ "star_salmon/tx2gene.tsv",
+ "star_salmon/umitools",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_edit_distance.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_per_umi.tsv",
+ "star_salmon/umitools/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.sorted_edit_distance.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.sorted_per_umi.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv",
+ "star_salmon/umitools/WT_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.sorted_edit_distance.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.sorted_per_umi.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.transcriptome.sorted_edit_distance.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.transcriptome.sorted_per_umi.tsv",
+ "star_salmon/umitools/WT_REP2.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv",
+ "star_salmon/umitools/genomic_dedup_log",
+ "star_salmon/umitools/genomic_dedup_log/RAP1_IAA_30M_REP1.umi_dedup.sorted.log",
+ "star_salmon/umitools/genomic_dedup_log/RAP1_UNINDUCED_REP1.umi_dedup.sorted.log",
+ "star_salmon/umitools/genomic_dedup_log/RAP1_UNINDUCED_REP2.umi_dedup.sorted.log",
+ "star_salmon/umitools/genomic_dedup_log/WT_REP1.umi_dedup.sorted.log",
+ "star_salmon/umitools/genomic_dedup_log/WT_REP2.umi_dedup.sorted.log",
+ "star_salmon/umitools/prepare_for_salmon_log",
+ "star_salmon/umitools/prepare_for_salmon_log/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.filtered.prepare_for_rsem.log",
+ "star_salmon/umitools/prepare_for_salmon_log/WT_REP1.umi_dedup.transcriptome.filtered.prepare_for_rsem.log",
+ "star_salmon/umitools/prepare_for_salmon_log/WT_REP2.umi_dedup.transcriptome.filtered.prepare_for_rsem.log",
+ "star_salmon/umitools/transcriptomic_dedup_log",
+ "star_salmon/umitools/transcriptomic_dedup_log/RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted.log",
+ "star_salmon/umitools/transcriptomic_dedup_log/RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted.log",
+ "star_salmon/umitools/transcriptomic_dedup_log/RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted.log",
+ "star_salmon/umitools/transcriptomic_dedup_log/WT_REP1.umi_dedup.transcriptome.sorted.log",
+ "star_salmon/umitools/transcriptomic_dedup_log/WT_REP2.umi_dedup.transcriptome.sorted.log",
+ "trimgalore",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP1_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP2_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_2.fastq.gz_trimming_report.txt",
+ "umitools",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract.log",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract_1.fastq.gz",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract_2.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP1.umi_extract.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP1.umi_extract.log",
+ "umitools/RAP1_UNINDUCED_REP2.umi_extract.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP2.umi_extract.log",
+ "umitools/WT_REP1.umi_extract.log",
+ "umitools/WT_REP1.umi_extract_1.fastq.gz",
+ "umitools/WT_REP1.umi_extract_2.fastq.gz",
+ "umitools/WT_REP2.umi_extract.log",
+ "umitools/WT_REP2.umi_extract_1.fastq.gz",
+ "umitools/WT_REP2.umi_extract_2.fastq.gz"
+ ],
+ [
+ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055",
+ "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28",
+ "cutadapt_filtered_reads_plot.txt:md5,3f122969fa288888e5abef061b7963f2",
+ "cutadapt_trimmed_sequences_plot_3_Counts.txt:md5,5e8a821c9a4deb46c11bc65969b8864f",
+ "cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt:md5,bf8abefa7c5f2f1e1140749983279d9d",
+ "fastqc_raw-status-check-heatmap.txt:md5,5a89b0d8d162f6b1dbdaf39457bbc03b",
+ "fastqc_raw_adapter_content_plot.txt:md5,da0389be84cfdd189b1d045212eb2974",
+ "fastqc_raw_overrepresented_sequences_plot.txt:md5,25d88ea8a72f55e8a374ae802bc7f0b1",
+ "fastqc_raw_per_base_n_content_plot.txt:md5,d368d7e36ca2f73dcde61f2b486d8213",
+ "fastqc_raw_per_base_sequence_quality_plot.txt:md5,5c3065b549129702b185ea1b817da420",
+ "fastqc_raw_per_sequence_gc_content_plot_Counts.txt:md5,9ddaa50167117d3c9188ccf015427704",
+ "fastqc_raw_per_sequence_gc_content_plot_Percentages.txt:md5,f10ee2881b61308af35f304aa3d810a3",
+ "fastqc_raw_per_sequence_quality_scores_plot.txt:md5,b5f9a02933e3065952237afd2ec9ce82",
+ "fastqc_raw_sequence_counts_plot.txt:md5,cbae4979d5db66d3b894abcf8d1c453c",
+ "fastqc_raw_sequence_duplication_levels_plot.txt:md5,8812cee16f6ca65e2c33635754de1772",
+ "fastqc_sequence_length_distribution_plot.txt:md5,7a2263743d5c452dc940eabffcb0ea82",
+ "fastqc_trimmed-status-check-heatmap.txt:md5,1913b4c077a341437475c758fb119559",
+ "fastqc_trimmed_overrepresented_sequences_plot.txt:md5,6a7c50868a36ca6052e9f4adba6b8567",
+ "fastqc_trimmed_per_base_n_content_plot.txt:md5,0cdd698fb9a2a4987572b9b4e8c8990e",
+ "fastqc_trimmed_per_base_sequence_quality_plot.txt:md5,82a9073151a413efbb0f11be8d0db1f2",
+ "fastqc_trimmed_per_sequence_gc_content_plot_Counts.txt:md5,08b43a02f34a3afa7eaddef602cdcafd",
+ "fastqc_trimmed_per_sequence_gc_content_plot_Percentages.txt:md5,0768af6bf06bbad52a3ac6ec0a444138",
+ "fastqc_trimmed_per_sequence_quality_scores_plot.txt:md5,ac167d250e9f88899da0ea81ef2b002e",
+ "fastqc_trimmed_sequence_counts_plot.txt:md5,370ddc5e58838dc5b55e53b6f8b8902a",
+ "fastqc_trimmed_sequence_duplication_levels_plot.txt:md5,b106d8ee7b83efe237afb862ebbe2f47",
+ "multiqc_citations.txt:md5,34e8b8c69015de25f9fce8c31d2ff864",
+ "multiqc_cutadapt.txt:md5,0937983d3ddfeccd4ccc5b0d74477558",
+ "multiqc_fastqc_fastqc_raw.txt:md5,81c3c1a2575a1891a7f2a9637a0f2cc0",
+ "multiqc_fastqc_fastqc_trimmed.txt:md5,a8a003b61b03295c416f3eb66c1cca65",
+ "multiqc_featurecounts_biotype_plot.txt:md5,5d1c33f3ff898b9bb95ed161e4235011",
+ "multiqc_samtools_idxstats.txt:md5,bdf185faa6d15d22efedb39d38c84943",
+ "multiqc_umitools_dedup.txt:md5,bad73f567baddb2272488b0e78e208cb",
+ "multiqc_umitools_extract.txt:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "qualimap_gene_coverage_profile_Counts.txt:md5,48d6c0b4df0f6f535a4526fc74b0fd47",
+ "qualimap_gene_coverage_profile_Normalised.txt:md5,8974b37cbdbbc2a23ca103a3a4c10dd4",
+ "qualimap_rnaseq_cov_hist.txt:md5,55d1a7026062c28624be5901ac6781a4",
+ "rseqc_infer_experiment_plot.txt:md5,595bfcda9eddeed4f9ae4e162fe7120d",
+ "samtools-idxstats-mapped-reads-plot_Normalised_Counts.txt:md5,75acd04232d1804b5f960ee4c5db4722",
+ "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.txt:md5,53addd7b78d8ae224920ec9b97489d72",
+ "samtools-idxstats-mapped-reads-plot_Raw_Counts.txt:md5,2cae5122b2e6371f068722ed666678a1",
+ "umitools_deduplication_barplot.txt:md5,a2d6295db66f53d1044b261a05352782",
+ "umitools_stats_violin.txt:md5,136374122cf99fb0771667fcb9b48aee",
+ "ambig_info.tsv:md5,0b462f9b2d8eff1b4d76b7433434899c",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,910a60cb6ef954008c9e6d037342d773",
+ "lib_format_counts.json:md5,5846a0bb874171d30ef60059f6c10868",
+ "ambig_info.tsv:md5,2c45f73a5f73ae4d0053198ea98c87f3",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,e364ca1b150c3c0ae57f0397ff8ae471",
+ "lib_format_counts.json:md5,d662a174758011a56e6669f4810e0aaf",
+ "ambig_info.tsv:md5,644c4352884872a05fe36cbb2b119879",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,b472447f8ac9530be1ca2d9733af2686",
+ "lib_format_counts.json:md5,f01d7b98afc4b6bab773536a88e08e7e",
+ "ambig_info.tsv:md5,d6ca0827f17be19b6e08730a45063f9d",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,bdc36620d04525d343faea5297f0f0d7",
+ "lib_format_counts.json:md5,cf8bf8db790bede5136fca52968e7c43",
+ "ambig_info.tsv:md5,4aa8036707dc557004a80852394beebe",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,809380ddce725a8fab75dd7741b64bf6",
+ "lib_format_counts.json:md5,d231ba7624b67eb654989f69530e2925",
+ "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676",
+ "tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe",
+ "ambig_info.tsv:md5,0f0e3687e731243392685c550fb1d93f",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,58bb0c52d3b55f5ea7bdee0f61cc96c4",
+ "ambig_info.tsv:md5,4fd93ccf823486ea525e3d9353600adf",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,231adc3feccd0469b2371b0c6fc09237",
+ "ambig_info.tsv:md5,31891c8515b24aa6b40448deafbbc9ca",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,1b4720397a3819ee8307736442195cf0",
+ "ambig_info.tsv:md5,651337ad8cc12771ab78164630848a34",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,f54a81a543ea538b16f6b1a7209bf269",
+ "ambig_info.tsv:md5,1a1c979fca935062e6f2339bfbf09ea6",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,a3b1b764e21b500d9ffed5beb6da85ac",
+ "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676",
+ "RAP1_IAA_30M_REP1_dupMatrix.txt:md5,0b8c54ea7f2a78f7dd478a7bde53143e",
+ "RAP1_UNINDUCED_REP1_dupMatrix.txt:md5,ed386269dd82129149da4d33a9e0e0b6",
+ "RAP1_UNINDUCED_REP2_dupMatrix.txt:md5,ee34da4ee0f7b56c710f5df041f88f31",
+ "WT_REP1_dupMatrix.txt:md5,6416d48ec754942e0a5a0c1a81680fe5",
+ "WT_REP2_dupMatrix.txt:md5,60e583c84a0d8b31cb667703c56d6c33",
+ "RAP1_IAA_30M_REP1_intercept_slope.txt:md5,6c1e7c494f765ff6466ab023d52a1d70",
+ "RAP1_UNINDUCED_REP1_intercept_slope.txt:md5,93a525d3bc1ebfeddc8f04f3c2238237",
+ "RAP1_UNINDUCED_REP2_intercept_slope.txt:md5,74f6210123d50c2001f20dad6283e856",
+ "WT_REP1_intercept_slope.txt:md5,4d428c55745bf9e2832d7fdb76b72088",
+ "WT_REP2_intercept_slope.txt:md5,d6a47171cb52331c5e6e21671152fb98",
+ "RAP1_IAA_30M_REP1.biotype_counts_mqc.tsv:md5,d0e2b4a2e14fa97ad49c4baacfb1d5e3",
+ "RAP1_IAA_30M_REP1.biotype_counts_rrna_mqc.tsv:md5,dde2de0cb90e10d0195c726f768e9941",
+ "RAP1_IAA_30M_REP1.featureCounts.txt:md5,c90762d8ee1df9219dc643b68e464ca0",
+ "RAP1_UNINDUCED_REP1.biotype_counts_mqc.tsv:md5,619bb912961ef626647f713335935a5f",
+ "RAP1_UNINDUCED_REP1.biotype_counts_rrna_mqc.tsv:md5,845ff9059c72bc6722a8de69776e22bb",
+ "RAP1_UNINDUCED_REP1.featureCounts.txt:md5,4e0769c943c89adcaa3bab14b6d1cd88",
+ "RAP1_UNINDUCED_REP2.biotype_counts_mqc.tsv:md5,1b2f0f0a41e2c85592ccbfdb2a77f99e",
+ "RAP1_UNINDUCED_REP2.biotype_counts_rrna_mqc.tsv:md5,6d3fa4c88c7fe61f638e4624ad5e22f0",
+ "RAP1_UNINDUCED_REP2.featureCounts.txt:md5,42f5e8ab19f3791494e78a827d8d2c9f",
+ "WT_REP1.biotype_counts_mqc.tsv:md5,76e6acbdf45a12e2053c5bc80c16736a",
+ "WT_REP1.biotype_counts_rrna_mqc.tsv:md5,8ef76d717492ca23764938aee8ea33a9",
+ "WT_REP1.featureCounts.txt:md5,10b18e11692373de8ca48fe944ba45fb",
+ "WT_REP2.biotype_counts_mqc.tsv:md5,e859f48881b11b5e4e60f729391de069",
+ "WT_REP2.biotype_counts_rrna_mqc.tsv:md5,12294618fe44df1e7f39348372dcb481",
+ "WT_REP2.featureCounts.txt:md5,19befeb287117a2f2ccd9104736be554",
+ "RAP1_IAA_30M_REP1.SJ.out.tab:md5,d604a0a313ab69f8a4283270af18ae32",
+ "RAP1_UNINDUCED_REP1.SJ.out.tab:md5,b19277790e74ab9437f849953493f04b",
+ "RAP1_UNINDUCED_REP2.SJ.out.tab:md5,9329f50423971eaf6ae2a6a896a46660",
+ "WT_REP1.SJ.out.tab:md5,7727eaec321fb8b87524d755e6f7e9db",
+ "WT_REP2.SJ.out.tab:md5,1f04519116b722d992668ac4945769a1",
+ "coverage_profile_along_genes_(high).txt:md5,84f052e9fa2ce44f4a9eb0e341eeb3ad",
+ "coverage_profile_along_genes_(low).txt:md5,c6c6f7799776d3b46b7f9b1616ccb068",
+ "coverage_profile_along_genes_(total).txt:md5,c6c6f7799776d3b46b7f9b1616ccb068",
+ "coverage_profile_along_genes_(high).txt:md5,d9c43191445075edeb5b318d6be67ddd",
+ "coverage_profile_along_genes_(low).txt:md5,af1991d0ab4160ab03eb3ae4892c3bf6",
+ "coverage_profile_along_genes_(total).txt:md5,af1991d0ab4160ab03eb3ae4892c3bf6",
+ "coverage_profile_along_genes_(high).txt:md5,7d4a5678dc311a848f63a3e8c3e0f8c3",
+ "coverage_profile_along_genes_(low).txt:md5,b2a0e1a3c5dd2560345d10f6cba85120",
+ "coverage_profile_along_genes_(total).txt:md5,b2a0e1a3c5dd2560345d10f6cba85120",
+ "coverage_profile_along_genes_(high).txt:md5,f7d7520d1ac24746a0284a1dc320f4c7",
+ "coverage_profile_along_genes_(low).txt:md5,808ab48af81ff6a147f28cc0da849b81",
+ "coverage_profile_along_genes_(total).txt:md5,808ab48af81ff6a147f28cc0da849b81",
+ "coverage_profile_along_genes_(high).txt:md5,378217a9d9d22fd3ebb6b07f0e51c162",
+ "coverage_profile_along_genes_(low).txt:md5,99f9a15f2da90bdfde1b92ee596ea38c",
+ "coverage_profile_along_genes_(total).txt:md5,99f9a15f2da90bdfde1b92ee596ea38c",
+ "RAP1_IAA_30M_REP1.infer_experiment.txt:md5,ddaa65251a996b6def0fceb36f46b849",
+ "RAP1_UNINDUCED_REP1.infer_experiment.txt:md5,7a23eead24c9c4af5a1f4ce9222fa13a",
+ "RAP1_UNINDUCED_REP2.infer_experiment.txt:md5,5b7bc57d1349566303263ca3a518e6fd",
+ "WT_REP1.infer_experiment.txt:md5,63c888e13ef0fa915abd6e7c26ffde48",
+ "WT_REP2.infer_experiment.txt:md5,3e6940ec81e6a809f929362ba4ba4a56",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,25598a444e1e9f1f15b4906b03a5874c",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,70fc90fa0a39d071c0e7edb1a705b6bc",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,3c9b439b5a37a3cfdf4382d1bf6f7487",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,a4235dcab3d0b32432a3b26272b3e16d",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,6356faf089792dfb24bda62bd0502d8e",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,1f7a09a1e1f86158196c4c4c805086c1",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,8576a03875dc511f3e2374d9d0232ac9",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,3395edddbf247fa5229e0bae721d6c99",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,01bfb332685d888c002fbda59ce28516",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,3d489da8244fc4d1fba0d0442220bf2d",
+ "tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe",
+ "RAP1_IAA_30M_REP1.umi_dedup.sorted_edit_distance.tsv:md5,620d5a5928e7739492de3bf66d149db2",
+ "RAP1_IAA_30M_REP1.umi_dedup.sorted_per_umi.tsv:md5,9c68e481bc942cfbf5cf51039238c269",
+ "RAP1_IAA_30M_REP1.umi_dedup.sorted_per_umi_per_position.tsv:md5,f37b7f5a783425506b434c9e5ff90f25",
+ "RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv:md5,3ec96cdbe4e9eb45b18df4391b89df34",
+ "RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv:md5,a06aa2fd396dfa28eb3408a0f4e3bf48",
+ "RAP1_IAA_30M_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv:md5,ce0c05c7994d600c75a34d5c9908f970",
+ "RAP1_UNINDUCED_REP1.umi_dedup.sorted_edit_distance.tsv:md5,58ea92107f0785532f31ba557e5d8aa9",
+ "RAP1_UNINDUCED_REP1.umi_dedup.sorted_per_umi.tsv:md5,41e6a7a416659b6208c731b1aa7e149f",
+ "RAP1_UNINDUCED_REP1.umi_dedup.sorted_per_umi_per_position.tsv:md5,1a4f7954086d4a76d93694443e074312",
+ "RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv:md5,176fbeac8e4f1cfa1def599cc5ad4847",
+ "RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv:md5,fcded67bc5e50902c296d40d53e9079c",
+ "RAP1_UNINDUCED_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv:md5,5a3d1e0ec5f3af2c279d8321bae2de34",
+ "RAP1_UNINDUCED_REP2.umi_dedup.sorted_edit_distance.tsv:md5,15120d542adb7ad45acf924d905e7fcf",
+ "RAP1_UNINDUCED_REP2.umi_dedup.sorted_per_umi.tsv:md5,d68aae0c4698c73c10c83df7f7cba06a",
+ "RAP1_UNINDUCED_REP2.umi_dedup.sorted_per_umi_per_position.tsv:md5,18f5c21477fc51e56c65ee0660649ffc",
+ "RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_edit_distance.tsv:md5,13f3f84f11f6bb8e98f001b97902d559",
+ "RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_per_umi.tsv:md5,eb7aedb12f64c703f76ade9b60d3ded0",
+ "RAP1_UNINDUCED_REP2.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv:md5,dc636e57732d1548bd4e5454aef63788",
+ "WT_REP1.umi_dedup.sorted_edit_distance.tsv:md5,5d18333d2131dfb7083ece42f5538eb4",
+ "WT_REP1.umi_dedup.sorted_per_umi.tsv:md5,d81c983368a0b2218eb8954579c376e7",
+ "WT_REP1.umi_dedup.sorted_per_umi_per_position.tsv:md5,e2412d716ca85a90f8dbb100a9614991",
+ "WT_REP1.umi_dedup.transcriptome.sorted_edit_distance.tsv:md5,d698cb0a0d23dbb2d78deff0928b2a1f",
+ "WT_REP1.umi_dedup.transcriptome.sorted_per_umi.tsv:md5,ee2df66b8427ea94fff18430cc1937a4",
+ "WT_REP1.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv:md5,485a03ff0fec979ee84d918158502bf1",
+ "WT_REP2.umi_dedup.sorted_edit_distance.tsv:md5,a935a046c0a8f269cdeaa7c1c935f0ec",
+ "WT_REP2.umi_dedup.sorted_per_umi.tsv:md5,0cb0f12e99861120a0437051a7aaa152",
+ "WT_REP2.umi_dedup.sorted_per_umi_per_position.tsv:md5,6f5656947a7f0076df446e6f40430027",
+ "WT_REP2.umi_dedup.transcriptome.sorted_edit_distance.tsv:md5,3e3c6a7e8996e566350742e9911366d3",
+ "WT_REP2.umi_dedup.transcriptome.sorted_per_umi.tsv:md5,0c986c4cb7a77f650a19e2c454b9b179",
+ "WT_REP2.umi_dedup.transcriptome.sorted_per_umi_per_position.tsv:md5,af9028dbdab81de3854a32cd1d19ac8b",
+ "RAP1_IAA_30M_REP1.umi_extract_1.fastq.gz:md5,e83d7f738fbbfaa541a2e71fe4663447",
+ "RAP1_IAA_30M_REP1.umi_extract_2.fastq.gz:md5,4f2873cbf584d6e84187238a4ae2b8fa",
+ "RAP1_UNINDUCED_REP1.umi_extract.fastq.gz:md5,9e42242fd68baac592140f63a8a716ce",
+ "RAP1_UNINDUCED_REP2.umi_extract.fastq.gz:md5,5a92b642927b8603c4765e5305e23e9c",
+ "WT_REP1.umi_extract_1.fastq.gz:md5,f312fac9c384a889ae4f959839263604",
+ "WT_REP1.umi_extract_2.fastq.gz:md5,ffca24924108fd54151620b7538b9e1a",
+ "WT_REP2.umi_extract_1.fastq.gz:md5,c3180451a24ce51fc35c1684521ae287",
+ "WT_REP2.umi_extract_2.fastq.gz:md5,067ff23f8d1307ad241cd70bc186b5c1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.3"
+ },
+ "timestamp": "2024-12-20T00:02:04.611696704"
+ },
+ "Params: --aligner hisat2 --umi_dedup_tool 'umicollapse'": {
+ "content": [
+ 196,
+ {
+ "BEDTOOLS_GENOMECOV_FW": {
+ "bedtools": "2.31.1"
+ },
+ "CAT_FASTQ": {
+ "cat": 9.5
+ },
+ "CUSTOM_CATADDITIONALFASTA": {
+ "python": "3.12.2"
+ },
+ "CUSTOM_GETCHROMSIZES": {
+ "getchromsizes": 1.21
+ },
+ "CUSTOM_TX2GENE": {
+ "python": "3.10.4"
+ },
+ "DESEQ2_QC_PSEUDO": {
+ "r-base": "4.0.3",
+ "bioconductor-deseq2": "1.28.0"
+ },
+ "DUPRADAR": {
+ "bioconductor-dupradar": "1.32.0"
+ },
+ "FASTQC": {
+ "fastqc": "0.12.1"
+ },
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
+ "FQ_SUBSAMPLE": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
+ "GTF2BED": {
+ "perl": "5.26.2"
+ },
+ "GTF_FILTER": {
+ "python": "3.9.5"
+ },
+ "GUNZIP_ADDITIONAL_FASTA": {
+ "gunzip": 1.1
+ },
+ "GUNZIP_GTF": {
+ "gunzip": 1.1
+ },
+ "HISAT2_ALIGN": {
+ "hisat2": "2.2.1",
+ "samtools": "1.16.1"
+ },
+ "HISAT2_EXTRACTSPLICESITES": {
+ "hisat2": "2.2.1"
+ },
+ "MULTIQC_CUSTOM_BIOTYPE": {
+ "python": "3.9.5"
+ },
+ "QUALIMAP_RNASEQ": {
+ "qualimap": 2.3
+ },
+ "RSEQC_BAMSTAT": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_INFEREXPERIMENT": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_INNERDISTANCE": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_JUNCTIONANNOTATION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_JUNCTIONSATURATION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_READDISTRIBUTION": {
+ "rseqc": "5.0.2"
+ },
+ "RSEQC_READDUPLICATION": {
+ "rseqc": "5.0.2"
+ },
+ "SALMON_QUANT": {
+ "salmon": "1.10.3"
+ },
+ "SAMTOOLS_FLAGSTAT": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_IDXSTATS": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_INDEX": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_SORT": {
+ "samtools": 1.21
+ },
+ "SAMTOOLS_STATS": {
+ "samtools": 1.21
+ },
+ "SE_GENE": {
+ "bioconductor-summarizedexperiment": "1.32.0"
+ },
+ "STRINGTIE_STRINGTIE": {
+ "stringtie": "2.2.3"
+ },
+ "SUBREAD_FEATURECOUNTS": {
+ "subread": "2.0.6"
+ },
+ "TRIMGALORE": {
+ "trimgalore": "0.6.10",
+ "cutadapt": 4.9
+ },
+ "TXIMETA_TXIMPORT": {
+ "bioconductor-tximeta": "1.20.1"
+ },
+ "UCSC_BEDCLIP": {
+ "ucsc": 377
+ },
+ "UCSC_BEDGRAPHTOBIGWIG": {
+ "ucsc": 469
+ },
+ "UMICOLLAPSE": {
+ "umicollapse": "1.1.0-0"
+ },
+ "UMITOOLS_EXTRACT": {
+ "umitools": "1.1.5"
+ },
+ "UNTAR_HISAT2_INDEX": {
+ "untar": 1.34
+ },
+ "UNTAR_SALMON_INDEX": {
+ "untar": 1.34
+ },
+ "Workflow": {
+ "nf-core/rnaseq": "v3.18.0"
+ }
+ },
+ [
+ "custom",
+ "custom/out",
+ "custom/out/genome_gfp.fasta",
+ "custom/out/genome_gfp.gtf",
+ "fastqc",
+ "fastqc/raw",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.html",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.zip",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.html",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.zip",
+ "fastqc/raw/WT_REP1_raw_1_fastqc.html",
+ "fastqc/raw/WT_REP1_raw_1_fastqc.zip",
+ "fastqc/raw/WT_REP1_raw_2_fastqc.html",
+ "fastqc/raw/WT_REP1_raw_2_fastqc.zip",
+ "fastqc/raw/WT_REP2_raw_1_fastqc.html",
+ "fastqc/raw/WT_REP2_raw_1_fastqc.zip",
+ "fastqc/raw/WT_REP2_raw_2_fastqc.html",
+ "fastqc/raw/WT_REP2_raw_2_fastqc.zip",
+ "fastqc/trim",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.zip",
+ "fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.html",
+ "fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.zip",
+ "fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.html",
+ "fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.zip",
+ "fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.zip",
+ "fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.html",
+ "fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip",
+ "fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html",
+ "fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "fq_lint/trimmed",
+ "fq_lint/trimmed/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/trimmed/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP1.fq_lint.txt",
+ "fq_lint/trimmed/WT_REP2.fq_lint.txt",
+ "hisat2",
+ "hisat2/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam",
+ "hisat2/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.bai",
+ "hisat2/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam",
+ "hisat2/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.bai",
+ "hisat2/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam",
+ "hisat2/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.bai",
+ "hisat2/WT_REP1.umi_dedup.sorted.bam",
+ "hisat2/WT_REP1.umi_dedup.sorted.bam.bai",
+ "hisat2/WT_REP2.umi_dedup.sorted.bam",
+ "hisat2/WT_REP2.umi_dedup.sorted.bam.bai",
+ "hisat2/bigwig",
+ "hisat2/bigwig/RAP1_IAA_30M_REP1.forward.bigWig",
+ "hisat2/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig",
+ "hisat2/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig",
+ "hisat2/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig",
+ "hisat2/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig",
+ "hisat2/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig",
+ "hisat2/bigwig/WT_REP1.forward.bigWig",
+ "hisat2/bigwig/WT_REP1.reverse.bigWig",
+ "hisat2/bigwig/WT_REP2.forward.bigWig",
+ "hisat2/bigwig/WT_REP2.reverse.bigWig",
+ "hisat2/dupradar",
+ "hisat2/dupradar/box_plot",
+ "hisat2/dupradar/box_plot/RAP1_IAA_30M_REP1_duprateExpBoxplot.pdf",
+ "hisat2/dupradar/box_plot/RAP1_UNINDUCED_REP1_duprateExpBoxplot.pdf",
+ "hisat2/dupradar/box_plot/RAP1_UNINDUCED_REP2_duprateExpBoxplot.pdf",
+ "hisat2/dupradar/box_plot/WT_REP1_duprateExpBoxplot.pdf",
+ "hisat2/dupradar/box_plot/WT_REP2_duprateExpBoxplot.pdf",
+ "hisat2/dupradar/gene_data",
+ "hisat2/dupradar/gene_data/RAP1_IAA_30M_REP1_dupMatrix.txt",
+ "hisat2/dupradar/gene_data/RAP1_UNINDUCED_REP1_dupMatrix.txt",
+ "hisat2/dupradar/gene_data/RAP1_UNINDUCED_REP2_dupMatrix.txt",
+ "hisat2/dupradar/gene_data/WT_REP1_dupMatrix.txt",
+ "hisat2/dupradar/gene_data/WT_REP2_dupMatrix.txt",
+ "hisat2/dupradar/histogram",
+ "hisat2/dupradar/histogram/RAP1_IAA_30M_REP1_expressionHist.pdf",
+ "hisat2/dupradar/histogram/RAP1_UNINDUCED_REP1_expressionHist.pdf",
+ "hisat2/dupradar/histogram/RAP1_UNINDUCED_REP2_expressionHist.pdf",
+ "hisat2/dupradar/histogram/WT_REP1_expressionHist.pdf",
+ "hisat2/dupradar/histogram/WT_REP2_expressionHist.pdf",
+ "hisat2/dupradar/intercepts_slope",
+ "hisat2/dupradar/intercepts_slope/RAP1_IAA_30M_REP1_intercept_slope.txt",
+ "hisat2/dupradar/intercepts_slope/RAP1_UNINDUCED_REP1_intercept_slope.txt",
+ "hisat2/dupradar/intercepts_slope/RAP1_UNINDUCED_REP2_intercept_slope.txt",
+ "hisat2/dupradar/intercepts_slope/WT_REP1_intercept_slope.txt",
+ "hisat2/dupradar/intercepts_slope/WT_REP2_intercept_slope.txt",
+ "hisat2/dupradar/scatter_plot",
+ "hisat2/dupradar/scatter_plot/RAP1_IAA_30M_REP1_duprateExpDens.pdf",
+ "hisat2/dupradar/scatter_plot/RAP1_UNINDUCED_REP1_duprateExpDens.pdf",
+ "hisat2/dupradar/scatter_plot/RAP1_UNINDUCED_REP2_duprateExpDens.pdf",
+ "hisat2/dupradar/scatter_plot/WT_REP1_duprateExpDens.pdf",
+ "hisat2/dupradar/scatter_plot/WT_REP2_duprateExpDens.pdf",
+ "hisat2/featurecounts",
+ "hisat2/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_mqc.tsv",
+ "hisat2/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_rrna_mqc.tsv",
+ "hisat2/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt",
+ "hisat2/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt.summary",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_mqc.tsv",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_rrna_mqc.tsv",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt.summary",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_mqc.tsv",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_rrna_mqc.tsv",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt",
+ "hisat2/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt.summary",
+ "hisat2/featurecounts/WT_REP1.biotype_counts_mqc.tsv",
+ "hisat2/featurecounts/WT_REP1.biotype_counts_rrna_mqc.tsv",
+ "hisat2/featurecounts/WT_REP1.featureCounts.txt",
+ "hisat2/featurecounts/WT_REP1.featureCounts.txt.summary",
+ "hisat2/featurecounts/WT_REP2.biotype_counts_mqc.tsv",
+ "hisat2/featurecounts/WT_REP2.biotype_counts_rrna_mqc.tsv",
+ "hisat2/featurecounts/WT_REP2.featureCounts.txt",
+ "hisat2/featurecounts/WT_REP2.featureCounts.txt.summary",
+ "hisat2/log",
+ "hisat2/log/RAP1_IAA_30M_REP1.hisat2.summary.log",
+ "hisat2/log/RAP1_UNINDUCED_REP1.hisat2.summary.log",
+ "hisat2/log/RAP1_UNINDUCED_REP2.hisat2.summary.log",
+ "hisat2/log/WT_REP1.hisat2.summary.log",
+ "hisat2/log/WT_REP2.hisat2.summary.log",
+ "hisat2/qualimap",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/agogo.css",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/ajax-loader.gif",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/basic.css",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/bgfooter.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/bgtop.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/comment-bright.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/comment-close.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/comment.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/doctools.js",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/down-pressed.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/down.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/file.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/jquery.js",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/minus.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/plus.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/pygments.css",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/qualimap_logo_small.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/report.css",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/searchtools.js",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/underscore.js",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/up-pressed.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/up.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/css/websupport.js",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Junction Analysis.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/qualimapReport.html",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "hisat2/qualimap/RAP1_IAA_30M_REP1/rnaseq_qc_results.txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/agogo.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/ajax-loader.gif",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/basic.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/bgfooter.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/bgtop.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/comment-bright.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/comment-close.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/comment.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/doctools.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/down-pressed.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/down.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/file.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/jquery.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/minus.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/plus.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/pygments.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/qualimap_logo_small.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/report.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/searchtools.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/underscore.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/up-pressed.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/up.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/css/websupport.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Junction Analysis.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/qualimapReport.html",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP1/rnaseq_qc_results.txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/agogo.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/ajax-loader.gif",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/basic.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/bgfooter.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/bgtop.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/comment-bright.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/comment-close.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/comment.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/doctools.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/down-pressed.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/down.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/file.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/jquery.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/minus.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/plus.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/pygments.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/qualimap_logo_small.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/report.css",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/searchtools.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/underscore.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/up-pressed.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/up.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/css/websupport.js",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Junction Analysis.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Reads Genomic Origin.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Transcript coverage histogram.png",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/qualimapReport.html",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "hisat2/qualimap/RAP1_UNINDUCED_REP2/rnaseq_qc_results.txt",
+ "hisat2/qualimap/WT_REP1",
+ "hisat2/qualimap/WT_REP1/css",
+ "hisat2/qualimap/WT_REP1/css/agogo.css",
+ "hisat2/qualimap/WT_REP1/css/ajax-loader.gif",
+ "hisat2/qualimap/WT_REP1/css/basic.css",
+ "hisat2/qualimap/WT_REP1/css/bgfooter.png",
+ "hisat2/qualimap/WT_REP1/css/bgtop.png",
+ "hisat2/qualimap/WT_REP1/css/comment-bright.png",
+ "hisat2/qualimap/WT_REP1/css/comment-close.png",
+ "hisat2/qualimap/WT_REP1/css/comment.png",
+ "hisat2/qualimap/WT_REP1/css/doctools.js",
+ "hisat2/qualimap/WT_REP1/css/down-pressed.png",
+ "hisat2/qualimap/WT_REP1/css/down.png",
+ "hisat2/qualimap/WT_REP1/css/file.png",
+ "hisat2/qualimap/WT_REP1/css/jquery.js",
+ "hisat2/qualimap/WT_REP1/css/minus.png",
+ "hisat2/qualimap/WT_REP1/css/plus.png",
+ "hisat2/qualimap/WT_REP1/css/pygments.css",
+ "hisat2/qualimap/WT_REP1/css/qualimap_logo_small.png",
+ "hisat2/qualimap/WT_REP1/css/report.css",
+ "hisat2/qualimap/WT_REP1/css/searchtools.js",
+ "hisat2/qualimap/WT_REP1/css/underscore.js",
+ "hisat2/qualimap/WT_REP1/css/up-pressed.png",
+ "hisat2/qualimap/WT_REP1/css/up.png",
+ "hisat2/qualimap/WT_REP1/css/websupport.js",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Junction Analysis.png",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Reads Genomic Origin.png",
+ "hisat2/qualimap/WT_REP1/images_qualimapReport/Transcript coverage histogram.png",
+ "hisat2/qualimap/WT_REP1/qualimapReport.html",
+ "hisat2/qualimap/WT_REP1/raw_data_qualimapReport",
+ "hisat2/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "hisat2/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "hisat2/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "hisat2/qualimap/WT_REP1/rnaseq_qc_results.txt",
+ "hisat2/qualimap/WT_REP2",
+ "hisat2/qualimap/WT_REP2/css",
+ "hisat2/qualimap/WT_REP2/css/agogo.css",
+ "hisat2/qualimap/WT_REP2/css/ajax-loader.gif",
+ "hisat2/qualimap/WT_REP2/css/basic.css",
+ "hisat2/qualimap/WT_REP2/css/bgfooter.png",
+ "hisat2/qualimap/WT_REP2/css/bgtop.png",
+ "hisat2/qualimap/WT_REP2/css/comment-bright.png",
+ "hisat2/qualimap/WT_REP2/css/comment-close.png",
+ "hisat2/qualimap/WT_REP2/css/comment.png",
+ "hisat2/qualimap/WT_REP2/css/doctools.js",
+ "hisat2/qualimap/WT_REP2/css/down-pressed.png",
+ "hisat2/qualimap/WT_REP2/css/down.png",
+ "hisat2/qualimap/WT_REP2/css/file.png",
+ "hisat2/qualimap/WT_REP2/css/jquery.js",
+ "hisat2/qualimap/WT_REP2/css/minus.png",
+ "hisat2/qualimap/WT_REP2/css/plus.png",
+ "hisat2/qualimap/WT_REP2/css/pygments.css",
+ "hisat2/qualimap/WT_REP2/css/qualimap_logo_small.png",
+ "hisat2/qualimap/WT_REP2/css/report.css",
+ "hisat2/qualimap/WT_REP2/css/searchtools.js",
+ "hisat2/qualimap/WT_REP2/css/underscore.js",
+ "hisat2/qualimap/WT_REP2/css/up-pressed.png",
+ "hisat2/qualimap/WT_REP2/css/up.png",
+ "hisat2/qualimap/WT_REP2/css/websupport.js",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Junction Analysis.png",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Reads Genomic Origin.png",
+ "hisat2/qualimap/WT_REP2/images_qualimapReport/Transcript coverage histogram.png",
+ "hisat2/qualimap/WT_REP2/qualimapReport.html",
+ "hisat2/qualimap/WT_REP2/raw_data_qualimapReport",
+ "hisat2/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt",
+ "hisat2/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt",
+ "hisat2/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt",
+ "hisat2/qualimap/WT_REP2/rnaseq_qc_results.txt",
+ "hisat2/rseqc",
+ "hisat2/rseqc/bam_stat",
+ "hisat2/rseqc/bam_stat/RAP1_IAA_30M_REP1.bam_stat.txt",
+ "hisat2/rseqc/bam_stat/RAP1_UNINDUCED_REP1.bam_stat.txt",
+ "hisat2/rseqc/bam_stat/RAP1_UNINDUCED_REP2.bam_stat.txt",
+ "hisat2/rseqc/bam_stat/WT_REP1.bam_stat.txt",
+ "hisat2/rseqc/bam_stat/WT_REP2.bam_stat.txt",
+ "hisat2/rseqc/infer_experiment",
+ "hisat2/rseqc/infer_experiment/RAP1_IAA_30M_REP1.infer_experiment.txt",
+ "hisat2/rseqc/infer_experiment/RAP1_UNINDUCED_REP1.infer_experiment.txt",
+ "hisat2/rseqc/infer_experiment/RAP1_UNINDUCED_REP2.infer_experiment.txt",
+ "hisat2/rseqc/infer_experiment/WT_REP1.infer_experiment.txt",
+ "hisat2/rseqc/infer_experiment/WT_REP2.infer_experiment.txt",
+ "hisat2/rseqc/inner_distance",
+ "hisat2/rseqc/inner_distance/pdf",
+ "hisat2/rseqc/inner_distance/pdf/RAP1_IAA_30M_REP1.inner_distance_plot.pdf",
+ "hisat2/rseqc/inner_distance/pdf/WT_REP1.inner_distance_plot.pdf",
+ "hisat2/rseqc/inner_distance/pdf/WT_REP2.inner_distance_plot.pdf",
+ "hisat2/rseqc/inner_distance/rscript",
+ "hisat2/rseqc/inner_distance/rscript/RAP1_IAA_30M_REP1.inner_distance_plot.r",
+ "hisat2/rseqc/inner_distance/rscript/WT_REP1.inner_distance_plot.r",
+ "hisat2/rseqc/inner_distance/rscript/WT_REP2.inner_distance_plot.r",
+ "hisat2/rseqc/inner_distance/txt",
+ "hisat2/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance.txt",
+ "hisat2/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_freq.txt",
+ "hisat2/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_mean.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP1.inner_distance.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP1.inner_distance_freq.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP1.inner_distance_mean.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP2.inner_distance.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP2.inner_distance_freq.txt",
+ "hisat2/rseqc/inner_distance/txt/WT_REP2.inner_distance_mean.txt",
+ "hisat2/rseqc/junction_annotation",
+ "hisat2/rseqc/junction_annotation/bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.Interact.bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.Interact.bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.Interact.bed",
+ "hisat2/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.bed",
+ "hisat2/rseqc/junction_annotation/bed/WT_REP1.junction.Interact.bed",
+ "hisat2/rseqc/junction_annotation/bed/WT_REP1.junction.bed",
+ "hisat2/rseqc/junction_annotation/bed/WT_REP2.junction.Interact.bed",
+ "hisat2/rseqc/junction_annotation/bed/WT_REP2.junction.bed",
+ "hisat2/rseqc/junction_annotation/log",
+ "hisat2/rseqc/junction_annotation/log/RAP1_IAA_30M_REP1.junction_annotation.log",
+ "hisat2/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP1.junction_annotation.log",
+ "hisat2/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP2.junction_annotation.log",
+ "hisat2/rseqc/junction_annotation/log/WT_REP1.junction_annotation.log",
+ "hisat2/rseqc/junction_annotation/log/WT_REP2.junction_annotation.log",
+ "hisat2/rseqc/junction_annotation/pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_events.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_junction.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_events.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_junction.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_events.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_junction.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/WT_REP1.splice_events.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/WT_REP1.splice_junction.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/WT_REP2.splice_events.pdf",
+ "hisat2/rseqc/junction_annotation/pdf/WT_REP2.splice_junction.pdf",
+ "hisat2/rseqc/junction_annotation/rscript",
+ "hisat2/rseqc/junction_annotation/rscript/RAP1_IAA_30M_REP1.junction_plot.r",
+ "hisat2/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP1.junction_plot.r",
+ "hisat2/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP2.junction_plot.r",
+ "hisat2/rseqc/junction_annotation/rscript/WT_REP1.junction_plot.r",
+ "hisat2/rseqc/junction_annotation/rscript/WT_REP2.junction_plot.r",
+ "hisat2/rseqc/junction_annotation/xls",
+ "hisat2/rseqc/junction_annotation/xls/RAP1_IAA_30M_REP1.junction.xls",
+ "hisat2/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP1.junction.xls",
+ "hisat2/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP2.junction.xls",
+ "hisat2/rseqc/junction_annotation/xls/WT_REP1.junction.xls",
+ "hisat2/rseqc/junction_annotation/xls/WT_REP2.junction.xls",
+ "hisat2/rseqc/junction_saturation",
+ "hisat2/rseqc/junction_saturation/pdf",
+ "hisat2/rseqc/junction_saturation/pdf/RAP1_IAA_30M_REP1.junctionSaturation_plot.pdf",
+ "hisat2/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP1.junctionSaturation_plot.pdf",
+ "hisat2/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP2.junctionSaturation_plot.pdf",
+ "hisat2/rseqc/junction_saturation/pdf/WT_REP1.junctionSaturation_plot.pdf",
+ "hisat2/rseqc/junction_saturation/pdf/WT_REP2.junctionSaturation_plot.pdf",
+ "hisat2/rseqc/junction_saturation/rscript",
+ "hisat2/rseqc/junction_saturation/rscript/RAP1_IAA_30M_REP1.junctionSaturation_plot.r",
+ "hisat2/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP1.junctionSaturation_plot.r",
+ "hisat2/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP2.junctionSaturation_plot.r",
+ "hisat2/rseqc/junction_saturation/rscript/WT_REP1.junctionSaturation_plot.r",
+ "hisat2/rseqc/junction_saturation/rscript/WT_REP2.junctionSaturation_plot.r",
+ "hisat2/rseqc/read_distribution",
+ "hisat2/rseqc/read_distribution/RAP1_IAA_30M_REP1.read_distribution.txt",
+ "hisat2/rseqc/read_distribution/RAP1_UNINDUCED_REP1.read_distribution.txt",
+ "hisat2/rseqc/read_distribution/RAP1_UNINDUCED_REP2.read_distribution.txt",
+ "hisat2/rseqc/read_distribution/WT_REP1.read_distribution.txt",
+ "hisat2/rseqc/read_distribution/WT_REP2.read_distribution.txt",
+ "hisat2/rseqc/read_duplication",
+ "hisat2/rseqc/read_duplication/pdf",
+ "hisat2/rseqc/read_duplication/pdf/RAP1_IAA_30M_REP1.DupRate_plot.pdf",
+ "hisat2/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP1.DupRate_plot.pdf",
+ "hisat2/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP2.DupRate_plot.pdf",
+ "hisat2/rseqc/read_duplication/pdf/WT_REP1.DupRate_plot.pdf",
+ "hisat2/rseqc/read_duplication/pdf/WT_REP2.DupRate_plot.pdf",
+ "hisat2/rseqc/read_duplication/rscript",
+ "hisat2/rseqc/read_duplication/rscript/RAP1_IAA_30M_REP1.DupRate_plot.r",
+ "hisat2/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP1.DupRate_plot.r",
+ "hisat2/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP2.DupRate_plot.r",
+ "hisat2/rseqc/read_duplication/rscript/WT_REP1.DupRate_plot.r",
+ "hisat2/rseqc/read_duplication/rscript/WT_REP2.DupRate_plot.r",
+ "hisat2/rseqc/read_duplication/xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.pos.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.seq.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.pos.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.seq.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.pos.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.seq.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/WT_REP1.pos.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/WT_REP1.seq.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/WT_REP2.pos.DupRate.xls",
+ "hisat2/rseqc/read_duplication/xls/WT_REP2.seq.DupRate.xls",
+ "hisat2/samtools_stats",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.stats",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_IAA_30M_REP1.umi_dedup.sorted.bam.stats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.stats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP1.umi_dedup.sorted.bam.stats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.stats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.flagstat",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.idxstats",
+ "hisat2/samtools_stats/RAP1_UNINDUCED_REP2.umi_dedup.sorted.bam.stats",
+ "hisat2/samtools_stats/WT_REP1.sorted.bam.flagstat",
+ "hisat2/samtools_stats/WT_REP1.sorted.bam.idxstats",
+ "hisat2/samtools_stats/WT_REP1.sorted.bam.stats",
+ "hisat2/samtools_stats/WT_REP1.umi_dedup.sorted.bam.flagstat",
+ "hisat2/samtools_stats/WT_REP1.umi_dedup.sorted.bam.idxstats",
+ "hisat2/samtools_stats/WT_REP1.umi_dedup.sorted.bam.stats",
+ "hisat2/samtools_stats/WT_REP2.sorted.bam.flagstat",
+ "hisat2/samtools_stats/WT_REP2.sorted.bam.idxstats",
+ "hisat2/samtools_stats/WT_REP2.sorted.bam.stats",
+ "hisat2/samtools_stats/WT_REP2.umi_dedup.sorted.bam.flagstat",
+ "hisat2/samtools_stats/WT_REP2.umi_dedup.sorted.bam.idxstats",
+ "hisat2/samtools_stats/WT_REP2.umi_dedup.sorted.bam.stats",
+ "hisat2/stringtie",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown/e2t.ctab",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown/e_data.ctab",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown/i2t.ctab",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown/i_data.ctab",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.ballgown/t_data.ctab",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.coverage.gtf",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.gene.abundance.txt",
+ "hisat2/stringtie/RAP1_IAA_30M_REP1.transcripts.gtf",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown/e2t.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown/e_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown/i2t.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown/i_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.ballgown/t_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.coverage.gtf",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.gene.abundance.txt",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP1.transcripts.gtf",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown/e2t.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown/e_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown/i2t.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown/i_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.ballgown/t_data.ctab",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.coverage.gtf",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.gene.abundance.txt",
+ "hisat2/stringtie/RAP1_UNINDUCED_REP2.transcripts.gtf",
+ "hisat2/stringtie/WT_REP1.ballgown",
+ "hisat2/stringtie/WT_REP1.ballgown/e2t.ctab",
+ "hisat2/stringtie/WT_REP1.ballgown/e_data.ctab",
+ "hisat2/stringtie/WT_REP1.ballgown/i2t.ctab",
+ "hisat2/stringtie/WT_REP1.ballgown/i_data.ctab",
+ "hisat2/stringtie/WT_REP1.ballgown/t_data.ctab",
+ "hisat2/stringtie/WT_REP1.coverage.gtf",
+ "hisat2/stringtie/WT_REP1.gene.abundance.txt",
+ "hisat2/stringtie/WT_REP1.transcripts.gtf",
+ "hisat2/stringtie/WT_REP2.ballgown",
+ "hisat2/stringtie/WT_REP2.ballgown/e2t.ctab",
+ "hisat2/stringtie/WT_REP2.ballgown/e_data.ctab",
+ "hisat2/stringtie/WT_REP2.ballgown/i2t.ctab",
+ "hisat2/stringtie/WT_REP2.ballgown/i_data.ctab",
+ "hisat2/stringtie/WT_REP2.ballgown/t_data.ctab",
+ "hisat2/stringtie/WT_REP2.coverage.gtf",
+ "hisat2/stringtie/WT_REP2.gene.abundance.txt",
+ "hisat2/stringtie/WT_REP2.transcripts.gtf",
+ "hisat2/umicollapse",
+ "hisat2/umicollapse/genomic_dedup_log",
+ "hisat2/umicollapse/genomic_dedup_log/RAP1_IAA_30M_REP1.umi_dedup.sorted_UMICollapse.log",
+ "hisat2/umicollapse/genomic_dedup_log/RAP1_UNINDUCED_REP1.umi_dedup.sorted_UMICollapse.log",
+ "hisat2/umicollapse/genomic_dedup_log/RAP1_UNINDUCED_REP2.umi_dedup.sorted_UMICollapse.log",
+ "hisat2/umicollapse/genomic_dedup_log/WT_REP1.umi_dedup.sorted_UMICollapse.log",
+ "hisat2/umicollapse/genomic_dedup_log/WT_REP2.umi_dedup.sorted_UMICollapse.log",
+ "multiqc",
+ "multiqc/hisat2",
+ "multiqc/hisat2/multiqc_report.html",
+ "multiqc/hisat2/multiqc_report_data",
+ "multiqc/hisat2/multiqc_report_data/cutadapt_filtered_reads_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw-status-check-heatmap.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_adapter_content_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_overrepresented_sequences_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_per_base_n_content_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_per_base_sequence_quality_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_per_sequence_gc_content_plot_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_per_sequence_gc_content_plot_Percentages.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_per_sequence_quality_scores_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_sequence_counts_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_sequence_duplication_levels_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_raw_top_overrepresented_sequences_table.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_sequence_length_distribution_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed-status-check-heatmap.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_overrepresented_sequences_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_per_base_n_content_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_per_base_sequence_quality_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_per_sequence_gc_content_plot_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_per_sequence_quality_scores_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_sequence_counts_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_sequence_duplication_levels_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/fastqc_trimmed_top_overrepresented_sequences_table.txt",
+ "multiqc/hisat2/multiqc_report_data/hisat2_pe_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/hisat2_se_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/junction_saturation_known.txt",
+ "multiqc/hisat2/multiqc_report_data/junction_saturation_novel.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc.log",
+ "multiqc/hisat2/multiqc_report_data/multiqc_citations.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_cutadapt.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_data.json",
+ "multiqc/hisat2/multiqc_report_data/multiqc_dupradar.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_fail_strand_check_table.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_fastqc_fastqc_raw.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_fastqc_fastqc_trimmed.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_featurecounts_biotype_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_general_stats.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_hisat2.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_rseqc_bam_stat.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_rseqc_infer_experiment.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_rseqc_junction_annotation.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_rseqc_read_distribution.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_salmon.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_sample-relationships.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_sample-relationships_1.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_samtools_flagstat.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_samtools_idxstats.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_samtools_stats.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_software_versions.txt",
+ "multiqc/hisat2/multiqc_report_data/multiqc_sources.txt",
+ "multiqc/hisat2/multiqc_report_data/qualimap_gene_coverage_profile_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/qualimap_gene_coverage_profile_Normalised.txt",
+ "multiqc/hisat2/multiqc_report_data/qualimap_genomic_origin.txt",
+ "multiqc/hisat2/multiqc_report_data/qualimap_rnaseq_cov_hist.txt",
+ "multiqc/hisat2/multiqc_report_data/qualimap_rnaseq_genome_results.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_bam_stat.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_infer_experiment_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_inner_distance.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_inner_distance_plot_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_inner_distance_plot_Percentages.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Events.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Junctions.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_saturation_all.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_saturation_plot_All_Junctions.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_saturation_plot_Known_Junctions.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_junction_saturation_plot_Novel_Junctions.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_read_distribution_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_read_dups.txt",
+ "multiqc/hisat2/multiqc_report_data/rseqc_read_dups_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/salmon_plot.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-flagstat-dp_Percentage_of_total.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-flagstat-dp_Read_counts.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Normalised_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Raw_Counts.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools-stats-dp.txt",
+ "multiqc/hisat2/multiqc_report_data/samtools_alignment_plot.txt",
+ "multiqc/hisat2/multiqc_report_plots",
+ "multiqc/hisat2/multiqc_report_plots/pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Obs_Exp.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/dupradar.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fail_strand_check_table.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw-status-check-heatmap.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_adapter_content_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_overrepresented_sequences_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_per_base_n_content_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_per_base_sequence_quality_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_per_sequence_gc_content_plot_Counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_per_sequence_gc_content_plot_Percentages.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_per_sequence_quality_scores_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_sequence_counts_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_sequence_counts_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_sequence_duplication_levels_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_raw_top_overrepresented_sequences_table.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_sequence_length_distribution_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed-status-check-heatmap.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_overrepresented_sequences_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_per_base_n_content_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_per_base_sequence_quality_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_gc_content_plot_Counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_per_sequence_quality_scores_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_sequence_counts_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_sequence_counts_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_sequence_duplication_levels_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/fastqc_trimmed_top_overrepresented_sequences_table.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/featurecounts_biotype_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/featurecounts_biotype_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/general_stats_table.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/hisat2_pe_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/hisat2_pe_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/hisat2_se_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/hisat2_se_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Normalised.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/qualimap_genomic_origin-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/qualimap_genomic_origin-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_bam_stat.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_infer_experiment_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Percentages.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_All_Junctions.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Known_Junctions.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Novel_Junctions.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_read_distribution_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_read_distribution_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/rseqc_read_dups_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/salmon_plot.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/sample-relationships.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-flagstat-dp_Percentage_of_total.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-flagstat-dp_Read_counts.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools-stats-dp.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools_alignment_plot-cnt.pdf",
+ "multiqc/hisat2/multiqc_report_plots/pdf/samtools_alignment_plot-pct.pdf",
+ "multiqc/hisat2/multiqc_report_plots/png",
+ "multiqc/hisat2/multiqc_report_plots/png/cutadapt_filtered_reads_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/cutadapt_filtered_reads_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Obs_Exp.png",
+ "multiqc/hisat2/multiqc_report_plots/png/dupradar.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fail_strand_check_table.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw-status-check-heatmap.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_adapter_content_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_overrepresented_sequences_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_per_base_n_content_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_per_base_sequence_quality_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_per_sequence_gc_content_plot_Counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_per_sequence_gc_content_plot_Percentages.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_per_sequence_quality_scores_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_sequence_counts_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_sequence_counts_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_sequence_duplication_levels_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_raw_top_overrepresented_sequences_table.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_sequence_length_distribution_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed-status-check-heatmap.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_overrepresented_sequences_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_per_base_n_content_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_per_base_sequence_quality_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_per_sequence_gc_content_plot_Counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_per_sequence_quality_scores_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_sequence_counts_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_sequence_counts_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_sequence_duplication_levels_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/fastqc_trimmed_top_overrepresented_sequences_table.png",
+ "multiqc/hisat2/multiqc_report_plots/png/featurecounts_biotype_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/featurecounts_biotype_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/general_stats_table.png",
+ "multiqc/hisat2/multiqc_report_plots/png/hisat2_pe_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/hisat2_pe_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/hisat2_se_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/hisat2_se_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/qualimap_gene_coverage_profile_Counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/qualimap_gene_coverage_profile_Normalised.png",
+ "multiqc/hisat2/multiqc_report_plots/png/qualimap_genomic_origin-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/qualimap_genomic_origin-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_bam_stat.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_infer_experiment_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_inner_distance_plot_Counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_inner_distance_plot_Percentages.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_saturation_plot_All_Junctions.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_saturation_plot_Known_Junctions.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_junction_saturation_plot_Novel_Junctions.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_read_distribution_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_read_distribution_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/png/rseqc_read_dups_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/salmon_plot.png",
+ "multiqc/hisat2/multiqc_report_plots/png/sample-relationships.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-flagstat-dp_Percentage_of_total.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-flagstat-dp_Read_counts.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools-stats-dp.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools_alignment_plot-cnt.png",
+ "multiqc/hisat2/multiqc_report_plots/png/samtools_alignment_plot-pct.png",
+ "multiqc/hisat2/multiqc_report_plots/svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Obs_Exp.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/dupradar.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fail_strand_check_table.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw-status-check-heatmap.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_adapter_content_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_overrepresented_sequences_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_per_base_n_content_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_per_base_sequence_quality_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_per_sequence_gc_content_plot_Counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_per_sequence_gc_content_plot_Percentages.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_per_sequence_quality_scores_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_sequence_counts_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_sequence_counts_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_sequence_duplication_levels_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_raw_top_overrepresented_sequences_table.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_sequence_length_distribution_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed-status-check-heatmap.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_overrepresented_sequences_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_per_base_n_content_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_per_base_sequence_quality_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_gc_content_plot_Counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_gc_content_plot_Percentages.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_per_sequence_quality_scores_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_sequence_counts_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_sequence_counts_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_sequence_duplication_levels_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/fastqc_trimmed_top_overrepresented_sequences_table.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/featurecounts_biotype_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/featurecounts_biotype_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/general_stats_table.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/hisat2_pe_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/hisat2_pe_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/hisat2_se_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/hisat2_se_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Normalised.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/qualimap_genomic_origin-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/qualimap_genomic_origin-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_bam_stat.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_infer_experiment_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_inner_distance_plot_Counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_inner_distance_plot_Percentages.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_saturation_plot_All_Junctions.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Known_Junctions.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Novel_Junctions.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_read_distribution_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_read_distribution_plot-pct.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/rseqc_read_dups_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/salmon_plot.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/sample-relationships.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-flagstat-dp_Percentage_of_total.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-flagstat-dp_Read_counts.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools-stats-dp.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools_alignment_plot-cnt.svg",
+ "multiqc/hisat2/multiqc_report_plots/svg/samtools_alignment_plot-pct.svg",
+ "pipeline_info",
+ "pipeline_info/nf_core_rnaseq_software_mqc_versions.yml",
+ "salmon",
+ "salmon/RAP1_IAA_30M_REP1",
+ "salmon/RAP1_IAA_30M_REP1/aux_info",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/ambig_info.tsv",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/expected_bias.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/fld.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/meta_info.json",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias.gz",
+ "salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_IAA_30M_REP1/cmd_info.json",
+ "salmon/RAP1_IAA_30M_REP1/libParams",
+ "salmon/RAP1_IAA_30M_REP1/libParams/flenDist.txt",
+ "salmon/RAP1_IAA_30M_REP1/lib_format_counts.json",
+ "salmon/RAP1_IAA_30M_REP1/logs",
+ "salmon/RAP1_IAA_30M_REP1/logs/salmon_quant.log",
+ "salmon/RAP1_IAA_30M_REP1/quant.genes.sf",
+ "salmon/RAP1_IAA_30M_REP1/quant.sf",
+ "salmon/RAP1_UNINDUCED_REP1",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/ambig_info.tsv",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/expected_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/fld.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/meta_info.json",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_UNINDUCED_REP1/cmd_info.json",
+ "salmon/RAP1_UNINDUCED_REP1/libParams",
+ "salmon/RAP1_UNINDUCED_REP1/libParams/flenDist.txt",
+ "salmon/RAP1_UNINDUCED_REP1/lib_format_counts.json",
+ "salmon/RAP1_UNINDUCED_REP1/logs",
+ "salmon/RAP1_UNINDUCED_REP1/logs/salmon_quant.log",
+ "salmon/RAP1_UNINDUCED_REP1/quant.genes.sf",
+ "salmon/RAP1_UNINDUCED_REP1/quant.sf",
+ "salmon/RAP1_UNINDUCED_REP2",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/ambig_info.tsv",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/expected_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/fld.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/meta_info.json",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias.gz",
+ "salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias_3p.gz",
+ "salmon/RAP1_UNINDUCED_REP2/cmd_info.json",
+ "salmon/RAP1_UNINDUCED_REP2/libParams",
+ "salmon/RAP1_UNINDUCED_REP2/libParams/flenDist.txt",
+ "salmon/RAP1_UNINDUCED_REP2/lib_format_counts.json",
+ "salmon/RAP1_UNINDUCED_REP2/logs",
+ "salmon/RAP1_UNINDUCED_REP2/logs/salmon_quant.log",
+ "salmon/RAP1_UNINDUCED_REP2/quant.genes.sf",
+ "salmon/RAP1_UNINDUCED_REP2/quant.sf",
+ "salmon/WT_REP1",
+ "salmon/WT_REP1/aux_info",
+ "salmon/WT_REP1/aux_info/ambig_info.tsv",
+ "salmon/WT_REP1/aux_info/expected_bias.gz",
+ "salmon/WT_REP1/aux_info/fld.gz",
+ "salmon/WT_REP1/aux_info/meta_info.json",
+ "salmon/WT_REP1/aux_info/observed_bias.gz",
+ "salmon/WT_REP1/aux_info/observed_bias_3p.gz",
+ "salmon/WT_REP1/cmd_info.json",
+ "salmon/WT_REP1/libParams",
+ "salmon/WT_REP1/libParams/flenDist.txt",
+ "salmon/WT_REP1/lib_format_counts.json",
+ "salmon/WT_REP1/logs",
+ "salmon/WT_REP1/logs/salmon_quant.log",
+ "salmon/WT_REP1/quant.genes.sf",
+ "salmon/WT_REP1/quant.sf",
+ "salmon/WT_REP2",
+ "salmon/WT_REP2/aux_info",
+ "salmon/WT_REP2/aux_info/ambig_info.tsv",
+ "salmon/WT_REP2/aux_info/expected_bias.gz",
+ "salmon/WT_REP2/aux_info/fld.gz",
+ "salmon/WT_REP2/aux_info/meta_info.json",
+ "salmon/WT_REP2/aux_info/observed_bias.gz",
+ "salmon/WT_REP2/aux_info/observed_bias_3p.gz",
+ "salmon/WT_REP2/cmd_info.json",
+ "salmon/WT_REP2/libParams",
+ "salmon/WT_REP2/libParams/flenDist.txt",
+ "salmon/WT_REP2/lib_format_counts.json",
+ "salmon/WT_REP2/logs",
+ "salmon/WT_REP2/logs/salmon_quant.log",
+ "salmon/WT_REP2/quant.genes.sf",
+ "salmon/WT_REP2/quant.sf",
+ "salmon/deseq2_qc",
+ "salmon/deseq2_qc/R_sessionInfo.log",
+ "salmon/deseq2_qc/deseq2.dds.RData",
+ "salmon/deseq2_qc/deseq2.pca.vals.txt",
+ "salmon/deseq2_qc/deseq2.plots.pdf",
+ "salmon/deseq2_qc/deseq2.sample.dists.txt",
+ "salmon/deseq2_qc/size_factors",
+ "salmon/deseq2_qc/size_factors/RAP1_IAA_30M_REP1.txt",
+ "salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP1.txt",
+ "salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP2.txt",
+ "salmon/deseq2_qc/size_factors/WT_REP1.txt",
+ "salmon/deseq2_qc/size_factors/WT_REP2.txt",
+ "salmon/deseq2_qc/size_factors/deseq2.size_factors.RData",
+ "salmon/salmon.merged.gene_counts.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts.tsv",
+ "salmon/salmon.merged.gene_counts_length_scaled.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts_length_scaled.tsv",
+ "salmon/salmon.merged.gene_counts_scaled.SummarizedExperiment.rds",
+ "salmon/salmon.merged.gene_counts_scaled.tsv",
+ "salmon/salmon.merged.gene_lengths.tsv",
+ "salmon/salmon.merged.gene_tpm.tsv",
+ "salmon/salmon.merged.transcript_counts.SummarizedExperiment.rds",
+ "salmon/salmon.merged.transcript_counts.tsv",
+ "salmon/salmon.merged.transcript_lengths.tsv",
+ "salmon/salmon.merged.transcript_tpm.tsv",
+ "salmon/tx2gene.tsv",
+ "trimgalore",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP1_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP2_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_2.fastq.gz_trimming_report.txt",
+ "umitools",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract.log",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract_1.fastq.gz",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract_2.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP1.umi_extract.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP1.umi_extract.log",
+ "umitools/RAP1_UNINDUCED_REP2.umi_extract.fastq.gz",
+ "umitools/RAP1_UNINDUCED_REP2.umi_extract.log",
+ "umitools/WT_REP1.umi_extract.log",
+ "umitools/WT_REP1.umi_extract_1.fastq.gz",
+ "umitools/WT_REP1.umi_extract_2.fastq.gz",
+ "umitools/WT_REP2.umi_extract.log",
+ "umitools/WT_REP2.umi_extract_1.fastq.gz",
+ "umitools/WT_REP2.umi_extract_2.fastq.gz"
+ ],
+ [
+ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055",
+ "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28",
+ "RAP1_IAA_30M_REP1_dupMatrix.txt:md5,a32f996ee7119c10cdfc3c706fed8560",
+ "RAP1_UNINDUCED_REP1_dupMatrix.txt:md5,0f0858724747050c17a9009fe7f7827d",
+ "RAP1_UNINDUCED_REP2_dupMatrix.txt:md5,6726b1c5e63db1f6efd2882de701adc1",
+ "WT_REP1_dupMatrix.txt:md5,1d57d6942d0720bddd25ff260dce08fa",
+ "WT_REP2_dupMatrix.txt:md5,b944b0f71ef8a98b5a4d53f4542c8e6f",
+ "RAP1_IAA_30M_REP1_intercept_slope.txt:md5,a07fbfcbd487003cdd2123cb89209d14",
+ "RAP1_UNINDUCED_REP1_intercept_slope.txt:md5,38cea811141edcfd28d1e7770628f6c9",
+ "RAP1_UNINDUCED_REP2_intercept_slope.txt:md5,b897caec80a37ace72c156ed091acbcd",
+ "WT_REP1_intercept_slope.txt:md5,9895ef03e6f9282b11c4a32fe16a25b0",
+ "WT_REP2_intercept_slope.txt:md5,6c22669508aecfdfe5583c38496db314",
+ "RAP1_IAA_30M_REP1.biotype_counts_mqc.tsv:md5,8433a395e65315feb0f8bfca4a1d1aba",
+ "RAP1_IAA_30M_REP1.biotype_counts_rrna_mqc.tsv:md5,dde2de0cb90e10d0195c726f768e9941",
+ "RAP1_IAA_30M_REP1.featureCounts.txt:md5,1ecf699b693201b29cadd187bb0f2971",
+ "RAP1_UNINDUCED_REP1.biotype_counts_mqc.tsv:md5,036ab790c1e5fb2625c543ddccbf492d",
+ "RAP1_UNINDUCED_REP1.biotype_counts_rrna_mqc.tsv:md5,845ff9059c72bc6722a8de69776e22bb",
+ "RAP1_UNINDUCED_REP1.featureCounts.txt:md5,5776b0c29cfbf0551a1e9020c1d799c0",
+ "RAP1_UNINDUCED_REP2.biotype_counts_mqc.tsv:md5,5784c14524d6d06a927a745f1398d90e",
+ "RAP1_UNINDUCED_REP2.biotype_counts_rrna_mqc.tsv:md5,6d3fa4c88c7fe61f638e4624ad5e22f0",
+ "RAP1_UNINDUCED_REP2.featureCounts.txt:md5,9a53ceb0d1357e8015dedbd77cf620cc",
+ "WT_REP1.biotype_counts_mqc.tsv:md5,e9b102b8576a141a6cc0ce4876b1b5ea",
+ "WT_REP1.biotype_counts_rrna_mqc.tsv:md5,8ef76d717492ca23764938aee8ea33a9",
+ "WT_REP1.featureCounts.txt:md5,fcda1cfb8b3664e95962c65cbbd45b9e",
+ "WT_REP2.biotype_counts_mqc.tsv:md5,6760be59877c02cb7ca5128e5be05f8e",
+ "WT_REP2.biotype_counts_rrna_mqc.tsv:md5,12294618fe44df1e7f39348372dcb481",
+ "WT_REP2.featureCounts.txt:md5,a2b116e5a1ddbf47659eba4c02ca9c84",
+ "coverage_profile_along_genes_(high).txt:md5,b10337c576a87e918a30c0e1f497752d",
+ "coverage_profile_along_genes_(low).txt:md5,0d7a6b63a10241843b5380f1ab16a160",
+ "coverage_profile_along_genes_(total).txt:md5,0d7a6b63a10241843b5380f1ab16a160",
+ "coverage_profile_along_genes_(high).txt:md5,1ca7ae6a9528442bcf32baabd72d369f",
+ "coverage_profile_along_genes_(low).txt:md5,cfabb16286c8ca57dedd66097d21e0b1",
+ "coverage_profile_along_genes_(total).txt:md5,cfabb16286c8ca57dedd66097d21e0b1",
+ "coverage_profile_along_genes_(high).txt:md5,609bfc84014c5b175a1b577a7491ba2b",
+ "coverage_profile_along_genes_(low).txt:md5,a0230508803a0f61ff3bd807a5596934",
+ "coverage_profile_along_genes_(total).txt:md5,a0230508803a0f61ff3bd807a5596934",
+ "coverage_profile_along_genes_(high).txt:md5,28950a8298e08c0609cae6873f631dab",
+ "coverage_profile_along_genes_(low).txt:md5,ea1a6cccb02d528d52025acbc4006d8a",
+ "coverage_profile_along_genes_(total).txt:md5,ea1a6cccb02d528d52025acbc4006d8a",
+ "coverage_profile_along_genes_(high).txt:md5,90b40674d78d1ea532d131f8080672c2",
+ "coverage_profile_along_genes_(low).txt:md5,74625695f7e325b51d076fcaa96e0368",
+ "coverage_profile_along_genes_(total).txt:md5,74625695f7e325b51d076fcaa96e0368",
+ "RAP1_IAA_30M_REP1.infer_experiment.txt:md5,b0cf79d3b9d1d3742ca4698cada70ea6",
+ "RAP1_UNINDUCED_REP1.infer_experiment.txt:md5,69f95beb80658b40ef4964b0cec41cb6",
+ "RAP1_UNINDUCED_REP2.infer_experiment.txt:md5,d48a674bd9e64adadd66b89b5c096056",
+ "WT_REP1.infer_experiment.txt:md5,8559d69b9f350897869ca61097643449",
+ "WT_REP2.infer_experiment.txt:md5,2ac93ef54e0aaa62482ceb45c91c64bb",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,b3f8769326278237c14c0820a3c627c3",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,a8047633f3ba499a0c68af993429b1af",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,dd7844bd42536ccba73b5b41b11a4c89",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,a715eca5dcbed38cbb21e6aeae27d4c6",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,97d59d95d8298cde4082ff4bfcf06fd6",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,349abadc17965a12f1fd2a24b111203e",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,cd81e0cbece094019ca814d34f4f3033",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,7f21bf2c570993f5a444c2e67c7d2983",
+ "e2t.ctab:md5,54dd6de2daa90e973f47524a738a3d69",
+ "e_data.ctab:md5,593daf0b84f008c0c64319990ef2fd42",
+ "i2t.ctab:md5,dda3d3ccd7d4184d947c654ae73efb7b",
+ "i_data.ctab:md5,01c675638f918a70ea689f618a2610bc",
+ "cutadapt_filtered_reads_plot.txt:md5,3f122969fa288888e5abef061b7963f2",
+ "cutadapt_trimmed_sequences_plot_3_Counts.txt:md5,5e8a821c9a4deb46c11bc65969b8864f",
+ "cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt:md5,bf8abefa7c5f2f1e1140749983279d9d",
+ "fastqc_raw-status-check-heatmap.txt:md5,5a89b0d8d162f6b1dbdaf39457bbc03b",
+ "fastqc_raw_adapter_content_plot.txt:md5,da0389be84cfdd189b1d045212eb2974",
+ "fastqc_raw_overrepresented_sequences_plot.txt:md5,25d88ea8a72f55e8a374ae802bc7f0b1",
+ "fastqc_raw_per_base_n_content_plot.txt:md5,d368d7e36ca2f73dcde61f2b486d8213",
+ "fastqc_raw_per_base_sequence_quality_plot.txt:md5,5c3065b549129702b185ea1b817da420",
+ "fastqc_raw_per_sequence_gc_content_plot_Counts.txt:md5,9ddaa50167117d3c9188ccf015427704",
+ "fastqc_raw_per_sequence_gc_content_plot_Percentages.txt:md5,f10ee2881b61308af35f304aa3d810a3",
+ "fastqc_raw_per_sequence_quality_scores_plot.txt:md5,b5f9a02933e3065952237afd2ec9ce82",
+ "fastqc_raw_sequence_counts_plot.txt:md5,cbae4979d5db66d3b894abcf8d1c453c",
+ "fastqc_raw_sequence_duplication_levels_plot.txt:md5,8812cee16f6ca65e2c33635754de1772",
+ "fastqc_sequence_length_distribution_plot.txt:md5,7a2263743d5c452dc940eabffcb0ea82",
+ "fastqc_trimmed-status-check-heatmap.txt:md5,1913b4c077a341437475c758fb119559",
+ "fastqc_trimmed_overrepresented_sequences_plot.txt:md5,6a7c50868a36ca6052e9f4adba6b8567",
+ "fastqc_trimmed_per_base_n_content_plot.txt:md5,0cdd698fb9a2a4987572b9b4e8c8990e",
+ "fastqc_trimmed_per_base_sequence_quality_plot.txt:md5,82a9073151a413efbb0f11be8d0db1f2",
+ "fastqc_trimmed_per_sequence_gc_content_plot_Counts.txt:md5,08b43a02f34a3afa7eaddef602cdcafd",
+ "fastqc_trimmed_per_sequence_gc_content_plot_Percentages.txt:md5,0768af6bf06bbad52a3ac6ec0a444138",
+ "fastqc_trimmed_per_sequence_quality_scores_plot.txt:md5,ac167d250e9f88899da0ea81ef2b002e",
+ "fastqc_trimmed_sequence_counts_plot.txt:md5,370ddc5e58838dc5b55e53b6f8b8902a",
+ "fastqc_trimmed_sequence_duplication_levels_plot.txt:md5,b106d8ee7b83efe237afb862ebbe2f47",
+ "multiqc_citations.txt:md5,da5043f8ab9b5bd51d91ccf3111c655e",
+ "multiqc_cutadapt.txt:md5,0937983d3ddfeccd4ccc5b0d74477558",
+ "multiqc_fastqc_fastqc_raw.txt:md5,81c3c1a2575a1891a7f2a9637a0f2cc0",
+ "multiqc_fastqc_fastqc_trimmed.txt:md5,a8a003b61b03295c416f3eb66c1cca65",
+ "multiqc_featurecounts_biotype_plot.txt:md5,078841c35fb163ad1e7c99393015ecac",
+ "multiqc_samtools_idxstats.txt:md5,35fe3b73df5ab19b53c117d3269e7e72",
+ "qualimap_gene_coverage_profile_Counts.txt:md5,54613117acef91c2271327e31203242c",
+ "qualimap_gene_coverage_profile_Normalised.txt:md5,f2884314cb4296877eb6ffd03a12a5b8",
+ "qualimap_rnaseq_cov_hist.txt:md5,c5abd5f3ddd835052c7bcac0f92ff0a4",
+ "rseqc_infer_experiment_plot.txt:md5,8e71c47cf89a0283de00ba1e4325a25f",
+ "samtools-idxstats-mapped-reads-plot_Normalised_Counts.txt:md5,75acd04232d1804b5f960ee4c5db4722",
+ "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.txt:md5,f9f9e9472fcd03f74e0186d29ee922dd",
+ "samtools-idxstats-mapped-reads-plot_Raw_Counts.txt:md5,e71efae3d46b66490b096b12b4ae27c5",
+ "ambig_info.tsv:md5,0b462f9b2d8eff1b4d76b7433434899c",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,910a60cb6ef954008c9e6d037342d773",
+ "lib_format_counts.json:md5,5846a0bb874171d30ef60059f6c10868",
+ "ambig_info.tsv:md5,2c45f73a5f73ae4d0053198ea98c87f3",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,e364ca1b150c3c0ae57f0397ff8ae471",
+ "lib_format_counts.json:md5,d662a174758011a56e6669f4810e0aaf",
+ "ambig_info.tsv:md5,644c4352884872a05fe36cbb2b119879",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,b472447f8ac9530be1ca2d9733af2686",
+ "lib_format_counts.json:md5,f01d7b98afc4b6bab773536a88e08e7e",
+ "ambig_info.tsv:md5,d6ca0827f17be19b6e08730a45063f9d",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,bdc36620d04525d343faea5297f0f0d7",
+ "lib_format_counts.json:md5,cf8bf8db790bede5136fca52968e7c43",
+ "ambig_info.tsv:md5,4aa8036707dc557004a80852394beebe",
+ "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20",
+ "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56",
+ "cmd_info.json:md5,809380ddce725a8fab75dd7741b64bf6",
+ "lib_format_counts.json:md5,d231ba7624b67eb654989f69530e2925",
+ "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676",
+ "tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe",
+ "RAP1_IAA_30M_REP1.umi_extract_1.fastq.gz:md5,e83d7f738fbbfaa541a2e71fe4663447",
+ "RAP1_IAA_30M_REP1.umi_extract_2.fastq.gz:md5,4f2873cbf584d6e84187238a4ae2b8fa",
+ "RAP1_UNINDUCED_REP1.umi_extract.fastq.gz:md5,9e42242fd68baac592140f63a8a716ce",
+ "RAP1_UNINDUCED_REP2.umi_extract.fastq.gz:md5,5a92b642927b8603c4765e5305e23e9c",
+ "WT_REP1.umi_extract_1.fastq.gz:md5,f312fac9c384a889ae4f959839263604",
+ "WT_REP1.umi_extract_2.fastq.gz:md5,ffca24924108fd54151620b7538b9e1a",
+ "WT_REP2.umi_extract_1.fastq.gz:md5,c3180451a24ce51fc35c1684521ae287",
+ "WT_REP2.umi_extract_2.fastq.gz:md5,067ff23f8d1307ad241cd70bc186b5c1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.3"
+ },
+ "timestamp": "2024-12-19T22:33:42.012684597"
+ },
+ "--umi_dedup_tool 'umitools - stub": {
+ "content": [
+ 32,
+ {
+ "BBMAP_BBSPLIT": {
+ "bbmap": 39.1
+ },
+ "CAT_FASTQ": {
+ "cat": 9.5
+ },
+ "CUSTOM_CATADDITIONALFASTA": {
+ "python": null
+ },
+ "CUSTOM_GETCHROMSIZES": {
+ "getchromsizes": 1.21
+ },
+ "FASTQC": {
+ "fastqc": "0.12.1"
+ },
+ "FQ_LINT": {
+ "fq": "0.12.0 (2024-07-08)"
+ },
+ "GTF2BED": {
+ "perl": "5.26.2"
+ },
+ "GTF_FILTER": {
+ "python": "3.9.5"
+ },
+ "GUNZIP_ADDITIONAL_FASTA": {
+ "gunzip": 1.1
+ },
+ "GUNZIP_GTF": {
+ "gunzip": 1.1
+ },
+ "STAR_GENOMEGENERATE": {
+ "star": "2.7.11b",
+ "samtools": 1.21,
+ "gawk": "5.1.0"
+ },
+ "TRIMGALORE": {
+ "trimgalore": "0.6.10",
+ "cutadapt": 4.9
+ },
+ "UMITOOLS_EXTRACT": {
+ "umitools": "1.1.5"
+ },
+ "UNTAR_SALMON_INDEX": {
+ "untar": 1.34
+ },
+ "Workflow": {
+ "nf-core/rnaseq": "v3.18.0"
+ }
+ },
+ [
+ "custom",
+ "custom/out",
+ "custom/out/genome_transcriptome.fasta",
+ "custom/out/genome_transcriptome.gtf",
+ "fastqc",
+ "fastqc/raw",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw.html",
+ "fastqc/raw/RAP1_IAA_30M_REP1_raw.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP1_raw.zip",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw.html",
+ "fastqc/raw/RAP1_UNINDUCED_REP2_raw.zip",
+ "fastqc/raw/WT_REP1_raw.html",
+ "fastqc/raw/WT_REP1_raw.zip",
+ "fastqc/raw/WT_REP2_raw.html",
+ "fastqc/raw/WT_REP2_raw.zip",
+ "fastqc/trim",
+ "fq_lint",
+ "fq_lint/raw",
+ "fq_lint/raw/RAP1_IAA_30M_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP1.fq_lint.txt",
+ "fq_lint/raw/RAP1_UNINDUCED_REP2.fq_lint.txt",
+ "fq_lint/raw/WT_REP1.fq_lint.txt",
+ "fq_lint/raw/WT_REP2.fq_lint.txt",
+ "multiqc",
+ "multiqc/star_salmon",
+ "multiqc/star_salmon/multiqc_data",
+ "multiqc/star_salmon/multiqc_plots",
+ "multiqc/star_salmon/multiqc_report.html",
+ "pipeline_info",
+ "pipeline_info/nf_core_rnaseq_software_mqc_versions.yml",
+ "trimgalore",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_IAA_30M_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP1_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/RAP1_UNINDUCED_REP2_trimmed.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP1_trimmed_2.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_1.fastq.gz_trimming_report.txt",
+ "trimgalore/WT_REP2_trimmed_2.fastq.gz_trimming_report.txt",
+ "umitools",
+ "umitools/RAP1_IAA_30M_REP1.umi_extract.log",
+ "umitools/RAP1_UNINDUCED_REP1.umi_extract.log",
+ "umitools/RAP1_UNINDUCED_REP2.umi_extract.log",
+ "umitools/WT_REP1.umi_extract.log",
+ "umitools/WT_REP2.umi_extract.log"
+ ],
+ [
+ "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.2",
+ "nextflow": "24.10.3"
+ },
+ "timestamp": "2024-12-19T23:28:01.570835895"
+ }
+}
\ No newline at end of file
diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml
index 08360f58c..4af07dc67 100644
--- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml
+++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml
@@ -1,5 +1,8 @@
report_comment: >
- This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation.
+ This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how
+ to interpret these results, please see the documentation.
report_section_order:
# Important checks and failures
sample-status:
@@ -117,9 +120,9 @@ module_order:
# Don't show % Dups in the General Stats table (we have this from Picard)
table_columns_visible:
"FastQC (raw)":
- percent_duplicates: False
+ percent_duplicates: false
"FastQC (trimmed)":
- percent_duplicates: False
+ percent_duplicates: false
extra_fn_clean_exts:
- ".umi_dedup"
@@ -216,7 +219,9 @@ sp:
custom_data:
fail_trimmed_samples:
section_name: "WARNING: Fail Trimming Check"
- description: "List of samples that failed the minimum trimmed reads threshold specified via the '--min_trimmed_reads' parameter, and hence were ignored for the downstream processing steps."
+ description: "List of samples that failed the minimum trimmed reads threshold
+ specified via the '--min_trimmed_reads' parameter, and hence were ignored for
+ the downstream processing steps."
plot_type: "table"
pconfig:
id: "fail_trimmed_samples_table"
@@ -224,7 +229,9 @@ custom_data:
namespace: "Samples failed trimming threshold"
fail_mapped_samples:
section_name: "WARNING: Fail Alignment Check"
- description: "List of samples that failed the STAR minimum mapped reads threshold specified via the '--min_mapped_reads' parameter, and hence were ignored for the downstream processing steps."
+ description: "List of samples that failed the STAR minimum mapped reads threshold
+ specified via the '--min_mapped_reads' parameter, and hence were ignored for
+ the downstream processing steps."
plot_type: "table"
pconfig:
id: "fail_mapped_samples_table"
@@ -232,7 +239,16 @@ custom_data:
namespace: "Samples failed mapping threshold"
fail_strand_check:
section_name: "Strandedness Checks"
- description: "
The strandedness used for analysis in this workflow can either be provided by the user or automatically inferred by Salmon using a sample of reads. In both cases, strandedness is verified at the end of the workflow using RSeQC's infer_experiment.py on genomic alignments. In this table, a pass indicates a match between the supplied strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal QC issues, including potential genomic DNA contamination.
Note: Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.
"
+ description: "
The strandedness used for analysis in this workflow can either
+ be provided by the user or automatically inferred by Salmon using a sample
+ of reads. In both cases, strandedness is verified at the end of the workflow
+ using RSeQC's infer_experiment.py
+ on genomic alignments. In this table, a pass indicates a match between the supplied
+ strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates
+ a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal
+ QC issues, including potential genomic DNA contamination.
Note:
+ Rows are duplicated for an 'auto' setting to allow comparison of statistics
+ between inference methods.
"
plot_type: "table"
pconfig:
id: "fail_strand_check_table"
@@ -240,7 +256,8 @@ custom_data:
namespace: "Samples strandedness check"
headers:
Status:
- description: Pass if the strandedness inferred by RSeQC matches that provided by the user or predicted by Salmon. Fail otherwise.
+ description: Pass if the strandedness inferred by RSeQC matches that provided
+ by the user or predicted by Salmon. Fail otherwise.
Strand inference method:
description: Tool used to detect strandedness
Provided strandedness:
diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf
index 84bedaeb6..27c7e5639 100755
--- a/workflows/rnaseq/main.nf
+++ b/workflows/rnaseq/main.nf
@@ -15,8 +15,11 @@ include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc
//
// SUBWORKFLOW: Consisting of a mix of local and nf-core/modules
//
-include { ALIGN_STAR } from '../../subworkflows/local/align_star'
-include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem'
+include { ALIGN_STAR } from '../../subworkflows/local/align_star'
+include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem'
+include { BAM_DEDUP_UMI as BAM_DEDUP_UMI_STAR } from '../../subworkflows/nf-core/bam_dedup_umi'
+include { BAM_DEDUP_UMI as BAM_DEDUP_UMI_HISAT2 } from '../../subworkflows/nf-core/bam_dedup_umi'
+
include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline'
include { multiqcTsvFromList } from '../../subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness'
include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline'
@@ -34,7 +37,6 @@ include { methodsDescriptionText } from '../../subworkflows/local/utils_
// MODULE: Installed directly from nf-core/modules
//
include { DUPRADAR } from '../../modules/nf-core/dupradar'
-include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort'
include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap'
include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq'
include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie'
@@ -42,7 +44,6 @@ include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featu
include { KRAKEN2_KRAKEN2 as KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main'
include { BRACKEN_BRACKEN as BRACKEN } from '../../modules/nf-core/bracken/bracken/main'
include { MULTIQC } from '../../modules/nf-core/multiqc'
-include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools/prepareforrsem'
include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov'
include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov'
@@ -54,11 +55,8 @@ include { samplesheetToList } from 'plugin/nf-schema'
include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline'
include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline'
include { FASTQ_ALIGN_HISAT2 } from '../../subworkflows/nf-core/fastq_align_hisat2'
-include { BAM_SORT_STATS_SAMTOOLS } from '../../subworkflows/nf-core/bam_sort_stats_samtools'
include { BAM_MARKDUPLICATES_PICARD } from '../../subworkflows/nf-core/bam_markduplicates_picard'
include { BAM_RSEQC } from '../../subworkflows/nf-core/bam_rseqc'
-include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME } from '../../subworkflows/nf-core/bam_dedup_stats_samtools_umitools'
-include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../../subworkflows/nf-core/bam_dedup_stats_samtools_umitools'
include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig'
include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig'
include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/nf-core/quantify_pseudo_alignment'
@@ -156,7 +154,9 @@ workflow RNASEQ {
params.with_umi,
params.umi_discard_read,
params.stranded_threshold,
- params.unstranded_threshold
+ params.unstranded_threshold,
+ params.skip_linting,
+ false
)
ch_multiqc_files = ch_multiqc_files.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.multiqc_files)
@@ -177,6 +177,8 @@ workflow RNASEQ {
ch_genome_bam_index = Channel.empty()
ch_star_log = Channel.empty()
ch_unaligned_sequences = Channel.empty()
+ ch_transcriptome_bam = Channel.empty()
+
if (!params.skip_alignment && params.aligner == 'star_salmon') {
// Check if an AWS iGenome has been provided to use the appropriate version of STAR
def is_aws_igenome = false
@@ -201,9 +203,6 @@ workflow RNASEQ {
ch_transcriptome_bam = ALIGN_STAR.out.bam_transcript
ch_star_log = ALIGN_STAR.out.log_final
ch_unaligned_sequences = ALIGN_STAR.out.fastq
- ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.stats.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.flagstat.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.idxstats.collect{it[1]})
ch_multiqc_files = ch_multiqc_files.mix(ch_star_log.collect{it[1]})
if (params.bam_csi_index) {
@@ -215,67 +214,33 @@ workflow RNASEQ {
// SUBWORKFLOW: Remove duplicate reads from BAM file based on UMIs
//
if (params.with_umi) {
- // Deduplicate genome BAM file before downstream analysis
- BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME (
- ch_genome_bam.join(ch_genome_bam_index, by: [0]),
- params.umitools_dedup_stats
- )
- ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam
- ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]})
-
- if (params.bam_csi_index) {
- ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.csi
- }
- ch_versions = ch_versions.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.versions)
- // Co-ordinate sort, index and run stats on transcriptome BAM
- BAM_SORT_STATS_SAMTOOLS (
+ BAM_DEDUP_UMI_STAR(
+ ch_genome_bam.join(ch_genome_bam_index, by: [0]),
+ ch_fasta.map { [ [:], it ] },
+ params.umi_dedup_tool,
+ params.umitools_dedup_stats,
+ params.bam_csi_index,
ch_transcriptome_bam,
ch_transcript_fasta.map { [ [:], it ] }
)
- ch_transcriptome_sorted_bam = BAM_SORT_STATS_SAMTOOLS.out.bam
- ch_transcriptome_sorted_bai = BAM_SORT_STATS_SAMTOOLS.out.bai
- // Deduplicate transcriptome BAM file before read counting with Salmon
- BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME (
- ch_transcriptome_sorted_bam.join(ch_transcriptome_sorted_bai, by: [0]),
- params.umitools_dedup_stats
- )
+ ch_genome_bam = BAM_DEDUP_UMI_STAR.out.bam
+ ch_transcriptome_bam = BAM_DEDUP_UMI_STAR.out.transcriptome_bam
+ ch_genome_bam_index = BAM_DEDUP_UMI_STAR.out.bai
+ ch_versions = ch_versions.mix(BAM_DEDUP_UMI_STAR.out.versions)
- // Name sort BAM before passing to Salmon
- SAMTOOLS_SORT (
- BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME.out.bam,
- ch_fasta.map { [ [:], it ] }
- )
+ ch_multiqc_files = ch_multiqc_files
+ .mix(BAM_DEDUP_UMI_STAR.out.multiqc_files)
- // Only run prepare_for_rsem.py on paired-end BAM files
- SAMTOOLS_SORT
- .out
- .bam
- .branch {
- meta, bam ->
- single_end: meta.single_end
- return [ meta, bam ]
- paired_end: !meta.single_end
- return [ meta, bam ]
- }
- .set { ch_umitools_dedup_bam }
-
- // Fix paired-end reads in name sorted BAM file
- // See: https://github.com/nf-core/rnaseq/issues/828
- UMITOOLS_PREPAREFORSALMON (
- ch_umitools_dedup_bam.paired_end.map { meta, bam -> [ meta, bam, [] ] }
- )
- ch_versions = ch_versions.mix(UMITOOLS_PREPAREFORSALMON.out.versions.first())
+ } else {
+ // The deduplicated stats should take priority for MultiQC, but use
+ // them straight out of the aligner otherwise
- ch_umitools_dedup_bam
- .single_end
- .mix(UMITOOLS_PREPAREFORSALMON.out.bam)
- .set { ch_transcriptome_bam }
+ ch_multiqc_files = ch_multiqc_files
+ .mix(ALIGN_STAR.out.stats.collect{it[1]})
+ .mix(ALIGN_STAR.out.flagstat.collect{it[1]})
+ .mix(ALIGN_STAR.out.idxstats.collect{it[1]})
}
//
@@ -357,9 +322,6 @@ workflow RNASEQ {
ch_genome_bam = FASTQ_ALIGN_HISAT2.out.bam
ch_genome_bam_index = FASTQ_ALIGN_HISAT2.out.bai
ch_unaligned_sequences = FASTQ_ALIGN_HISAT2.out.fastq
- ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.stats.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.flagstat.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.idxstats.collect{it[1]})
ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.summary.collect{it[1]})
if (params.bam_csi_index) {
@@ -370,21 +332,33 @@ workflow RNASEQ {
//
// SUBWORKFLOW: Remove duplicate reads from BAM file based on UMIs
//
+
if (params.with_umi) {
- BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME (
+
+ BAM_DEDUP_UMI_HISAT2(
ch_genome_bam.join(ch_genome_bam_index, by: [0]),
- params.umitools_dedup_stats
+ ch_fasta.map { [ [:], it ] },
+ params.umi_dedup_tool,
+ params.umitools_dedup_stats,
+ params.bam_csi_index,
+ ch_transcriptome_bam,
+ ch_transcript_fasta.map { [ [:], it ] }
)
- ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam
- ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]})
- ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]})
- if (params.bam_csi_index) {
- ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.csi
- }
- ch_versions = ch_versions.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.versions)
+
+ ch_genome_bam = BAM_DEDUP_UMI_HISAT2.out.bam
+ ch_genome_bam_index = BAM_DEDUP_UMI_HISAT2.out.bai
+ ch_versions = ch_versions.mix(BAM_DEDUP_UMI_HISAT2.out.versions)
+
+ ch_multiqc_files = ch_multiqc_files
+ .mix(BAM_DEDUP_UMI_HISAT2.out.multiqc_files)
+ } else {
+
+ // The deduplicated stats should take priority for MultiQC, but use
+ // them straight out of the aligner otherwise
+ ch_multiqc_files = ch_multiqc_files
+ .mix(FASTQ_ALIGN_HISAT2.out.stats.collect{it[1]})
+ .mix(FASTQ_ALIGN_HISAT2.out.flagstat.collect{it[1]})
+ .mix(FASTQ_ALIGN_HISAT2.out.idxstats.collect{it[1]})
}
}
diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config
index 9cbf0cd30..a621b3bbe 100644
--- a/workflows/rnaseq/nextflow.config
+++ b/workflows/rnaseq/nextflow.config
@@ -19,6 +19,7 @@ includeConfig "../../subworkflows/nf-core/fastq_align_hisat2/nextflow.config"
includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config"
includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config"
includeConfig "../../subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config"
+includeConfig "../../subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/nextflow.config"
//
// STAR Salmon alignment options
@@ -76,7 +77,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
if (params.with_umi) {
process {
- withName: 'NFCORE_RNASEQ:RNASEQ:SAMTOOLS_SORT' {
+ withName: 'NFCORE_RNASEQ:RNASEQ:BAM_DEDUP_UMI_(STAR|HISAT2):SAMTOOLS_SORT' {
ext.args = '-n'
ext.prefix = { "${meta.id}.umi_dedup.transcriptome" }
publishDir = [
@@ -87,7 +88,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: 'NFCORE_RNASEQ:RNASEQ:UMITOOLS_PREPAREFORSALMON' {
+ withName: 'NFCORE_RNASEQ:RNASEQ:BAM_DEDUP_UMI_(STAR|HISAT2):UMITOOLS_PREPAREFORRSEM' {
ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" }
publishDir = [
[
@@ -104,7 +105,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' {
+ withName: 'NFCORE_RNASEQ:RNASEQ:BAM_DEDUP_UMI_STAR:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' {
ext.prefix = { "${meta.id}.transcriptome.sorted" }
publishDir = [
path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
@@ -114,7 +115,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' {
+ withName: 'NFCORE_RNASEQ:RNASEQ:BAM_DEDUP_UMI_STAR:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' {
publishDir = [
path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
@@ -123,7 +124,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' {
+ withName: 'NFCORE_RNASEQ:RNASEQ:BAM_DEDUP_UMI_STAR:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' {
ext.prefix = { "${meta.id}.transcriptome.sorted.bam" }
publishDir = [
path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir },
@@ -133,34 +134,54 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' {
- ext.args = { [
- meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard',
- params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '',
- params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : ''
- ].join(' ').trim() }
+ // Use the same umi_dedup prefix for umitools and umicollapse
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:UMI(COLLAPSE|TOOLS_DEDUP)' {
ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" }
+ }
+
+ // Publishing logic for umitools:
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' {
publishDir = [
[
- path: { "${params.outdir}/${params.aligner}/umitools" },
+ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
- pattern: '*.tsv'
+ pattern: '*.bam',
+ saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null }
],
[
path: { "${params.outdir}/${params.aligner}/umitools/transcriptomic_dedup_log" },
mode: params.publish_dir_mode,
pattern: '*.log'
],
+ [
+ path: { "${params.outdir}/${params.aligner}/umitools" },
+ mode: params.publish_dir_mode,
+ pattern: '*.tsv'
+ ]
+ ]
+ }
+
+ // Publishing logic for umicollapse
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME:UMICOLLAPSE' {
+ publishDir = [
[
path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
pattern: '*.bam',
saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null }
+ ],
+ [
+ path: { "${params.outdir}/${params.aligner}/umicollapse/transcriptomic_dedup_log" },
+ mode: params.publish_dir_mode,
+ pattern: '*.log'
]
]
}
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' {
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:SAMTOOLS_INDEX' {
publishDir = [
path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
@@ -169,7 +190,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') {
]
}
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' {
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' {
ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" }
publishDir = [
path: { "${params.outdir}/${params.aligner}/samtools_stats" },
@@ -227,18 +248,39 @@ if (!params.skip_alignment) {
if (params.with_umi && ['star_salmon','hisat2'].contains(params.aligner)) {
process {
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' {
- ext.args = { [
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_(GEN|TRANSCRIPT)OME:UMITOOLS_DEDUP' {
+ ext.args = { [
meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard',
params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '',
params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : ''
].join(' ').trim() }
+ }
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_(GEN|TRANSCRIPT)OME:UMICOLLAPSE' {
+ ext.args = { [
+ '--two-pass',
+ meta.single_end ? '' : '--paired --remove-unpaired --remove-chimeric',
+ params.umitools_grouping_method ? "--algo '" + ['directional':'dir','adjacency':'adj','cluster':'cc'].get(params.umitools_grouping_method, '') + "'" : '',
+ params.umitools_umi_separator ? "--umi-sep '${params.umitools_umi_separator}'" : '',
+ ].join(' ').trim()}
+ }
+
+ // Use the same umi_dedup prefix for umitools and umicollapse
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:UMI(COLLAPSE|TOOLS_DEDUP)' {
ext.prefix = { "${meta.id}.umi_dedup.sorted" }
+ }
+
+ // Publishing logic for umitools:
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' {
publishDir = [
[
- path: { "${params.outdir}/${params.aligner}/umitools" },
+ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
- pattern: '*.tsv'
+ pattern: '*.bam',
+ saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null }
],
[
path: { "${params.outdir}/${params.aligner}/umitools/genomic_dedup_log" },
@@ -246,26 +288,43 @@ if (!params.skip_alignment) {
pattern: '*.log'
],
[
- path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
+ path: { "${params.outdir}/${params.aligner}/umitools" },
+ mode: params.publish_dir_mode,
+ pattern: '*.tsv'
+ ]
+ ]
+ }
+
+ // Publishing logic for umicollapse
+
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME:UMICOLLAPSE' {
+ publishDir = [
+ [
+ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
pattern: '*.bam',
- saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null }
+ saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null }
+ ],
+ [
+ path: { "${params.outdir}/${params.aligner}/umicollapse/genomic_dedup_log" },
+ mode: params.publish_dir_mode,
+ pattern: '*.log'
]
]
}
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:SAMTOOLS_INDEX' {
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:SAMTOOLS_INDEX' {
ext.args = { params.bam_csi_index ? '-c' : '' }
ext.prefix = { "${meta.id}.umi_dedup.sorted" }
publishDir = [
- path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
+ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir },
mode: params.publish_dir_mode,
pattern: '*.{bai,csi}',
- saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null }
+ saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null }
]
}
- withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:BAM_STATS_SAMTOOLS:.*' {
+ withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:BAM_STATS_SAMTOOLS:.*' {
ext.prefix = { "${meta.id}.umi_dedup.sorted.bam" }
publishDir = [
path: { "${params.outdir}/${params.aligner}/samtools_stats" },