def calctimings(log):
	single_log = {}	
	for end_type, chunk in nt.loadchunks(log):
		start, stop, duration = nt.parsefortime(chunk)
		chunk_time =  nt.getworkingtimeforchunk(chunk)
		chunk_day = start[0:8]
		if chunk_day not in single_log:
			single_log[chunk_day] = {
				'working_time': 0,
				'duration': [],
				'start': [],
				'stop': [],
			}
		single_log[chunk_day]['duration'].append(duration)
		single_log[chunk_day]['start'].append(start)
		single_log[chunk_day]['stop'].append(stop)
		single_log[chunk_day]['working_time'] += chunk_time['working']
	return single_log
def calcactions(log):
	result = {
		"merges": 0,
		"splits": 0,
		"bodies": {},
	}
	initial = {
		'merges': 0,
		'splits': 0,
		'working': 0,
	} 
	day_result = {}
	current_assignment = None
	assignment_chunk = []
	assignment_day_chunk = []
	for l in log:
		if l[nt.loglevellength:].startswith('20'):	
			line_date = nt.gettimestamp(l).strftime(nt.newtimestampformat)[0:8]
			if line_date not in day_result:
				day_result[line_date] = {
					"merges": 0,
					"splits": 0,
					"bodies": {},
				}
				if assignment_day_chunk:
					wt_day = nt.getworkingtimeforchunk(assignment_day_chunk)
					assignment_day_chunk = []
					if current_assignment not in day_result[line_date]['bodies']:
							day_result[line_date]['bodies'][current_assignment] = initial.copy()
					day_result[line_date]['bodies'][current_assignment]['working'] += wt_day['working']
			if "Assigned bookmark" in l:
				# Retrieve bookmark
				bid = nt.getbookmarkid(l)
				if bid:
					if current_assignment and bid != current_assignment:
						wt = nt.getworkingtimeforchunk(assignment_chunk)
						wt_day = nt.getworkingtimeforchunk(assignment_day_chunk)
						assignment_chunk = []
						assignment_day_chunk = []
						result['bodies'][current_assignment]['working'] += wt['working']
						if current_assignment not in day_result[line_date]['bodies']:
							day_result[line_date]['bodies'][current_assignment] =  initial.copy()
						day_result[line_date]['bodies'][current_assignment]['working'] += wt_day['working']
						# add time to old assignment
					current_assignment = bid
					if current_assignment not in result['bodies']:
						# If not exists, create dictionary
						result['bodies'][current_assignment] = initial.copy()
			if "Merge operation saved." in l:
				result['merges'] += 1
				day_result[line_date]['merges'] += 1
				if current_assignment:
					result['bodies'][current_assignment]['merges'] += 1
					if current_assignment not in day_result[line_date]['bodies']:
						day_result[line_date]['bodies'][current_assignment] = initial.copy()
					day_result[line_date]['bodies'][current_assignment]['merges'] += 1

			if "splitted" in l:
				result['splits'] += 1
				day_result[line_date]['splits'] += 1
				if current_assignment:
					result['bodies'][current_assignment]['splits'] += 1
					if current_assignment not in day_result[line_date]['bodies']:
							day_result[line_date]['bodies'][current_assignment] = initial.copy()
					day_result[line_date]['bodies'][current_assignment]['splits'] += 1
			if current_assignment:
				assignment_chunk.append(l)
				assignment_day_chunk.append(l)
		# TODO synapses
		# TODO volume	
	return result, day_result