Mercurial > repos > devteam > weightedaverage
comparison WeightedAverage.py @ 2:efa2b391e887 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
| author | devteam |
|---|---|
| date | Wed, 05 Oct 2016 13:39:38 -0400 |
| parents | 90611e86a998 |
| children |
comparison
equal
deleted
inserted
replaced
| 1:90611e86a998 | 2:efa2b391e887 |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 """ | 2 """ |
| 3 usage: %prog bed_file_1 bed_file_2 out_file | 3 usage: %prog bed_file_1 bed_file_2 out_file |
| 4 -1, --cols1=N,N,N,N: Columns for chr, start, end, strand in first file | 4 -1, --cols1=N,N,N,N: Columns for chr, start, end, strand in first file |
| 5 -2, --cols2=N,N,N,N,N: Columns for chr, start, end, strand, name/value in second file | 5 -2, --cols2=N,N,N,N,N: Columns for chr, start, end, strand, name/value in second file |
| 6 -z, --allow_zeros: Include zeros in calculations | |
| 6 """ | 7 """ |
| 7 | 8 |
| 8 import collections | 9 import collections |
| 9 import sys | 10 import sys |
| 10 from galaxy.tools.util.galaxyops import * | 11 from galaxy.tools.util.galaxyops import * |
| 40 | 41 |
| 41 | 42 |
| 42 def GetOverlap(a, b): | 43 def GetOverlap(a, b): |
| 43 return min(a[1], b[1])-max(a[0], b[0]) | 44 return min(a[1], b[1])-max(a[0], b[0]) |
| 44 | 45 |
| 46 def get_float_no_zero( field ): | |
| 47 rval = float( field ) | |
| 48 assert rval | |
| 49 return rval | |
| 50 | |
| 45 | 51 |
| 46 options, args = doc_optparse.parse( __doc__ ) | 52 options, args = doc_optparse.parse( __doc__ ) |
| 47 | 53 |
| 48 try: | 54 try: |
| 49 chr_col_1, start_col_1, end_col_1, strand_col1 = parse_cols_arg( options.cols1 ) | 55 chr_col_1, start_col_1, end_col_1, strand_col1 = parse_cols_arg( options.cols1 ) |
| 51 input1, input2, input3 = args | 57 input1, input2, input3 = args |
| 52 except Exception, eee: | 58 except Exception, eee: |
| 53 print eee | 59 print eee |
| 54 stop_err( "Data issue: click the pencil icon in the history item to correct the metadata attributes." ) | 60 stop_err( "Data issue: click the pencil icon in the history item to correct the metadata attributes." ) |
| 55 | 61 |
| 56 fd2 = open(input2) | 62 if options.allow_zeros: |
| 57 lines2 = fd2.readlines() | 63 get_value = float |
| 64 else: | |
| 65 get_value = get_float_no_zero | |
| 58 RecombChrDict = collections.defaultdict(list) | 66 RecombChrDict = collections.defaultdict(list) |
| 59 | 67 |
| 60 skipped = 0 | 68 skipped = 0 |
| 61 for line in lines2: | 69 for line in open( input2 ): |
| 62 temp = line.strip().split() | 70 temp = line.strip().split() |
| 63 try: | 71 try: |
| 64 assert float(temp[int(name_col_2)]) | 72 value = get_value( temp[ name_col_2 ] ) |
| 65 except: | 73 except Exception: |
| 66 skipped += 1 | 74 skipped += 1 |
| 67 continue | 75 continue |
| 68 tempIndex = [int(temp[int(start_col_2)]), int(temp[int(end_col_2)]), float(temp[int(name_col_2)])] | 76 tempIndex = [ int( temp[ start_col_2 ] ), int( temp[ end_col_2 ] ), value ] |
| 69 RecombChrDict[temp[int(chr_col_2)]].append(tempIndex) | 77 RecombChrDict[ temp[ chr_col_2 ] ].append( tempIndex ) |
| 70 | 78 |
| 71 print "Skipped %d features with invalid values" % (skipped) | 79 print "Skipped %d features with invalid values" % (skipped) |
| 72 | 80 |
| 73 fd1 = open(input1) | 81 fdd = open( input3, 'w' ) |
| 74 lines = fd1.readlines() | 82 for line in open( input1 ): |
| 75 finalProduct = '' | 83 line = line.strip() |
| 76 for line in lines: | 84 temp = line.split('\t') |
| 77 temp = line.strip().split('\t') | 85 chromosome = temp[ chr_col_1 ] |
| 78 chromosome = temp[int(chr_col_1)] | 86 start = int( temp[ start_col_1 ] ) |
| 79 start = int(temp[int(start_col_1)]) | 87 stop = int( temp[ end_col_1 ] ) |
| 80 stop = int(temp[int(end_col_1)]) | |
| 81 start_stop = [start, stop] | 88 start_stop = [start, stop] |
| 82 RecombRate = FindRate( chromosome, start_stop, RecombChrDict ) | 89 RecombRate = FindRate( chromosome, start_stop, RecombChrDict ) |
| 83 try: | 90 try: |
| 84 RecombRate = "%.4f" % (float(RecombRate)) | 91 RecombRate = "%.4f" % (float(RecombRate)) |
| 85 except: | 92 except: |
| 86 RecombRate = RecombRate | 93 RecombRate = RecombRate |
| 87 finalProduct += line.strip()+'\t'+str(RecombRate)+'\n' | 94 fdd.write( "%s\t%s\n" % ( line, RecombRate ) ) |
| 88 fdd = open(input3, 'w') | |
| 89 fdd.writelines(finalProduct) | |
| 90 fdd.close() | 95 fdd.close() |
