code: def run(self):
          
          cmd = list(self.vasp_cmd)
          if self.auto_gamma:
              vi = VaspInput.from_directory(".")
              kpts = vi["KPOINTS"]
              if kpts.style == Kpoints.supported_modes.Gamma \
                      and tuple(kpts.kpts[0]) == (1, 1, 1):
                  if self.gamma_vasp_cmd is not None and which(
                          self.gamma_vasp_cmd[-1]):
                      cmd = self.gamma_vasp_cmd
                  elif which(cmd[-1] + ".gamma"):
                      cmd[-1] += ".gamma"
          logger.info("Running {}".format(" ".join(cmd)))
          with open(self.output_file, 'w') as f_std, \
                  open(self.stderr_file, "w", buffering=1) as f_err:
              # use line buffering for stderr
              p = subprocess.Popen(cmd, stdout=f_std, stderr=f_err)
          return p
docs: Perform the actual VASP run.
  
          Returns:
              (subprocess.Popen) Used for monitoring.