code: def send_to_sub_schedulers(
      self, msg, original_msg_id, targets, idents, is_coalescing
  ):
      trunc = 2**self.max_depth
      fmt = f"0{self.max_depth + 1}b"
  
      # assign targets to sub-schedulers based on binary path
      # compute binary '010110' representation of the engine id
      targets_by_scheduler = [
          [] for i in range(len(self.connected_sub_scheduler_ids))
      ]
      for target_tuple in targets:
          path = format(target_tuple[1] % trunc, fmt)
          next_idx = int(path[self.depth + 1])  # 0 or 1
          targets_by_scheduler[next_idx].append(target_tuple)
  
      if is_coalescing:
          self.accumulated_replies[original_msg_id] = {
              scheduler_id: None
              for scheduler_id in self.connected_sub_scheduler_ids
          }
          self.accumulated_targets[original_msg_id] = {}
  
      for i, scheduler_id in enumerate(
          self.connected_sub_scheduler_ids
      ):
          targets_for_scheduler = targets_by_scheduler[i]
          if is_coalescing:
              if targets_for_scheduler:
                  self.accumulated_targets[original_msg_id][
                      scheduler_id
                  ] = targets_for_scheduler
              else:
                  del self.accumulated_replies[original_msg_id][
                      scheduler_id
                  ]
          msg["metadata"]["targets"] = targets_for_scheduler
  
          new_msg = self.append_new_msg_id_to_msg(
              self.get_new_msg_id(original_msg_id, scheduler_id),
              scheduler_id,
              idents,
              msg,
          )
          self.outgoing_streams[i].send_multipart(new_msg, copy=False)
  
file_path: ipyparallel/ipyparallel/controller/broadcast_scheduler.py
imports: import logging
  import zmq
  from traitlets import Bool, Bytes, Integer, List, Unicode
  from ipyparallel import util
  from ipyparallel.controller.scheduler import Scheduler, ZMQStream, get_common_scheduler_streams
label_desc: Use image node_id 3 for calling the BroadcastScheduler obj's underlying member method code with example usage: obj.send_to_sub_schedulers(msg, original_msg_id, targets, idents, is_coalescing) without return types