annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
1 #!/usr/bin/env python
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
2 """
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
3 usage: %prog bed_file_1 bed_file_2 out_file
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
4 -1, --cols1=N,N,N,N: Columns for chr, start, end, strand in first file
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
5 -2, --cols2=N,N,N,N,N: Columns for chr, start, end, strand, name/value in second file
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
6 -z, --allow_zeros: Include zeros in calculations
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
7 """
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
8
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
9 import collections
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
10 import sys
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
11 from galaxy.tools.util.galaxyops import *
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
12 from bx.cookbook import doc_optparse
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
13
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
14
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
15 #export PYTHONPATH=~/galaxy/lib/
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
16 #running command python WeightedAverage.py interval_interpolate.bed value_interpolate.bed interpolate_result.bed
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
17
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
18 def stop_err(msg):
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
19 sys.stderr.write(msg)
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
20 sys.exit()
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
21
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
22
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
23 def FindRate(chromosome, start_stop, dictType):
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
24 OverlapList = []
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
25 for tempO in dictType[chromosome]:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
26 DatabaseInterval = [tempO[0], tempO[1]]
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
27 Overlap = GetOverlap( start_stop, DatabaseInterval )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
28 if Overlap > 0:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
29 OverlapList.append([Overlap, tempO[2]])
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
30
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
31 if len(OverlapList) > 0:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
32 SumRecomb = 0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
33 SumOverlap = 0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
34 for member in OverlapList:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
35 SumRecomb += member[0]*member[1]
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
36 SumOverlap += member[0]
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
37 averageRate = SumRecomb/SumOverlap
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
38 return averageRate
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
39 else:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
40 return 'NA'
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
41
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
42
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
43 def GetOverlap(a, b):
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
44 return min(a[1], b[1])-max(a[0], b[0])
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
45
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
46 def get_float_no_zero( field ):
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
47 rval = float( field )
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
48 assert rval
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
49 return rval
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
50
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
51
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
52 options, args = doc_optparse.parse( __doc__ )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
53
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
54 try:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
55 chr_col_1, start_col_1, end_col_1, strand_col1 = parse_cols_arg( options.cols1 )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
56 chr_col_2, start_col_2, end_col_2, strand_col2, name_col_2 = parse_cols_arg( options.cols2 )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
57 input1, input2, input3 = args
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
58 except Exception, eee:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
59 print eee
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
60 stop_err( "Data issue: click the pencil icon in the history item to correct the metadata attributes." )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
61
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
62 if options.allow_zeros:
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
63 get_value = float
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
64 else:
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
65 get_value = get_float_no_zero
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
66 RecombChrDict = collections.defaultdict(list)
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
67
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
68 skipped = 0
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
69 for line in open( input2 ):
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
70 temp = line.strip().split()
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
71 try:
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
72 value = get_value( temp[ name_col_2 ] )
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
73 except Exception:
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
74 skipped += 1
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
75 continue
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
76 tempIndex = [ int( temp[ start_col_2 ] ), int( temp[ end_col_2 ] ), value ]
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
77 RecombChrDict[ temp[ chr_col_2 ] ].append( tempIndex )
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
78
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
79 print "Skipped %d features with invalid values" % (skipped)
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
80
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
81 fdd = open( input3, 'w' )
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
82 for line in open( input1 ):
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
83 line = line.strip()
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
84 temp = line.split('\t')
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
85 chromosome = temp[ chr_col_1 ]
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
86 start = int( temp[ start_col_1 ] )
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
87 stop = int( temp[ end_col_1 ] )
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
88 start_stop = [start, stop]
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
89 RecombRate = FindRate( chromosome, start_stop, RecombChrDict )
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
90 try:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
91 RecombRate = "%.4f" % (float(RecombRate))
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
92 except:
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
93 RecombRate = RecombRate
2
efa2b391e887 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/weightedaverage commit f770c3c58f1e7e1fa5ed22d7f7aca856d36729e8
devteam
parents: 1
diff changeset
94 fdd.write( "%s\t%s\n" % ( line, RecombRate ) )
0
9b7b4009f2c0 Imported from capsule None
devteam
parents:
diff changeset
95 fdd.close()