class_docstr: The ModelGraph represents the network that is being processed by hls4ml.
  
  Args:
      config (dict):  The configuration dictionary
      layer_list (list(dict)):  The list contains a dictionary for each input layer
      inputs (list, optional):  The inputs to the model. If None, determined from layer_list
      outputs (list, optional):  The outputs to the model. If None, determined from layer_list
code: def __init__(self, config, layer_list, inputs=None, outputs=None):
      self.config = HLSConfig(config)
  
      # keep track of the applied flows
      self._applied_flows = []
  
      # If not provided, assumes layer_list[0] is the input layer, and layer_list[-1] is output layer
  
      # Note, these are actually the variable names, which may differ from the layer name
      input_layers = (
          inputs if inputs is not None else [layer_list[0]["name"]]
      )
      output_layers = (
          outputs if outputs is not None else [layer_list[-1]["name"]]
      )
      self.inputs = self._find_output_variable_names(
          layer_list, input_layers
      )
      if self.inputs != input_layers:
          raise RuntimeError(
              "Currently only support the case when input variables and input layer names match\n"
              + f"Input layers = {input_layers}, input_vars = {self.inputs}"
          )
      self.outputs = self._find_output_variable_names(
          layer_list, output_layers
      )
  
      self.index = 0
      self.graph = OrderedDict()  # where the nodes are stored
      self.output_vars = {}
  
      self._top_function_lib = None
  
      self._make_graph(layer_list)
  
      for flow in self.config.flows:
          self.apply_flow(flow)
  
imports: import ctypes
  import os
  import platform
  from collections import OrderedDict
  import numpy
  import numpy.ctypeslib
  from hls4ml.backends import get_backend
  from hls4ml.model.flow import get_flow
  from hls4ml.model.layers import layer_map
  from hls4ml.model.optimizer import get_available_passes, optimize_model
label_desc: Use image node_id 1 to create a new ModelGraph object  with example: obj = ModelGraph(config, layer_list, inputs, outputs)