CanvasNormalize.CanvasNormalize.GetMeanSquaredLogRatios C# (CSharp) Метод

GetMeanSquaredLogRatios() приватный статический Метод

private static GetMeanSquaredLogRatios ( double tumorBinCounts, double normalBinCounts ) : int>.Tuple
tumorBinCounts double
normalBinCounts double
Результат int>.Tuple
        private static Tuple<double, int> GetMeanSquaredLogRatios(double[] tumorBinCounts, double[] normalBinCounts)
        {
            double sumOfSquaredLogRatios = 0;
            int ignoredBinCount = 0;
            int nBins = 0;
            for (int binIndex = 0; binIndex < tumorBinCounts.Length; binIndex++)
            {
                double tumorBinCount = tumorBinCounts[binIndex];
                double normalBinCount = normalBinCounts[binIndex];

                if (normalBinCount <= 0)
                {
                    ignoredBinCount++;
                    continue;
                }

                double squaredLogRatio;
                try
                {
                    double logRatio = Math.Log(tumorBinCount / normalBinCount);
                    squaredLogRatio = logRatio * logRatio;
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error calculating squared log ratio: {0}. Ignoring bin {1}.", e.Message, binIndex);
                    ignoredBinCount++;
                    continue;
                }

                if (double.IsInfinity(squaredLogRatio) || double.IsNaN(squaredLogRatio))
                {
                    ignoredBinCount++;
                    continue;
                }

                sumOfSquaredLogRatios += squaredLogRatio;
                nBins++;
            }

            double meanSquaredLogRatios = nBins > 0 ? sumOfSquaredLogRatios / nBins : sumOfSquaredLogRatios;
            return Tuple.Create(meanSquaredLogRatios, ignoredBinCount);
        }