def process(source): """ Simple processing """ s = CDRStream(asterisk_like, source) s.start() for st in s: cdr = csv_to_cdr(list(csv.reader(StringIO(st), delimiter=','))[0]) if not users.get(cdr.src): users[cdr.src] = Pattern(cdr.src) pattern = users[cdr.src] if pattern.is_converged() and not pattern.is_conform(cdr): pattern.alarm(cdr) pattern.maintain(cdr)
def process_2(source): s = CDRStream(asterisk_like, source) s.start() recalculate.km_time = 0 for st in s: cdr = csv_to_cdr(list(csv.reader(StringIO(st), delimiter=','))[0]) if not users.get(cdr.src): users[cdr.src] = Pattern(cdr.src) pattern = users[cdr.src] if pattern.is_converged() and not pattern.is_conform(cdr): pattern.alarm(cdr) pattern.maintain(cdr) if cdr.start - recalculate.km_time >= 24*60*60*7: # Once a week recalculate clusters recalculate(cdr.start) recalculate(cdr.start)
def test(source): s = CDRStream(asterisk_like, source) s.start() hours = np.zeros(24) l = [] days = 1 prev = 0 pattern = None for st in s: cdr = csv_to_cdr(list(csv.reader(StringIO(st), delimiter=','))[0]) if time_of_day(cdr.start) < prev: days += 1 if days > 14 and pattern is None: pattern = hours/days hours = np.zeros(24) if days > 14 and days%7 == 0: print(np.linalg.norm(hours/(days-14) - pattern)) h = time_of_day(cdr.start)//60//60 hours[h] += 1 prev = time_of_day(cdr.start) #l.append(h) fingerprint = hours/days print(fingerprint)