docs: def create_ascii_table(observation_table, outfile):
      """Given a table of observations create an ascii log file for easy parsing.
      Store the result in outfile (could/should be a vospace dataNode)
  
      observation_table: astropy.votable.array object
      outfile: str (name of the vospace dataNode to store the result to)
  
      """
  
      logging.info("writing text log to %s" % outfile)
  
      stamp = "#\n# Last Updated: " + time.asctime() + "\n#\n"
      header = "| %20s | %20s | %20s | %20s | %20s | %20s | %20s |\n" % (
          "EXPNUM", "OBS-DATE", "FIELD", "EXPTIME(s)", "RA", "DEC", "RUNID")
      bar = "=" * (len(header) - 1) + "\n"
  
      if outfile[0:4] == "vos:":
          temp_file = tempfile.NamedTemporaryFile(suffix='.txt')
          fout = temp_file
      else:
          fout = open(outfile, 'w')
  
      t2 = None
      fout.write(bar + stamp + bar + header)
  
      populated = storage.list_dbimages()
      for i in range(len(observation_table) - 1, -1, -1):
          row = observation_table.data[i]
          if row['dataset_name'] not in populated:
              storage.populate(row['dataset_name'])
          str_date = str(ephem.date(row.StartDate +
                                    2400000.5 -
                                    ephem.julian_date(ephem.date(0))))[:20]
          t1 = time.strptime(str_date, "%Y/%m/%d %H:%M:%S")
          if t2 is None or math.fabs(time.mktime(t2) - time.mktime(t1)) > 3 * 3600.0:
              fout.write(bar)
          t2 = t1
          ra = str(ephem.hours(math.radians(row.RA)))
          dec = str(ephem.degrees(math.radians(row.DEC)))
          line = "| %20s | %20s | %20s | %20.1f | %20s | %20s | %20s |\n" % (
              str(row.dataset_name),
              str(ephem.date(row.StartDate + 2400000.5 -
                             ephem.julian_date(ephem.date(0))))[:20],
              row.TargetName[:20],
              row.ExposureTime, ra[:20], dec[:20], row.ProposalID[:20])
          fout.write(line)
  
      fout.write(bar)
  
      if outfile[0:4] == "vos:":
          fout.flush()
          storage.copy(fout.name, outfile)
      fout.close()
  
      return