diff --git a/gsrp_smart_util.py b/gsrp_smart_util.py index a5463296616224a3cc9486d43e9b3c0200673f2b..a13d51b62abe9d018ef4af387c247707b774a032 100644 --- a/gsrp_smart_util.py +++ b/gsrp_smart_util.py @@ -50,14 +50,16 @@ def gen_tree(size): def op_tree(tree): program = [list() for _ in range(len(tree))] - clean_list = [list() for _ in range(len(tree) + 1)] + clean_list = [list() for _ in range(len(tree))] program[0] = [Operation('mem', 0, group[0], len(tree)) for group in tree[0]] for i in range(1, len(tree)): for group in tree[i]: if group[:-1] in tree[i-1]: - j = tree[i-1].index(group[:-1]) - program[i-1][j].lifetime = i - program[i].append(Operation('mul', j, tree[0].index(group[-1:]), i)) + j1 = tree[i-1].index(group[:-1]) + j2 = tree[0].index(group[-1:]) + program[i].append(Operation('mul', j1, j2, i)) + program[i-1][j1].lifetime = i + program[0][j2].lifetime = i else: for j in range(i-1, -1, -1): if group in tree[j]: diff --git a/gsrp_tdoa_hyperres.py b/gsrp_tdoa_hyperres.py index ff59caf669b567d50091b03ab69acd340e093555..a6b5a09bc7ebd541bcdce0f74469cea2e6546410 100755 --- a/gsrp_tdoa_hyperres.py +++ b/gsrp_tdoa_hyperres.py @@ -92,13 +92,13 @@ def corr(data, pos, w_size, max_tdoa, decimate=1, mode='prepare', hyper=True): num_channels - 1, -1).T taus = np.matmul(mat, taus.T) taus = taus[:, np.abs(taus).max(0) <= cc_size // 2] - mean = taus.mean(-1)[:3] - coef = pipe.fit(taus.T[:, :3] - mean, + mean = taus.mean(-1)[:num_channels-1] + coef = pipe.fit(taus.T[:, :num_channels-1] - mean, cc[np.expand_dims(np.arange(num_channel_pairs), 1), taus.astype(int)].prod(0) ).named_steps['lin'].coef_ der = np.zeros((num_channels - 1, num_channels - 1)) - der[ind] = coef[4:] - poly_min = np.linalg.lstsq(der + der.T, -coef[1:4], rcond=None)[0] + der[ind] = coef[num_channels:] + poly_min = np.linalg.lstsq(der + der.T, -coef[1:num_channels], rcond=None)[0] return np.log10(pipe.predict(poly_min[np.newaxis]).item()), mat @ (poly_min + mean) cc = np.empty((num_channel_pairs, dw_size), np.float32) @@ -237,9 +237,11 @@ if __name__ == "__main__": group2 = parser.add_argument_group('Size settings') group2.add_argument('-f', '--frame-size', type=float, default=0.02, help='The size of the cross-correlation frames in seconds (default: %(default)s)') - group2.add_argument('-s', '--stride', type=str, default='0.01', - help='The step between the beginnings of sequential frames in seconds (default: %(default)s), ' - 'or the postion in second if csv file path is given.') + group2_s = group2.add_mutually_exclusive_group() + group2_s.add_argument('-s', '--stride', type=str, default='0.01', + help='The step between the beginnings of sequential frames in seconds (default: %(default)s)') + group2_s.add_argument('-p', '--pos', type=str, default='pos.csv', + help='The position in second from csv file path (default: %(default)s)') group2.add_argument('-m', '--max-tdoa', type=float, default=0.0011, help='The maximum TDOA in seconds (default: %(default)s).') @@ -280,5 +282,5 @@ if __name__ == "__main__": sys.exit(main(args)) except Exception as e: - print(e) + print(type(e).__name__, e, sep=': ') sys.exit(2)