code: def _gzip_fastq(in_file, out_dir=None):
      
      if fastq.is_fastq(in_file) and not objectstore.is_remote(in_file):
          if utils.is_bzipped(in_file):
              return _bzip_gzip(in_file, out_dir)
          elif not utils.is_gzipped(in_file):
              if out_dir:
                  gzipped_file = os.path.join(out_dir, os.path.basename(in_file) + ".gz")
              else:
                  gzipped_file = in_file + ".gz"
              if file_exists(gzipped_file):
                  return gzipped_file
              message = "gzipping {in_file} to {gzipped_file}.".format(
                  in_file=in_file, gzipped_file=gzipped_file)
              with file_transaction(gzipped_file) as tx_gzipped_file:
                  do.run("gzip -c {in_file} > {tx_gzipped_file}".format(**locals()),
                         message)
              return gzipped_file
      return in_file
docs: gzip a fastq file if it is not already gzipped, handling conversion
      from bzip to gzipped files