def __init__(self,
                 states_df,
                 score_type,
                 max_num_mtries,
                 ess=1.0,
                 verbose=False,
                 vtx_to_states=None):
        """
        Constructor

        Parameters
        ----------
        states_df : pandas.core.frame.DataFrame
        score_type : str
        max_num_mtries : int
        ess : float
            Equivalent Sample Size, a parameter in BDEU scorer. Fudge factor
            that is supposed to grow as the amount of prior knowledge grows.
        verbose : bool
        vtx_to_states : dict[str, list[str]]
            A dictionary mapping each node name to a list of its state names.
            This information will be stored in self.bnet. If
            vtx_to_states=None, constructor will learn vtx_to_states
            from states_df

        Returns
        -------
        None

        """

        NetStrucLner.__init__(self, False, states_df, vtx_to_states)

        self.max_num_mtries = max_num_mtries
        self.score_type = score_type
        self.verbose = verbose

        self.vertices = states_df.columns
        self.vtx_to_parents = {vtx: [] for vtx in self.vertices}

        # get vtx_to_states info from self.bnet
        vtx_to_states1 = {nd.name: nd.state_names for nd in self.bnet.nodes}
        self.scorer = NetStrucScorer(self.states_df, self.vtx_to_parents,
                                     vtx_to_states1, score_type, ess)

        self.nx_graph = nx.DiGraph()

        self.climb()