How to model compositional data? What is the best way to model compositional data problems?

Compositional data is when each example or sample is a vector that sums to 1 (or 100%). In my case, I am interested in the composition of minerals in a rock and I have sensors that tell me the sum of the minerals but not the components that make up the sum.

For example, lets say I have two minerals, $m_1$ and $m_2$, that are made up of 3 elements (like copper and other elements from the periodic table) which form a vector of length 3:

m1 = [0.1, 0.3, 0.6]
m2 = [0.6, 0.2, 0.2]


If a rock has 25% of $m_1$ and 75% of $m_2$, the sensor reading produces the sum of the two minerals (shown in bottom-left subplot below): 

$$
\begin{align}
&amp;0.25*m_1 + 0.75*m_2 \\
=&amp;0.25*[0.1, 0.3, 0.6] + 0.75*[0.6, 0.2, 0.2] \\
=&amp;[0.475, 0.225, 0.3]
\end{align}
$$



I would like to know how to model and solve the problem of unmixing a composition into its underlying components, where the sum of the elements is normalized to 100% (e.g. $0.25m_1 + 0.75m_2$ has the same composition as $0.50m_1 + 1.50m_2$). 

Furthermore, my example is simplistic; in reality a composition can have more than just 2 minerals (up to 3000) and each mineral is made up of 118 elements, not just 3 (all the elements of periodic table - though many elements will be zero). The elemental composition of a mineral is assumed to be known (definition of $m_1$ and $m_2$ in the example). Also, the sensor reading is noisy - each element of the observed composition is assumed to have Gaussian noise.
If I understand correctly, in your problem the mineral-element vector $m1$ and $m2$ is known. 

If that is the case, I would suggest LASSO regression. Suppose you have $n$ minerals $m_1$, $m_2$, ..., $m_n\in\mathbb{R}^p$ arranged into a matrix $M=[m_1;m_2,...,m_n]\in\mathbb{R}^{n\times p}$, and an unknown mixing vector $x\in\mathbb{R}^n$ (in your case, $x=[0.25; 0.75]$). Your sensor measures $y=M^\top x\in\mathbb{R}^n$ and you want to recover $x$ from $y$.

The LASSO regression aims to solve $\hat{x}=\arg\min_x ||y-M^\top x||_2 + \lambda||x||_1$. The $\ell_1$ penalty promotes sparsity in $x$ and could be beneficial when you have a lot of candidate minerals.

I don't think you need any special handling due to the compositional nature of the data, other than normalizing the final $\hat{x}$ if needed.