docs: def run_program_profile(self, n, program_or_profile='program',
                              timeout=10.0):
          """ Runs a program/profile on the drive.
  
          Runs program or profile 'n' on the drive, grabs its output, and
          processes the output. The response from the drive is broken down
          into the echoed command (drive echoes it back), any error
          returned by the drive (leading '*' is stripped), and the
          different lines of the response; which are all returned.
  
          It is **VERY IMPORTANT** that 'timeout' is long enough for the
          program to run if all the output from the drive is to be
          collected.
  
          Parameters
          ----------
          n : int
              Which program to get.
          program_or_profile : {'program', 'profile'}, optional
              Whether to read a program or a profile. Anything other than
              these two values implies the default.
          timeout : number, optional
              Optional timeout in seconds to use when reading the
              response for running a program (set to 1.0 for a profile
              regardless of what is given). A negative value or ``None``
              indicates that the an infinite timeout should be used.
  
          Returns
          -------
          output : list
              A 5-element ``list``. The elements, in order, are the
              sanitized command (``str``), the full response (``str``),
              the echoed command (``str``), any error response (``None``
              if none, or the ``str`` of the error), and the lines of the
              response that are not the echo or error line (``list`` of
              ``str`` with newlines stripped).
  
          Notes
          -----
          Sends 'RUN PROGn' (program) or 'PRUN PROFn' (profile) as the
          command to the drive. For a profile, the only output is that
          command echoed back. For a program, it will echo back each
          command in the program (preceeded by an '*' and followed by a
          line feed as opposed to a carriage return).
  
          See Also
          --------
          get_program : Gets a program.
          set_program_profile : Sets a program or profile.
  
          """
          if program_or_profile != 'profile':
              return self.driver.send_command('RUN PROG' + str(int(n)), \
                  timeout=timeout, immediate=True, eor='*END\n')
          else:
              return self.driver.send_command( \
                  'PRUN PROF' + str(int(n)), timeout=1.0, immediate=True)