'Call the predictor on some inputs.
If ``len(args) == 1``, assume ``args[0]`` is a datapoint (a list).
otherwise, assume ``args`` is a datapoinnt
Examples:
When you have a predictor which takes a datapoint [e1, e2], you
can call it in two ways:
.. code-block:: python
predictor(e1, e2)
predictor([e1, e2])'

def __call__(self, *args):

    if (len(args) != 1):
        dp = args
    else:
        dp = args[0]
    output = self._do_call(dp)
    if self.return_input:
        return (dp, output)
    else:
        return output
