first commit
[bl_monitoring.git] / tools / generic_utils / time_intervals.py
blob7ffeaedb174dc9f537d70bfe175cc41dd97c6e0d
1 #!/usr/bin/env python
3 import os, sys, time
4 from time_formats import *
7 ##############################################
8 def shift_time(intervals_sec, shift_sec):
10 shifted_intervals = []
12 for i in intervals_sec:
13 l = i[0] + shift_sec
14 r = i[1] + shift_sec
15 shifted_intervals.append((l,r))
17 return shifted_intervals
19 ##############################################
20 def rel2abs(intervals_sec, zeroTime_str):
22 shifted_intervals_sec = shift_time(intervals_sec, str2sec(zeroTime_str))
24 return periodsSec2periodsStr(shifted_intervals_sec)
26 ##############################################
27 def abs2rel(intervals_sec, zeroTime_str):
29 shifted_intervals_sec = shift_time(intervals_sec, -str2sec(zeroTime_str))
31 return shifted_intervals_sec
34 ####################################################
35 def select_longIntervals(intervals_sec, minLength_sec):
37 long_intervals = []
38 for i in intervals_sec:
39 if i[1] - i[0] >= minLength_sec:
40 long_intervals.append(i)
42 return long_intervals
45 ####################################################
46 def split_longInterval(interval_str, maxLength_sec):
48 interval_sec = periodsStr2periodsSec([interval_str])[0]
49 interval_length = interval_sec[1] - interval_sec[0]
51 if interval_length <= maxLength_sec:
52 return [interval_str]
54 times = int(interval_length/maxLength_sec)
55 rest = interval_length - times*maxLength_sec
57 shorter_intervals = []
58 for i in range (times-1):
59 shorter_intervals.append((interval_sec[0] + maxLength_sec*i, interval_sec[0]+ (i+1)*maxLength_sec))
62 if rest < float(maxLength_sec)/3:
64 shorter_intervals.append((interval_sec[0]+ maxLength_sec*(times-1),
65 interval_sec[0]+ maxLength_sec*times+ rest))
67 else:
68 shorter_intervals.append((interval_sec[0]+ maxLength_sec*(times-1),
69 interval_sec[0]+ maxLength_sec*times))
71 shorter_intervals.append((interval_sec[0]+ maxLength_sec*times,
72 interval_sec[0]+ maxLength_sec*times+ rest))
74 return periodsSec2periodsStr(shorter_intervals)