code: def as_dict(self):
          
          structure = self.final_structure
          d = {"has_gaussian_completed": self.properly_terminated,
               "nsites": len(structure)}
          comp = structure.composition
          d["unit_cell_formula"] = comp.as_dict()
          d["reduced_cell_formula"] = Composition(comp.reduced_formula).as_dict()
          d["pretty_formula"] = comp.reduced_formula
          d["is_pcm"] = self.is_pcm
          d["errors"] = self.errors
          d["Mulliken_charges"] = self.Mulliken_charges
  
          unique_symbols = sorted(list(d["unit_cell_formula"].keys()))
          d["elements"] = unique_symbols
          d["nelements"] = len(unique_symbols)
          d["charge"] = self.charge
          d["spin_multiplicity"] = self.spin_multiplicity
  
          vin = {"route": self.route_parameters, "functional": self.functional,
                 "basis_set": self.basis_set,
                 "nbasisfunctions": self.num_basis_func,
                 "pcm_parameters": self.pcm}
  
          d["input"] = vin
  
          nsites = len(self.final_structure)
  
          vout = {
              "energies": self.energies,
              "final_energy": self.final_energy,
              "final_energy_per_atom": self.final_energy / nsites,
              "molecule": structure.as_dict(),
              "stationary_type": self.stationary_type,
              "corrections": self.corrections
          }
  
          d['output'] = vout
          d["@module"] = self.__class__.__module__
          d["@class"] = self.__class__.__name__
  
          return d
docs: Json-serializable dict representation.