code: def get_mixture(data, components):
      
      from jcvi.apps.base import popen
  
      probs, mus, sigmas = [], [], []
      fw = must_open("tmp", "w")
      log_data = [log(x) for x in data if x > .05]
      data = "\n".join(["%.4f" % x for x in log_data]).replace("inf\n", "")
      fw.write(data)
      fw.close()
  
      cmd = "gmm-bic {0} {1} {2}".format(components, len(log_data), fw.name)
      pipe = popen(cmd)
  
      for row in pipe:
          if row[0] != '#':
              continue
  
          atoms = row.split(",")
          a, b, c = atoms[1:4]
          a = float(a)
          b = float(b)
          c = float(c)
  
          mus.append(a)
          sigmas.append(b)
          probs.append(c)
  
      os.remove(fw.name)
      return probs, mus, sigmas
docs: probs = [.476, .509]
      mus = [.69069, -.15038]
      variances = [.468982e-1, .959052e-1]