22from anytree import PreOrderIter
33
44from python_polar_coding .polar_codes .sc import SCDecoder
5+ from python_polar_coding .polar_codes .base .functions import (
6+ compute_left_alpha ,
7+ compute_right_alpha ,
8+ )
59
610from .node import FastSSCNode
711
@@ -18,12 +22,13 @@ def __init__(
1822 code_min_size : int = 0 ,
1923 ):
2024 super ().__init__ (n = n , mask = mask , is_systematic = is_systematic )
21- self ._decoding_tree = self .node_class (
22- mask = self .mask ,
23- N_min = code_min_size ,
24- )
25+ self ._decoding_tree = self .setup_decoding_tree (code_min_size )
2526 self ._position = 0
2627
28+ def setup_decoding_tree (self , N_min , ** kwargs ):
29+ """Setup decoding tree."""
30+ return self .node_class (mask = self .mask , N_min = N_min )
31+
2732 def _set_initial_state (self , received_llr ):
2833 """Initialize decoder with received message."""
2934 self .current_state = np .zeros (self .n , dtype = np .int8 )
@@ -73,12 +78,12 @@ def compute_intermediate_alpha(self, leaf):
7378 parent_alpha = node .parent .alpha
7479
7580 if node .is_left :
76- node .alpha = self . _compute_left_alpha (parent_alpha )
81+ node .alpha = compute_left_alpha (parent_alpha )
7782 continue
7883
7984 left_node = node .siblings [0 ]
8085 left_beta = left_node .beta
81- node .alpha = self . _compute_right_alpha (parent_alpha , left_beta )
86+ node .alpha = compute_right_alpha (parent_alpha , left_beta )
8287 node .is_computed = True
8388
8489 def compute_intermediate_beta (self , node ):
0 commit comments