#SplinesNLines_py
SplinesNLines_py is an unpublished package which is a Python implementation of the Splines'n Lines method developed by David Kent, Tamás Budavári, Thomas J. Loredo and David Ruppert. Its goal is to use techniques from Functional Data Analysis and Bayesian inference to improve inference/estimation of Spectral Energy Distributions from galaxies.
The main idea of the method is to express each of the $o = 1,..., O$ galaxy profiles as a sum of functions in a basis $\sum_k \theta_k \phi_k(\log(\lambda))$, as in many other FDA methods, and line profiles $\sum_k \theta_k \kappa_k(\lambda, \mathcal{X}_o)$, called line profiles, which seek to capture the information of important wavelengths (i.e. whose information is stored at $\mathcal{X}_o$). It is important to observe that SplinesNLines_py allows to create models which include line profiles and without them. With the previous, the SED's can be expressed as:
$$F_o(\lambda) = \sum_{k = 1}^B \theta_k(\ln_{10}(\ell)) + \sum_{k = B+1}^{B_f} \theta_k \kappa_k(\lambda, \mathcal{X}_o)$$
To model variations in the $F_o(\lambda)$'s this model assumes that the coefficients $\boldsymbol{\theta}0 = (\theta{ok})$ are independent realizations from a multivariate normal with mean $\boldsymbol{\mu} = (\mu_k)$ and covariance $\Sigma$, i.e. $\boldsymbol{\theta}o \overset{ind.}{\sim} \mathcal{N}(\boldsymbol{\theta}|\mu, \Sigma)$. Note that this implies the existance of a mean profile $F\mu(\lambda) = \sum_{k = 1}^B \mu_k \phi_k(\ell) + \sum_{k = B + 1}^{B_f}\mu_k \kappa_k(\lambda, \mathcal{X}o)$. Once $\boldsymbol{\theta}o$ is known for a particular galaxy, the observed values of the spectral profile $y{oi}$ are modelled as random perturbations from $F_o(\lambda{oi})$ with a normal model. That is, $y_{oi} \overset{ind.}{\sim} \mathcal{N}(y| F_o(\lambda_{oi}) ,; \tau_{oi})$ where, once again, $\tau_{oi}$ is provided by the SDSS. $\boldsymbol{\mu}$ and $\Sigma$ are modelled a priori with a unifrom non-informative prior over all of their support, i.e. $p(\boldsymbol{\mu}, \Sigma) \propto 1$. With this, the relationship between the observed data $\textbf{y}o = (y{o1}, ..., y_{oK_o})^T$, the unknown coefficients $\boldsymbol{\theta}_o$, and $(\boldsymbol{\mu}, \Sigma)$ is given by the following three level hierarchy,
$$ \begin{split}
(\boldsymbol{\mu}, \Sigma) ;;\sim & ;;p(\boldsymbol{\mu}, \Sigma) \propto 1 \\
\boldsymbol{\theta}_o |\boldsymbol{\mu}, \Sigma ; ; \overset{ind.}{\sim} & ;; \mathcal{N}_{L+B}(\boldsymbol{\theta} ;| ; \boldsymbol{\mu}, \Sigma) \\
y_{io}|\boldsymbol{\theta}_o ;; \overset{ind.}{\sim} & ;;\mathcal{N}\Big (y ; | ; F_o(\lambda_{oi}) ;, ; \tau_{oi}\Big)
\end{split} $$