{"library":"pot","title":"Python Optimal Transport Library (POT)","description":"POT (Python Optimal Transport) is a comprehensive Python library offering various solvers for optimal transport problems. It provides efficient implementations for classic optimal transport, Wasserstein distances, Sinkhorn algorithm, Gromov-Wasserstein, and more, including recent extensions like unbalanced OT and GMM-OT. Currently at version 0.9.6.post1, the library sees frequent minor releases, often introducing new features, solvers, and bug fixes.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install pot"],"cli":null},"imports":["import ot"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import numpy as np\nimport ot\n\n# Generate two 1D samples\nn = 100\nnp.random.seed(0)\nxs = np.random.normal(0, 1, n)\nxt = np.random.normal(5, 1, n)\n\n# Histogram counts (uniform distribution)\na = np.ones(n) / n\nb = np.ones(n) / n\n\n# Cost matrix: squared Euclidean distance\nM = ot.dist(xs.reshape((n, 1)), xt.reshape((n, 1)))\nM /= M.max() # Normalize cost matrix for stability\n\n# Compute Earth Mover's Distance (EMD) / Wasserstein-1 distance\nG = ot.emd(a, b, M)\nprint(f\"Optimal Transport plan (first 5x5):\n{G[:5,:5]}\")\nprint(f\"EMD cost: {np.sum(G * M)}\")","lang":"python","description":"This example demonstrates how to compute the Earth Mover's Distance (EMD) between two 1D samples using POT's core `ot.emd` function. It covers generating samples, defining uniform marginal distributions, computing a normalized cost matrix, and finally, calculating the optimal transport plan and its total cost.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"0.9.6.post1","pypi_latest":"0.9.6.post1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":7.4,"avg_import_s":1.41,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pot","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.1,"import_time_s":0.95,"mem_mb":28,"disk_size":"229M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pot","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.2,"import_time_s":1.73,"mem_mb":33.6,"disk_size":"243M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pot","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.3,"import_time_s":1.81,"mem_mb":32.8,"disk_size":"228M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pot","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.5,"import_time_s":1.6,"mem_mb":32.1,"disk_size":"227M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pot","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.1,"import_time_s":0.95,"mem_mb":24.3,"disk_size":"236M"}]}}