code: def copy_read(read, part):
      """Copies a read proto to create a new read part."""
      new_read = reads_pb2.Read()
      new_read.CopyFrom(read)
  
      # Reset alignment information.
      # Note: If long reads will be used here, convert
      # to approach used for read trimming.
      new_read.alignment.Clear()
      new_read.aligned_quality[:] = []
      new_read.aligned_sequence = ""
      new_read.alignment.position.reference_name = (
          read.alignment.position.reference_name
      )
      new_read.alignment.position.reverse_strand = (
          read.alignment.position.reverse_strand
      )
      new_read.alignment.mapping_quality = (
          read.alignment.mapping_quality
      )
      new_read.fragment_name = f"{new_read.fragment_name}_p{part}"
      return new_read
  
imports: import csv
  import os
  import os.path
  from absl import flags
  from etils import epath
  from deepvariant.protos import realigner_pb2
  from deepvariant.realigner import window_selector
  from deepvariant.realigner.python import debruijn_graph
  from deepvariant.realigner.python import fast_pass_aligner
  from deepvariant.vendor import timer
  from google.protobuf import text_format
  from third_party.nucleus.io import sam
  from third_party.nucleus.protos import cigar_pb2
  from third_party.nucleus.protos import reads_pb2
  from third_party.nucleus.util import cigar
  from third_party.nucleus.util import ranges
  from third_party.nucleus.util import utils
  from third_party.nucleus.util.cigar import READ_ADVANCING_OPS
  from third_party.nucleus.util.cigar import REF_ADVANCING_OPS
label_desc: Use image node_id 4 for calling a global function with example usage: copy_read(read, part) and returns: new_read