docs: def find_subject_path(sid):
      '''
      find_subject_path(sub) yields the full path of a HCP subject with the name given by the string
        sub, if such a subject can be found in the HCP search paths. See also add_subject_path.
  
      If no subject is found, then None is returned.
      '''
      # if it's a full/relative path already, use it:
      sub = str(sid)
      sdirs = config['hcp_subject_paths']
      if _auto_download_options is not None and 'subjects_path' in _auto_download_options:
          sdirs = list(sdirs) + [_auto_download_options['subjects_path']]
      if os.path.isdir(sub): return os.path.abspath(sub)
      pth = next((os.path.abspath(p) for sd in sdirs
                  for p in [os.path.join(sd, sub)]
                  if os.path.isdir(p)),
                 None)
      if pth is not None: return pth
      # see if we can create them
      if _auto_download_options is None or not _auto_download_options['structure'] or \
         not _auto_downloadable(sid):
          return None
      # first see if the subject existst there
      pth = os.path.join(_auto_download_options['subjects_path'], sub)
      if os.path.isdir(pth): return pth
      try: os.makedirs(os.path.abspath(pth), 0o755)
      except Exception: return None
      return pth