Skip to content

Commit 95a5fb2

Browse files
authored
Add round_digits to decoupler and avoid sorting by topTable in dream (#12114)
* update dream * allow round_digits in decoupler
1 parent 2e0ae2f commit 95a5fb2

4 files changed

Lines changed: 40 additions & 167 deletions

File tree

modules/nf-core/decoupler/decoupler/templates/decoupler.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ def parse_ext_args(args_string: str):
4545
)
4646
parser.add_argument("--features_id_col", type=str, default="gene_id", help="Column name for feature IDs")
4747
parser.add_argument("--features_symbol_col", type=str, default="gene_name", help="Column name for feature symbols")
48+
parser.add_argument(
49+
"--round_digits", type=int, default=None, help="Number of digits to round numeric output columns"
50+
)
4851
return parser.parse_args(args_list)
4952

5053

@@ -88,10 +91,15 @@ def parse_ext_args(args_string: str):
8891

8992
for result in results:
9093
# Save table
91-
results[result].to_csv("${task.ext.prefix}" + "_" + result + "_decoupler.tsv", sep="\t")
92-
contrast_name = results[result].index[0]
94+
result_df = results[result].copy()
95+
if parsed_args.round_digits is not None:
96+
numeric_columns = result_df.select_dtypes(include="number").columns
97+
result_df[numeric_columns] = result_df[numeric_columns].round(parsed_args.round_digits)
98+
99+
result_df.to_csv("${task.ext.prefix}" + "_" + result + "_decoupler.tsv", sep="\t")
100+
contrast_name = result_df.index[0]
93101
plt.figure(figsize=(8, 6))
94-
dc.plot_barplot(results[result], contrast_name, top=25, vertical=False)
102+
dc.plot_barplot(result_df, contrast_name, top=25, vertical=False)
95103
plt.savefig("${task.ext.prefix}" + "_" + result + "_decoupler_plot.png", dpi=300, bbox_inches="tight")
96104
plt.close()
97105

modules/nf-core/variancepartition/dream/templates/dream.R

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,12 @@ fitmm <- eBayes(fitmm, proportion = opt\$proportion,
340340
winsor.tail.p = winsor_tail_p_vals)
341341

342342
results <- topTable(fitmm, coef = top_table_coef, number = Inf,
343-
adjust.method = opt\$adjust.method,
343+
sort.by = "none", adjust.method = opt\$adjust.method,
344344
p.value = opt\$p.value, lfc = opt\$lfc, confint = opt\$confint)
345345

346+
feature_order <- rownames(countMatrix)
347+
results <- results[feature_order[feature_order %in% rownames(results)], , drop = FALSE]
348+
346349
results\$gene_id <- rownames(results)
347350
results <- results[, c("gene_id", setdiff(names(results), "gene_id"))]
348351

modules/nf-core/variancepartition/dream/tests/main.nf.test.snap

Lines changed: 21 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
1616
]
1717
],
18+
"timestamp": "2025-12-23T18:57:51.598745459",
1819
"meta": {
1920
"nf-test": "0.9.3",
2021
"nextflow": "25.04.2"
21-
},
22-
"timestamp": "2025-12-23T18:57:51.598745459"
22+
}
2323
},
2424
"RNAseq - Feature Counts - formula + comparison contrast string - interaction": {
2525
"content": [
@@ -37,11 +37,11 @@
3737
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
3838
]
3939
],
40+
"timestamp": "2025-12-26T15:10:51.980662299",
4041
"meta": {
4142
"nf-test": "0.9.3",
4243
"nextflow": "25.04.2"
43-
},
44-
"timestamp": "2025-12-26T15:10:51.980662299"
44+
}
4545
},
4646
"Mus musculus - contrasts - matrix - no formula": {
4747
"content": [
@@ -61,149 +61,11 @@
6161
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
6262
]
6363
],
64+
"timestamp": "2025-12-16T15:52:08.047223666",
6465
"meta": {
6566
"nf-test": "0.9.3",
6667
"nextflow": "25.10.0"
67-
},
68-
"timestamp": "2025-12-16T15:52:08.047223666"
69-
},
70-
"Mus musculus - expression table - contrasts + blocking factors": {
71-
"content": [
72-
{
73-
"0": [
74-
[
75-
{
76-
"id": "treatment_mCherry_hND6",
77-
"variable": "treatment",
78-
"reference": "mCherry",
79-
"target": "hND6",
80-
"blocking_factors": "sample_number",
81-
"formula": "~ treatment + (1 | sample_number)"
82-
},
83-
"treatment_mCherry_hND6.dream.results.tsv:md5,df0717ddf702543c375c1a5f4eae3fd7"
84-
]
85-
],
86-
"1": [
87-
[
88-
{
89-
"id": "treatment_mCherry_hND6",
90-
"variable": "treatment",
91-
"reference": "mCherry",
92-
"target": "hND6",
93-
"blocking_factors": "sample_number",
94-
"formula": "~ treatment + (1 | sample_number)"
95-
},
96-
"treatment_mCherry_hND6.dream.model.txt:md5,7103206474aa480ffd9cec149263489f"
97-
]
98-
],
99-
"2": [
100-
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
101-
],
102-
"model": [
103-
[
104-
{
105-
"id": "treatment_mCherry_hND6",
106-
"variable": "treatment",
107-
"reference": "mCherry",
108-
"target": "hND6",
109-
"blocking_factors": "sample_number",
110-
"formula": "~ treatment + (1 | sample_number)"
111-
},
112-
"treatment_mCherry_hND6.dream.model.txt:md5,7103206474aa480ffd9cec149263489f"
113-
]
114-
],
115-
"results": [
116-
[
117-
{
118-
"id": "treatment_mCherry_hND6",
119-
"variable": "treatment",
120-
"reference": "mCherry",
121-
"target": "hND6",
122-
"blocking_factors": "sample_number",
123-
"formula": "~ treatment + (1 | sample_number)"
124-
},
125-
"treatment_mCherry_hND6.dream.results.tsv:md5,df0717ddf702543c375c1a5f4eae3fd7"
126-
]
127-
],
128-
"versions": [
129-
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
130-
]
131-
}
132-
],
133-
"meta": {
134-
"nf-test": "0.9.3",
135-
"nextflow": "25.10.0"
136-
},
137-
"timestamp": "2025-12-16T19:59:57.947286403"
138-
},
139-
"Mus musculus - expression table - contrasts + blocking factors stub": {
140-
"content": [
141-
{
142-
"0": [
143-
[
144-
{
145-
"id": "treatment_mCherry_hND6",
146-
"variable": "treatment",
147-
"reference": "mCherry",
148-
"target": "hND6",
149-
"blocking_factors": "sample_number",
150-
"formula": "~ treatment + (1 | sample_number)"
151-
},
152-
"treatment_mCherry_hND6.dream.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
153-
]
154-
],
155-
"1": [
156-
[
157-
{
158-
"id": "treatment_mCherry_hND6",
159-
"variable": "treatment",
160-
"reference": "mCherry",
161-
"target": "hND6",
162-
"blocking_factors": "sample_number",
163-
"formula": "~ treatment + (1 | sample_number)"
164-
},
165-
"treatment_mCherry_hND6.dream.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
166-
]
167-
],
168-
"2": [
169-
"versions.yml:md5,03b686ec8c67a91501ebb2b2a5234e77"
170-
],
171-
"model": [
172-
[
173-
{
174-
"id": "treatment_mCherry_hND6",
175-
"variable": "treatment",
176-
"reference": "mCherry",
177-
"target": "hND6",
178-
"blocking_factors": "sample_number",
179-
"formula": "~ treatment + (1 | sample_number)"
180-
},
181-
"treatment_mCherry_hND6.dream.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
182-
]
183-
],
184-
"results": [
185-
[
186-
{
187-
"id": "treatment_mCherry_hND6",
188-
"variable": "treatment",
189-
"reference": "mCherry",
190-
"target": "hND6",
191-
"blocking_factors": "sample_number",
192-
"formula": "~ treatment + (1 | sample_number)"
193-
},
194-
"treatment_mCherry_hND6.dream.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
195-
]
196-
],
197-
"versions": [
198-
"versions.yml:md5,03b686ec8c67a91501ebb2b2a5234e77"
199-
]
200-
}
201-
],
202-
"meta": {
203-
"nf-test": "0.9.2",
204-
"nextflow": "25.04.6"
205-
},
206-
"timestamp": "2025-11-10T16:18:37.294899756"
68+
}
20769
},
20870
"Mus musculus - expression table - contrasts + formula + weighted comparison contrast string": {
20971
"content": [
@@ -221,11 +83,11 @@
22183
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
22284
]
22385
],
86+
"timestamp": "2025-12-23T18:57:42.761838155",
22487
"meta": {
22588
"nf-test": "0.9.3",
22689
"nextflow": "25.04.2"
227-
},
228-
"timestamp": "2025-12-23T18:57:42.761838155"
90+
}
22991
},
23092
"Mus musculus - expression table - contrasts + formula + comparison contrast string - no intercept stub": {
23193
"content": [
@@ -284,11 +146,11 @@
284146
]
285147
}
286148
],
149+
"timestamp": "2026-01-13T15:35:07.121696674",
287150
"meta": {
288151
"nf-test": "0.9.3",
289152
"nextflow": "25.04.2"
290-
},
291-
"timestamp": "2026-01-13T15:35:07.121696674"
153+
}
292154
},
293155
"RNAseq - Voom - Feature Counts - formula + comparison contrast string - interaction": {
294156
"content": [
@@ -316,11 +178,11 @@
316178
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
317179
]
318180
],
181+
"timestamp": "2026-01-13T15:53:31.743589111",
319182
"meta": {
320183
"nf-test": "0.9.3",
321184
"nextflow": "25.04.2"
322-
},
323-
"timestamp": "2026-01-13T15:53:31.743589111"
185+
}
324186
},
325187
"RNAseq - Feature Counts - formula + comparison contrast string - interaction with seed": {
326188
"content": [
@@ -332,7 +194,7 @@
332194
"formula": "~ genotype * treatment",
333195
"comparison": "genotypeWT - treatmentTreated"
334196
},
335-
"genotype_WT_KO_treatment_Control_Treated.dream.results.tsv:md5,90a06e6b4945c706025582a4c9fddf2c"
197+
"genotype_WT_KO_treatment_Control_Treated.dream.results.tsv:md5,1d4c862325e4f5228c6277344c2f6b7d"
336198
]
337199
],
338200
"1": [
@@ -371,19 +233,19 @@
371233
"formula": "~ genotype * treatment",
372234
"comparison": "genotypeWT - treatmentTreated"
373235
},
374-
"genotype_WT_KO_treatment_Control_Treated.dream.results.tsv:md5,90a06e6b4945c706025582a4c9fddf2c"
236+
"genotype_WT_KO_treatment_Control_Treated.dream.results.tsv:md5,1d4c862325e4f5228c6277344c2f6b7d"
375237
]
376238
],
377239
"versions": [
378240
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
379241
]
380242
}
381243
],
244+
"timestamp": "2026-06-19T15:01:27.265474319",
382245
"meta": {
383-
"nf-test": "0.9.3",
384-
"nextflow": "25.10.3"
385-
},
386-
"timestamp": "2026-05-07T19:32:24.587570625"
246+
"nf-test": "0.9.5",
247+
"nextflow": "26.04.4"
248+
}
387249
},
388250
"Mus musculus - expression table - contrasts + formula + comparison contrast string": {
389251
"content": [
@@ -401,10 +263,10 @@
401263
"versions.yml:md5,fc1f26eb2194018e99fc2916332676b7"
402264
]
403265
],
266+
"timestamp": "2025-12-26T15:11:01.472042429",
404267
"meta": {
405268
"nf-test": "0.9.3",
406269
"nextflow": "25.04.2"
407-
},
408-
"timestamp": "2025-12-26T15:11:01.472042429"
270+
}
409271
}
410-
}
272+
}

subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@
11081108
"fc_threshold": 1.5,
11091109
"stat_threshold": 0.05
11101110
},
1111-
"treatment_mCherry_hND6_test_filtered.tsv:md5,68017f084a058f7502415f8aecda42ee"
1111+
"treatment_mCherry_hND6_test_filtered.tsv:md5,91242680e2b4b312802dc7a65f397773"
11121112
]
11131113
],
11141114
[
@@ -1135,10 +1135,10 @@
11351135
"versions.yml:md5,736da31f06f854355d45aeb9d9c874e0"
11361136
]
11371137
],
1138-
"timestamp": "2026-05-20T14:15:35.598682502",
1138+
"timestamp": "2026-06-19T15:05:15.4675545",
11391139
"meta": {
11401140
"nf-test": "0.9.5",
1141-
"nextflow": "26.04.1"
1141+
"nextflow": "26.04.4"
11421142
}
11431143
},
11441144
"deseq2 - mouse - basic": {
@@ -1515,4 +1515,4 @@
15151515
"nextflow": "26.04.1"
15161516
}
15171517
}
1518-
}
1518+
}

0 commit comments

Comments
 (0)