public static void CalcRatioSignificanceProteinGroups(SilacType type, ICombinedData combinedData, RawFileInfo fileInfo)
 {
     if (type == SilacType.Doublets)
     {
         {
             List <double> lNormRatio = new List <double>();
             List <double> lRatio     = new List <double>();
             List <double> lIntensity = new List <double>();
             List <int>    indices    = new List <int>();
             for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                 double ratio;
                 double normalizedRatio;
                 int    count;
                 double dev;
                 int    nOutliers;
                 double pval;
                 group.GetRatio10(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers, out pval);
                 double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData);
                 if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                 {
                     lNormRatio.Add(Math.Log(normalizedRatio));
                     lRatio.Add(Math.Log(ratio));
                     lIntensity.Add(Math.Log(intensity));
                     indices.Add(i);
                 }
             }
             double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lNormRatio.ToArray(), lIntensity.ToArray(), 1);
             double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lNormRatio.ToArray(), lIntensity.ToArray(), -1);
             for (int i = 0; i < indices.Count; i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                 group.RatioSignificanceA10 = ratioSignificanceA[i];
                 group.RatioSignificanceB10 = ratioSignificanceB[i];
             }
         }
         if (fileInfo.HasExperiment)
         {
             string[] exps = fileInfo.GetAllExperimentValues();
             foreach (string exp in exps)
             {
                 List <double> lratio     = new List <double>();
                 List <double> lIntensity = new List <double>();
                 List <int>    indices    = new List <int>();
                 for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                     double ratio;
                     double normalizedRatio;
                     int    count;
                     double dev;
                     int    nOutliers;
                     double pval;
                     group.GetRatio10(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers,
                                      fileInfo.GetRawFileIndicesFromExperiment(exp), out pval);
                     double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData);
                     if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                     {
                         lratio.Add(Math.Log(normalizedRatio));
                         lIntensity.Add(Math.Log(intensity));
                         indices.Add(i);
                     }
                 }
                 double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
                 double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
                 for (int i = 0; i < indices.Count; i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                     group.AddRatioSignificanceA10(exp, ratioSignificanceA[i]);
                     group.AddRatioSignificanceB10(exp, ratioSignificanceB[i]);
                 }
             }
         }
     }
     if (type == SilacType.Triplets)
     {
         {
             List <double> lratio     = new List <double>();
             List <double> lIntensity = new List <double>();
             List <int>    indices    = new List <int>();
             for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                 double ratio;
                 double normalizedRatio;
                 int    count;
                 double dev;
                 int    nOutliers;
                 double pval;
                 group.GetRatio10(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers, out pval);
                 double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                    group.GetIntensity2(combinedData);
                 if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                 {
                     lratio.Add(Math.Log(normalizedRatio));
                     lIntensity.Add(Math.Log(intensity));
                     indices.Add(i);
                 }
             }
             double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
             double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
             for (int i = 0; i < indices.Count; i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                 group.RatioSignificanceA10 = ratioSignificanceA[i];
                 group.RatioSignificanceB10 = ratioSignificanceB[i];
             }
         }
         if (fileInfo.HasExperiment)
         {
             string[] exps = fileInfo.GetAllExperimentValues();
             foreach (string exp in exps)
             {
                 List <double> lratio     = new List <double>();
                 List <double> lIntensity = new List <double>();
                 List <int>    indices    = new List <int>();
                 for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                     double ratio;
                     double normalizedRatio;
                     int    count;
                     double dev;
                     int    nOutliers;
                     double pval;
                     group.GetRatio10(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers,
                                      fileInfo.GetRawFileIndicesFromExperiment(exp), out pval);
                     double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                        group.GetIntensity2(combinedData);
                     if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                     {
                         lratio.Add(Math.Log(normalizedRatio));
                         lIntensity.Add(Math.Log(intensity));
                         indices.Add(i);
                     }
                 }
                 double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
                 double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
                 for (int i = 0; i < indices.Count; i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                     group.AddRatioSignificanceA10(exp, ratioSignificanceA[i]);
                     group.AddRatioSignificanceB10(exp, ratioSignificanceB[i]);
                 }
             }
         }
         {
             List <double> lratio     = new List <double>();
             List <double> lIntensity = new List <double>();
             List <int>    indices    = new List <int>();
             for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                 double ratio;
                 double normalizedRatio;
                 int    count;
                 double dev;
                 int    nOutliers;
                 double pval;
                 group.GetRatio20(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers, out pval);
                 double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                    group.GetIntensity2(combinedData);
                 if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                 {
                     lratio.Add(Math.Log(normalizedRatio));
                     lIntensity.Add(Math.Log(intensity));
                     indices.Add(i);
                 }
             }
             double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
             double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
             for (int i = 0; i < indices.Count; i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                 group.RatioSignificanceA20 = ratioSignificanceA[i];
                 group.RatioSignificanceB20 = ratioSignificanceB[i];
             }
         }
         if (fileInfo.HasExperiment)
         {
             string[] exps = fileInfo.GetAllExperimentValues();
             foreach (string exp in exps)
             {
                 List <double> lratio     = new List <double>();
                 List <double> lIntensity = new List <double>();
                 List <int>    indices    = new List <int>();
                 for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                     double ratio;
                     double normalizedRatio;
                     int    count;
                     double dev;
                     int    nOutliers;
                     double pval;
                     group.GetRatio20(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers,
                                      fileInfo.GetRawFileIndicesFromExperiment(exp), out pval);
                     double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                        group.GetIntensity2(combinedData);
                     if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                     {
                         lratio.Add(Math.Log(normalizedRatio));
                         lIntensity.Add(Math.Log(intensity));
                         indices.Add(i);
                     }
                 }
                 double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
                 double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
                 for (int i = 0; i < indices.Count; i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                     group.AddRatioSignificanceA20(exp, ratioSignificanceA[i]);
                     group.AddRatioSignificanceB20(exp, ratioSignificanceB[i]);
                 }
             }
         }
         {
             List <double> lratio     = new List <double>();
             List <double> lIntensity = new List <double>();
             List <int>    indices    = new List <int>();
             for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                 double ratio;
                 double normalizedRatio;
                 int    count;
                 double dev;
                 int    nOutliers;
                 double pval;
                 group.GetRatio21(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers, out pval);
                 double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                    group.GetIntensity2(combinedData);
                 if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                 {
                     lratio.Add(Math.Log(normalizedRatio));
                     lIntensity.Add(Math.Log(intensity));
                     indices.Add(i);
                 }
             }
             double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
             double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
             for (int i = 0; i < indices.Count; i++)
             {
                 IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                 group.RatioSignificanceA21 = ratioSignificanceA[i];
                 group.RatioSignificanceB21 = ratioSignificanceB[i];
             }
         }
         if (fileInfo.HasExperiment)
         {
             string[] exps = fileInfo.GetAllExperimentValues();
             foreach (string exp in exps)
             {
                 List <double> lratio     = new List <double>();
                 List <double> lIntensity = new List <double>();
                 List <int>    indices    = new List <int>();
                 for (int i = 0; i < combinedData.GetProteinGroupCount(); i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(i);
                     double ratio;
                     double normalizedRatio;
                     int    count;
                     double dev;
                     int    nOutliers;
                     double pval;
                     group.GetRatio21(combinedData, out ratio, out normalizedRatio, out count, out dev, out nOutliers,
                                      fileInfo.GetRawFileIndicesFromExperiment(exp), out pval);
                     double intensity = group.GetIntensity0(combinedData) + group.GetIntensity1(combinedData) +
                                        group.GetIntensity2(combinedData);
                     if (normalizedRatio > 0 && !double.IsInfinity(normalizedRatio) && !double.IsNaN(normalizedRatio) && intensity > 0)
                     {
                         lratio.Add(Math.Log(normalizedRatio));
                         lIntensity.Add(Math.Log(intensity));
                         indices.Add(i);
                     }
                 }
                 double[] ratioSignificanceA = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), 1);
                 double[] ratioSignificanceB = NumUtil.MovingBoxPlot(lratio.ToArray(), lIntensity.ToArray(), -1);
                 for (int i = 0; i < indices.Count; i++)
                 {
                     IIdentifiedProteinGroup group = combinedData.GetIProteinGroupAt(indices[i]);
                     group.AddRatioSignificanceA21(exp, ratioSignificanceA[i]);
                     group.AddRatioSignificanceB21(exp, ratioSignificanceB[i]);
                 }
             }
         }
     }
 }