code: def spin_data(self):
          
          if not self._spin_data:
              spin_data = dict()
              spin_data[Spin.up] = 0.5 * (self.data["total"] +
                                          self.data.get("diff", 0))
              spin_data[Spin.down] = 0.5 * (self.data["total"] -
                                            self.data.get("diff", 0))
              self._spin_data = spin_data
          return self._spin_data
docs: The data decomposed into actual spin data as {spin: data}.
          Essentially, this provides the actual Spin.up and Spin.down data
          instead of the total and diff.  Note that by definition, a
          non-spin-polarized run would have Spin.up data == Spin.down data.