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 _apply_sub_flow(self, flow_name, applied_flows):
      if flow_name in applied_flows:
          return
      flow = get_flow(flow_name)
  
      for sub_flow in flow.requires:
          if sub_flow not in applied_flows.keys():
              self._apply_sub_flow(sub_flow, applied_flows)
  
      if len(flow.optimizers) > 0:
          applied_passes = optimize_model(self, flow.optimizers)
      else:
          applied_passes = set()
      applied_flows[flow.name] = applied_passes
  
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 5 for calling the ModelGraph obj's underlying member method code with example usage: obj._apply_sub_flow(flow_name, applied_flows) without return types