annotate maaslin-4450aa4ecc84/transpose.py @ 1:a87d5a5f2776

Uploaded the version running on the prod server
author george-weingart
date Sun, 08 Feb 2015 23:08:38 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
1 #!/usr/bin/env python
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
2 #######################################################################################
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
3 # This file is provided under the Creative Commons Attribution 3.0 license.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
4 #
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
5 # You are free to share, copy, distribute, transmit, or adapt this work
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
6 # PROVIDED THAT you attribute the work to the authors listed below.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
7 # For more information, please see the following web page:
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
8 # http://creativecommons.org/licenses/by/3.0/
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
9 #
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
10 # This file is a component of the SflE Scientific workFLow Environment for reproducible
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
11 # research, authored by the Huttenhower lab at the Harvard School of Public Health
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
12 # (contact Curtis Huttenhower, chuttenh@hsph.harvard.edu).
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
13 #
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
14 # If you use this environment, the included scripts, or any related code in your work,
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
15 # please let us know, sign up for the SflE user's group (sfle-users@googlegroups.com),
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
16 # pass along any issues or feedback, and we'll let you know as soon as a formal citation
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
17 # is available.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
18 #######################################################################################
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
19
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
20 """
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
21 Examples
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
22 ~~~~~~~~
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
23
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
24 ``data.pcl``::
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
25
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
26 a b
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
27 c d
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
28 e f
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
29
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
30 ``Examples``::
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
31
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
32 $ transpose.py < data.pcl
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
33 a c e
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
34 b d f
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
35
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
36 $ echo "a b c" | transpose.py
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
37 a
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
38 b
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
39 c
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
40
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
41 .. testsetup::
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
42
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
43 from transpose import *
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
44 """
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
45
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
46 import argparse
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
47 import csv
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
48 import sys
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
49
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
50 def transpose( aastrIn, ostm ):
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
51 """
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
52 Outputs the matrix transpose of the input tab-delimited rows.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
53
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
54 :param aastrIn: Split lines from which data are read.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
55 :type aastrIn: collection of string collections
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
56 :param ostm: Output stream to which transposed rows are written.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
57 :type ostm: output stream
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
58
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
59 >>> aastrIn = [list(s) for s in ("ab", "cd", "ef")]
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
60 >>> transpose( aastrIn, sys.stdout ) #doctest: +NORMALIZE_WHITESPACE
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
61 a c e
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
62 b d f
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
63
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
64 >>> transpose( [list("abc")], sys.stdout ) #doctest: +NORMALIZE_WHITESPACE
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
65 a
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
66 b
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
67 c
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
68 """
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
69
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
70 aastrLines = [a for a in aastrIn]
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
71 csvw = csv.writer( ostm, csv.excel_tab )
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
72 for iRow in range( len( aastrLines[0] ) ):
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
73 csvw.writerow( [aastrLines[iCol][iRow] for iCol in range( len( aastrLines ) )] )
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
74
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
75 argp = argparse.ArgumentParser( prog = "transpose.py",
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
76 description = """Transposes a tab-delimited text matrix.
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
77
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
78 The transposition process is robust to missing elements and rows of differing lengths.""" )
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
79 __doc__ = "::\n\n\t" + argp.format_help( ).replace( "\n", "\n\t" ) + __doc__
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
80
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
81 def _main( ):
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
82 args = argp.parse_args( )
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
83 transpose( csv.reader( sys.stdin, csv.excel_tab ), sys.stdout )
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
84
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
85 if __name__ == "__main__":
a87d5a5f2776 Uploaded the version running on the prod server
george-weingart
parents:
diff changeset
86 _main( )