class_docstr: Automagic DGL models from Graphistry Instances.
class_docstr_tok: ["Automagic","DGL","models","from","Graphistry","Instances","."]
code: def _check_nodes_lineup_with_edges(self):
      if self._nodes is None:
          res = self.materialize_nodes()
          node_column = res._node
          nodes = res._nodes[node_column]
      else:
          node_column = self._node
          nodes = self._nodes[node_column]
      # nodes = self._nodes[node_column]
      unique_nodes = nodes.unique()
      logger.info(
          f"{len(nodes)} entities from column {node_column}\n with {len(unique_nodes)} unique entities"
      )
      if len(nodes) != len(
          unique_nodes
      ):  # why would this be so? Oh might be so for logs data...oof
          logger.warning(
              f"Nodes DataFrame has duplicate entries for column {node_column}"
          )
      # now check that self._entity_to_index is in 1-1 to with self.ndf[node_column]
      # nodes = self._nodes[node_column]
      res = nodes.isin(self._entity_to_index)
      if res.sum() != len(nodes):
          logger.warning(
              "Some Edges connect to Nodes not explicitly mentioned in nodes DataFrame (ndf)"
          )
      if len(self._entity_to_index) > len(nodes):
          logger.warning(
              "There are more entities in edges DataFrame (edf) than in nodes DataFrame (ndf)"
          )
  
imports: from collections import Counter
  from typing import Dict, Optional, TYPE_CHECKING, Tuple
  import numpy
  import pandas
  from .None import constants
  from .feature_utils import FeatureEngine, FeatureMixin, resolve_feature_engine, XSymbolic, YSymbolic, resolve_X, resolve_y
  from .util import setup_logger
label_desc: Use image node_id 5 for calling the DGLGraphMixin obj's underlying member method code with example usage: obj._check_nodes_lineup_with_edges() without return types