def _lnlike(): """ Internal function for the log likelihood function. Noise of each pixel is assumed to follow either a Poisson distribution (see Wertz et al. 2017) or a Gaussian distribution with a correction for small sample statistics (see Mawet et al. 2014). Returns ------- float Log likelihood. """ sep, ang, mag = param fake = fake_planet(images=images, psf=psf, parang=parang - extra_rot, position=(sep / pixscale, ang), magnitude=mag, psf_scaling=psf_scaling) _, im_res = pca_psf_subtraction(images=fake * mask, angles=-1. * parang + extra_rot, pca_number=pca_number, indices=indices) stack = combine_residuals(method=residuals, res_rot=im_res) merit = merit_function(residuals=stack[0, ], function='sum', variance=variance, aperture=aperture, sigma=0.) return -0.5 * merit
def _lnlike(): """ Internal function for the log likelihood function. Returns ------- float Log likelihood. """ sep, ang, mag = param fake = fake_planet(images=images, psf=psf, parang=parang - extra_rot, position=(sep / pixscale, ang), magnitude=mag, psf_scaling=psf_scaling) _, im_res = pca_psf_subtraction(images=fake * mask, angles=-1. * parang + extra_rot, pca_number=pca_number, indices=indices) res_stack = combine_residuals(method=residuals, res_rot=im_res) chi_square = merit_function(residuals=res_stack[0, ], merit=merit, aperture=aperture, sigma=0.) return -0.5 * chi_square
def _objective(arg): sys.stdout.write('.') sys.stdout.flush() pos_y = arg[0] pos_x = arg[1] mag = arg[2] sep_ang = cartesian_to_polar(center, pos_y, pos_x) fake = fake_planet(images=images, psf=psf, parang=parang, position=(sep_ang[0], sep_ang[1]), magnitude=mag, psf_scaling=self.m_psf_scaling) mask = create_mask(fake.shape[-2:], (self.m_cent_size, self.m_edge_size)) if self.m_reference_in_port is None: _, im_res = pca_psf_subtraction(images=fake*mask, angles=-1.*parang+self.m_extra_rot, pca_number=self.m_pca_number, pca_sklearn=None, im_shape=None, indices=None) else: im_reshape = np.reshape(fake*mask, (im_shape[0], im_shape[1]*im_shape[2])) _, im_res = pca_psf_subtraction(images=im_reshape, angles=-1.*parang+self.m_extra_rot, pca_number=self.m_pca_number, pca_sklearn=sklearn_pca, im_shape=im_shape, indices=None) res_stack = combine_residuals(method=self.m_residuals, res_rot=im_res) self.m_res_out_port.append(res_stack, data_dim=3) chi_square = merit_function(residuals=res_stack[0, ], merit=self.m_merit, aperture=aperture, sigma=self.m_sigma) position = rotate_coordinates(center, (pos_y, pos_x), -self.m_extra_rot) res = np.asarray([position[1], position[0], sep_ang[0]*pixscale, (sep_ang[1]-self.m_extra_rot) % 360., mag, chi_square]) self.m_flux_position_port.append(res, data_dim=2) return chi_square
def _objective(arg): sys.stdout.write('.') sys.stdout.flush() pos_y = arg[0] pos_x = arg[1] mag = arg[2] sep = math.sqrt((pos_y - center[0])**2 + (pos_x - center[1])**2) ang = math.atan2(pos_y - center[0], pos_x - center[1]) * 180. / math.pi - 90. fake = fake_planet(images=images, psf=psf, parang=parang, position=(sep, ang), magnitude=mag, psf_scaling=self.m_psf_scaling) im_shape = (fake.shape[-2], fake.shape[-1]) mask = create_mask(im_shape, [self.m_cent_size, self.m_edge_size]) _, im_res = pca_psf_subtraction(images=fake * mask, angles=-1. * parang + self.m_extra_rot, pca_number=self.m_pca_number) stack = combine_residuals(method=self.m_residuals, res_rot=im_res) self.m_res_out_port.append(stack, data_dim=3) merit = merit_function(residuals=stack, function=self.m_merit, variance="poisson", aperture=self.m_aperture, sigma=self.m_sigma) position = rotate_coordinates(center, (pos_y, pos_x), -self.m_extra_rot) res = np.asarray((position[1], position[0], sep * pixscale, (ang - self.m_extra_rot) % 360., mag, merit)) self.m_flux_position_port.append(res, data_dim=2) return merit