docs: def from_summary_line(cls, summaryLine, version=4, existing_object=None):
          ''' Summary format:
          object  mag  stdev   dist  ..E nobs time av_xres av_yres max_x max_y
          a ..E  e  ..E  i ..E    node     ..E    argperi     ..E           M        ..E   ra_dis  dec_dis
          '''
          if not summaryLine:
              raise ValueError('No summary line given')
          if version == 4:
              params = summaryLine.split()
              if len(params) != 25:
                  print params
                  raise TypeError('Expected 25 columns, {0} given'.format(len(params)))
              input_params = params[0:1] + params[3:23]
              if not existing_object:
                  retval = cls(*input_params)
              else:
                  assert isinstance(existing_object, tno)
                  assert existing_object.name == params[0]
                  retval = existing_object
              retval.mean_mag = float(params[1])
              retval.mean_mag_stdev = float(params[2])
              retval.ra_discov = float(params[23])
              retval.dec_discov = float(params[24])
          else:
              raise VersionError('Unknown version "{0}"'.format(version))
          assert retval
          return retval