From 947d7a5ce15ef9d1f747f1aac582ead74eea0de3 Mon Sep 17 00:00:00 2001 From: magdalenarussell Date: Mon, 20 Oct 2025 15:55:50 -0700 Subject: [PATCH 1/4] fixing slicing bug --- bdms/tree.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bdms/tree.py b/bdms/tree.py index b493f71..6656999 100644 --- a/bdms/tree.py +++ b/bdms/tree.py @@ -500,7 +500,8 @@ def slice(self, t: float, attr: str = "x") -> list[Any]: return [getattr(self, attr)] def is_leaf_fn(node: TreeNode): - assert node.up is not None + if node.is_root(): + return False return node.t >= t and node.up.t < t return [ From 32077368bd68e9ab3608330ee5732245a15338c9 Mon Sep 17 00:00:00 2001 From: magdalenarussell Date: Mon, 20 Oct 2025 15:59:56 -0700 Subject: [PATCH 2/4] adding optional state argument to constant process --- bdms/poisson.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bdms/poisson.py b/bdms/poisson.py index f61a350..005db3a 100644 --- a/bdms/poisson.py +++ b/bdms/poisson.py @@ -191,10 +191,12 @@ class ConstantProcess(HomogeneousProcess): Args: value: Constant rate. + attr: The name of the :py:class:`bdms.TreeNode` attribute to access. This + is not used by this process, but is included for downstream compatibility. """ - def __init__(self, value: float = 1.0): - super().__init__() + def __init__(self, value: float = 1.0, attr: str = "state"): + super().__init__(attr=attr) self.value = value def λ_homogeneous( From a553d5cec23d088952758291d2ffa5a758ddf9e1 Mon Sep 17 00:00:00 2001 From: magdalenarussell Date: Tue, 21 Oct 2025 11:57:31 -0700 Subject: [PATCH 3/4] removing is_root to satisfy the type checker --- bdms/tree.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bdms/tree.py b/bdms/tree.py index 6656999..cda8c32 100644 --- a/bdms/tree.py +++ b/bdms/tree.py @@ -500,9 +500,7 @@ def slice(self, t: float, attr: str = "x") -> list[Any]: return [getattr(self, attr)] def is_leaf_fn(node: TreeNode): - if node.is_root(): - return False - return node.t >= t and node.up.t < t + return node.up is not None and node.t >= t and node.up.t < t return [ (getattr(node, attr) if node.t == t else getattr(node.up, attr)) From 0f4d9ccb872ddff5730162f5de04d185e045eb01 Mon Sep 17 00:00:00 2001 From: "William S. DeWitt" Date: Tue, 21 Oct 2025 15:53:49 -0700 Subject: [PATCH 4/4] simpler time interval check syntax --- bdms/tree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bdms/tree.py b/bdms/tree.py index cda8c32..d40c5f3 100644 --- a/bdms/tree.py +++ b/bdms/tree.py @@ -500,7 +500,7 @@ def slice(self, t: float, attr: str = "x") -> list[Any]: return [getattr(self, attr)] def is_leaf_fn(node: TreeNode): - return node.up is not None and node.t >= t and node.up.t < t + return node.up is not None and (node.up.t < t <= node.t) return [ (getattr(node, attr) if node.t == t else getattr(node.up, attr))