public void TestCorrectPlex8()
    {
      var calc = new IsobaricImpurityCorrectionCalculator(IsobaricType.PLEX8, @"../../../data/itraq-8plex.csv");
      var b = new List<double>();
      var m = calc.CloneTable();
      for (int i = 0; i < m[0].Length; i++)
      {
        b.Add((from mm in m select mm[i]).Sum());
      }

      var bb = b.ToArray();
      double[] x = calc.Correct(bb);
      foreach (var v in x)
      {
        Assert.AreEqual(1, v, 0.001);
      }

      //repeat again to ensure that the matrix (a) in calc has not been changed.
      bb = b.ToArray();
      x = calc.Correct(bb);
      foreach (var v in x)
      {
        Assert.AreEqual(1, v, 0.001);
      }
    }
    public void TestCorrectPlex4()
    {
      var calc = new IsobaricImpurityCorrectionCalculator(IsobaricType.PLEX4, @"../../../data/itraq-4plex.csv");
      double[] b = new double[] { 0.949, 1.013, 1.022, 0.969 };
      double[] x = calc.Correct(b);
      foreach (var v in x)
      {
        Assert.AreEqual(1, v, 0.001);
      }

      //repeat again to ensure that the matrix (a) in calc has not been changed.
      b = new double[] { 0.949, 1.013, 1.022, 0.969 };
      x = calc.Correct(b);
      foreach (var v in x)
      {
        Assert.AreEqual(1, v, 0.001);
      }
    }