class_docstr: A region to assemble, holding the region Range and the reads.
  
  It is not safe to directly modify any of the attributes here. Use the accessor
  functions to add a read to the reads.
  
  Attributes:
    candidate_haplotypes: realigner.CandidateHaplotypes for this region.
    reads: list[reads_pb2.Read]. Reads for this region.
    region: range_pb2.Range. This is the span of the assembled region on the
      genome.
    read_span: range_pb2.Range. This is the span of reads added to this region.
      The read_span in general is expected to be wider than the region itself,
      since we often include all reads that overlap the region at all. It is
      possible that read_span will be smaller than region, which can happen, for
      example, when we only have reads starts in the middle of the region.
      Here's a picture of when this can happen: ref      : acgtACGTACgtgt region
      :     ------ read1    :       GGa
  read_span:       ---
class_docstr_tok: ["A","region","to","assemble",",","holding","the","region","Range","and","the","reads",".","It","is","not","safe","to","directly","modify","any","of","the","attributes","here",".","Use","the","accessor","functions","to","add","a","read","to","the","reads",".","Attributes",":","candidate_haplotypes",":","realigner.CandidateHaplotypes","for","this","region",".","reads",":","list","[","reads_pb2.Read","]",".","Reads","for","this","region",".","region",":","range_pb2.Range",".","This","is","the","span","of","the","assembled","region","on","the","genome",".","read_span",":","range_pb2.Range",".","This","is","the","span","of","reads","added","to","this","region",".","The","read_span","in","general","is","expected","to","be","wider","than","the","region","itself",",","since","we","often","include","all","reads","that","overlap","the","region","at","all",".","It","is","possible","that","read_span","will","be","smaller","than","region",",","which","can","happen",",","for","example",",","when","we","only","have","reads","starts","in","the","middle","of","the","region",".","Here","'s","a","picture","of","when","this","can","happen",":","ref",":","acgtACGTACgtgt","region",":","--","--","--","read1",":","GGa","read_span",":","--","-"]
code: def add_read(self, read):
      self.reads.append(read)
      self._read_span = None
  
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 6 for calling the AssemblyRegion obj's underlying member method code with example usage: obj.add_read(read) without return types