code: def __load_cif__(cif_file, do_clean=True, do_type=True):
      parser = CIFParser()
      if cif_file[-3:].lower() == ".gz":
          parser.parse(gzip.open(cif_file))
      else:
          parser.parse(open(cif_file))
  
      if not do_clean:
          return parser.data
  
      for k, v in parser.data.items():
          for k2, v2 in v.items():
              for k3, v3 in v2.items():
                  for i in range(len(v3)):
                      v2[k3][i] = (
                          v3[i] not in ["?", "."] and v3[i]
                      )  # or None
  
      if not do_type or not __MMCIF_TYPING__:
          return parser.data
  
      for _, data in parser.data.items():
          for k, v in __MMCIF_TYPING__.items():
              if k not in data:
                  continue
              for k2, v2 in v.items():
                  if k2 in data[k]:
                      for r in range(len(data[k][k2])):
                          with contextlib.suppress(KeyError):
                              data[k][k2][r] = v2(data[k][k2][r])
      return parser.data
  
imports: import contextlib
  import gzip
  import json
  import re
label_desc: Use image node_id 12 for calling a global function with example usage: __load_cif__(cif_file, do_clean, do_type) and returns: parser, parser, parser