docs: def fastqIteratorSimple(fn, verbose=False, allowNameMissmatch=False):
    """
      A generator function that yields FastqSequence objects read from a
      fastq-format stream or filename. This is iterator requires that all
      sequence and quality data is provided on a single line -- put another way,
      it cannot parse fastq files with newline characters interspersed in the
      sequence and/or quality strings. That's probably okay though, as fastq
      files tend not to be formated like that (famous last words..).
  
      :param fn: filename or stream to read data from.
      :param allowNameMismatch:  don't throw error if name in sequence data
                                 and quality data parts of a read don't match.
                                 Newer version of CASVA seem to output data like
                                 this, probably to save space.
      :param verbose: if True, output additional status messages to stderr about
                      progress.
    """
    fh = fn
    if type(fh).__name__ == "str":
      fh = open(fh)
  
    # try to get an idea of how much data we have...
    if verbose:
      try:
        totalLines = os.path.getsize(fh.name)
        pind = ProgressIndicator(totalToDo=totalLines,
                                 messagePrefix="completed",
                                 messageSuffix="of processing "
                                               + fh.name)
      except AttributeError:
        sys.stderr.write("fastqIterator -- warning: " +
                         "unable to show progress for stream")
        verbose = False
  
    while True:
      # read four lines.. if we can't get four lines, something is wrong
      lines = []
      gotLines = 0
      while gotLines < 4:
        l = fh.readline()
        if verbose:
          pind.done = fh.tell()
          pind.showProgress()
  
        if l == "":
          # end of file found...
          if gotLines == 0:
            # ok, not in the middle of a sequence
            break
          else:
            raise FastqFileFormatError("reached end of file in the "
                                       + "middle of sequence data")
  
        l = l.strip()
        if l == "":
          continue
        lines.append(l)
        gotLines += 1
  
      # couldn't get any more data.. we're done
      if gotLines == 0:
        break
  
      # got our 4 lines, assemble our read..
      # first check that names match
      if lines[0][1:] != lines[2][1:] and not allowNameMissmatch:
        raise FastqFileFormatError("names in sequence don't match : " +
                                   str(lines[0][1:]) + " != " +
                                   str(lines[2][1:]))
      name = lines[0][1:]
      seq = lines[1]
      qual = lines[3]
      yield NGSRead(seq, name, qual)