class_docstr: Writes diagnostic information about the assembler.
class_docstr_tok: ["Writes","diagnostic","information","about","the","assembler","."]
docstr: Logs, if enabled, graph construction information for region.
docstr_tok: ["Logs",",","if","enabled",",","graph","construction","information","for","region","."]
code: def log_graph_metrics(
      self, region, graph, candidate_haplotypes, graph_building_time
  ):
      """Logs, if enabled, graph construction information for region."""
      if self.enabled:
          if graph:
              dest_file = self._file_for_region(
                  region, self.graph_filename
              )
              with epath.Path(dest_file).open("w") as f:
                  f.write(graph.graphviz())
          self._write_csv_line(
              ranges.to_literal(region),
              graph.kmer_size if graph else "NA",
              len(candidate_haplotypes),
              graph_building_time,
          )
  
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 8 for calling the DiagnosticLogger obj's underlying member method code with example usage: obj.log_graph_metrics(region, graph, candidate_haplotypes, graph_building_time) without return types