<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def poisson_log_likelihood(x, data):
 """Poisson log-likelihood of ``data`` given noise parametrized by ``x``. Parameters x : ``op.domain`` element Value to condition the log-likelihood on. data : ``op.range`` element Data whose log-likelihood given ``x`` shall be calculated. """

    if np.any(np.less(x, 0)):
        raise ValueError('`x` must be non-negative')

    return np.sum(data * np.log(x + 1e-8) - x)