SALib is a Python library for global sensitivity analysis (GSA) of computational models. It implements a comprehensive suite of variance-based and moment-independent methods including Sobol', Morris, FAST, DGSM, PAWN, HDMR, RBD-FAST, and fractional factorial designs. The library follows a decoupled workflow: sample parameter space, evaluate the model, then analyze results. It provides both a programmatic API (import SALib) and a command-line interface (salib sample/analyze). The architecture is modular: sampling modules in SALib.sample, analysis modules in SALib.analyze, with shared utilities in SALib.util. A high-level ProblemSpec class enables fluent method chaining (sample → evaluate → analyze → plot). Results are returned as ResultDict objects with to_df() and plot() methods for integration with pandas and matplotlib. External dependencies are numpy, scipy, matplotlib, pandas, and optionally multiprocess/pathos for parallel execution. The library is used in environmental modeling, energy systems, and uncertainty quantification research, with over 1000 GitHub stars and a JOSS paper.
DoWhy is a mature Python library for causal inference that implements a systematic four-step workflow: model (encode causal graph), identify (derive estimand), estimate (compute causal effect), and refute (validate robustness). The library supports two major frameworks: (1) classical potential-outcomes-based estimation with ATE/ATT/CATE via backdoor, frontdoor, instrumental variables, and mediation analysis, leveraging multiple estimators including linear regression, propensity score methods, doubly robust, instrumental variable, regression discontinuity, and integrations with EconML and CausalML; (2) Graphical Causal Model (GCM) based inference for what-if analysis, counterfactual sampling, distribution change attribution, arrow strength, intrinsic causal influence, anomaly attribution, and root cause analysis. The architecture is modular with abstract base classes for estimators, refuters, interpreters, and GCM components. The main entry point is the CausalModel class, which orchestrates identification, estimation, and refutation via a consistent API. Key dependencies include scikit-learn, statsmodels, networkx, sympy, pandas, numpy, and optional integrations with Torch, EconML, Causal-learn, and TabPFN. The library is production-ready with comprehensive test suites, CI/CD, and extensive documentation, and is actively maintained with a large contributor base.