From 3422dbeba44323df3912e383bd3c9456dd156b30 Mon Sep 17 00:00:00 2001 From: jbudis Date: Wed, 10 Jul 2019 19:19:55 +0200 Subject: [PATCH] Annotate transcripts (#29) * Add missing configuration parameters * Edger also outputs design * New filter for DE significant results * New filter for DE significant results * Configuration is copied to the report directory after successful run * Git versions of source codes are stored in the report directory * Version of Snakelines is stored in the report directory * Removed obsolete source code - git version no longer needed since we have snakelines version * Update snakelines.snake * Renamed path to match refactored report structures * Store design even when batch is not defined * Fixed minor bug - the first sample was not visualised in the PCA plot * Refactoring, name FCexp-1 in output fiels changed to fold_change * HTML table with summarized results of differential expression analysis * Example files for annotation * DE transcripts can be annotated by external attributes * Example report has links to gene ontology terms * Export GO terms of DE genes to Revigo format * Documented Revigo, also it is stored as .txt file in the report directory for simpler copy-paste to the Revigo website --- .../report/transcripts/html_table/summary.rst | 1 + .../report/transcripts/revigo/summary.rst | 16 ++ docs/rules/outline.rst | 5 + example/rnaseq/config_transcriptomics.yaml | 26 ++- .../annotation.transcripts/go/attributes.tsv | 204 ++++++++++++++++++ .../pombase/attributes.tsv | 23 ++ .../transcripts/html_table/custom.snake | 28 ++- .../report/transcripts/revigo/custom.snake | 22 ++ src/dependency.yaml | 13 +- 9 files changed, 324 insertions(+), 14 deletions(-) create mode 100644 docs/rules/classification/report/transcripts/revigo/summary.rst create mode 100644 example/rnaseq/reference/pombe/annotation.transcripts/go/attributes.tsv create mode 100644 example/rnaseq/reference/pombe/annotation.transcripts/pombase/attributes.tsv create mode 100644 rules/classification/report/transcripts/revigo/custom.snake diff --git a/docs/rules/classification/report/transcripts/html_table/summary.rst b/docs/rules/classification/report/transcripts/html_table/summary.rst index 73714213..18afef94 100644 --- a/docs/rules/classification/report/transcripts/html_table/summary.rst +++ b/docs/rules/classification/report/transcripts/html_table/summary.rst @@ -13,6 +13,7 @@ Take transcriptomic counts from several samples and merge them together into a s - *table:* TSV table with statistical evaluation of change in expression - *desc:* Description of reference sequences - *template:* HTML template with basic report outline +- *annotations:* TSV files with attributes for annotated transcripts **Output(s):** diff --git a/docs/rules/classification/report/transcripts/revigo/summary.rst b/docs/rules/classification/report/transcripts/revigo/summary.rst new file mode 100644 index 00000000..91b3b7c8 --- /dev/null +++ b/docs/rules/classification/report/transcripts/revigo/summary.rst @@ -0,0 +1,16 @@ +Custom - Export De Genes For Revigo +--------------------------------------- + +Export differentially expressed genes and their GO annotations in format suitable for visualization +in the Revigo webpage (http://revigo.irb.hr/) + +**Location** + +- *Filepath:* /rules/classification/report/transcripts/revigo/custom.snake +- *Rule name:* custom__export_de_genes_for_revigo + +**Input(s):** + +- *des:* TSV table with DE genes +- *gos:* Annotation of genes - TSV file with columns id and external_id + diff --git a/docs/rules/outline.rst b/docs/rules/outline.rst index d8a29fad..7d5c39cb 100644 --- a/docs/rules/outline.rst +++ b/docs/rules/outline.rst @@ -203,6 +203,11 @@ Rules .. toctree:: classification/report/transcripts/pca/summary.rst + - Revigo + + .. toctree:: + classification/report/transcripts/revigo/summary.rst + - Count Table .. toctree:: diff --git a/example/rnaseq/config_transcriptomics.yaml b/example/rnaseq/config_transcriptomics.yaml index 96b6d941..5fb9425f 100644 --- a/example/rnaseq/config_transcriptomics.yaml +++ b/example/rnaseq/config_transcriptomics.yaml @@ -42,17 +42,25 @@ classification: # Identify genomic source of sequenced reads min_fold_change: 1.5 # Minimal value of fold change for transcript to be reported reproducible_expression: True # At least one read must be mapped to transcript in all samples from over-expressed group to be reported - filter_significant: # Filter transcripts with significant change in expression - method: custom # Supported values: custom - max_fdr: 0.05 # Maximal value of fold discovery change for transcript to be reported - min_fold_change: 1.5 # Minimal value of fold change for transcript to be reported - report: transcripts: - count_table: # Summary table with number of reads per transcript - method: custom # Supported values: custom - html_table: # Summary HTML table with results of differential expressions - method: custom # Supported values: custom + + count_table: # Summary table with number of reads per transcript + method: custom # Supported values: custom + + html_table: # Summary HTML table with results of differential expressions + method: custom # Supported values: custom + annotation: # Annotate with attributes from external sources + - source: pombase # Annotate with attributes from reference/{reference}/annotation.transcripts/pombas/attributes.tsv + attributes: # Annotate with listed attributes only + - link # Annotate with attribute link + - source: go # Annotate with attributes from reference/{reference}/annotation.transcripts/go/attributes.tsv + # Annotate with all attributes since explicit attributes are not defined + + revigo: # GO annotation terms in format suitable for visualisation on the ReviGO website (http://revigo.irb.hr/) + method: custom # Supported values: custom + + pca: method: sklearn # Supported values: sklearn formats: # Output format of the resulting images diff --git a/example/rnaseq/reference/pombe/annotation.transcripts/go/attributes.tsv b/example/rnaseq/reference/pombe/annotation.transcripts/go/attributes.tsv new file mode 100644 index 00000000..93a47596 --- /dev/null +++ b/example/rnaseq/reference/pombe/annotation.transcripts/go/attributes.tsv @@ -0,0 +1,204 @@ +id external_id link +SPAC5H10.11.1 GO:0000139 GO:0000139 +SPAC5H10.11.1 GO:0031278 GO:0031278 +SPAC5H10.13c.1 GO:0000139 GO:0000139 +SPAC5H10.13c.1 GO:0031278 GO:0031278 +SPAC18G6.02c.1 GO:0005515 GO:0005515 +SPCC553.09c.1 GO:0043596 GO:0043596 +SPAC688.10.1 GO:0070987 GO:0070987 +SPAC30.03c.1 GO:0005515 GO:0005515 +SPAC637.06.1 GO:0000139 GO:0000139 +SPAC637.06.1 GO:0031278 GO:0031278 +SPAC637.06.1 GO:0009272 GO:0009272 +SPAC637.06.1 GO:0042125 GO:0042125 +SPCC736.03c.1 GO:0032543 GO:0032543 +SPAC22E12.06c.1 GO:0000139 GO:0000139 +SPCC736.07c.1 GO:0002183 GO:0002183 +SPBC8D2.17.1 GO:0000139 GO:0000139 +SPBC8D2.17.1 GO:0031278 GO:0031278 +SPBC8D2.17.1 GO:0009272 GO:0009272 +SPBC8D2.17.1 GO:0042125 GO:0042125 +SPBC83.03c.1 GO:0005515 GO:0005515 +SPBP8B7.28c.1 GO:0005515 GO:0005515 +SPBC1347.01c.1 GO:0070987 GO:0070987 +SPBC1289.13c.1 GO:0000139 GO:0000139 +SPBC1289.13c.1 GO:0031278 GO:0031278 +SPBC1289.13c.1 GO:0009272 GO:0009272 +SPBC1289.13c.1 GO:0042125 GO:0042125 +SPCC553.09c.1 GO:0005658 GO:0005658 +SPCC553.09c.1 GO:0000790 GO:0000790 +SPCC553.09c.1 GO:1902975 GO:1902975 +SPCC553.09c.1 GO:1902981 GO:1902981 +SPCC553.08c.1 GO:0042254 GO:0042254 +SPCC553.08c.1 GO:0005737 GO:0005737 +SPCC553.08c.1 GO:0003924 GO:0003924 +SPCC553.07c.1 GO:0000790 GO:0000790 +SPCC553.07c.1 GO:0005515 GO:0005515 +SPCC553.07c.1 GO:0006974 GO:0006974 +SPCC553.07c.1 GO:0072429 GO:0072429 +SPCC553.06.1 GO:0008250 GO:0008250 +SPCC553.06.1 GO:0006487 GO:0006487 +SPCC553.06.1 GO:0004579 GO:0004579 +SPCC553.04.1 GO:0006342 GO:0006342 +SPCC553.04.1 GO:0000790 GO:0000790 +SPCC553.03.1 GO:0005777 GO:0005777 +SPCC553.03.1 GO:0016887 GO:0016887 +SPCC553.03.1 GO:0016562 GO:0016562 +SPCC553.02.1 GO:0003952 GO:0003952 +SPCC553.02.1 GO:0009435 GO:0009435 +SPCC553.02.1 GO:0005737 GO:0005737 +SPCC553.02.1 GO:0005634 GO:0005634 +SPCC736.03c.1 GO:0005739 GO:0005739 +SPCC736.03c.1 GO:0004826 GO:0004826 +SPCC736.03c.1 GO:0006432 GO:0006432 +SPCC736.04c.1 GO:0042125 GO:0042125 +SPCC736.04c.1 GO:0009272 GO:0009272 +SPCC736.04c.1 GO:0006493 GO:0006493 +SPCC736.04c.1 GO:0006487 GO:0006487 +SPCC736.04c.1 GO:0000139 GO:0000139 +SPCC736.04c.1 GO:0031278 GO:0031278 +SPCC736.06.1 GO:0004815 GO:0004815 +SPCC736.06.1 GO:0070146 GO:0070146 +SPCC736.07c.1 GO:0001731 GO:0001731 +SPCC736.07c.1 GO:1990113 GO:1990113 +SPCC736.07c.1 GO:1990114 GO:1990114 +SPCC736.07c.1 GO:1990115 GO:1990115 +SPCC736.08.1 GO:0005634 GO:0005634 +SPCC736.08.1 GO:0043565 GO:0043565 +SPCC736.08.1 GO:0045944 GO:0045944 +SPCC736.09c.1 GO:0005515 GO:0005515 +SPCC736.09c.1 GO:0000724 GO:0000724 +SPCC736.09c.1 GO:0006303 GO:0006303 +SPCC736.10c.1 GO:0003735 GO:0003735 +SPCC736.10c.1 GO:0032543 GO:0032543 +SPCC736.10c.1 GO:0005763 GO:0005763 +SPCC736.11.1 GO:0033167 GO:0033167 +SPCC736.11.1 GO:0030958 GO:0030958 +SPCC736.11.1 GO:0031934 GO:0031934 +SPCC736.11.1 GO:1990707 GO:1990707 +SPCC736.11.1 GO:0005515 GO:0005515 +SPCC736.11.1 GO:0030702 GO:0030702 +SPCC736.11.1 GO:0030466 GO:0030466 +SPCC736.11.1 GO:0006348 GO:0006348 +SPCC736.11.1 GO:0051570 GO:0051570 +SPCC736.11.1 GO:0031048 GO:0031048 +SPCC736.11.1 GO:0033168 GO:0033168 +SPCC736.11.1 GO:0005515 GO:0005515 +SPCC736.12c.1 GO:0033620 GO:0033620 +SPCC736.12c.1 GO:0003723 GO:0003723 +SPCC736.12c.1 GO:0033621 GO:0033621 +SPCC736.12c.1 GO:0005515 GO:0005515 +SPCC736.14.1 GO:0051315 GO:0051315 +SPCC736.14.1 GO:0008017 GO:0008017 +SPCC736.11.1 GO:0031618 GO:0031618 +SPCC1020.10.1 GO:0005515 GO:0005515 +SPCC1739.03.1 GO:0005515 GO:0005515 +SPCC736.14.1 GO:0015630 GO:0015630 +SPCC736.08.1 GO:0000978 GO:0000978 +SPAC6F12.09.1 GO:0034613 GO:0034613 +SPCC736.11.1 GO:0000122 GO:0000122 +SPAC140.03.1 GO:0008428 GO:0008428 +SPCC736.14.1 GO:0000778 GO:0000778 +SPCC553.01c.1 GO:0005634 GO:0005634 +SPCC553.02.1 GO:0005829 GO:0005829 +SPCC553.03.1 GO:0005737 GO:0005737 +SPCC553.03.1 GO:0005829 GO:0005829 +SPCC553.04.1 GO:0005634 GO:0005634 +SPCC553.06.1 GO:0005783 GO:0005783 +SPCC553.07c.1 GO:0005634 GO:0005634 +SPCC553.07c.1 GO:0005829 GO:0005829 +SPCC553.08c.1 GO:0005829 GO:0005829 +SPCC553.09c.1 GO:0005634 GO:0005634 +SPCC553.09c.1 GO:0005829 GO:0005829 +SPCC736.04c.1 GO:0005794 GO:0005794 +SPCC736.06.1 GO:0005739 GO:0005739 +SPCC736.07c.1 GO:0005829 GO:0005829 +SPCC736.08.1 GO:0005634 GO:0005634 +SPCC736.08.1 GO:0005829 GO:0005829 +SPCC736.09c.1 GO:0005634 GO:0005634 +SPCC736.09c.1 GO:0005829 GO:0005829 +SPCC736.10c.1 GO:0005739 GO:0005739 +SPCC736.11.1 GO:0005829 GO:0005829 +SPCC736.12c.1 GO:0005634 GO:0005634 +SPCC736.14.1 GO:0005634 GO:0005634 +SPCC736.14.1 GO:0005737 GO:0005737 +SPCC553.01c.1 GO:0044732 GO:0044732 +SPCC736.14.1 GO:0044732 GO:0044732 +SPCC553.05c.1 GO:0016021 GO:0016021 +SPCC553.02.1 GO:0005524 GO:0005524 +SPCC553.03.1 GO:0005524 GO:0005524 +SPCC553.04.1 GO:0000413 GO:0000413 +SPCC553.04.1 GO:0003755 GO:0003755 +SPCC553.04.1 GO:0006457 GO:0006457 +SPCC553.06.1 GO:0016021 GO:0016021 +SPCC553.07c.1 GO:0003684 GO:0003684 +SPCC553.07c.1 GO:0003887 GO:0003887 +SPCC553.07c.1 GO:0046872 GO:0046872 +SPCC553.08c.1 GO:0005525 GO:0005525 +SPCC553.09c.1 GO:0003677 GO:0003677 +SPCC553.09c.1 GO:0003887 GO:0003887 +SPCC736.03c.1 GO:0000049 GO:0000049 +SPCC736.03c.1 GO:0000287 GO:0000287 +SPCC736.03c.1 GO:0005524 GO:0005524 +SPCC736.03c.1 GO:0008033 GO:0008033 +SPCC736.08.1 GO:0007155 GO:0007155 +SPCC736.09c.1 GO:0043565 GO:0043565 +SPCC736.11.1 GO:0000784 GO:0000784 +SPCC736.06.1 GO:0005524 GO:0005524 +SPCC736.04c.1 GO:0016021 GO:0016021 +SPCC736.05.1 GO:0016021 GO:0016021 +SPCC736.12c.1 GO:0033620 GO:0033620 +SPCC736.12c.1 GO:1990251 GO:1990251 +SPCC736.11.1 GO:0003723 GO:0003723 +SPCC736.11.1 GO:0003727 GO:0003727 +SPCC736.11.1 GO:0090502 GO:0090502 +SPCC736.11.1 GO:0016891 GO:0016891 +SPCC736.11.1 GO:0070924 GO:0070924 +SPCC736.11.1 GO:0090502 GO:0090502 +SPCC736.11.1 GO:0033562 GO:0033562 +SPCC736.11.1 GO:0070868 GO:0070868 +SPCC736.11.1 GO:0070919 GO:0070919 +SPCC126.04c.1 GO:0030958 GO:0030958 +SPBC16A3.07c.1 GO:0000122 GO:0000122 +SPCC736.12c.1 GO:0003729 GO:0003729 +SPCC736.12c.1 GO:0051447 GO:0051447 +SPCC736.04c.1 GO:0006491 GO:0006491 +SPCC553.07c.1 GO:0070987 GO:0070987 +SPCC736.08.1 GO:0043565 GO:0043565 +SPCC736.14.1 GO:0015630 GO:0015630 +SPCC736.14.1 GO:0072686 GO:0072686 +SPCC736.14.1 GO:0044732 GO:0044732 +SPBC11C11.03.1 GO:0005515 GO:0005515 +SPCC736.14.1 GO:0000778 GO:0000778 +SPCC736.14.1 GO:0005515 GO:0005515 +SPCC736.14.1 GO:0051315 GO:0051315 +SPCC736.12c.1 GO:0005515 GO:0005515 +SPAC644.16.1 GO:0005515 GO:0005515 +SPBC16E9.12c.1 GO:0005515 GO:0005515 +SPCC736.12c.1 GO:0033621 GO:0033621 +SPAC30.03c.1 GO:0005515 GO:0005515 +SPCC736.09c.1 GO:0005515 GO:0005515 +SPCC736.08.1 GO:0045944 GO:0045944 +SPCC736.08.1 GO:0043565 GO:0043565 +SPCC736.08.1 GO:0001077 GO:0001077 +SPCC553.07c.1 GO:0019985 GO:0019985 +SPCC553.01c.1 GO:0005737 GO:0005737 +SPCC553.01c.1 GO:0035861 GO:0035861 +SPCC736.08.1 GO:0001077 GO:0001077 +SPCC736.08.1 GO:0043565 GO:0043565 +SPCC736.08.1 GO:0019216 GO:0019216 +SPCC736.08.1 GO:0000790 GO:0000790 +SPCC553.01c.1 GO:0008150 GO:0008150 +SPCC553.01c.1 GO:0003674 GO:0003674 +SPCC736.02.1 GO:0005575 GO:0005575 +SPCC736.02.1 GO:0008150 GO:0008150 +SPCC736.02.1 GO:0003674 GO:0003674 +SPCC736.09c.1 GO:0008150 GO:0008150 +SPCC553.05c.1 GO:0008150 GO:0008150 +SPCC553.05c.1 GO:0003674 GO:0003674 +SPCC736.07c.1 GO:0003674 GO:0003674 +SPCC736.05.1 GO:0008150 GO:0008150 +SPCC736.05.1 GO:0003674 GO:0003674 +SPCC736.13.1 GO:0005575 GO:0005575 +SPCC736.13.1 GO:0008150 GO:0008150 +SPCC736.13.1 GO:0003674 GO:0003674 \ No newline at end of file diff --git a/example/rnaseq/reference/pombe/annotation.transcripts/pombase/attributes.tsv b/example/rnaseq/reference/pombe/annotation.transcripts/pombase/attributes.tsv new file mode 100644 index 00000000..82ed152a --- /dev/null +++ b/example/rnaseq/reference/pombe/annotation.transcripts/pombase/attributes.tsv @@ -0,0 +1,23 @@ +id gene_id link +SPCC553.09c.1 SPCC553.09c SPCC553.09c +SPCC553.08c.1 SPCC553.08c SPCC553.08c +SPCC553.07c.1 SPCC553.07c SPCC553.07c +SPCC553.06.1 SPCC553.06 SPCC553.06 +SPCC553.05c.1 SPCC553.05c SPCC553.05c +SPCC553.04.1 SPCC553.04 SPCC553.04 +SPCC553.03.1 SPCC553.03 SPCC553.03 +SPCC553.02.1 SPCC553.02 SPCC553.02 +SPCC553.01c.1 SPCC553.01c SPCC553.01c +SPCC736.02.1 SPCC736.02 SPCC736.02 +SPCC736.03c.1 SPCC736.03c SPCC736.03c +SPCC736.04c.1 SPCC736.04c SPCC736.04c +SPCC736.05.1 SPCC736.05 SPCC736.05 +SPCC736.06.1 SPCC736.06 SPCC736.06 +SPCC736.07c.1 SPCC736.07c SPCC736.07c +SPCC736.08.1 SPCC736.08 SPCC736.08 +SPCC736.09c.1 SPCC736.09c SPCC736.09c +SPCC736.10c.1 SPCC736.10c SPCC736.10c +SPCC736.11.1 SPCC736.11 SPCC736.11 +SPCC736.12c.1 SPCC736.12c SPCC736.12c +SPCC736.13.1 SPCC736.13 SPCC736.13 +SPCC736.14.1 SPCC736.14 SPCC736.14 diff --git a/rules/classification/report/transcripts/html_table/custom.snake b/rules/classification/report/transcripts/html_table/custom.snake index e6df6695..a7439bc9 100644 --- a/rules/classification/report/transcripts/html_table/custom.snake +++ b/rules/classification/report/transcripts/html_table/custom.snake @@ -4,20 +4,24 @@ import pandas as pd pd.set_option('display.max_colwidth', 1000000) pd.options.display.float_format = '{:e}'.format +annotations = {annotation['source']: annotation.get('attributes', []) for annotation in method_config.get('annotation', [])} + rule custom__visualise_transcriptomic_counts_in_html_table: """ Take transcriptomic counts from several samples and merge them together into a single table. :input table: TSV table with statistical evaluation of change in expression :input desc: Description of reference sequences :input template: HTML template with basic report outline + :input annotations: TSV files with attributes for annotated transcripts :output html: HTML page with sortable, filterable table of transcriptomic results """ input: - table = 'classification/{reference}/report/comparison/differential_analysis.tsv', - descs = 'reference/{reference}/{reference}.transcripts.desc', - template = srcdir('templates/expressions.html'), + table = 'classification/{reference}/report/comparison/differential_analysis.tsv', + descs = 'reference/{reference}/{reference}.transcripts.desc', + template = srcdir('templates/expressions.html'), + annotations = expand('reference/{{reference}}/annotation.transcripts/{source}/attributes.tsv', source=annotations.keys()) output: - html = 'classification/{reference}/report/comparison/differential_analysis.html' + html = 'classification/{reference}/report/comparison/differential_analysis.html' run: def ncbi_link(ncbi_id): return '{ncbi_id}'.format(ncbi_id=ncbi_id) @@ -31,6 +35,22 @@ rule custom__visualise_transcriptomic_counts_in_html_table: reported = counts[['id', 'fold_change', 'up_down', 'FDR', 'description']] reported['fold_change'] = reported.fold_change.apply(lambda x: '{:.2f}'.format(x)) + for annotation in input.annotations: + source_name = annotation.split('/')[3] + attributes = pd.read_csv(annotation, sep='\t', index_col=None) + + if annotations[source_name]: + attributes = attributes[['id'] + annotations[source_name]] + + for attribute_name in attributes.columns: + if attribute_name == 'id': + continue + + stored_attribute = '{}.{}'.format(source_name, attribute_name) + print(attributes.columns) + attribute = attributes.groupby('id')[attribute_name].apply(lambda x: '
'.join(x)) + reported[stored_attribute] = attribute + TEMPLATE = open(input.template).read() with open(output.html, 'w') as out: html_table = reported \ diff --git a/rules/classification/report/transcripts/revigo/custom.snake b/rules/classification/report/transcripts/revigo/custom.snake new file mode 100644 index 00000000..8821ea32 --- /dev/null +++ b/rules/classification/report/transcripts/revigo/custom.snake @@ -0,0 +1,22 @@ +import pandas as pd +pd.set_option('display.max_colwidth', 1000000) +pd.options.display.float_format = '{:e}'.format + +rule custom__export_de_genes_for_revigo: + """ + Export differentially expressed genes and their GO annotations in format suitable for visualization + in the Revigo webpage (http://revigo.irb.hr/) + :input des: TSV table with DE genes + :input gos: Annotation of genes - TSV file with columns id and external_id + """ + input: + des = 'classification/{reference}/report/comparison/significant.tsv', + gos = 'reference/{reference}/annotation.transcripts/go/attributes.tsv' + output: + revigo = 'classification/{reference}/report/comparison/significant.revigo.tsv' + run: + des = pd.read_csv(input.des, sep='\t', index_col='Row.names') + gos = pd.read_csv(input.gos, sep='\t', index_col=0) + merged = des.merge(gos, left_index=True, right_index=True, how='inner') + merged[['external_id', 'PValue']].to_csv(output.revigo, sep='\t', index=None, header=None) + diff --git a/src/dependency.yaml b/src/dependency.yaml index b21e4772..877e09af 100644 --- a/src/dependency.yaml +++ b/src/dependency.yaml @@ -360,7 +360,18 @@ classification: from: expand('classification/{reference}/report/comparison/differential_analysis.html', reference=pipeline.references) - to: expand('{report_dir}/_summary/differential_analysis/summary.html', + to: expand('{report_dir}/_summary/differential_analysis/summary.html', + report_dir=config['report_dir']) + depends: + - classification/differential_analysis + + revigo: + output: + revigo_format: + from: expand('classification/{reference}/report/comparison/significant.revigo.tsv', + reference=pipeline.references) + + to: expand('{report_dir}/_summary/differential_analysis/revigo.txt', report_dir=config['report_dir']) depends: - classification/differential_analysis