code: def _copy_and_reop(
      source_node, IR_node, new_op=None, shape_transpose=False
  ):
      if new_op == None:
          new_op = source_node.type
      IR_node.name = source_node.real_name
      IR_node.op = new_op
  
      kwargs = {}
  
      if hasattr(source_node.layer, "dtype"):
          assert (
              source_node.layer.dtype in CntkParser.dtype_map
          ), "type [{}] is unknown.".format(source_node.layer.dtype)
          IR_node.attr["dtype"].type = CntkParser.dtype_map[
              source_node.layer.dtype
          ]
  
      if hasattr(source_node.layer, "shape"):
          shape = (-1,) + source_node.layer.shape
          if shape_transpose:
              shape = CntkParser.channel_first_shape_to_IR(shape)
          shape = list_to_shape(shape)
          kwargs["_output_shapes"] = [shape]
  
      assign_IRnode_values(IR_node, kwargs)
  
imports: import os
  import numpy
  from six.moves import xrange
  import cntk
  from mmdnn.conversion.cntk.cntk_graph import CntkGraph
  import mmdnn.conversion.common.IR.graph_pb2
  from mmdnn.conversion.common.IR.graph_pb2 import NodeDef, GraphDef, DataType
  from mmdnn.conversion.common.utils import *
  from mmdnn.conversion.common.DataStructure.parser import Parser
label_desc: Use image node_id 6 for calling the CntkParser obj's underlying member method code with example usage: obj._copy_and_reop(source_node, IR_node, new_op, shape_transpose) without return types