static void Main(string[] args)
        {
            /*
             * var t0 = 103.6374;
             * using (var writer = new StreamWriter(@"C:\Users\mhorowitzgelb\Desktop\basicAsymetricGaussian.csv"))
             * {
             *  for (double x = -3; x <= 3.1; x += 0.01)
             *  {
             *      var _x = x + t0;
             *      var y = function.GetY(_x, new[] {56564, t0, 0.00001, 1});
             *      writer.WriteLine(_x+","+y);
             *  }
             * }*/



            var unalteredData = loadCsv(@"C:\Users\mhorowitzgelb\Desktop\multiplePeaks.csv", 6);

            unalteredData = new[]
            { unalteredData[0], unalteredData[1] };

            var function = new SummedAlteredGaussian(3, 1, 10, unalteredData);
            //var function = new MultiTransitionAlteredGaussian(5,10,unalteredData);
            //{14000,5,5,5,5,5,43.9,0.01,0.15,1000,1300,2100,1900,900,500,44.9,0.01,0.15,100,5,4000,5,5,5,46,0.01,0.15}
            var lma = new LMA(function, new [] { 14000, 43.9, 0.01, 0.15, 1000, 44.9, 0.01, 0.15, 100, 46, 0.01, 0.15 }, function.AlteredData, null, new DotNetMatrix.GeneralMatrix(12, 12), 1, 1000);

            lma.Fit();
            writeCSV(lma, function, unalteredData, @"C:\Users\mhorowitzgelb\Desktop\multiPeaksFit.csv", 1);
        }
 public static void writeCSV(LMA lma, SummedAlteredGaussian function, double[][] originalData, string path, int transitions)
 {
     using (var writer = new StreamWriter(path))
     {
         var xList = originalData[0];
         for (int i = 0; i < xList.Length; i++)
         {
             var x = xList[i];
             writer.Write("" + x);
             for (int j = 0; j < transitions; j++)
             {
                 var y = originalData[1 + j][i];
                 writer.Write("," + y);
             }
             for (int j = 0; j < transitions; j++)
             {
                 var fitValue = function.GetY(x, j, lma.Parameters);
                 writer.Write("," + fitValue);
             }
             writer.WriteLine();
         }
     }
 }