Hello,

I have a file like this:
action start    end
50      5321    5321
7       5323            5347
12      5339            5351
45      5373    5373
45      5420            5420
25      5425            5425
26      5425            5425
50      5451            5451
45      5452    5452
14      5497            5503
26      5513            5513
25      5517            5517
45      5533            5533
50      5533            5533
5       5537            5540
25      5580            5580
45      5586    5586
26      5595            5595
45      5603            5603
50      5634            5634
45      5645            5645
7       5657            5689
25      5682            5682
26      5682            5690
26      5708            5708
45      5717            5717
50      5740            5740
45      5777            5777
45      5804            5804
7       5805            5845

and want to find how many times combinations occur in a time frame (between 
column 2 and 3 ). This can be multiple combinations, which is my problem now.
I have no problems finding overlap between 2 actions. 
I want to start with the first line, action 50. and check for all lines in the 
rest of the file if there are lines that overlap this action.
So the first line has no overlap, but action 25 and 26 would be a combination 
that overlaps, and 45 and 50 (5533        -5533). but 7,25,26 would be a 
combination of 3(5682-5682 & 5682-5690 & 5657-5689 because these three overlap 
each other.

I have a script now that identifies overlap between two actions (see bottom 
page), but how can I change this so that it outputs all possible combinations?

My desired output would be:

action    times observed    apex
50         5                          5321, 5451, 5533, 5634,  5740
50,45    1                          5533;5533
7           4                          5347, 5689, 5688, 5845
7,25      2                          5347;5425, 5689;5682
7,25,26 1                          5689;5682;5690

CODE: 

from collections import Counter
f = open('and.txt','r');

action_list = []
onset_list = []
apex_list = []
offset_list = []
action_counter = 0
combination_list = []


for line in f:
  fields = line.split("\t")
  for col in fields:
    action = fields[0]
    onset = fields[1]
    apex = fields[2]
    offset = fields[3]

  action_list.append(action)
  onset_list.append(onset)
  apex_list.append(apex)
  offset_list.append(offset)

action_cnvrt = map(int, action_list)
c = Counter(action_cnvrt)

filtered = list(set(action_list))
filtered_cnvrt = map(int, filtered)

for a in filtered_cnvrt:
  action_count = str(a)+"\t"+str(c[a])
  print action_count

for i in range (0,len(onset_list)):
  combination_list.append(action_list[i])
  for j in range(0,len(apex_list)):
    if i != j:
      if onset_list[j]>= onset_list[i] and apex_list[j] <= apex_list[i]:
        print 
action_list[j]+","+action_list[i]+'\t'+onset_list[j]+'\t'+apex_list[j]+'\t'+onset_list[i]+'\t'+apex_list[i]


I hope somebody can help me :)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to