annotate datamash-transpose.xml @ 10:3dcdff1ab5ac draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/datamash commit 178914e2f45c9d80bd4d88377c634593246b9f36
author iuc
date Tue, 18 Nov 2025 22:08:08 +0000
parents a1cdc32ea989
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
70522b458053 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 206ac70388ea11b168366f1e30bb44157e371c6e"
iuc
parents: 6
diff changeset
1 <tool id="datamash_transpose" name="Transpose" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
2 <description>rows/columns in a tabular file</description>
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
3 <macros>
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
4 <import>macros.xml</import>
10
3dcdff1ab5ac planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/datamash commit 178914e2f45c9d80bd4d88377c634593246b9f36
iuc
parents: 9
diff changeset
5 <token name="@VERSION_SUFFIX@">0</token>
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
6 </macros>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
7 <edam_topics>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
8 <edam_topic>topic_3570</edam_topic> <!-- Pure math / linear algebra -->
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
9 </edam_topics>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
10 <edam_operations>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
11 <!-- <edam_operation>operation_1234</edam_operation> -->
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
12 </edam_operations>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
13 <expand macro="requirements"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
14 <expand macro="stdio"/>
7
70522b458053 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 206ac70388ea11b168366f1e30bb44157e371c6e"
iuc
parents: 6
diff changeset
15 <command><![CDATA[
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
16 #import os
10
3dcdff1ab5ac planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/datamash commit 178914e2f45c9d80bd4d88377c634593246b9f36
iuc
parents: 9
diff changeset
17 #set file_size_MB = $in_file.get_size() / (1024 * 1024)
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
18 #set size_threshold_MB = 1024
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
19 #if $file_size_MB <= $size_threshold_MB:
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
20 datamash transpose @FIELD_SEPARATOR@ < $in_file > $out_file
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
21 #else:
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
22 ## Input matrix is very big: divide and conquer
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
23 ## If the input file is very big, datamash runs out of memory (much earlier than file size ~ available RAM.
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
24 ## Split into managable chunks of row vectors, transpose the chunks and juxtapose column vector chunks.
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
25 #set num_chunks = 1 + int(file_size_MB/size_threshold_MB)
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
26 echo Huge matrix detected, processing in $num_chunks chunks. &&
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
27 split -n l/$num_chunks $in_file split_input_ &&
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
28 for chunk in \$(ls split_input*); do
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
29 datamash transpose @FIELD_SEPARATOR@ < \$chunk > \${chunk}_transposed;
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
30 done &&
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
31 paste split_input_*_transposed > $out_file
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
32 #end if
7
70522b458053 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 206ac70388ea11b168366f1e30bb44157e371c6e"
iuc
parents: 6
diff changeset
33 ]]></command>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
34 <expand macro="inputs_outputs"/>
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
35 <tests>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
36 <test expect_num_outputs="1">
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
37 <param name="in_file" value="datamash_transpose_input.txt"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
38 <output file="datamash_transpose_output.txt" name="out_file"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
39 </test>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
40 <!-- Test for transposing an extremely big input matrix
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
41 Disabled to keep the repository size reasonable.
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
42 For testing, manually download a pathological in- and output from:
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
43 https://usegalaxy.eu/u/tunc/h/very-big-scrna-matrix
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
44 -->
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
45 <!--
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
46 <test>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
47 <param name="in_file" value="big.tabular"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
48 <output file="transposed_big.tabular" name="out_file"/>
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
49 </test>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
50 -->
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
51 <!-- transpose(transpose(A)) = A -->
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
52 <!--
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
53 <test>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
54 <param name="in_file" value="transposed_big.tabular"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
55 <output file="big.tabular" name="out_file"/>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
56 </test>
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
57 -->
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
58 </tests>
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
59 <help>
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
60 <![CDATA[
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
61 @HELP_HEADER@
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
62
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
63 **Syntax**
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
64
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
65 This tools transposes (swaps) rows/columns in a tabular input file.
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
66
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
67 -----
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
68
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
69 **Example**
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
70
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
71 Input file::
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
72
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
73 Genes NOX1 DcP HH
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
74 Sample A1 A2 B3
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
75 Counts 514 542 490
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
76
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
77 Output file::
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
78
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
79 Genes Sample Counts
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
80 NOX1 A1 514
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
81 DcP A2 542
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
82 HH B3 490
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
83
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
84 @HELP_FOOTER@
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
85 ]]>
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
86 </help>
9
a1cdc32ea989 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 9edd054251bc74685d627360bb0fbe8ea60fa6a2
iuc
parents: 7
diff changeset
87 <expand macro="citation"/>
0
6bc5c4e56518 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/datamash commit 1fa5e1a5cfac88256d484ec20c35fc319e6ceb3b
iuc
parents:
diff changeset
88 </tool>