def compute_edges(
        self, rules: List[str] = None, ast_result=False, fmt="medium"
    ) -> List[Mapping[str, Any]]:
        """Computed edges from primary BEL statement

        Takes an AST and generates all computed edges based on BEL Specification YAML computed signatures.
        Will run only the list of computed edge rules if given.

        Args:
            rules (list): a list of rules to filter; only the rules in this list will be applied to computed
            fmt (str): short, medium or long version of BEL Edge (function and relation names)
        Returns:
            List[Mapping[str, Any]]: BEL Edges in medium format
        """

        if not self.ast:
            return self

        edges_asts = bel.edge.computed.compute_edges(self.ast, self.spec)

        if ast_result:
            return edges_asts

        edges = []
        for ast in edges_asts:
            edges.append(
                {
                    "subject": ast.bel_subject.to_string(),
                    "relation": ast.bel_relation,
                    "object": ast.bel_object.to_string(),
                }
            )

        return edges
Computed edges from primary BEL statement

        Takes an AST and generates all computed edges based on BEL Specification YAML computed signatures.
        Will run only the list of computed edge rules if given.

        Args:
            rules (list): a list of rules to filter; only the rules in this list will be applied to computed
            fmt (str): short, medium or long version of BEL Edge (function and relation names)
        Returns:
            List[Mapping[str, Any]]: BEL Edges in medium format