def METHOD_NAME(self, **specs):
    PPop = self.PlanetPopulation
    OS = self.OpticalSystem
    tmp = PPop.allplanetdata[:]
    # filter out targets with planets outside of WA range
    dist = tmp["st_dist"].filled() * u.pc
    mask = (
        ~tmp["st_dist"].mask
        & (np.arctan(PPop.sma * (1 + PPop.eccen) / dist) > OS.IWA)
        & (np.arctan(PPop.sma * (1 - PPop.eccen) / dist) < OS.OWA)
    )
    tmp = tmp[mask]
    # filter out redundant targets
    tmp = tmp[np.unique(tmp["pl_hostname"].data, return_index=True)[1]]
    # filter missing Vmag and BV, for integration time calculation
    tmp = tmp[~tmp["st_vj"].mask]
    tmp = tmp[~tmp["st_bmvj"].mask]
    self.nStars = len(tmp)
    assert self.nStars, "Target list is empty: nStars = %r" % self.nStars
    for att in self.atts_mapping:
        ma = tmp[self.atts_mapping[att]]
        if isinstance(ma.fill_value, np.float64):
            setattr(self, att, ma.filled(np.nan))
        else:
            if (att == "Name") or (att == "Spec"):
                setattr(self, att, ma.data.astype(str))
            else:
                setattr(self, att, ma.data)
    # astropy units
    self.parx = self.parx * u.mas
    self.dist = self.dist * u.pc
    self.pmra = self.pmra * u.mas / u.yr
    self.pmdec = self.pmdec * u.mas / u.yr
    self.rv = self.rv * u.km / u.s
    self.BC = -2.5 * self.L - 26.832 - self.Vmag
    self.L = 10.0**self.L
    self.MV = self.Vmag - 5 * (np.log10(self.dist.to("pc").value) - 1)
    self.coords = SkyCoord(
        ra=tmp["ra"] * u.deg, dec=tmp["dec"] * u.deg, distance=self.dist
    )
    self.Binary_Cut = np.zeros(self.nStars, dtype=bool)
    self.hasKnownPlanet = np.ones(self.nStars, dtype=bool)