GMM is a widely used method. However, when each data point is associated with some measurement error, we need to model the error into the likelihood function so that we can get the intrinsic mixtures after de-convolving the measurement noises. It is a trivial problem if all data point get the same measurement error. But in practice, they normally get different ones. I developed an error corrected GMM and implemented it in C++ and python.
To get the codes, see the following.