docs: def run(self, 
          image = None,
          args = None,
          app = None,
          sudo = False,
          writable = False,
          contain = False,
          bind = None,
          stream = False,
          nv = False,
          return_result=False):
  
      '''
          run will run the container, with or withour arguments (which
          should be provided in a list)
      
          Parameters
          ==========
          image: full path to singularity image
          args: args to include with the run 
          app: if not None, execute a command in context of an app
          writable: This option makes the file system accessible as read/write
          contain: This option disables the automatic sharing of writable
                   filesystems on your host
          bind: list or single string of bind paths.
                This option allows you to map directories on your host system to
                directories within your container using bind mounts
          stream: if True, return <generator> for the user to run
          nv: if True, load Nvidia Drivers in runtime (default False)
          return_result: if True, return entire json object with return code
               and message result (default is False)
  
      '''
      from spython.utils import check_install
      check_install()
  
      cmd = self._init_command('run')
     
      # nv option leverages any GPU cards
      if nv is True:
          cmd += ['--nv']
  
      # No image provided, default to use the client's loaded image
      if image is None:
          image = self._get_uri()
  
      # If an instance is provided, grab it's name
      if isinstance(image, self.instance):
          image = image.get_uri()
  
      # Does the user want to use bind paths option?
      if bind is not None:
          cmd += self._generate_bind_list(bind)
  
      # Does the user want to run an app?
      if app is not None:
          cmd = cmd + ['--app', app]
  
      cmd = cmd + [image]
  
      # Conditions for needing sudo
      if writable is True:
          sudo = True
          
      if args is not None:        
          if not isinstance(args, list):
              args = args.split(' ')
          cmd = cmd + args
  
      if stream is False:
          result = self._run_command(cmd, 
                                     sudo=sudo, 
                                     return_result=return_result)
      else:
          return stream_command(cmd, sudo=sudo)
  
      # If the user wants the raw result object
      if return_result:
          return result
  
      # Otherwise, we parse the result if it was successful
      if result:
          result = result.strip('\n')
  
          try:
              result = json.loads(result)
          except:
              pass
          return result