def __init__(self,<EOL>graph: BELGraph,<EOL>target_node: BaseEntity,<EOL>key: Optional[str] = None,<EOL>tag: Optional[str] = None,<EOL>default_score: Optional[float] = None,<EOL>) -> None:
self.graph: BELGraph = graph.copy()<EOL>self.target_node = target_node<EOL>self.key = key or WEIGHT<EOL>self.default_score = default_score or DEFAULT_SCORE<EOL>self.tag = tag or SCORE<EOL>for node, data in self.graph.nodes(data=True):<EOL><INDENT>if not self.graph.predecessors(node):<EOL><INDENT>self.graph.nodes[node][self.tag] = data.get(self.key, <NUM_LIT:0>)<EOL>log.log(<NUM_LIT:5>, '<STR_LIT>', target_node, self.graph.nodes[node][self.tag])<EOL><DEDENT><DEDENT>
Initialize the heat diffusion runner class.

        :param graph: A BEL graph
        :param target_node: The BEL node that is the focus of this analysis
        :param key: The key in the node data dictionary representing the experimental data. Defaults to
         :data:`pybel_tools.constants.WEIGHT`.
        :param tag: The key for the nodes' data dictionaries where the scores will be put. Defaults to 'score'
        :param default_score: The initial score for all nodes. This number can go up or down.