From ebff226211da8a0f7ff987bc6c7f4c77ae4c701b Mon Sep 17 00:00:00 2001 From: alexC-nonsense4k <81558325+alexC-nonsense4k@users.noreply.github.com> Date: Sat, 3 Feb 2024 02:46:36 +0800 Subject: [PATCH 1/2] Update mpmatching_utils.py 2023/02/03 the key "target" may not be in the predecessor check if key in the predecessor or not before the "get" occurs --- pytrack/matching/mpmatching_utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pytrack/matching/mpmatching_utils.py b/pytrack/matching/mpmatching_utils.py index 74e8abf..973899f 100644 --- a/pytrack/matching/mpmatching_utils.py +++ b/pytrack/matching/mpmatching_utils.py @@ -187,10 +187,22 @@ def get_predecessor(target, predecessor): pred_elab: dict Dictionary containing the predecessors of the best nodes of a decoded Trellis DAG. """ + + """ + 2023/02/03 + + the key "target" may not be in the predecessor + check if key in the predecessor or not before the "get" occurs + """ + pred_elab = {} + if target not in predecessor: + return {} pred = predecessor[target] while pred != "start": pred_elab[target.split("_")[0]] = pred target = pred + if target not in predecessor: + return {} pred = predecessor[target] return pred_elab From 54a6df1cced55db48d0fa11af9ae62a57b9b165a Mon Sep 17 00:00:00 2001 From: alexC-nonsense4k <81558325+alexC-nonsense4k@users.noreply.github.com> Date: Sat, 3 Feb 2024 02:48:09 +0800 Subject: [PATCH 2/2] Update mpmatching.py Decoupling get_predecessor and viterbi_search --- pytrack/matching/mpmatching.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pytrack/matching/mpmatching.py b/pytrack/matching/mpmatching.py index 9de529e..d306550 100644 --- a/pytrack/matching/mpmatching.py +++ b/pytrack/matching/mpmatching.py @@ -79,6 +79,8 @@ def viterbi_search(G, trellis, start="start", target="target", beta=mpmatching_u except Exception as error: print(error) - predecessor = mpmatching_utils.get_predecessor("target", predecessor) + # get_predecessor and viterbi_search should seperate. Decoupling! + + #predecessor = mpmatching_utils.get_predecessor("target", predecessor) return joint_prob[target], predecessor