MoonBit Composable Bayesian Online Update Library
///|
test {
let model = DirichletMultinomial::new([1.0, 1.0, 1.0])
let posterior = model.update([3, 1, 0])
debug_inspect(
posterior.posterior_mean(),
content=(
#|[0.5714285714285714, 0.2857142857142857, 0.14285714285714285]
),
)
}///|
test {
// Create a Beta-Binomial model with prior alpha=1.0, beta=1.0 (Uniform prior)
let prior = BetaBinomial::new(1.0, 1.0)
// Update with 7 successes out of 10 trials
let posterior = prior.update(7, 10)
// Posterior mean is now (1+7) / (1+10+1) = 8 / 12 = 0.666...
inspect(posterior.posterior_mean(), content="0.6666666666666666")
}///|
test {
// Gamma-Poisson model example
let prior = GammaPoisson::new(2.0, 1.0)
let posterior = prior.update(3, 2)
inspect(posterior.posterior_mean(), content="1.6666666666666667")
}///|
test {
// Normal-Normal model example
let prior = NormalNormal::new(0.0, 1.0, 1.0)
let posterior = prior.update(1.0, 1)
inspect(posterior.posterior_mean(), content="0.5")
}fn AlertEvaluator::evaluate(self : AlertEvaluator, timestamp : Int, value : Double) -> AlertEvaluatorpub struct AlertRule {
name : String
comparator : Comparator
threshold : Double
tolerance : Double
consecutive : Int
} derive(Eq, ToJson, Debug, FromJson)pub struct Approval {
reviewer : String
status : ApprovalStatus
comment : String
timestamp : Int
expires_at : Int
} derive(Eq, ToJson, Debug, FromJson)fn AttributionLedger::record(self : AttributionLedger, source : String, contribution : Double) -> AttributionLedgerpub struct AuditEvent {
model_name : String
version : String
action : AuditAction
actor : String
timestamp : Int
details : String
} derive(Eq, ToJson, Debug, FromJson)fn AuditEvent::new(model_name : String, version : String, action : AuditAction, actor : String, timestamp : Int, details : String) -> AuditEventpub struct BayesianLinearRegression {
prior_mean : Array[Double]
prior_precision : DenseMatrix
precision : DenseMatrix
information : Array[Double]
noise_variance : Double
observations : Int
} derive(Eq, ToJson, Debug, FromJson)fn BayesianLinearRegression::add_observation(self : BayesianLinearRegression, features : Array[Double], target : Double) -> BayesianLinearRegressionfn BayesianLinearRegression::fit(self : BayesianLinearRegression, features : Array[Array[Double]], targets : Array[Double]) -> BayesianLinearRegressionfn BayesianLinearRegression::new(prior_mean : Array[Double], prior_variance : Double, noise_variance : Double) -> BayesianLinearRegressionfn BayesianLinearRegression::predict(self : BayesianLinearRegression, features : Array[Double]) -> Doublefn BayesianLinearRegression::predict_summary(self : BayesianLinearRegression, features : Array[Double]) -> PredictiveSummaryfn BayesianLinearRegression::predict_variance(self : BayesianLinearRegression, features : Array[Double]) -> Doublefn BayesianLinearRegression::r_squared(self : BayesianLinearRegression, features : Array[Array[Double]], targets : Array[Double]) -> Doublefn BayesianLinearRegression::residuals(self : BayesianLinearRegression, features : Array[Array[Double]], targets : Array[Double]) -> Array[Double]fn BayesianNetwork::add_variable(self : BayesianNetwork, variable : DiscreteVariable) -> BayesianNetworkfn BayesianNetwork::evidence_probability(self : BayesianNetwork, evidence : Array[(String, Int)]) -> Doublefn BayesianNetwork::query(self : BayesianNetwork, target : String, evidence : Array[(String, Int)]) -> Factorpub struct BetaArm {
name : String
posterior : BetaBinomial
pulls : Int
reward_sum : Int
} derive(Eq, ToJson, Debug, FromJson)fn BetaBinomial::posterior_predictive_summary(self : BetaBinomial, trials : Int) -> PredictiveSummaryfn BetaBinomial::predictive_probability(self : BetaBinomial, successes : Int, trials : Int) -> Doublefn BetaBinomial::predictive_quantile(self : BetaBinomial, trials : Int, probability : Double) -> Intfn BetaNegativeBinomial::failure_distribution(self : BetaNegativeBinomial, maximum : Int) -> Array[Double]fn BetaNegativeBinomial::probability_of_failures(self : BetaNegativeBinomial, failures : Int) -> Doublefn BetaNegativeBinomial::update(self : BetaNegativeBinomial, successes : Int, failures : Int) -> BetaNegativeBinomialfn CalibrationBin::add(self : CalibrationBin, probability : Double, observed : Bool) -> CalibrationBinfn CategoricalClass::feature_probability(self : CategoricalClass, feature : Int, value : Int) -> Doublefn CategoricalClass::new(label : Int, feature_count : Int, vocabulary : Int, prior : Int) -> CategoricalClassfn CategoricalNaiveBayes::accuracy(self : CategoricalNaiveBayes, labels : Array[Int], features : Array[Array[Int]]) -> Doublefn CategoricalNaiveBayes::fit(self : CategoricalNaiveBayes, labels : Array[Int], features : Array[Array[Int]]) -> CategoricalNaiveBayesfn CategoricalNaiveBayes::new(labels : Array[Int], feature_count : Int, vocabulary : Int) -> CategoricalNaiveBayesfn CategoricalNaiveBayes::predict_scores(self : CategoricalNaiveBayes, features : Array[Int]) -> Array[Double]fn CategoricalNaiveBayes::update(self : CategoricalNaiveBayes, label : Int, features : Array[Int]) -> CategoricalNaiveBayesfn CausalObservation::new(treatment : Bool, outcome : Double, propensity : Double) -> CausalObservationfn ConditionalTable::new(child : String, parents : Array[String], cardinalities : Array[Int], probabilities : Array[Double]) -> ConditionalTablefn ConformalCalibrator::coverage(self : ConformalCalibrator, actual : Array[Double], predicted : Array[Double]) -> Doublefn ConformalCalibrator::interval(self : ConformalCalibrator, prediction : Double) -> PredictionIntervalfn ConfusionMatrix::add_all(self : ConfusionMatrix, actual : Array[Bool], predicted : Array[Bool]) -> ConfusionMatrixfn CovarianceSummary::merge(self : CovarianceSummary, other : CovarianceSummary) -> CovarianceSummaryfn DecisionCost::expected(self : DecisionCost, probabilities : Array[Double], actual : Array[Bool], threshold : Double) -> Doublefn DecisionLog::new(id : String, score : Double, action : Action, threshold : Double, timestamp : Int) -> DecisionLogpub struct DeploymentRecord {
model_name : String
model_version : String
strategy : DeploymentStrategy
stage : ModelStage
traffic_percent : Double
replicas : Int
started_at : Int
ended_at : Int
rollback_version : String
approvals : Array[Approval]
} derive(Eq, ToJson, Debug, FromJson)fn DeploymentRecord::new(model_name : String, model_version : String, strategy : DeploymentStrategy) -> DeploymentRecordfn DirichletMultinomial::posterior_predictive_mean(self : DirichletMultinomial, trials : Int) -> Array[Double]fn DirichletMultinomial::posterior_predictive_summary(self : DirichletMultinomial, trials : Int) -> Array[PredictiveSummary]fn DirichletMultinomial::predictive_probability(self : DirichletMultinomial, category : Int) -> Doublefn DirichletMultinomial::sample_without_randomness(self : DirichletMultinomial, observations : Int) -> Array[Int]fn DirichletMultinomial::update(self : DirichletMultinomial, counts : Array[Int]) -> DirichletMultinomialfn DirichletMultinomial::update_one(self : DirichletMultinomial, index : Int) -> DirichletMultinomialfn DistributedSummary::merge(self : DistributedSummary, other : DistributedSummary) -> DistributedSummaryfn DistributedSummary::push_all(self : DistributedSummary, values : Array[Double]) -> DistributedSummarypub struct DistributionSummary {
kind : DistributionKind
mean : Double
variance : Double
support_lower : Double
support_upper : Double?
} derive(Eq, ToJson, Debug, FromJson)fn DistributionSummary::new(kind : DistributionKind, mean : Double, variance : Double, lower : Double, upper : Double?) -> DistributionSummaryfn EmpiricalDistribution::map_values(self : EmpiricalDistribution, transform : (Double) -> Double) -> EmpiricalDistributionfn EmpiricalDistribution::mixture(self : EmpiricalDistribution, other : EmpiricalDistribution, weight : Double) -> EmpiricalDistributionfn EmpiricalDistribution::new(values : Array[Double], probabilities : Array[Double]) -> EmpiricalDistributionfn Explanation::new(baseline : Double, prediction : Double, attributions : Array[FeatureAttribution]) -> Explanationfn FeatureColumn::fill(self : FeatureColumn, replacement : Double, is_missing : (Double) -> Bool) -> FeatureColumnfn FeatureDefinition::new(name : String, entity : String, kind : FeatureValueKind) -> FeatureDefinitionfn FeatureDefinition::with_default(self : FeatureDefinition, default_value : Double) -> FeatureDefinitionfn FeatureObservation::new(entity_id : String, feature : String, value : Double, event_time : Int) -> FeatureObservationfn FeatureObservation::with_ingest_time(self : FeatureObservation, ingest_time : Int) -> FeatureObservationfn FeatureSnapshot::vector(self : FeatureSnapshot, definitions : Array[FeatureDefinition]) -> Array[Double]pub struct FeatureStore {
definitions : Array[FeatureDefinition]
observations : Array[FeatureObservation]
} derive(Eq, ToJson, Debug, FromJson)fn FeatureStore::batch_lookup(self : FeatureStore, entity_ids : Array[String], feature_names : Array[String], as_of : Int) -> Array[FeatureSnapshot]fn FeatureStore::lookup(self : FeatureStore, entity_id : String, feature_names : Array[String], as_of : Int) -> FeatureSnapshotfn FeatureStore::observations_for(self : FeatureStore, entity_id : String, feature : String) -> Array[FeatureObservation]fn FeatureStore::write_batch(self : FeatureStore, observations : Array[FeatureObservation]) -> FeatureStorefn GaussianNaiveBayes::accuracy(self : GaussianNaiveBayes, labels : Array[Int], features : Array[Array[Double]]) -> Doublefn GaussianNaiveBayes::fit(self : GaussianNaiveBayes, labels : Array[Int], features : Array[Array[Double]]) -> GaussianNaiveBayesfn GaussianNaiveBayes::predict_scores(self : GaussianNaiveBayes, features : Array[Double]) -> Array[Double]fn GaussianNaiveBayes::update(self : GaussianNaiveBayes, label : Int, features : Array[Double]) -> GaussianNaiveBayesfn GuardrailMetric::new(name : String, control : Double, treatment : Double, minimum_ratio : Double, maximum_drop : Double) -> GuardrailMetricfn HistogramAccumulator::add_all(self : HistogramAccumulator, values : Array[Double]) -> HistogramAccumulatorfn InterpolationTable::evaluate_all(self : InterpolationTable, values : Array[Double]) -> Array[Double]fn InterpolationTable::with_extrapolation(self : InterpolationTable, enabled : Bool) -> InterpolationTablefn KalmanModel::local_linear(process_level : Double, process_trend : Double, observation_noise : Double) -> KalmanModelfn KalmanModel::scalar(persistence : Double, process_noise : Double, observation_noise : Double) -> KalmanModelfn LineageAsset::new(id : String, kind : String, owner : String, schema_version : String) -> LineageAssetfn LineageAsset::with_observation(self : LineageAsset, row_count : Int, updated_at : Int) -> LineageAssetfn LineageAudit::append(self : LineageAudit, asset_id : String, event : String, actor : String, at : Int, details : String) -> LineageAuditpub struct LineageGraph {
assets : Array[LineageAsset]
operations : Array[LineageOperation]
} derive(Eq, ToJson, Debug, FromJson)fn LineageOperation::new(id : String, name : String, inputs : Array[String], outputs : Array[String]) -> LineageOperationfn LocalLevelModel::forecast_interval(self : LocalLevelModel, horizon : Int, confidence : Double) -> Array[PredictionInterval]fn LocalLevelModel::new(level : Double, variance : Double, process_noise : Double, observation_noise : Double) -> LocalLevelModelpub struct MaterializationJob {
feature : String
mode : MaterializationMode
start_time : Int
end_time : Int
rows_written : Int
status : PipelineStatus
} derive(Eq, ToJson, Debug, FromJson)fn MaterializationJob::new(feature : String, mode : MaterializationMode, start_time : Int, end_time : Int) -> MaterializationJobpub struct MetricStream {
name : String
kind : MetricKind
samples : Array[MetricSample]
total : Double
} derive(Eq, ToJson, Debug, FromJson)fn MetricStream::histogram(self : MetricStream, lower : Double, upper : Double, bins : Int) -> Array[Int]pub struct ModelVersion {
name : String
version : String
artifact_uri : String
source_revision : String
created_at : Int
stage : ModelStage
metrics : Array[ModelMetric]
features : Array[FeatureSignature]
tags : Array[String]
owner : String
} derive(Eq, ToJson, Debug, FromJson)fn ModelVersion::with_revision(self : ModelVersion, revision : String, created_at : Int) -> ModelVersionfn MonteCarloAccumulator::estimate(self : MonteCarloAccumulator, confidence : Double) -> MonteCarloEstimatefn MonteCarloAccumulator::push(self : MonteCarloAccumulator, value : Double) -> MonteCarloAccumulatorfn MonteCarloAccumulator::push_weighted(self : MonteCarloAccumulator, value : Double, weight : Double) -> MonteCarloAccumulatorfn NegativeBinomialDistribution::new(successes : Int, probability : Double) -> NegativeBinomialDistributionfn NegativeBinomialDistribution::quantile(self : NegativeBinomialDistribution, probability : Double) -> Intfn NormalInverseGamma::information_criterion(self : NormalInverseGamma, residual : Double) -> Doublefn NormalInverseGamma::merge(self : NormalInverseGamma, other : NormalInverseGamma) -> NormalInverseGammafn NormalInverseGamma::new(mean : Double, scale : Double, shape : Double, rate : Double) -> NormalInverseGammafn NormalInverseGamma::update(self : NormalInverseGamma, sample_mean : Double, sample_variance : Double, count : Int) -> NormalInverseGammafn NormalNormal::interval_probability_approx(self : NormalNormal, lower : Double, upper : Double) -> Doublefn NormalNormal::new(prior_mean : Double, prior_variance : Double, data_variance : Double) -> NormalNormalpub struct OnlineRidge {
model : BayesianLinearRegression
regularization : Double
updates : Int
} derive(Eq, ToJson, Debug, FromJson)fn OnlineRidge::fit(self : OnlineRidge, features : Array[Array[Double]], targets : Array[Double]) -> OnlineRidgefn OnlineRidge::r_squared(self : OnlineRidge, features : Array[Array[Double]], targets : Array[Double]) -> Doublefn OnlineRidge::residuals(self : OnlineRidge, features : Array[Array[Double]], targets : Array[Double]) -> Array[Double]fn OnlineRidge::update(self : OnlineRidge, features : Array[Double], target : Double) -> OnlineRidgefn OperationalSequentialBoundary::critical_value(self : OperationalSequentialBoundary, look : Int) -> Doublefn OptimizationConfig::with_iterations(self : OptimizationConfig, value : Int) -> OptimizationConfigfn OptimizationConfig::with_learning_rate(self : OptimizationConfig, value : Double) -> OptimizationConfigfn OptimizationConfig::with_tolerance(self : OptimizationConfig, value : Double) -> OptimizationConfigpub struct PipelineRun {
pipeline : String
run_id : String
status : PipelineStatus
results : Array[StageResult]
started_at : Int
ended_at : Int
} derive(Eq, ToJson, Debug, FromJson)fn PredictionAuditLog::append(self : PredictionAuditLog, request : ServingRequest, prediction : ServingPrediction) -> PredictionAuditLogfn PredictionAuditLog::attach_outcome(self : PredictionAuditLog, request_id : String, outcome : Double) -> PredictionAuditLogfn PredictionAuditLog::observed_error(self : PredictionAuditLog, absolute_threshold : Double) -> Doublefn PredictionBounds::apply(self : PredictionBounds, prediction : ServingPrediction) -> ServingPrediction?pub struct PredictionInterval {
prediction : Double
lower : Double
upper : Double
confidence : Double
interval_method : IntervalMethod
} derive(Eq, ToJson, Debug, FromJson)fn PredictionInterval::new(prediction : Double, lower : Double, upper : Double, confidence : Double, interval_method : IntervalMethod) -> PredictionIntervalfn PredictiveSummary::new(mean : Double, variance : Double, lower_95 : Double, upper_95 : Double) -> PredictiveSummarypub struct PrivateRelease {
value : Double
mechanism : PrivacyMechanism
epsilon : Double
delta : Double
scale : Double
clipped : Bool
} derive(Eq, ToJson, Debug, FromJson)fn ProbabilityCalibrationReport::bins(self : ProbabilityCalibrationReport) -> Array[ProbabilityCalibrationBin]fn ProbabilityCalibrationReport::is_calibrated(self : ProbabilityCalibrationReport, tolerance : Double) -> Boolpub struct QualityIssue {
rule : String
column : String
severity : QualitySeverity
row : Int
value : String
message : String
} derive(Eq, ToJson, Debug, FromJson)fn QualityIssue::new(rule : String, column : String, severity : QualitySeverity, row : Int, value : String, message : String) -> QualityIssuepub struct QualityReport {
dataset : String
rows : Int
columns : Int
checked_rules : Int
passed_rules : Int
issues : Array[QualityIssue]
profiles : Array[ColumnProfile]
score : Double
} derive(Eq, ToJson, Debug, FromJson)pub struct Registry {
models : Array[ModelVersion]
deployments : Array[DeploymentRecord]
audit : Array[AuditEvent]
} derive(Eq, ToJson, Debug, FromJson)fn Registry::deploy(self : Registry, record : DeploymentRecord, actor : String, timestamp : Int) -> Registryfn Registry::promote(self : Registry, name : String, version : String, target : ModelStage, gate : ValidationGate, score : Double, error_rate : Double, drift : Double, actor : String, timestamp : Int) -> (Registry, GateResult)fn Registry::register(self : Registry, model : ModelVersion, actor : String, timestamp : Int) -> Registryfn RegressionReport::from_predictions(predicted : Array[Double], actual : Array[Double]) -> RegressionReportfn RegretLedger::record(self : RegretLedger, chosen : Int, reward : Double, arm_means : Array[Double]) -> RegretLedgerpub struct RepairPlan {
column : String
action : RepairAction
parameter : Double
affected_rows : Int
rationale : String
} derive(Eq, ToJson, Debug, FromJson)fn RiskFeatureContribution::new(name : String, value : Double, weight : Double) -> RiskFeatureContributionfn RiskScorecard::add_feature(self : RiskScorecard, feature : RiskFeatureContribution) -> RiskScorecardfn RiskScorecard::with_bounds(self : RiskScorecard, minimum : Double, maximum : Double) -> RiskScorecardpub struct RobustDrift {
baseline : RobustLocation
current : RobustLocation
location_shift : Double
scale_ratio : Double
drifted : Bool
} derive(Eq, ToJson, Debug, FromJson)fn RolloutCounter::canary_is_healthy(self : RolloutCounter, maximum_error_rate : Double, minimum_requests : Int) -> Boolfn RolloutCounter::record(self : RolloutCounter, version : String, error : Bool, canary_version : String) -> RolloutCounterpub struct SchemaMigration {
from_version : String
to_version : String
action : MigrationAction
field : String
target : String
reversible : Bool
} derive(Eq, ToJson, Debug, FromJson)fn SequentialBoundary::can_stop(self : SequentialBoundary, estimate : EffectEstimate, look : Int) -> Boolfn ServiceHealth::meets_slo(self : ServiceHealth, minimum_availability : Double, maximum_p95_ms : Double) -> Boolfn ServiceHealth::record(self : ServiceHealth, at : Int, latency_ms : Double, success : Bool) -> ServiceHealthpub struct ServingBatchReport {
predictions : Array[ServingPrediction]
failures : Array[ServingFailure]
total : Int
success_rate : Double
mean_latency_ms : Double
p95_latency_ms : Double
} derive(Eq, ToJson, Debug, FromJson)fn ServingFailure::new(request_id : String, code : String, message : String, retryable : Bool, at : Int) -> ServingFailurefn ServingPrediction::new(request_id : String, value : Double, model_name : String, model_version : String, latency_ms : Int, produced_at : Int) -> ServingPredictionfn ServingPrediction::with_interval(self : ServingPrediction, lower : Double, upper : Double) -> ServingPredictionfn ServingRequest::new(request_id : String, entity_id : String, features : Array[Double], received_at : Int) -> ServingRequestpub struct StageResult {
name : String
status : PipelineStatus
input_rows : Int
output_rows : Int
duration_ms : Int
attempts : Int
error : String
} derive(Eq, ToJson, Debug, FromJson)fn StageResult::failure(name : String, input_rows : Int, duration_ms : Int, attempts : Int, error : String) -> StageResultfn StageResult::success(name : String, input_rows : Int, output_rows : Int, duration_ms : Int, attempts : Int) -> StageResultfn StateEstimate::update(self : StateEstimate, model : KalmanModel, observation_value : Double) -> KalmanUpdatepub struct StratumEffect {
stratum : String
effect : CausalEffect
weight : Double
} derive(Eq, ToJson, Debug, FromJson)pub struct SurvivalObservation {
duration : Double
status : EventStatus
weight : Double
} derive(Eq, ToJson, Debug, FromJson)fn SurvivalObservation::weighted(duration : Double, status : EventStatus, weight : Double) -> SurvivalObservationfn ThresholdCost::new(false_positive : Double, false_negative : Double, true_positive : Double, true_negative : Double) -> ThresholdCostpub struct ThresholdPoint {
threshold : Double
metrics : ThresholdConfusionMatrix
predicted_positive_rate : Double
utility : Double
} derive(Eq, ToJson, Debug, FromJson)fn TimeSeries::rolling(self : TimeSeries, window : Int, statistic : (Array[Double]) -> Double) -> TimeSeriespub struct TransformParameters {
kind : TransformKind
center : Double
scale : Double
lower : Double
upper : Double
fitted_count : Int
} derive(Eq, ToJson, Debug, FromJson)fn TransformParameters::fit_clip(values : Array[Double], lower : Double, upper : Double) -> TransformParametersfn TransformParameters::fit_minmax(values : Array[Double], lower : Double, upper : Double) -> TransformParametersfn TransformPipeline::add(self : TransformPipeline, name : String, parameters : TransformParameters) -> TransformPipelinefn TrendForecast::forecast_intervals(self : TrendForecast, horizon : Int, confidence : Double) -> Array[PredictionInterval]pub struct UpdateLedger {
observations : Array[Observation]
binary : BetaBinomial
counts : GammaPoisson
continuous : NormalNormal
categorical : DirichletMultinomial
} derive(Eq, ToJson, Debug, FromJson)fn UpdateLedger::new(binary : BetaBinomial, counts : GammaPoisson, continuous : NormalNormal, categorical : DirichletMultinomial) -> UpdateLedgerfn ValidationGate::accepts(self : ValidationGate, model : ModelVersion, score : Double, error_rate : Double, drift : Double) -> Boolfn WeightedSummary::push(self : WeightedSummary, value : Double, weight : Double) -> WeightedSummaryfn achieved_power(baseline : Double, treatment : Double, per_arm : Int, alpha : Double) -> PowerEstimatefn adam_optimize(objective : (Array[Double]) -> Double, gradient : (Array[Double]) -> Array[Double], initial : Array[Double], config : AdamConfig) -> OptimizationTracefn adjust_analysis_covariate(control : AnalysisArm, treatment : AnalysisArm) -> OperationalCovariateAdjustmentfn all_cohort_metrics(observations : Array[CohortObservation], threshold : Double) -> Array[CohortMetric]fn allocate_epsilon_greedy(arms : Array[ExperimentArm], total : Int, epsilon : Double) -> Array[Int]fn allocate_fixed_ratio(total : Int, treatment_fraction : Double) -> (Int, Int)fn apply_isotonic_calibrator(calibrator : Array[IsotonicPoint], scores : Array[Double]) -> Array[Double]fn bayesian_experiment_decision(control_mean : Double, control_error : Double, treatment_mean : Double, treatment_error : Double, required_probability : Double) -> BayesianExperimentDecisionfn best_threshold(scores : Array[Double], outcomes : Array[Bool], cost : ThresholdCost, steps : Int) -> ThresholdPointfn bootstrap_distribution(rng : DeterministicRng, values : Array[Double], replicates : Int) -> (DeterministicRng, Array[Double])fn bootstrap_indices(rng : DeterministicRng, size : Int, samples : Int) -> (DeterministicRng, Array[Int])fn bootstrap_mean(rng : DeterministicRng, values : Array[Double], replicates : Int) -> (DeterministicRng, BootstrapSummary)fn build_batch_report(predictions : Array[ServingPrediction], failures : Array[ServingFailure], total : Int) -> ServingBatchReportfn build_cohort_report(observations : Array[CohortObservation], reference : String, threshold : Double, maximum_score_gap : Double, maximum_recall_gap : Double) -> CohortReportfn calibration_bins(probabilities : Array[Double], outcomes : Array[Bool], bins : Int) -> Array[UncertaintyCalibrationBin]fn calibration_report(probabilities : Array[Double], outcomes : Array[Bool], bucket_count : Int) -> ProbabilityCalibrationReportfn central_derivative(function : (Double) -> Double, value : Double, step : Double) -> Doublefn check_allowed_values(report : QualityReport, column : String, values : Array[String], allowed : Array[String]) -> QualityReportfn check_analysis_allocation(control_count : Int, treatment_count : Int, expected_control : Double, tolerance : Double) -> AllocationCheckfn check_cardinality(report : QualityReport, column : String, values : Array[String], minimum : Int, maximum : Int) -> QualityReportfn check_distribution_drift(report : QualityReport, column : String, baseline : Array[Double], current : Array[Double], threshold : Double) -> QualityReportfn check_freshness(report : QualityReport, column : String, timestamps : Array[Int], now : Int, maximum_age : Int) -> QualityReportfn check_monotonic(report : QualityReport, column : String, values : Array[Double], increasing : Bool) -> QualityReportfn check_null_rate(report : QualityReport, column : String, values : Array[String], maximum_rate : Double) -> QualityReportfn check_numeric_range(report : QualityReport, column : String, values : Array[Double], minimum : Double, maximum : Double, severity : QualitySeverity) -> QualityReportfn check_required(report : QualityReport, column : String, values : Array[String], severity : QualitySeverity) -> QualityReportfn check_string_length(report : QualityReport, column : String, values : Array[String], minimum : Int, maximum : Int) -> QualityReportfn clamp(value : Double, lower : Double, upper : Double) -> Doublefn cohort_gaps(observations : Array[CohortObservation], reference : String, threshold : Double, maximum_score_gap : Double, maximum_recall_gap : Double) -> Array[CohortGap]fn cohort_metric(observations : Array[CohortObservation], cohort : String, threshold : Double) -> CohortMetricfn combine_beta_negative_binomial(left : BetaNegativeBinomial, right : BetaNegativeBinomial) -> BetaNegativeBinomialfn compare_binary_models(predictions : Array[Array[Double]], observed : Array[Bool]) -> Array[ModelScore]fn compare_cohort_distributions(baseline : Array[CohortObservation], current : Array[CohortObservation], minimum_count_ratio : Double, maximum_score_shift : Double) -> Array[CohortDrift]fn compare_robust_windows(baseline : Array[Double], current : Array[Double], shift_tolerance : Double, scale_ratio_tolerance : Double) -> RobustDriftfn compare_value(comparator : Comparator, actual : Double, expected : Double, tolerance : Double) -> Boolfn coordinate_search(objective : (Array[Double]) -> Double, initial : Array[Double], step : Double, tolerance : Double, max_iterations : Int) -> CoordinateSearchResultfn counterfactual(original : Double, counterfactual_value : Double, minimum : Double, maximum : Double) -> CounterfactualResultfn covariate_balance(treated : Array[Double], control : Array[Double], threshold : Double) -> BalanceReportfn cuped_adjust(outcomes : Array[Double], covariates : Array[Double], target_covariate_mean : Double) -> CovariateAdjustmentfn decide_experiment(control : ExperimentArm, treatment : ExperimentArm, boundary : SequentialBoundary, look : Int) -> ExperimentDecisionfn decide_risk(scorecard : RiskScorecard, loss_if_positive : Double, loss_if_negative : Double, accept_loss : Double) -> RiskDecisionfn equalized_odds_gaps(observations : Array[CohortObservation], reference : String, threshold : Double, tolerance : Double) -> Array[EqualizedOddsGap]fn estimate_probability(rng : DeterministicRng, samples : Int, event : (Double) -> Bool) -> (DeterministicRng, MonteCarloEstimate)fn estimate_transitions(sequence : Array[Int], states : Int, smoothing : Double) -> TransitionEstimatefn evaluate_gate(gate : ValidationGate, model : ModelVersion, score : Double, error_rate : Double, drift : Double) -> GateResultfn evaluate_intervals(intervals : Array[PredictionInterval], actual : Array[Double], target : Double) -> CoverageReportfn evaluate_quantile(actual : Array[Double], predicted : Array[Double], quantile : Double) -> QuantileLossfn evaluate_sequential_look(boundary : OperationalSequentialBoundary, look : Int, estimate : Double, standard_error : Double, futility_z : Double) -> SequentialDecisionfn expected_value(probability : Double, benefit : Double, cost : Double) -> Doublefn experiment_quality(allocation : AllocationCheck, guardrails : GuardrailReport, sequential : SequentialDecision, expected_observations : Int, observed_observations : Int) -> ExperimentQualityfn feature_drift(feature : String, baseline : Array[Double], current : Array[Double]) -> FeatureDriftfn fit_linear_model(features : Array[Array[Double]], targets : Array[Double], config : OptimizationConfig) -> LinearFitfn fit_local_level(values : Array[Double], process_noise : Double, observation_noise : Double) -> LocalLevelModelfn fit_local_trend(values : Array[Double], smoothing : Double, trend_smoothing : Double) -> TrendForecastfn fit_platt_calibrator(scores : Array[Double], outcomes : Array[Bool], max_iterations : Int, tolerance : Double) -> PlattCalibratorfn gaussian_interval(prediction : Double, standard_error : Double, confidence : Double) -> PredictionIntervalfn gaussian_release(value : Double, sensitivity : Double, epsilon : Double, delta : Double, noise : Double) -> PrivateReleasefn gradient_descent(objective : (Array[Double]) -> Double, gradient : (Array[Double]) -> Array[Double], initial : Array[Double], config : OptimizationConfig) -> OptimizationTracefn huber_location(values : Array[Double], tuning : Double, tolerance : Double, max_iterations : Int) -> RobustLocationfn importance_estimate(samples : Array[ImportanceSample], function : (Double) -> Double) -> MonteCarloEstimatefn integrate_adaptive(function : (Double) -> Double, left : Double, right : Double, tolerance : Double, max_refinements : Int) -> QuadratureResultfn integrate_simpson(function : (Double) -> Double, left : Double, right : Double, slices : Int) -> QuadratureResultfn integrate_trapezoid(function : (Double) -> Double, left : Double, right : Double, slices : Int) -> QuadratureResultfn integrate_uniform(rng : DeterministicRng, lower : Double, upper : Double, samples : Int, function : (Double) -> Double) -> (DeterministicRng, MonteCarloEstimate)fn kalman_filter(model : KalmanModel, observations : Array[Double], initial : StateEstimate) -> Array[KalmanUpdate]fn materialize(store : FeatureStore, feature : String, entity_ids : Array[String], start_time : Int, end_time : Int) -> (FeatureStore, MaterializationJob)fn mean_interval_score(intervals : Array[PredictionInterval], actual : Array[Double], alpha : Double) -> Doublefn metropolis(rng : DeterministicRng, initial : Double, iterations : Int, burn_in : Int, proposal_scale : Double, log_density : (Double) -> Double) -> (DeterministicRng, MarkovChainState)fn metropolis_step(state : MarkovChainState, rng : DeterministicRng, proposal_scale : Double, log_density : (Double) -> Double) -> (MarkovChainState, DeterministicRng)fn monotonicity_report(feature : String, values : Array[Double], predictions : Array[Double], increasing : Bool, tolerance : Double) -> MonotonicityReportfn monte_carlo(rng : DeterministicRng, samples : Int, sampler : (DeterministicRng) -> (DeterministicRng, Double), statistic : (Double) -> Double) -> (DeterministicRng, MonteCarloEstimate)fn noisy_count(count : Int, sensitivity : Double, epsilon : Double, noise : Double) -> PrivateReleasefn noisy_mean(values : Array[Double], sensitivity : Sensitivity, epsilon : Double, noise : Double) -> PrivateReleasefn noisy_proportion(successes : Int, trials : Int, epsilon : Double, noise : Double) -> PrivateReleasefn noisy_sum(values : Array[Double], sensitivity : Sensitivity, epsilon : Double, noise : Double) -> PrivateReleasefn optimize_threshold(probabilities : Array[Double], actual : Array[Bool], cost : DecisionCost, steps : Int) -> ThresholdReportfn partial_dependence(predictions : Array[Array[Double]], feature_index : Int, grid : Array[Double]) -> Array[PartialDependencePoint]fn permutation_difference(rng : DeterministicRng, left : Array[Double], right : Array[Double], permutations : Int) -> (DeterministicRng, Double)fn plan_binary_experiment(baseline_rate : Double, minimum_effect : Double, alpha : Double, power : Double) -> PowerPlanfn policy_value(observations : Array[CausalObservation], policy_treat : Array[Bool]) -> TreatmentPolicyValuefn privacy_risk_score(unique_count : Int, total_count : Int, epsilon : Double) -> Doublefn quantile_loss(actual : Double, predicted : Double, quantile : Double) -> Doublefn randomized_response(value : Bool, probability_truthful : Double, random_value : Double) -> Boolfn reliability_report(probabilities : Array[Double], outcomes : Array[Bool], bins : Int) -> ReliabilityReportfn risk_calibration_table(probabilities : Array[Double], outcomes : Array[Bool], buckets : Int) -> Array[RiskCalibrationRow]fn risk_loss_curve(probabilities : Array[Double], exposures : Array[Double], loss_if_event : Double, review_cost : Double, steps : Int) -> Array[LossCurvePoint]fn sample_ratio_check(control : Int, treatment : Int, allocation : Double, alpha : Double) -> SampleRatioReportfn sample_size_for_proportion(baseline : Double, absolute_effect : Double, alpha : Double, power : Double) -> Intfn second_derivative(function : (Double) -> Double, value : Double, step : Double) -> Doublefn solve_bisection(function : (Double) -> Double, bracket : RootBracket, tolerance : Double, max_iterations : Int) -> NumericalResultfn solve_linear_system(matrix : Array[Array[Double]], vector : Array[Double], tolerance : Double) -> SolveLinearResultfn solve_newton(function : (Double) -> Double, derivative : (Double) -> Double, initial : Double, tolerance : Double, max_iterations : Int) -> NumericalResultfn solve_secant(function : (Double) -> Double, first : Double, second : Double, tolerance : Double, max_iterations : Int) -> NumericalResultfn stacking_report(members : Array[EnsembleMember], prediction : EnsemblePrediction) -> StackingReportfn suggest_numeric_repairs(profile : ColumnProfile, maximum_missing_rate : Double) -> Array[RepairPlan]fn summarize_portfolio(probabilities : Array[Double], exposures : Array[Double], high_risk_threshold : Double, loss_if_event : Double) -> PortfolioRiskSummaryfn threshold_confusion_matrix(scores : Array[Double], outcomes : Array[Bool], threshold : Double) -> ThresholdConfusionMatrixfn threshold_curve(scores : Array[Double], outcomes : Array[Bool], steps : Int) -> Array[ThresholdPoint]fn threshold_report(probabilities : Array[Double], actual : Array[Bool], threshold : Double, cost : DecisionCost) -> ThresholdReportfn transform_audit(before : Array[Double], after : Array[Double], lower : Double, upper : Double) -> TransformAuditfn treatment_effect_by_stratum(labels : Array[String], treatment : Array[Bool], outcomes : Array[Double]) -> Array[UpliftSegment]fn uplift_segment(label : String, treatment : Array[Double], control : Array[Double], value_per_unit : Double) -> UpliftSegmentfn utility_curve(probabilities : Array[Double], actual : Array[Bool], harm : Double, steps : Int) -> Array[UtilityCurvePoint]fn validate_data_contract(contract : DataContractSpec, columns : Array[String], rows : Int, now : Int, updated_at : Int) -> Array[ContractIssue]fn validate_row(schema : DataSchema, present : Array[String], numeric_fields : Array[String]) -> RowValidationfn value_of_information(current : Double, improved : Double, information_cost : Double) -> Doublefn window_aggregate(timestamps : Array[Int], values : Array[Double], window : WindowSpec) -> Array[(Int, NumericAggregate)]