The upper limit log normal (ULLN) distribution is similar to a lognormal distribution but with an extra parameter for the upper limit (ymax). I am having difficulty implementing it in pymc3 (i am new to pymc3). This is my attempt at coding it, but it does not work as expected.

```
import numpy as np
import matplotlib.pyplot as plt
import pymc3 as pm
## generate surrogate data
sigma=1
mu=0
ymax=5
q = np.exp(np.random.randn(500)*sigma+mu)
y = (q*ymax)/(q + ymax)
plt.hist(np.log(y))
plt.xlabel('log surrogate')
## setup model
ullnmodel = pm.Model()
yobsmax = np.amax(y)
with ullnmodel:
ymax = pm.Pareto('ymax',alpha=1,m=yobsmax)
mu = pm.Normal('mu', mu=0, sd=5)
sigma = pm.Lognormal('sigma', mu=0, sd=5)
qt = pm.math.log(y*ymax) - pm.math.log(ymax - y)
q = pm.Normal('q', mu=mu, sd = sigma, observed = qt)
startpoint = {'mu': np.mean(np.log(y)), 'sigma': np.std(np.log(y)), 'ymax': yobsmax*2.0}
map_estimate = pm.find_MAP(model=ullnmodel,start=startpoint)
map_estimate
```