Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)