def get_causal_data()

in src/responsibleai/rai_analyse/_score_card/_rai_insight_data.py [0:0]


    def get_causal_data(self):
        def visit(node, parents, leaves_collection):
            import copy

            if node.leaf:
                leaf = {
                    "n_samples": node.n_samples,
                    "treatment": node.treatment,
                    "parents": parents,
                }

                leaves_collection.append(leaf)

            else:
                this_node = {
                    "feature": node.feature,
                    "right_comparison": node.right_comparison,
                    "comparison_value": node.comparison_value,
                }

                # dictionary assignment is by reference. Need deepcopy for by value assignment
                node_left = copy.deepcopy(this_node)
                node_right = copy.deepcopy(this_node)

                node_left["path"] = "left"
                node_right["path"] = "right"
                pat_left = parents + [node_left]
                pat_right = parents + [node_right]

                visit(node.left, pat_left, leaves_collection)
                visit(node.right, pat_right, leaves_collection)

            return leaves_collection

        ca = self.raiinsight.causal.get_data()[0]

        return {
            "global_effect": {k["feature"]: k for k in ca.global_effects},
            "policy_treatments": {
                k.treatment_feature: visit(k.policy_tree, [], []) for k in ca.policies
            },
            "top_local_policies": {
                k.treatment_feature: k.local_policies[:3] for k in ca.policies
            },
        }