# Defining the prior

The MCMC based searches (i.e. `pyfstat.MCMC*`

) require a prior specification for each model parameter, implemented via a python dictionary. This is best explained through a simple example, here is the prior for a *directed* search with a *uniform* prior on the frequency and a *normal* prior on the frequency derivative:

```
theta_prior = {'F0': {'type': 'unif',
'lower': 29.9,
'upper': 30.1},
'F1': {'type': 'norm',
'loc': 0,
'scale': 1e-10},
'F2': 0,
'Alpha': 2.3,
'Delta': 1.8
}
```

For the sky positions `Alpha`

and `Delta`

, we give the fixed values (i.e. they are considered 'known' by the MCMC simulation), the same is true for `F2`

, the second derivative of the frequency which we fix at `0`

. Meanwhile, for the frequency `F0`

and first frequency derivative `F1`

we give a dictionary specifying their prior distribution. This dictionary must contain three arguments: the `type`

(in this case either `unif`

or `norm`

) which specifies the type of distribution, then two shape arguments. The shape parameters will depend on the `type`

of distribution, but here we use `lower`

and `upper`

, required for the `unif`

prior while `loc`

and `scale`

are required for the `norm`

prior.

Currently, two other types of prior are implemented: `halfnorm`

, `neghalfnorm`

(both of which require `loc`

and `scale`

shape parameters). Further priors can be added by modifying `pyfstat.MCMCSearch._generic_lnprior`

.