# Search Algorithms β€” By Type This page lists all algorithms whose wrappers implement `edu.cmu.tetrad.algcomparison.algorithm.Algorithm` in **Tetrad 7.6.9**. Descriptions are based on the corresponding classes in `edu.cmu.tetrad.search`. This catalog provides a comprehensive overview of all structure-learning algorithms available in Tetrad, with links to full per-algorithm documentation. If you are new to Tetrad or want a curated subset of recommended methods, start with πŸ‘‰ **[Search Algorithms β€” Short List](search-algorithms-short-list.md)** *Note:* Many per-algorithm pages are still being added as part of an ongoing documentation update. --- ## Legend β€” Algorithm Categories | Badge | Category | Description | |-------|-----------|-------------| | πŸ” | Constraint-based | Uses conditional independence (CI) tests | | πŸ“ | Score-based | Optimizes a score such as BIC, BDeu, GIC | | πŸŒ€ | Hybrid | Combines score-based and CI-test stages | ### Extra Structural Badges | Badge | Meaning | Description | |-------|----------|-------------| | 🧩 | *Latent-capable* | Can output PAGs; handles latent confounding and selection bias | | πŸ” | *Time-series / lagged* | Supports lagged variables (PCMCI, time-lag FGES/PC) | | 🎨 | *Non-Gaussian / ICA* | Uses ICA, skewness, or higher-order moments | | 🧠 | *Multi-dataset* | For multi-sample or cross-subject analyses | | πŸ“¦ | *Resampling / stability* | Ensemble, bootstrap, or stability methods | | πŸ§ͺ | *Experimental* | Research / nonstandard algorithms | | πŸ”§ | *Orientation-only* | Orient edges from a fixed skeleton | --- ## πŸ” Constraint-Based Algorithms (CPDAG / PAG) *Use conditional independence tests to prune adjacencies and orient edges.* | Algorithm | Description | |------------------------------------------------------|-------------| | **Pc** β€” [PC](algorithms/pc.md) πŸ” | Classic constraint-based CPDAG search (CI-test–driven). | | **Pc-Max** β€” [PC-Max](algorithms/pc.md) πŸ” | PC variant maximizing p-value for collider orientation. | | **CPC** β€” [CPC](algorithms/cpc.md) πŸ” | Conservative collider rule reducing false orientations. | | **Pcd** β€” [PCD](algorithms/pcd.md) ♻️ | PC variant robust to deterministic relations. | | **PcMb** [PC-MB](algorithms/pcmb.md) πŸ” | Local Markov blanket discovery via PC-style logic. | | **Fas** β€” [FAS](algorithms/fas.md) πŸ” | Fast Adjacency Search (the adjacency phase of PC). | | **Fci** β€” [FCI](algorithms/fci.md) πŸ”πŸ§© | Full PAG search with latent confounding & selection bias. | | **Rfci** β€” [RFCI](algorithms/rfci.md) πŸ”πŸ§© | Fast approximation to FCI (reduced complexity). | | **FciIod** β€” [FCI-IOD](algorithms/fci-iod.md) πŸ”πŸ§©πŸ§  | FCI variant for multi-dataset / partially overlapping variable sets. | | **Pcmci** β€” [PCMCI](algorithms/pcmci.md) πŸ”πŸ” | CI-based causal discovery for time-series data. | | **Ccd** β€” [CCD](algorithms/ccd.md) πŸ” | Cyclic Causal Discovery (allows feedback loops). | --- ## πŸ“ Score-Based Algorithms (CPDAG) *Optimize a score (BIC, GIC, BDeu, IS-BIC, etc.) over DAGs or equivalence classes.* | Algorithm | Description | |--------------------------------------------------------------------------|-------------------------------------------------------------------| | **Fges** β€” [FGES](algorithms/fges.md) πŸ“ | Fast greedy equivalence search; highly scalable. | | **FgesMb** β€” [FGES-MB](algorithms/fges-mb.md) πŸ“ | FGES variant specialized for Markov blankets. | | **Boss** β€” [BOSS](algorithms/boss.md) πŸ“ | Best Order Score Search over variable orderings. | | **RestrictedBoss** β€” [Restricted BOSS](algorithms/restricted-boss.md) πŸ“ | BOSS with parent/tier restrictions for speed. | | **Grasp** β€” [GRaSP](algorithms/grasp.md) πŸ“ | Greedy Relaxations of Sparsest Permutation. | | **LV-Heuristic** β€” [LV-Heuristic](algorithms/lv-heuristic.md) πŸͺΆ | Heuristic PAG from BOSS DAG; lightweight alternative to FCI/FCIT. | | **Sp** β€” [SP](algorithms/sp.md) πŸ“ | Sparsest Permutation; exact but only for very small models. | | **Images** πŸ§©πŸ§ πŸ“ β€” [IMaGES](algorithms/images.md) | Multi-sample FGES with cross-sample consistency. | | **IMaGESBoss** πŸ§©πŸ§ πŸ“ β€” [IMaGES](algorithms/images.md) | Multi-sample BOSS with cross-sample consistency. | --- ## πŸŒ€ Hybrid Algorithms (Score + FCI) *Start with a CPDAG from a score-based method, then apply FCI-style pruning/orientation to obtain a PAG.* | Algorithm | Description | |----------|-------------| | **Gfci** β€” [GFCI](algorithms/gfci.md) πŸŒ€πŸ§© | FGES β†’ FCI refinement yielding a PAG. | | **GraspFci** β€” [GRaSP-FCI](algorithms/grasp-fci.md) πŸŒ€πŸ§© | GRaSP β†’ FCI refinement. | | **BossFci** β€” [BOSS-FCI](algorithms/boss-fci.md) πŸŒ€πŸ§© | BOSS β†’ FCI refinement. | | **SpFci** β€” [SP-FCI](algorithms/sp-fci.md) πŸŒ€πŸ§© | Sparsest Permutation β†’ FCI refinement. | | **Fcit** β€” [FCIT](algorithms/fcit.md) πŸŒ€πŸ§© | Score-guided selective testing; efficient, legal-PAG output. | --- ## 🎨 Non-Gaussian, Moment-Based, and Orientation Algorithms *Use ICA, skewness, or higher-order moments to orient edges or to supplement a skeleton.* | Algorithm | Description | |--------------------------------------------------------------------|-------------------------------------------------------| | **DirectLingam** β€” [Direct LiNGAM](algorithms/direct-lingam.md) 🎨 | Direct LiNGAM for linear non-Gaussian models. | | **IcaLingam** β€” [ICA LiNGAM](algorithms/ica-lingam.md) 🎨 | ICA-based LiNGAM (classic). | | **IcaLingD** β€” [ICA LiNG-D](algorithms/ica-lingd.md) 🎨 | Cyclic LiNGAM (Lacerda et al.). | | **Fask** β€” [FASK](algorithms/fask.md) 🎨 | FAS skeleton + skewness-based orientation. | | **FaskVote** β€” [FASK-Vote](algorithms/fask-vote.md) πŸŽ¨πŸ“¦ | Voting ensemble of FASK. | | **Pairwise** β€” [Pairwise](algorithms/pairwise.md) 🎨 | Pairwise-skewness orientation. | --- ## Nonlinear & Distribution-Shift Algorithms *Handle nonlinear functions, distribution shifts, or cyclic behavior.* | Algorithm | Description | |---------------------------------------------|-------------| | **Cam** β€” [CAM](algorithms/cam.md) | Causal Additive Model (nonlinear additive noise SEMs). | | **Dagma** β€” [DAGMA](algorithms/dagma.md) πŸ“ | Continuous DAG optimization with smooth acyclicity constraint. | | **Cdnod** β€” [CD-NOD](algorithms/cdnod.md) | Causal discovery under distributional changes. | --- ## πŸ“¦ Stability / Resampling / Ensemble Wrappers *Run algorithms repeatedly under resampling or varying penalties.* | Algorithm | Description | |--------------------------------------------------------------------------------------|-------------| | **StabilitySelection** β€” [Stability Selection](algorithms/stability-selection.md) πŸ“¦ | Stability selection for edges across resampling. | | **StARS** β€” [StARS](algorithms/stars.md) πŸ“¦ | Stability Approach to Regularization Selection. | | **PagSamplingRfci** β€” [PAG Sampling RFCI](algorithms/pag-sampling-rfci.md) πŸ”πŸ§©πŸ“¦ | RFCI on resampled/generated PAGs. | | **RfciBsc** β€” [RFCI-BSC](algorithms/rfci-bsc.md) πŸ”πŸ§©πŸ“¦ | RFCI with bootstrap/stability selection. | --- ## πŸ§ͺ Specialized / Utility Algorithms *Special-purpose, experimental, or workflow-specific methods.* | Algorithm | Description | |--------------------------------------------------------------------------|-------------| | **DM** [DM](algorithms/dm.md) πŸ§ͺ | Detect–Mimic (intermediate-latent preprocessing). | | **Cstar** [CStaR](algorithms/cstar.md) πŸ§ͺ | Bounds on causal effects via edge-orientation patterns. | | **SingleGraphAlg** [Single Graph Alg](algorithms/single-graph-alg.md) πŸ§ͺ | Wrapper for running Tetrad on a fixed imported graph. | --- ## Latent Clustering (Measurement Block Discovery) These algorithms discover measurement clustersβ€”groups of indicators that behave as if they share a single latent parent. See **[Latent Clusters](algorithms/latent-cluster.md)** for details. | Algorithm | Description | |----------|-------------| | **TSC** | Trek Separation Clusters using rank constraints. | | **FOFC** | First-Order Factor Clustering via pure tetrads. | | **FTFC** | Fast Tetrad-Factor Clustering using sextads. | | **GFFC** | Generalized Factor Finding Clustering (2Γ—2 β†’ 3Γ—3 β†’ …). | | **BPC** | Build Pure Clusters (global purification & merging). | Once clusters are obtained, they can be treated as **measurement blocks**. These blocks may be supplied to algorithms that support: - **Blocks-Test-TS** β€” a trek-separation conditional independence test over blocks; - **Blocks-BIC** β€” a block-aware score. In this mode, *any* algorithm that accepts a test and/or a score (PC, FGES, BOSS, GFCI, etc.) can be run on the **latent layer**: each cluster becomes a latent node, and Blocks-Test-TS / Blocks-BIC handle independence and scoring among the latent variables. --- ## Latent Structure / Measurement-Model Construction Building on cluster discovery and block-based search, these algorithms explicitly construct latent variables or full measurement models before running structural search on the latent layer. | Algorithm | Description | |---------------------------------------------------------|----------------------------------------------------------| | **[Factor Analysis](algorithms/factor-analysis.md)** 🧩 | Classical SEM-style factor analysis (measurement model). | | **[Mimbuild Bollen](algorithms/mimbuild-bollen.md)** 🧩 | MIM builder using Bollen-style BlockSpec constraints. | | **[Mimbuild PCA](algorithms/mimbuild-pca.md)** 🧩 | PCA-based measurement model from pure clusters. |