One text file \'Truth\' contains these following values :
0.000000 3.810000 Three
3.810000 3.910923 NNNN
3.910923 5.429000 AAAA
5.429000
I am not sure I fully understand your question but if you are referring to what I think you are, then you need to worry about "out of bounds" and the fact that "truth" and test won`t have the same correspondence in j - as you mentioned.
A way around that would be to use two different indices for truth[j] and test[k] (or whatever you want to call it). You could obviously use two loops to continuously iterate over the whole test, but that wouldn`t make the code efficient.
I would suggest using the second index as a counter that continuously goes up by 1 (think of it as a while loop that is while "value test[k] in range of value truth[j]
and do what you are currently doing.
Whenever you reached a point that test[k] value is over the range of your current truth[j] you continue
to the next j (value interval in truth).
Hope that helps and makes sense
l_truth = len(truth)
l_test = len(test)
count = 0
res = []
for j in range(l_truth):
count2= count
for k in range(count2,l_test):
if truth[j][2]== 'MMMM':
min_truth = truth[j][0]
max_truth = truth[j][1]
min_test = test[k][0]
max_test = test[k][1]
#diff_truth = max_truth - min_truth
diff_test = max_test - min_test
if (min_truth <= min_test) and (max_truth >= max_test):
res.append((test[k][0], test[k][1],truth[j][2]))
count +=1
elif (min_truth <= min_test) and (max_truth <= max_test):
#diff_min = min_truth - min_test
diff_max = max_test - max_truth
ratio = diff_max/diff_test
if ratio <= 0.2:
res.append((test[k][0], test[k][1],truth[j][2]))
count +=1
elif (min_truth >= min_test) and (max_truth >= max_test):
diff_min = min_truth - min_test
#diff_max = max_test - max_truth
ratio = diff_min/diff_test
if ratio <= 0.2:
res.append((test[k][0], test[k][1],truth[j][2]))
count+=1
elif (min_truth >= min_test) and (max_truth <= max_test):
diff_min = min_truth - min_test
diff_max = max_test - max_truth
ratio = (diff_min+diff_max)/diff_test
if ratio <= 0.2:
res.append((test[k][0], test[k][1],truth[j][2]))
count+=1
else:
pass
else:
continue
for i in range(len(res)):
print res[i]
Check if this works. I actually had to use two loops, but I am sure there are other more efficient ways of doing this.