Return SkyCoords of the objects, propagated to a (single) given epoch.

        Parameters
        ----------
        epoch : Time, or float
            Either an astropy time, or a decimal year of the desired epoch.

        Returns
        -------
        coordinates : SkyCoord(s)
            The coordinates, propagated to the given epoch,
            with that epoch stored in the obstime attribute.

def atEpoch(self, epoch=2000):
        '''
        Return SkyCoords of the objects, propagated to a (single) given epoch.

        Parameters
        ----------
        epoch : Time, or float
            Either an astropy time, or a decimal year of the desired epoch.

        Returns
        -------
        coordinates : SkyCoord(s)
            The coordinates, propagated to the given epoch,
            with that epoch stored in the obstime attribute.
        '''

        projected = copy.deepcopy(self.standardized)

        # calculate the time offset from the epochs of the orignal coordinates
        try:
            epoch.year
            newobstime = epoch
        except AttributeError:
            try:
                newobstime = epoch.decimalyear*u.year
            except AttributeError:
                newobstime = epoch*u.year

        #with warnings.catch_warnings() :
        #    warnings.filterwarnings("ignore")
        #    newobstime = Time(year, format='decimalyear')
        #    dt = newobstime - self.obstime
        dt = newobstime - self.obstime

        # calculate the new positions, propagated linearly by dt
        try:
            # if proper motions exist
            newra = (self.ra + self.pm_ra_cosdec/np.cos(self.dec)*dt).to(u.deg)
            newdec = (self.dec + self.pm_dec*dt).to(u.deg)
        except TypeError:
            # assume no proper motions, if they're not defined
            newra = self.ra
            newdec = self.dec
            self.speak('no proper motions were used for {}'.format(self.name))

        projected['ra'] = newra
        projected['dec'] = newdec
        projected['obstime'] = newobstime

        # return as SkyCoord object
        return self.__class__(projected)