docs: def get_checksum(self):
          '''
          Retrieve unique hash in a cross-platform manner:
          this is how calculation identity is determined
          '''
          if self._checksum:
              return self._checksum
  
          if not self._filename:
              raise RuntimeError('Source calc file is required in order to properly save the data!')
  
          calc_checksum = hashlib.sha224()
          struc_repr = ""
          for ase_obj in self.structures:
              struc_repr += "%3.6f %3.6f %3.6f %3.6f %3.6f %3.6f %3.6f %3.6f %3.6f " % tuple(map(abs, [ase_obj.cell[0][0], ase_obj.cell[0][1], ase_obj.cell[0][2], ase_obj.cell[1][0], ase_obj.cell[1][1], ase_obj.cell[1][2], ase_obj.cell[2][0], ase_obj.cell[2][1], ase_obj.cell[2][2]])) # NB beware of length & minus zeros
  
              for atom in ase_obj:
                  struc_repr += "%s %3.6f %3.6f %3.6f " % tuple(map(abs, [chemical_symbols.index(atom.symbol), atom.x, atom.y, atom.z])) # NB beware of length & minus zeros
  
          if self.info["energy"] is None:
              energy = str(None)
          else:
              energy = str(round(self.info['energy'], 11 - int(math.log10(math.fabs(self.info['energy'])))))
  
          calc_checksum.update((
              struc_repr + "\n" +
              energy + "\n" +
              self.info['prog'] + "\n" +
              str(self.info['input']) + "\n" +
              str(sum([2**x for x in self.info['calctypes']]))
          ).encode('ascii')) # NB this is fixed and should not be changed
  
          result = base64.b32encode(calc_checksum.digest()).decode('ascii')
          result = result[:result.index('=')] + 'CI'
          return result