[Tutor] Help needed!!
Linsey Raaijmakers
lm.raaijmakers at gmail.com
Wed May 8 21:27:08 CEST 2013
Hello,
I have a file with actions and time points at which they occur.
I want to find how many times an action occurs, and how many times it
occurs in combination with an other action at the same time point
(overlapping between onset and apex)
Below is the input file. in this file, action 50 occurs 3 times, so I want
to output that with the apex of those occurrences. It also occurs in
combination with action 45, so I also want to output that combination plus
the number of times it occurs.
In this case 50 overlaps 45 and 45 also overlaps 50, but I only want to
output this combination once. So not [50,45] and [45,50]
I'm working on it for some days now, but I can't figure out how to do this.
I first wanted to make a list of the first action and just add the next
action to that list if it is overlapping the first one. And keep doing that
until the next action isn't overlapping anymore and create a new list, but
I'm doing something wrong what makes it not doing what I want.
Can somebody please help me? :)
INPUT:
Action Unit Onset Frame Apex Frame Offset Frame 50 5321 5321 5424 7 5323
5347 5441 12 5339 5351 5449 45 5373 5373 5373 45 5420 5420 5420 25 5425
5425 5450 26 5425 5425 5450 50 5451 5451 5498 45 5452 5452 5452 14 5497
5503 5509 26 5513 5513 5532 25 5517 5517 5532 45 5533 5533 5533 50 5533
5533 5580 5 5537 5540 5583 25 5580 5580 5633 45 5586 5586 5586 26 5595
5595 5633
OUTPUT:
action times observed apex
[50] 3 5321, 5451, 5533
[50,45] 1 5533;5533
[7] 1 5347
[7,12] 1 5347; 5351
..
....
Multiple combinations of actions are possible, as long as they overlap
between onset and apex.
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:
action, onset, apex, offset = line.split()
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])
now = int(onset_list[0])
end = int(apex_list[0])
active = action_list[0]
for i in range(1,len(onset_list)):
next_start = int(onset_list[i])
next_end = int(apex_list[i])
next_active = action_list[i]
prev_end = int(apex_list[i-1])
combination_list.append(action_list[i-1])
print combination_list
while next_start <= end:
combination_list.append(action_list[i])
end = next_end
combination_list = []
end = next_end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20130508/45aeaca8/attachment.html>
More information about the Tutor
mailing list