Template update v5.6.3 [CW-6859]
This commit is contained in:
parent
27d12e35ae
commit
90e6453a8f
@ -3,12 +3,12 @@ repos:
|
||||
hooks:
|
||||
- id: docs_readme
|
||||
name: docs_readme
|
||||
entry: parse_docs -p docs -e .md -s 01_brief_description 02_introduction 03_compute_requirements 04_install_and_run 05_related_protocols 06_input_example 06_input_parameters 07_outputs 08_pipeline_overview 09_troubleshooting 10_FAQ 11_other -ot README.md -od output_definition.json -ns nextflow_schema.json
|
||||
entry: parse_docs -p docs -e .md -s 01_brief_description 02_introduction 03_compute_requirements 04_install_and_run 05_related_protocols 06_input_example 07_pipeline_overview 08_input_parameters 09_outputs 10_troubleshooting 11_FAQ 12_other -ot README.md -od output_definition.json -ns nextflow_schema.json
|
||||
language: python
|
||||
always_run: true
|
||||
pass_filenames: false
|
||||
additional_dependencies:
|
||||
- epi2melabs==0.0.58
|
||||
- epi2melabs==0.0.59
|
||||
- repo: https://github.com/pycqa/flake8
|
||||
rev: 5.0.4
|
||||
hooks:
|
||||
|
||||
@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
- Updated to wf-template v5.6.3 to maintain compliance with our latest wf-template standard, changing:
|
||||
- Pipeline overview now appears before pipeline parameters in README.
|
||||
- ezCharts plotting library has been updated to 0.15.1, there are no user facing changes to plots.
|
||||
- Fastcat FASTQ pre-processing program has been updated to 0.24.2, it is more robust to malformed FASTQ input.
|
||||
|
||||
## [v1.7.2]
|
||||
This patch release of wf-transcriptomes updates internal workflow naming, and does not affect any workflow outputs.
|
||||
### Changed
|
||||
|
||||
158
README.md
158
README.md
@ -132,6 +132,84 @@ input_reads.fastq ─── input_directory ─── input_directory
|
||||
|
||||
|
||||
|
||||
## Pipeline overview
|
||||
|
||||
### 1. Concatenate input files and generate per read stats.
|
||||
The [fastcat](https://github.com/epi2me-labs/fastcat) tool is used to concatenate multifile samples to be processed by the workflow. It will also output per read stats including average read lengths and qualities.
|
||||
|
||||
### 2. Preprocess cDNA.
|
||||
If input sequences are cDNA [Pychopper](https://github.com/epi2me-labs/pychopper) is used to orient, trim and rescue full length cDNA reads and associated statistics. If the `direct_rna` parameter is selected this step will be skipped.
|
||||
|
||||
### 3. Build transcriptome.
|
||||
If the `transcriptome_source` parameter is "reference-guided" a transcriptome will be built for each sample as outlined below. If the `transcriptome_source` is "precomputed" and the `reference_transcriptome` parameter is provided the workflow will skip step 3.
|
||||
|
||||
#### 3.1 Align reads with reference genome.
|
||||
The reference genome will be indexed and aligned using [Minimap2](https://github.com/lh3/minimap2). The output is sorted and converted to a BAM file using [Samtools](https://www.htslib.org/). Alignment stats are created from these using [Seqkit BAM](https://bioinf.shenwei.me/seqkit/usage/#bam).
|
||||
|
||||
Additionally, the workflow will generate an IGV configuration file if `--igv` is selected. This file allows the user to view the aligned BAM in the EPI2ME Desktop Application in the Viewer tab.
|
||||
|
||||
#### 3.2 Chunk BAM
|
||||
The aligned BAMs are split into chunks using the bundle_min_reads parameter (default: 50000).
|
||||
|
||||
#### 3.3 Assemble transcripts
|
||||
[StringTie](https://ccb.jhu.edu/software/stringtie/) is then used to assemble the transcripts using the aligned segments in the chunked BAM files. The assembled transcript will be output as a [GFF file](https://www.ensembl.org/info/website/upload/gff3.html). If a `ref_annotation` file is provided this will also be included in the GFF.
|
||||
|
||||
#### 3.4 Merge Chunks
|
||||
Transcript GFF files from the chunks with the same sample aliases will then be merged.
|
||||
|
||||
#### 3.5 Annnotate
|
||||
[GffCompare](https://ccb.jhu.edu/software/stringtie/gffcompare.html) is then used to compare query and reference annotations, merging records where appropriate and then annotating them. This also creates estimates of accuracy of the GFF files output in a stats file per sample.
|
||||
|
||||
#### 3.6 Create transcriptomes
|
||||
[Gffread](https://github.com/gpertea/gffread) is used to create a transcriptome FASTA file from the final GFF as well as a merged transcriptome that includes annotations in the FASTA headers where available.
|
||||
|
||||
### 4. Differential expression analysis
|
||||
|
||||
Differential gene expression (DGE) and differential transcript usage (DTU) analyses aim to identify genes and transcripts that show statistically altered expression patterns.
|
||||
|
||||
Differential Expression requires at least 2 replicates of each sample to compare (but we recommend three). You can see an example sample_sheet.csv below.
|
||||
|
||||
#### Sample sheet condition column
|
||||
The sample sheet should be a comma separated values file (.csv) and include at least three columns named `barcode`, `alias` and `condition`.
|
||||
- Each `barcode` should refer to a directory of the same name in the input FASTQ directory (in the example below `barcode01` to `barcode06` reflect the `test_data` directory).
|
||||
- The `alias` column allows you to rename each barcode to an alias that will be used in the report and other output files.
|
||||
- The condition column will need to contain one of two keys to indicate the two samples being compared. Control must be one of the keys, used to indicate which samples will be used as the reference in the differential expression analysis.
|
||||
|
||||
eg. sample_sheet.csv
|
||||
```
|
||||
barcode,alias,condition
|
||||
barcode01,sample01,control
|
||||
barcode02,sample02,control
|
||||
barcode03,sample03,control
|
||||
barcode04,sample04,treated
|
||||
barcode05,sample05,treated
|
||||
barcode06,sample06,treated
|
||||
```
|
||||
|
||||
#### 4.1 Merge cross sample transcriptomes
|
||||
If a `ref_transcriptome` is not provided, the transcriptomes created by the workflow will be used for DE analysis. To do this, the GFF outputs of GffCompare are merged using StringTie. A final non redundant FASTA file of the transcripts is created using the merged GFF file and the reference genome using seqkit.
|
||||
|
||||
#### 4.2 Create a final non redundant transcriptome
|
||||
The reads from all the samples will be aligned with the final non redundant transcriptome using Minimap2 in a splice aware manner.
|
||||
|
||||
#### 4.3 Count genes and transcripts
|
||||
[Salmon](https://github.com/COMBINE-lab/salmon) is used for transcript quantification, giving gene and transcript counts.
|
||||
|
||||
#### 4.4 edgeR based differential expression analysis
|
||||
A statistical analysis is first performed using [edgeR](https://bioconductor.org/packages/release/bioc/html/edgeR.html) to identify the subset of differentially expressed genes using the gene counts as input. A normalisation factor is calculated for each sequence library using the default TMM method (see [McCarthy et al. (2012)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3378882/) for further details). The defined experimental design is used to calculate estimates of dispersion for each of the gene features. Statistical tests are calculated using the contrasts defined in the experimental design. The differentially expressed genes are corrected for false discovery (FDR) using the method of Benjamini & Hochberg ([Benjamini and Hochberg (1995)](https://www.jstor.org/stable/2346101))
|
||||
|
||||
#### 4.5 Pre-filtering of quantitative data using DRIMSeq
|
||||
[DRIMSeq](https://bioconductor.org/packages/release/bioc/html/DRIMSeq.html) is used to filter the transcript count data from the Salmon analysis for differential transcript usage (DTU) analysis. The filter step will be used to select for genes and transcripts that satisfy rules for the number of samples in which a gene or transcript must be observed, and minimum threshold levels for the number of observed reads. The parameters used for filtering are `min_samps_gene_expr`, `min_samps_feature_expr`, `min_gene_expr`, and `min_feature_expr`. By default, any transcripts with zero expression or one transcript in all samples are filtered out at this stage.
|
||||
|
||||
#### 4.6 Differential transcript usage using DEXSeq
|
||||
Differential transcript usage analysis is performed using the R [DEXSeq](https://bioconductor.org/packages/release/bioc/html/DEXSeq.html) package ([Anders et al. (2012)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3460195/)). Similar to the edgeR package, DEXSeq estimates the variance between the biological replicates and applies generalised linear models for the statistical testing. The key difference is that the DEXSeq method looks for differences at the exon count level. DEXSeq uses the filtered transcript count data prepared earlier in this analysis.
|
||||
|
||||
#### 4.7 StageR stage-wise analysis of DGE and DTU
|
||||
The final component of this isoform analysis is a stage-wise statistical test using the R software package [stageR](https://bioconductor.org/packages/release/bioc/html/stageR.html)([Van den Berge and Clement (2018)](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1277-0)). stageR uses (1) the raw p-values for DTU from the DEXSeq analysis in the previous section and (2) a false-discovery corrected set of p-values from testing whether individual genes contain at least one exon showing DTU. A hierarchical two-stage statistical testing evaluates the set of genes for DTU.
|
||||
|
||||
|
||||
|
||||
|
||||
## Input parameters
|
||||
|
||||
### Input Options
|
||||
@ -242,84 +320,6 @@ Output files may be aggregated including information for all samples or provided
|
||||
|
||||
|
||||
|
||||
## Pipeline overview
|
||||
|
||||
### 1. Concatenate input files and generate per read stats.
|
||||
The [fastcat](https://github.com/epi2me-labs/fastcat) tool is used to concatenate multifile samples to be processed by the workflow. It will also output per read stats including average read lengths and qualities.
|
||||
|
||||
### 2. Preprocess cDNA.
|
||||
If input sequences are cDNA [Pychopper](https://github.com/epi2me-labs/pychopper) is used to orient, trim and rescue full length cDNA reads and associated statistics. If the `direct_rna` parameter is selected this step will be skipped.
|
||||
|
||||
### 3. Build transcriptome.
|
||||
If the `transcriptome_source` parameter is "reference-guided" a transcriptome will be built for each sample as outlined below. If the `transcriptome_source` is "precomputed" and the `reference_transcriptome` parameter is provided the workflow will skip step 3.
|
||||
|
||||
#### 3.1 Align reads with reference genome.
|
||||
The reference genome will be indexed and aligned using [Minimap2](https://github.com/lh3/minimap2). The output is sorted and converted to a BAM file using [Samtools](https://www.htslib.org/). Alignment stats are created from these using [Seqkit BAM](https://bioinf.shenwei.me/seqkit/usage/#bam).
|
||||
|
||||
Additionally, the workflow will generate an IGV configuration file if `--igv` is selected. This file allows the user to view the aligned BAM in the EPI2ME Desktop Application in the Viewer tab.
|
||||
|
||||
#### 3.2 Chunk BAM
|
||||
The aligned BAMs are split into chunks using the bundle_min_reads parameter (default: 50000).
|
||||
|
||||
#### 3.3 Assemble transcripts
|
||||
[StringTie](https://ccb.jhu.edu/software/stringtie/) is then used to assemble the transcripts using the aligned segments in the chunked BAM files. The assembled transcript will be output as a [GFF file](https://www.ensembl.org/info/website/upload/gff3.html). If a `ref_annotation` file is provided this will also be included in the GFF.
|
||||
|
||||
#### 3.4 Merge Chunks
|
||||
Transcript GFF files from the chunks with the same sample aliases will then be merged.
|
||||
|
||||
#### 3.5 Annnotate
|
||||
[GffCompare](https://ccb.jhu.edu/software/stringtie/gffcompare.html) is then used to compare query and reference annotations, merging records where appropriate and then annotating them. This also creates estimates of accuracy of the GFF files output in a stats file per sample.
|
||||
|
||||
#### 3.6 Create transcriptomes
|
||||
[Gffread](https://github.com/gpertea/gffread) is used to create a transcriptome FASTA file from the final GFF as well as a merged transcriptome that includes annotations in the FASTA headers where available.
|
||||
|
||||
### 4. Differential expression analysis
|
||||
|
||||
Differential gene expression (DGE) and differential transcript usage (DTU) analyses aim to identify genes and transcripts that show statistically altered expression patterns.
|
||||
|
||||
Differential Expression requires at least 2 replicates of each sample to compare (but we recommend three). You can see an example sample_sheet.csv below.
|
||||
|
||||
#### Sample sheet condition column
|
||||
The sample sheet should be a comma separated values file (.csv) and include at least three columns named `barcode`, `alias` and `condition`.
|
||||
- Each `barcode` should refer to a directory of the same name in the input FASTQ directory (in the example below `barcode01` to `barcode06` reflect the `test_data` directory).
|
||||
- The `alias` column allows you to rename each barcode to an alias that will be used in the report and other output files.
|
||||
- The condition column will need to contain one of two keys to indicate the two samples being compared. Control must be one of the keys, used to indicate which samples will be used as the reference in the differential expression analysis.
|
||||
|
||||
eg. sample_sheet.csv
|
||||
```
|
||||
barcode,alias,condition
|
||||
barcode01,sample01,control
|
||||
barcode02,sample02,control
|
||||
barcode03,sample03,control
|
||||
barcode04,sample04,treated
|
||||
barcode05,sample05,treated
|
||||
barcode06,sample06,treated
|
||||
```
|
||||
|
||||
#### 4.1 Merge cross sample transcriptomes
|
||||
If a `ref_transcriptome` is not provided, the transcriptomes created by the workflow will be used for DE analysis. To do this, the GFF outputs of GffCompare are merged using StringTie. A final non redundant FASTA file of the transcripts is created using the merged GFF file and the reference genome using seqkit.
|
||||
|
||||
#### 4.2 Create a final non redundant transcriptome
|
||||
The reads from all the samples will be aligned with the final non redundant transcriptome using Minimap2 in a splice aware manner.
|
||||
|
||||
#### 4.3 Count genes and transcripts
|
||||
[Salmon](https://github.com/COMBINE-lab/salmon) is used for transcript quantification, giving gene and transcript counts.
|
||||
|
||||
#### 4.4 edgeR based differential expression analysis
|
||||
A statistical analysis is first performed using [edgeR](https://bioconductor.org/packages/release/bioc/html/edgeR.html) to identify the subset of differentially expressed genes using the gene counts as input. A normalisation factor is calculated for each sequence library using the default TMM method (see [McCarthy et al. (2012)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3378882/) for further details). The defined experimental design is used to calculate estimates of dispersion for each of the gene features. Statistical tests are calculated using the contrasts defined in the experimental design. The differentially expressed genes are corrected for false discovery (FDR) using the method of Benjamini & Hochberg ([Benjamini and Hochberg (1995)](https://www.jstor.org/stable/2346101))
|
||||
|
||||
#### 4.5 Pre-filtering of quantitative data using DRIMSeq
|
||||
[DRIMSeq](https://bioconductor.org/packages/release/bioc/html/DRIMSeq.html) is used to filter the transcript count data from the Salmon analysis for differential transcript usage (DTU) analysis. The filter step will be used to select for genes and transcripts that satisfy rules for the number of samples in which a gene or transcript must be observed, and minimum threshold levels for the number of observed reads. The parameters used for filtering are `min_samps_gene_expr`, `min_samps_feature_expr`, `min_gene_expr`, and `min_feature_expr`. By default, any transcripts with zero expression or one transcript in all samples are filtered out at this stage.
|
||||
|
||||
#### 4.6 Differential transcript usage using DEXSeq
|
||||
Differential transcript usage analysis is performed using the R [DEXSeq](https://bioconductor.org/packages/release/bioc/html/DEXSeq.html) package ([Anders et al. (2012)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3460195/)). Similar to the edgeR package, DEXSeq estimates the variance between the biological replicates and applies generalised linear models for the statistical testing. The key difference is that the DEXSeq method looks for differences at the exon count level. DEXSeq uses the filtered transcript count data prepared earlier in this analysis.
|
||||
|
||||
#### 4.7 StageR stage-wise analysis of DGE and DTU
|
||||
The final component of this isoform analysis is a stage-wise statistical test using the R software package [stageR](https://bioconductor.org/packages/release/bioc/html/stageR.html)([Van den Berge and Clement (2018)](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1277-0)). stageR uses (1) the raw p-values for DTU from the DEXSeq analysis in the previous section and (2) a false-discovery corrected set of p-values from testing whether individual genes contain at least one exon showing DTU. A hierarchical two-stage statistical testing evaluates the set of genes for DTU.
|
||||
|
||||
|
||||
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
+ If the workflow fails please run it with the demo data set to ensure the workflow itself is working. This will help us determine if the issue is related to the environment, input parameters or a bug.
|
||||
@ -328,7 +328,7 @@ The final component of this isoform analysis is a stage-wise statistical test us
|
||||
|
||||
|
||||
|
||||
## FAQ's
|
||||
## FAQs
|
||||
|
||||
*Does the workflow support de novo assembly?* - Currently the workflow does not have a *de novo* mode.
|
||||
|
||||
|
||||
@ -290,6 +290,10 @@ class WorkflowResult(WorkflowBaseModel):
|
||||
"title": "Analysis tool versions",
|
||||
"description": """Key-value pairs collecting the
|
||||
software used and the corresponding versions"""})
|
||||
wf_version: str | None = field(
|
||||
default=None, metadata={
|
||||
"title": "Workflow version",
|
||||
"description": "Version of the workflow used"})
|
||||
params: dict[str, Any] | None = field(
|
||||
default_factory=dict, metadata={
|
||||
"title": "Pertinent parameters",
|
||||
|
||||
@ -46,6 +46,9 @@ def is_excluded(Path p, Map margs) {
|
||||
* directory, into the metamap. If the path to the stats dir is `null`, add an empty list.
|
||||
*
|
||||
* @param ch: input channel of shape `[meta, reads, path-to-stats-dir | null]`
|
||||
* @param allow_multiple_basecall_models: Boolean. If true, emit any sample to have been basecalled
|
||||
with more than one basecalling model. Multiple models are added as a list to the metadata map.
|
||||
If false, a warning is raised, and the sample is returned as `[meta, null, null]`.
|
||||
* @return: channel with lists of run IDs and basecall models added to the metamap
|
||||
*/
|
||||
def add_run_IDs_and_basecall_models_to_meta(ch, boolean allow_multiple_basecall_models) {
|
||||
@ -81,7 +84,11 @@ def add_run_IDs_and_basecall_models_to_meta(ch, boolean allow_multiple_basecall_
|
||||
// bit grim but decouples ingress metadata from workflow main.nf
|
||||
// additionally no need to use CWUtil as we're not overriding any user params
|
||||
ch | subscribe(onComplete: {
|
||||
if (params.wf["ingress.run_ids"] == null) {
|
||||
params.wf["ingress.run_ids"] = ingressed_run_ids
|
||||
} else {
|
||||
params.wf["ingress.run_ids"] += ingressed_run_ids
|
||||
}
|
||||
})
|
||||
return ch
|
||||
}
|
||||
@ -97,6 +104,8 @@ def add_run_IDs_and_basecall_models_to_meta(ch, boolean allow_multiple_basecall_
|
||||
* set the values to 0 when adding them.
|
||||
*
|
||||
* @param ch: input channel of shape `[meta, reads, path-to-stats-dir | null]`
|
||||
* @param input_type_format: String. Indicates whether input files were 'fastq'.
|
||||
* If not set to 'fastq', input is assumed to be 'bam'.
|
||||
* @return: channel with a list of number of reads added to the metamap
|
||||
*/
|
||||
def add_number_of_reads_to_meta(ch, String input_type_format) {
|
||||
@ -147,11 +156,16 @@ def add_number_of_reads_to_meta(ch, String input_type_format) {
|
||||
* files
|
||||
* - "sample": string to name single sample
|
||||
* - "sample_sheet": path to CSV sample sheet
|
||||
* - "analyse_unclassified": boolean whether to keep unclassified reads
|
||||
* - "analyse_unclassified": boolean. Whether to ingress unclassified (failed to demux) reads
|
||||
* - "analyse_fail": boolean. Whether to ingress any sequence files contained in `*_fail`
|
||||
* directories.
|
||||
* - "stats": boolean whether to write the `fastcat` stats
|
||||
* - "fastcat_extra_args": string with extra arguments to pass to `fastcat`
|
||||
* - "required_sample_types": list of required sample types in the sample sheet
|
||||
* - "required_sample_types": list of zero or more required sample types expected to be present
|
||||
* in the sample sheet
|
||||
* - "watch_path": boolean whether to use `watchPath` and run in streaming mode
|
||||
* - "per_read_stats": boolean. If true, output a bgzipped TSV containing a summary
|
||||
of each read to fastcat_stats/per-read-stats.tsv.gz.
|
||||
* - "fastq_chunk": null or a number of reads to place into chunked FASTQ files
|
||||
* - "allow_multiple_basecall_models": emit data of samples that had more than one
|
||||
* basecall model; if this is `false`, such samples will be emitted as `[meta, null,
|
||||
@ -249,14 +263,23 @@ def fastq_ingress(Map arguments)
|
||||
* (u)BAM files
|
||||
* - "sample": string to name single sample
|
||||
* - "sample_sheet": path to CSV sample sheet
|
||||
* - "analyse_unclassified": boolean whether to keep unclassified reads
|
||||
* - "analyse_unclassified": boolean. Whether to ingress unclassified (failed to demux) reads
|
||||
* - "analyse_fail": boolean. Whether to ingress any sequence files contained in `*_fail`
|
||||
* directories.
|
||||
* - "stats": boolean whether to run `bamstats`
|
||||
* - "keep_unaligned": boolean whether to include uBAM files
|
||||
* - "return_fastq": boolean whether to convert to FASTQ (this will always run
|
||||
* `fastcat`)
|
||||
* - "fastcat_extra_args": string with extra arguments to pass to `fastcat`
|
||||
* - "required_sample_types": list of required sample types in the sample sheet
|
||||
* - "required_sample_types": list of zero or more required sample types expected to be present
|
||||
* in the sample sheet
|
||||
* - "watch_path": boolean whether to use `watchPath` and run in streaming mode
|
||||
* - "per_read_stats": boolean. If true, output a bgzipped TSV containing a summary
|
||||
of each read to fastcat_stats/per-read-stats.tsv.gz.
|
||||
* - "fastq_chunk": null or a number of reads to place into chunked FASTQ files
|
||||
* - "allow_multiple_basecall_models": boolean. If true, emit data of samples that had more than one
|
||||
* basecall model; if this is `false`, such samples will be emitted as `[meta, null,
|
||||
* null]`
|
||||
* @return: channel of `[Map(alias, barcode, type, ...), Path|null, Path|null]`.
|
||||
* The first element is a map with metadata, the second is the path to the
|
||||
* `.bam` file with the (potentially merged) sequences and the third is
|
||||
@ -912,6 +935,8 @@ process split_fq_file {
|
||||
/**
|
||||
* Parse input arguments for `fastq_ingress` or `xam_ingress`.
|
||||
*
|
||||
* @param func_name: String name to set on `ArgumentParser`. Recommended to use the name of the
|
||||
function calling `parse_arguments`.
|
||||
* @param arguments: map with input arguments (see the corresponding ingress function
|
||||
* for details)
|
||||
* @param extra_kwargs: map of extra keyword arguments and their defaults (this allows
|
||||
@ -1217,6 +1242,7 @@ Map create_metamap(Map arguments) {
|
||||
* @param dir: path to the target directory
|
||||
* @param extensions: list of valid extensions for the target file type
|
||||
* @param margs: ingress margs
|
||||
* @param recursive: Boolean. If true, search nested directories for input files.
|
||||
* @return: list of found target files
|
||||
*/
|
||||
ArrayList get_target_files_in_dir(Path dir, ArrayList extensions, Map margs, Boolean recursive = true) {
|
||||
@ -1231,6 +1257,8 @@ ArrayList get_target_files_in_dir(Path dir, ArrayList extensions, Map margs, Boo
|
||||
* Check the sample sheet and return a channel with its rows if it is valid.
|
||||
*
|
||||
* @param sample_sheet: path to the sample sheet CSV
|
||||
* @param required_sample_types: list of zero or more required sample types expected to be present
|
||||
* in the sample sheet
|
||||
* @return: channel of maps (with values in sample sheet header as keys)
|
||||
*/
|
||||
def get_sample_sheet(Path sample_sheet, ArrayList required_sample_types) {
|
||||
|
||||
@ -96,7 +96,7 @@ params {
|
||||
]
|
||||
agent = null
|
||||
container_sha = "shaaaf20a5a0e76f9e18bad21af639a6b69e4a31a2f"
|
||||
common_sha = "sha72f3517dd994984e0e2da0b97cb3f23f8540be4b"
|
||||
common_sha = "shabf443fe2f7361981b94a2f53009cbd1d894bac95"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user