# HG changeset patch # User iuc # Date 1492031812 14400 # Node ID eeca95721b32def7d2f7d8d7abe8cb7ccf5b00c3 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/column_order_header_sort commit d562cc65926c8c95af21467177b253b6ac985cb4 diff -r 000000000000 -r eeca95721b32 column_order_header_sort.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/column_order_header_sort.py Wed Apr 12 17:16:52 2017 -0400 @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import subprocess +import sys + +AWK_CMD = """BEGIN{FS="%s"; OFS="%s";} {print %s;}""" + +input_filename = sys.argv[1] +output_filename = sys.argv[2] +delimiter = sys.argv[3] +key_column = sys.argv[4] + +try: + key_column = int( key_column ) - 1 +except Exception: + key_column = None + +header = None +with open( input_filename, 'r' ) as fh: + header = fh.readline().strip( '\r\n' ) +header = header.split( delimiter ) +assert len( header ) == len( set( header ) ), "Header values must be unique" +sorted_header = list( header ) +if key_column is None: + columns = [] +else: + columns = [ key_column ] + sorted_header.pop( key_column ) +sorted_header.sort() + +for key in sorted_header: + columns.append( header.index( key ) ) + +awk_cmd = AWK_CMD % ( delimiter, delimiter, ",".join( map( lambda x: "$%i" % ( x + 1 ), columns ) ) ) +sys.exit( subprocess.call( [ 'gawk', awk_cmd, input_filename ], stdout=open( output_filename, 'wb+' ), shell=False ) ) diff -r 000000000000 -r eeca95721b32 column_order_header_sort.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/column_order_header_sort.xml Wed Apr 12 17:16:52 2017 -0400 @@ -0,0 +1,39 @@ + + + by heading + + + python + gawk + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 000000000000 -r eeca95721b32 test-data/in_1.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/in_1.tabular Wed Apr 12 17:16:52 2017 -0400 @@ -0,0 +1,4 @@ +#KEY b c a +one 1-1 1-2 1-3 +two 1-4 1-5 1-6 +three 1-7 1-8 1-9 diff -r 000000000000 -r eeca95721b32 test-data/out_1.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/out_1.tabular Wed Apr 12 17:16:52 2017 -0400 @@ -0,0 +1,4 @@ +#KEY a b c +one 1-3 1-1 1-2 +two 1-6 1-4 1-5 +three 1-9 1-7 1-8 \ No newline at end of file