Mercurial > repos > matces > carpet_toolsuite
diff carpet-src-1/tools/CARPET/Raw_data.py @ 0:cdd489d98766
Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
author | matces |
---|---|
date | Tue, 07 Jun 2011 16:50:41 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/carpet-src-1/tools/CARPET/Raw_data.py Tue Jun 07 16:50:41 2011 -0400 @@ -0,0 +1,130 @@ +#!/usr/bin/env python + +# Copyright 2009 Matteo Cesaroni, Lucilla Luzi +# +# This program is free software; ; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +. + +import sys +from rpy import * + + +def stop_err(msg): + sys.stderr.write(msg) + sys.exit() + +def main(): + + # Handle input params + in_fname = sys.argv[1] + out_fname = sys.argv[2] + #sys.stdout=open('log.txt','a') + try: + column = int( sys.argv[3] ) - 1 + column_x = int( sys.argv[4] ) - 1 + column_y = int( sys.argv[5] ) - 1 + except: + stop_err( "..Column not specified, your query does not contain a column of numerical data." ) + + + title = sys.argv[6] + + skipped_lines = 0 + first_invalid_line = 0 + invalid_value = '' + + riga = [] + for tuo in range(1,1025): + riga.append(int(0)) + #print riga + + matrice = [] + for mio in range(1,769): + #print mio + matrice.append(riga) + + #print matrix + matrix1 = array(matrice) + #print matrix1 + for i, line in enumerate( file( in_fname ) ): + valid = True + line = line.rstrip('\r\n') + # Skip comments + if line and not line.startswith( '#' ): + # Extract values and convert to floats + row = [] + val = 0 + val_x = 0 + val_y = 0 + try: + fields = line.split( "\t" ) + val = fields[column] + val_x = (int(fields[column_x])-1) + val_y = (int(fields[column_y])-1) + matrix1[val_x][val_y]=float(val) + + + except: + valid = False + skipped_lines += 1 + if not first_invalid_line: + first_invalid_line = i+1 + else: + try: + row.append( float( val ) ) + except ValueError: + valid = False + skipped_lines += 1 + if not first_invalid_line: + first_invalid_line = i+1 + invalid_value = fields[column] + else: + valid = False + skipped_lines += 1 + if not first_invalid_line: + first_invalid_line = i+1 + + output_prima=sys.stdout + fsock=open('log.txt','w') + sys.stdout=fsock + + + for i in range(768): + for j in range(1024): + if j<1022: + print "%s\t" %matrix1[i][j], + if j==1023: + print "%s" %matrix1[i][j] + sys.stdout=output_prima + fsock.close() + + set_default_mode(NO_CONVERSION) + if skipped_lines < i: + #print "..on columnn %s" %sys.argv[3] + a=r.read_table("log.txt") + b=r.as_matrix(a) + #r.print_(b) + #b=r.cbind(a[1],a[1]) + r.pdf( out_fname, 8, 8 ) + r.image(z=r.log2(b),col=r.terrain_colors(100000),main=title, xlab="X", ylab="Y") + r.dev_off() + + else: + print "..all values in column %s are non-numeric." %sys.argv[3] + + if skipped_lines > 0: + print "..skipped %d invalid lines starting with line #%d. Value '%s' is not numeric." % ( skipped_lines, first_invalid_line, invalid_value ) + + r.quit( save="no" ) + +if __name__ == "__main__": + main() +