from .DataStream import EMchPosmap import numpy as np def calc_chratios(data,pos_map,start,end): view = data[[pos_map.succ_count, pos_map.fail_count, pos_map.commit_count], :] view = view[:, start:end] all = np.cumsum(view, axis=1) succ = all[0, :] commit = all[0, :] + all[1, :] commit += 0.0000001 y = succ / commit y = y.ravel() return int(all[0, -1]), int(all[0, -1] + all[1, -1]), y def calc_mchratios(data,pos_map,start,end): view = data[[pos_map.succ_count, pos_map.fail_count, pos_map.submit_count], :] view = view[:, start:end] all = np.cumsum(view, axis=1) succ = all[0, :] commit = all[0, :] + all[1, :] commit += 0.0000001 y = succ / commit y = y.ravel() return int(all[0, -1]), int(all[0, -1] + all[1, -1]), y def calc_morder_send(data, pos_map: type(EMchPosmap), start: int, end: int): view = data[:, start:end] sums = np.sum(view, axis=1) all_return = sums[pos_map.succ_count] + sums[pos_map.fail_count] + 0.0000001 ratio = sums[pos_map.succ_count] / all_return send_count = sums[pos_map.submit_count] - sums[pos_map.succ_count] - sums[pos_map.fail_count] send_amounts = sums[pos_map.submit_amounts] - sums[pos_map.succ_mch_amounts] - sums[pos_map.fail_mch_amounts] lack_amounts = send_amounts * ratio return send_count, sums[pos_map.submit_count], sums[pos_map.succ_count], sums[pos_map.fail_count], send_amounts, lack_amounts