Ejemplo n.º 1
0
        public double GetQScorePredictor(QScorePredictor predictorId)
        {
            switch (predictorId)
            {
            case QScorePredictor.BinCount:
                return((double)this.BinCount);

            case QScorePredictor.LogBinCount:
                return(Math.Log10(1 + this.BinCount));

            case QScorePredictor.BinCountAmpDistance:
                return(this.CopyNumber >= 15 ? Math.Log10(1 + this.BinCount) : 0.0);

            case QScorePredictor.BinMean:
                if (this.Counts.Count == 0)
                {
                    return(0);
                }
                return(this.Counts.Average());

            case QScorePredictor.BinCv:
                if (this.Counts.Count == 0)
                {
                    return(0);
                }
                if (this.Counts.Average() == 0)
                {
                    return(0);
                }
                return(Utilities.CoefficientOfVariation(this.Counts));

            case QScorePredictor.MafCount:
                return(Alleles.Frequencies.Count);

            case QScorePredictor.MafMean:
                if (Alleles.Frequencies.Count == 0)
                {
                    return(0);
                }
                return(Alleles.Frequencies.Average());

            case QScorePredictor.MafCv:
                if (Alleles.Frequencies.Count == 0)
                {
                    return(0);
                }
                if (Alleles.Frequencies.Average() == 0)
                {
                    return(0);
                }
                return(Utilities.CoefficientOfVariation(Alleles.Frequencies));

            case QScorePredictor.LogMafCv:
                return(Math.Log10(1 + GetQScorePredictor(QScorePredictor.MafCv)));

            case QScorePredictor.ModelDistance:
                return(this.ModelDistance);

            case QScorePredictor.RunnerUpModelDistance:
                return(this.RunnerUpModelDistance);

            case QScorePredictor.DistanceRatio:
                if (this.RunnerUpModelDistance == 0)
                {
                    return(0);
                }
                return(this.ModelDistance / this.RunnerUpModelDistance);

            case QScorePredictor.CopyNumber:
                return((double)this.CopyNumber);

            case QScorePredictor.MajorChromosomeCount:
                // Force a double:
                if (!this.MajorChromosomeCount.HasValue)
                {
                    return(Math.Ceiling(this.CopyNumber / 2f));
                }
                return((double)this.MajorChromosomeCount);
            }
            return(0);
        }
Ejemplo n.º 2
0
        public double GetQScorePredictor(QScorePredictor predictorId)
        {
            switch (predictorId)
            {
            case QScorePredictor.BinCount:
                return((double)this.BinCount);

            case QScorePredictor.LogBinCount:
                return(Math.Log10(1 + this.BinCount));

            case QScorePredictor.BinCountAmpDistance:
                return(this.CopyNumber >= 15 ? Math.Log10(1 + this.BinCount) : 0.0);

            case QScorePredictor.BinMean:
                if (this.Counts.Count == 0)
                {
                    return(0);
                }
                return(this.Counts.Average());

            case QScorePredictor.BinCv:
                if (this.Counts.Count == 0)
                {
                    return(0);
                }
                if (this.Counts.Average() == 0)
                {
                    return(0);
                }
                return(Utilities.CoefficientOfVariation(this.Counts));

            case QScorePredictor.MafCount:
                return(Balleles.Frequencies.Count);

            case QScorePredictor.MafMean:
                if (Balleles.Frequencies.Count == 0)
                {
                    return(0);
                }
                return(Balleles.Frequencies.Average());

            case QScorePredictor.MafCv:
                if (Balleles.Frequencies.Count == 0)
                {
                    return(0);
                }
                if (Balleles.Frequencies.Average() == 0)
                {
                    return(0);
                }
                return(Utilities.CoefficientOfVariation(Balleles.Frequencies));

            case QScorePredictor.LogMafCv:
                return(Math.Log10(1 + GetQScorePredictor(QScorePredictor.MafCv)));

            case QScorePredictor.ModelDistance:
                // HACK: high copy number needs some help: higher variance and general lack of interest in exact copy number
                return(this.ModelDistance / Math.Max(1.0, this.CopyNumber - 4.0));

            case QScorePredictor.RunnerUpModelDistance:
                return(this.RunnerUpModelDistance);

            case QScorePredictor.DistanceRatio:
                if (this.RunnerUpModelDistance == 0)
                {
                    return(0);
                }
                return(this.ModelDistance / this.RunnerUpModelDistance);

            case QScorePredictor.CopyNumber:
                return((double)this.CopyNumber);

            case QScorePredictor.MajorChromosomeCount:
                // Force a double:
                if (!this.MajorChromosomeCount.HasValue)
                {
                    return(Math.Ceiling(this.CopyNumber / 2f));
                }
                return((double)this.MajorChromosomeCount);
            }
            return(0);
        }
Ejemplo n.º 3
0
        public double GetQScorePredictor(QScorePredictor predictorId)
        {
            switch (predictorId)
            {
                case QScorePredictor.BinCount:
                    return (double)this.BinCount;

                case QScorePredictor.LogBinCount:
                    return Math.Log10(1 + this.BinCount);

                case QScorePredictor.BinMean:
                    if (this.Counts.Count == 0) return 0;
                    return this.Counts.Average();

                case QScorePredictor.BinCv:
                    if (this.Counts.Count == 0) return 0;
                    if (this.Counts.Average() == 0) return 0;
                    return CanvasCommon.Utilities.CoefficientOfVariation(this.Counts);

                case QScorePredictor.MafCount:
                    return this.VariantFrequencies.Count;

                case QScorePredictor.MafMean:
                    if (this.VariantFrequencies.Count == 0) return 0;
                    return this.VariantFrequencies.Average();

                case QScorePredictor.MafCv:
                    if (this.VariantFrequencies.Count == 0) return 0;
                    if (this.VariantFrequencies.Average() == 0) return 0;
                    return CanvasCommon.Utilities.CoefficientOfVariation(this.VariantFrequencies);

                case QScorePredictor.LogMafCv:
                    return Math.Log10(1 + GetQScorePredictor(QScorePredictor.MafCv));

                case QScorePredictor.ModelDistance:
                    return this.ModelDistance;

                case QScorePredictor.RunnerUpModelDistance:
                    return this.RunnerUpModelDistance;

                case QScorePredictor.DistanceRatio:
                    if (this.RunnerUpModelDistance == 0) return 0;
                    return this.ModelDistance / this.RunnerUpModelDistance;

                case QScorePredictor.CopyNumber:
                    return (double)this.CopyNumber;

                case QScorePredictor.MajorChromosomeCount:
                    // Force a double:
                    if (!this.MajorChromosomeCount.HasValue) return Math.Ceiling(this.CopyNumber / 2f);
                    return (double)this.MajorChromosomeCount;
            }
            return 0;
        }