public ConditionalGaussianDistributionParams CreateDistributionGaussianOrNull( Leaf leaf, OptimizationParameterList gaussianParameters, Converter <Leaf, SufficientStatistics> predictorLeafToBoolStats) { if (leaf.Length == 0) { Debug.WriteLine("Branch length of zero observed"); } // TODO: make continuous BooleanStatistics hasPredictor = (BooleanStatistics)predictorLeafToBoolStats(leaf); if (hasPredictor.IsMissing()) { ConditionalGaussianDistributionParams.GetNullInstance(); //return null; // Predictor data is missing, so skip this leaf. } ConditionalGaussianDistributionParams plainConditionalDistribution = GetPlainConditionalGaussianDistribution(leaf, gaussianParameters); if (!hasPredictor) { return(plainConditionalDistribution); } else { double delta = GetOffset(gaussianParameters); ConditionalGaussianDistributionParams offsetConditionalDistribution = plainConditionalDistribution.AddOffsetToMean(delta); return(offsetConditionalDistribution); } //return CreateDistributionGaussianOrNull(plainConditionalDistribution, hasPredictor, delta); }
public ConditionalGaussianDistribution CreateDistributionGaussianOrNull( Leaf leaf, OptimizationParameterList gaussianParameters, Converter <Leaf, SufficientStatistics> predictorLeafToBoolStats) { if (leaf.Length == 0) { Debug.WriteLine("Branch length of zero observed"); } ConditionalGaussianDistribution plainConditionalDistribution = GetPlainConditionalGaussianDistribution(leaf, gaussianParameters); BooleanStatistics hasPredictor = (BooleanStatistics)predictorLeafToBoolStats(leaf); if (hasPredictor.IsMissing()) { return(null); // Predictor data is missing, so skip this leaf. } double delta = GetOffset(gaussianParameters); return(LabelledLeafDistributionGaussian.CreateDistributionGaussianOrNull(plainConditionalDistribution, hasPredictor, delta)); }