effects ======= Effect ++++++ Base class for representing the effects (artifacts) in an optical system. The ``Effect`` class is conceived to independently apply the changes that an optical component (or series thereof) has on an incoming 3D description of an on-sky object. In other words, **an Effect object should receive a derivative of a ``Source`` object, alter it somehow, and return it**. The interface for the Effect base-class has been kept very general so that it can easily be sub-classed as data for new effects becomes available. Essentially, a sub-classed Effects object must only contain the following attributes: * ``self.meta`` - a dictionary to contain metadata. * ``self.apply_to(obj, **kwargs)`` - a method which accepts a Source-derivative and returns an instance of the same class as ``obj`` * ``self.fov_grid(which="", **kwargs)`` Parameters ---------- See :class:`DataContainer` for input parameters