Finite-support regularized optimal transport solvers in MoonBit
pub(all) enum BarycenterCostsError {
InputError(BarycenterError)
CostCountMismatch
CostRowCountMismatch(Int)
CostColumnCountMismatch(Int, Int)
NonFiniteCost(Int, Int, Int)
NegativeCost(Int, Int, Int)
SolverError(Int, SinkhornError)
NumericalFailure
}pub(all) enum BarycenterError {
EmptyMeasures
WeightCountMismatch
EmptySupport
EmptyMeasure(Int)
CostRowCountMismatch
CostColumnCountMismatch(Int)
NonFiniteWeight(Int)
NonPositiveWeight(Int)
NonFiniteWeightTotal
NonFiniteMass(Int, Int)
NegativeMass(Int, Int)
NonFiniteMeasureTotal(Int)
UnequalMeasureTotal(Int)
NonFiniteCost(Int, Int)
NegativeCost(Int, Int)
InvalidEpsilon
InvalidTolerance
InvalidIterationLimit
SolverError(SinkhornError)
NumericalFailure
}pub(all) struct BarycenterResult {
barycenter : Array[Double]
weighted_objective : Double
maximum_transport_residual : Double
log_barycenter_residual : Double
iterations : Int
termination : BarycenterTermination
}pub(all) enum BarycenterTermination {
Converged
IterationLimit
}pub(all) enum CouplingCompositionError {
InvalidTolerance
InvalidLeft(CouplingError)
InvalidRight(CouplingError)
BridgeDimensionMismatch(Int, Int)
BridgeMassMismatch(Int, Double, Double)
UndefinedBridgeConditional(Int)
NumericalOverflow(Int, Int, Int)
InvalidOutput(CouplingError)
}pub(all) enum CouplingError {
EmptyCoupling
EmptyCouplingRow(Int)
RaggedCouplingRow(Int, Int, Int)
NonFiniteCouplingEntry(Int, Int)
NegativeCouplingEntry(Int, Int)
CostRowCountMismatch
CostColumnCountMismatch(Int)
NonFiniteCost(Int, Int)
NegativeCost(Int, Int)
NumericalOverflow(Int, Int)
}pub(all) enum CouplingInformationError {
InvalidCoupling(CouplingError)
InvalidReference(CouplingError)
RowCountMismatch(Int, Int)
ColumnCountMismatch(Int, Int)
ZeroReferenceSupport(Int, Int)
NumericalOverflow(Int, Int)
}pub(all) enum CouplingOrientationError {
InvalidCoupling(CouplingError)
SourcePermutationLength
TargetPermutationLength
SourceIndexOutOfRange(Int)
TargetIndexOutOfRange(Int)
DuplicateSourceIndex(Int)
DuplicateTargetIndex(Int)
}pub(all) enum CouplingProjectionError {
InvalidCoupling(CouplingError)
TargetValueCountMismatch
EmptyTargetFeatureVector
RaggedTargetValuesRow(Int, Int, Int)
NonFiniteTargetValue(Int, Int)
ZeroMassSourceRow(Int)
NumericalOverflow(Int, Int)
}pub(all) enum CouplingRoundingError {
InvalidCoupling(CouplingError)
SourceCountMismatch
TargetCountMismatch
NonFiniteSourceMass(Int)
NonFiniteTargetMass(Int)
NegativeSourceMass(Int)
NegativeTargetMass(Int)
NonFiniteSourceTotal
NonFiniteTargetTotal
UnequalTotalMass
InvalidTolerance
NumericalFailure
FeasibilityFailure(Double)
}pub(all) enum PointCostError {
EmptySourceSupport
EmptyTargetSupport
EmptySourcePoint(Int)
EmptyTargetPoint(Int)
SourcePointDimensionMismatch(Int, Int, Int)
TargetPointDimensionMismatch(Int, Int, Int)
PointDimensionMismatch(Int, Int)
NonFiniteSourceCoordinate(Int, Int)
NonFiniteTargetCoordinate(Int, Int)
NumericalOverflow(Int, Int)
}pub(all) enum SinkhornContinuationError {
EmptySchedule
InvalidEpsilon(Int)
NonDecreasingEpsilon(Int)
InvalidTolerance(Int)
InvalidIterationLimit(Int)
StageFailed(Int, SinkhornError, SinkhornContinuationProgress)
}pub(all) struct SinkhornContinuationProgress {
stages : Array[SinkhornContinuationStage]
total_iterations : Int64
last_seed : SinkhornWarmStart?
}pub(all) struct SinkhornContinuationResult {
stages : Array[SinkhornContinuationStage]
total_iterations : Int64
last_seed : SinkhornWarmStart
termination : SinkhornTermination
}pub(all) enum SinkhornDivergenceError {
SourceSelfCostRowCountMismatch
SourceSelfCostColumnCountMismatch(Int)
TargetSelfCostRowCountMismatch
TargetSelfCostColumnCountMismatch(Int)
AsymmetricSourceSelfCost(Int, Int)
AsymmetricTargetSelfCost(Int, Int)
CrossTransport(SinkhornError)
SourceSelfTransport(SinkhornError)
TargetSelfTransport(SinkhornError)
NumericalFailure
}pub(all) struct SinkhornDivergenceResult {
value : Double
cross : SinkhornResult
source_self : SinkhornResult
target_self : SinkhornResult
}pub(all) enum SinkhornError {
EmptySourceMarginal
EmptyTargetMarginal
CostRowCountMismatch
CostColumnCountMismatch(Int)
NegativeSourceMass(Int)
NegativeTargetMass(Int)
NonFiniteSourceMass(Int)
NonFiniteTargetMass(Int)
NonFiniteTotalMass
UnequalTotalMass
NegativeCost(Int, Int)
NonFiniteCost(Int, Int)
InvalidEpsilon
InvalidTolerance
InvalidIterationLimit
InvalidWarmStart
NumericalFailure
}pub(all) struct SinkhornOptions {
epsilon : Double
tolerance : Double
max_iterations : Int
}pub(all) struct SinkhornResult {
coupling : Array[Array[Double]]
transport_cost : Double
entropy_regularizer : Double
regularized_objective : Double
marginal_residual : Double
iterations : Int
termination : SinkhornTermination
}pub(all) enum SinkhornTermination {
Converged
IterationLimit
}pub(all) enum UnbalancedSinkhornError {
EmptySourceMarginal
EmptyTargetMarginal
CostRowCountMismatch
CostColumnCountMismatch(Int)
NegativeSourceMass(Int)
NegativeTargetMass(Int)
NonFiniteSourceMass(Int)
NonFiniteTargetMass(Int)
NegativeCost(Int, Int)
NonFiniteCost(Int, Int)
InvalidEpsilon
InvalidSourcePenalty
InvalidTargetPenalty
InvalidCostWeight
InvalidTolerance
InvalidIterationLimit
NumericalFailure
}pub(all) struct UnbalancedSinkhornOptions {
epsilon : Double
rho_source : Double
rho_target : Double
cost_weight : Double
tolerance : Double
max_iterations : Int
}pub(all) struct UnbalancedSinkhornResult {
coupling : Array[Array[Double]]
objective : Double
transport_cost : Double
reference_kl : Double
source_marginal_kl : Double
target_marginal_kl : Double
source_marginal_residual : Double
target_marginal_residual : Double
scaling_residual : Double
iterations : Int
termination : UnbalancedSinkhornTermination
}pub(all) enum UnbalancedSinkhornTermination {
Converged
IterationLimit
}pub(all) enum UnbalancedSinkhornWarmStartError {
SolverError(UnbalancedSinkhornError)
InvalidWarmStart
}pub(all) enum WeightedPointCostError {
InvalidPoints(PointCostError)
WeightDimensionMismatch
NonFiniteWeight(Int)
NegativeWeight(Int)
NumericalOverflow(Int, Int)
}fn balanced_sinkhorn(source : Array[Double], target : Array[Double], cost : Array[Array[Double]], options : SinkhornOptions) -> Result[SinkhornResult, SinkhornError]fn balanced_sinkhorn_continuation(source : Array[Double], target : Array[Double], cost : Array[Array[Double]], schedule : Array[SinkhornOptions], warm_start : SinkhornWarmStart?) -> Result[SinkhornContinuationResult, SinkhornContinuationError]fn balanced_sinkhorn_divergence(source : Array[Double], target : Array[Double], cross_cost : Array[Array[Double]], source_self_cost : Array[Array[Double]], target_self_cost : Array[Array[Double]], options : SinkhornOptions) -> Result[SinkhornDivergenceResult, SinkhornDivergenceError]fn balanced_sinkhorn_with_warm_start(source : Array[Double], target : Array[Double], cost : Array[Array[Double]], options : SinkhornOptions, warm_start : SinkhornWarmStart?) -> Result[(SinkhornResult, SinkhornWarmStart), SinkhornError]fn coupling_kl(coupling : Array[Array[Double]], reference : Array[Array[Double]]) -> Result[Double, CouplingInformationError]fn coupling_transport_cost(coupling : Array[Array[Double]], cost : Array[Array[Double]]) -> Result[Double, CouplingError]fn coupling_transpose(coupling : Array[Array[Double]]) -> Result[Array[Array[Double]], CouplingError]fn regularized_barycenter(measures : Array[Array[Double]], weights : Array[Double], cost : Array[Array[Double]], options : SinkhornOptions) -> Result[BarycenterResult, BarycenterError]fn regularized_barycenter_with_costs(measures : Array[Array[Double]], weights : Array[Double], costs : Array[Array[Array[Double]]], options : SinkhornOptions) -> Result[BarycenterResult, BarycenterCostsError]fn round_balanced_coupling(coupling : Array[Array[Double]], source : Array[Double], target : Array[Double], tolerance : Double) -> Result[CouplingRoundingResult, CouplingRoundingError]fn unbalanced_sinkhorn(source : Array[Double], target : Array[Double], cost : Array[Array[Double]], options : UnbalancedSinkhornOptions) -> Result[UnbalancedSinkhornResult, UnbalancedSinkhornError]fn unbalanced_sinkhorn_with_warm_start(source : Array[Double], target : Array[Double], cost : Array[Array[Double]], options : UnbalancedSinkhornOptions, warm_start : UnbalancedSinkhornWarmStart?) -> Result[(UnbalancedSinkhornResult, UnbalancedSinkhornWarmStart), UnbalancedSinkhornWarmStartError]Install
Download zipFinite-support regularized optimal transport solvers in MoonBit