def __init__( self, name: str, fluxes: aa.ValuesIrregular, noise_map: aa.ValuesIrregular, positions: aa.Grid2DIrregular, tracer: Tracer, point_profile: Optional[ag.ps.Point] = None, ): super().__init__(dataset=fluxes) self.tracer = tracer self._noise_map = noise_map self.name = name self.positions = positions self.point_profile = (tracer.extract_profile( profile_name=name) if point_profile is None else point_profile) if self.point_profile is None: raise exc.PointExtractionException( f"For the point-source named {name} there was no matching point source profile " f"in the tracer (make sure your tracer's point source name is the same the dataset name." ) elif not hasattr(self.point_profile, "flux"): raise exc.PointExtractionException( f"For the point-source named {name} the extracted point source was the " f"class {self.point_profile.__class__.__name__} and therefore does " f"not contain a flux component.")
def __init__( self, name: str, fluxes: aa.ValuesIrregular, noise_map: aa.ValuesIrregular, positions: aa.Grid2DIrregular, tracer: Tracer, point_profile: Optional[ag.ps.Point] = None, ): self.tracer = tracer self.name = name self.positions = positions if point_profile is None: point_profile = tracer.extract_profile(profile_name=name) self.point_profile = point_profile if self.point_profile is None: raise exc.PointExtractionException( f"For the point-source named {name} there was no matching point source profile " f"in the tracer (make sure your tracer's point source name is the same the dataset name." ) elif not hasattr(self.point_profile, "flux"): raise exc.PointExtractionException( f"For the point-source named {name} the extracted point source was the " f"class {self.point_profile.__class__.__name__} and therefore does " f"not contain a flux component.") if len(tracer.planes) > 2: upper_plane_index = tracer.extract_plane_index_of_profile( profile_name=name) deflections_func = partial( tracer.deflections_between_planes_from, plane_i=0, plane_j=upper_plane_index, ) else: deflections_func = tracer.deflections_yx_2d_from self.magnifications = abs( self.tracer.magnification_2d_via_hessian_from( grid=positions, deflections_func=deflections_func)) model_fluxes = aa.ValuesIrregular(values=[ magnification * self.point_profile.flux for magnification in self.magnifications ]) super().__init__( data=fluxes, noise_map=noise_map, model_data=model_fluxes, mask=None, inversion=None, )
def __init__( self, name: str, positions: aa.Grid2DIrregular, noise_map: aa.ValuesIrregular, tracer: Tracer, point_solver: PointSolver, point_profile: Optional[ag.ps.Point] = None, ): """ A lens position fitter, which takes a set of positions (e.g. from a plane in the tracer) and computes \ their maximum separation, such that points which tracer closer to one another have a higher log_likelihood. Parameters ----------- positions : Grid2DIrregular The (y,x) arc-second coordinates of positions which the maximum distance and log_likelihood is computed using. noise_value The noise-value assumed when computing the log likelihood. """ self.name = name if point_profile is None: point_profile = tracer.extract_profile(profile_name=name) self.point_profile = point_profile self.point_solver = point_solver if self.point_profile is None: raise exc.PointExtractionException( f"For the point-source named {name} there was no matching point source profile " f"in the tracer (make sure your tracer's point source name is the same the dataset name." ) self.source_plane_coordinate = self.point_profile.centre if len(tracer.planes) > 2: upper_plane_index = tracer.extract_plane_index_of_profile( profile_name=name) else: upper_plane_index = None model_positions = point_solver.solve( lensing_obj=tracer, source_plane_coordinate=self.source_plane_coordinate, upper_plane_index=upper_plane_index, ) model_positions = model_positions.grid_of_closest_from( grid_pair=positions) super().__init__( data=positions, noise_map=noise_map, model_data=model_positions, mask=None, inversion=None, )
def __init__( self, name: str, positions: aa.Grid2DIrregular, noise_map: aa.ValuesIrregular, tracer: Tracer, point_solver: PointSolver, point_profile: Optional[ag.ps.Point] = None, ): """ A lens position fitter, which takes a set of positions (e.g. from a plane in the tracer) and computes \ their maximum separation, such that points which tracer closer to one another have a higher log_likelihood. Parameters ----------- positions : Grid2DIrregular The (y,x) arc-second coordinates of positions which the maximum distance and log_likelihood is computed using. noise_value The noise-value assumed when computing the log likelihood. """ super().__init__(dataset=positions) self.name = name self._noise_map = noise_map self.tracer = tracer self.point_profile = ( tracer.extract_profile(profile_name=name) if point_profile is None else point_profile ) self.point_solver = point_solver if self.point_profile is None: raise exc.PointExtractionException( f"For the point-source named {name} there was no matching point source profile " f"in the tracer (make sure your tracer's point source name is the same the dataset name." ) self.source_plane_coordinate = self.point_profile.centre