Beispiel #1
0
class TestDailyLog(unittest.TestCase):
    def setUp(self):
        self.logs = DailyLog('20210125')
        self.value = '{"error":"", "logs":[\
            {"created_at": "2021-01-23T13:00:30",\
            "first_name": "Иван",\
            "message": "Some message1",\
            "second_name": "Иванов",\
            "user_id": "77777"},\
            {"created_at": "2021-01-23T12:00:00",\
            "first_name": "Петр",\
            "message": "Some message2",\
            "second_name": "Петров",\
            "user_id": "555555"}]}'

    def test_class_creation(self):
        self.assertEqual(self.logs.log_date, '20210125')
        self.assertEqual(self.logs.log, [])
        self.assertEqual(self.logs.sorted_log, [])

    def test_parse_json(self):
        with patch.object(DailyLog, 'load_json', return_value=self.value):
            self.logs.parse_json()
            name_one = self.logs.log[0]['first_name']
            name_second = self.logs.log[1]['first_name']
            time_one = self.logs.log[0]['created_at']
            message_second = self.logs.log[1]['message']
            self.assertEqual(name_one, 'Иван')
            self.assertEqual(name_second, 'Петр')
            self.assertEqual(time_one, '2021-01-23T13:00:30')
            self.assertEqual(message_second, 'Some message2')

    def test_time_compare(self):
        with patch.object(DailyLog, 'load_json', return_value=self.value):
            self.logs.parse_json()
            log_one = self.logs.log[0]
            log_second = self.logs.log[1]
            result = Compare(log_one) <= Compare(log_second)
            self.assertFalse(result)

    def test_sorting(self):
        with patch.object(DailyLog, 'load_json', return_value=self.value):
            self.logs.parse_json()
            self.logs.sort_log()
            log_one = self.logs.sorted_log[0]
            log_second = self.logs.sorted_log[1]
            result = Compare(log_one) <= Compare(log_second)
            self.assertTrue(result)
    def addLog(self, l: Log):
        # find the year
        if l.getYear() not in self._yearlyLogs:
            self._yearlyLogs[l.getYear()] = YearlyLog(l.getYear())
        yearLog = self._yearlyLogs[l.getYear()]

        # find the month
        if l.getMonth() not in yearLog.getMonthlyLogs():
            yearLog.getMonthlyLogs()[l.getMonth()] = MonthlyLog(
                l.getMonth(), l.getYear())
        monthLog = yearLog.getMonthlyLogs()[l.getMonth()]

        # find the day
        if l.getDay() not in monthLog.getDailyLogs():
            monthLog.getDailyLogs()[l.getDay()] = DailyLog(
                l.getDay(), l.getMonth(), l.getYear())
        dailyLog = monthLog.getDailyLogs()[l.getDay()]

        # add
        dailyLog.addLog(l)
Beispiel #3
0
    interSet = len(genreValue1) + len(genreValue2) - unionSet;
    #[unionSet.append(obj) for obj in (genreValue1 + genreValue2) if obj not in unionSet];

    nominator = min( len(genreValue1), len( genreValue2 ));
    return float(interSet)/ float(nominator);
    #return float(interSet)/float(unionSet)

genreMap = GenreMap.GetMap();


# weekly aggregation. 


print 'Merging weekly data...'
widx = 0;
logArr1 = DailyLog.mergeLogs( [DailyLog.createFromFile(dataDir + '/' + logfiles[fidx]) \
              for fidx in range(widx * 7 + 0,  widx * 7 + 7)]);

#logArr1 = DailyLog.createFromFile('./data/20131122.tsv');

              
print 'Computing distance...'
kvPairs = logArr1.genreDic.items();
pairwiseComp = dict([ ( (kvPairs[i][0], kvPairs[j][0]), \
                        genreMergeValue (kvPairs[i][1], kvPairs[j][1])) \
  for i in range(0, len(kvPairs)) for j in range(0, len(kvPairs)) if i<j ]);

#print pairwiseComp

print 'Rank and output results...'
sortComp = sorted(pairwiseComp.iteritems(), key=operator.itemgetter(1), reverse = True);
sortComp = [item for item in sortComp if item[1] > 0]; # filtering zero ones. 
Beispiel #4
0
 def setUp(self):
     self.logs = DailyLog('20210125')
     self.value = '{"error":"", "logs":[\
 def getDailyLog(self, day, month, year):
     if day not in self.getMonthlyLog(month, year).getDailyLogs():
         self.getMonthlyLog(month, year).getDailyLogs()[day] = DailyLog(
             day, month, year)
     return self.getMonthlyLog(month, year).getDailyLogs()[day]
Beispiel #6
0
# Run and get some statistics. 
# Created: Jiayu Zhou, Jan 20, 2014. 

from DailyLog import DailyLog;
from DailyLog import GenreMap;
import csv;
import time;
from os import listdir;
from jiayuUtils import *;


genreMap = GenreMap.GetMap();

log1 = DailyLog.createFromFile('./data/20131122.tsv');

# display genre dictionary. 
for key,value in log1.genreDic.items():
    print "["+key+"]", genreMap[key], ":", len(value);

print 'Number of total entries:  ' + str(log1.length());
print 'Number of entries unique: ' + str(len(log1.progDic));

dataDir = './data';
logfiles = sorted(listdir(dataDir));


## compute the overlap week by week.
for widx in range(0, len(logfiles)/7 - 1):
    print '---Weekly----'

    if ('logArr2' in locals()):