"""Geometry analysis CLI arguments for auto steering optimization."""


def add_geometry_args(parser):
    """Add all required geometry metric parameters to the parser."""
    parser.add_argument(
        "--spectral-n-neighbors", type=int, required=True,
        help="Number of neighbors for spectral clustering in geometry analysis",
    )
    parser.add_argument(
        "--subsample-threshold", type=int, required=True,
        help="Maximum samples before subsampling in geometry metrics",
    )
    parser.add_argument(
        "--pca-dims-limit", type=int, required=True,
        help="Maximum PCA dimensions for geometry analysis",
    )
    parser.add_argument(
        "--probe-min-per-class", type=int, required=True,
        help="Minimum samples per class for probe classifiers",
    )
    parser.add_argument(
        "--probe-small-hidden", type=int, required=True,
        help="Hidden layer size for small MLP probe (signal strength)",
    )
    parser.add_argument(
        "--probe-mlp-hidden", type=int, required=True,
        help="Hidden layer size for full MLP probe",
    )
    parser.add_argument(
        "--probe-mlp-alpha", type=float, required=True,
        help="Regularization alpha for MLP probe",
    )
    parser.add_argument(
        "--probe-validation-fraction", type=float, required=True,
        help="Validation set fraction for MLP probe early stopping",
    )
    parser.add_argument(
        "--probe-knn-k", type=int, required=True,
        help="Number of neighbors for k-NN classifier",
    )
    parser.add_argument(
        "--knn-min-class-offset", type=int, required=True,
        help="Minimum class offset for k-NN validation",
    )
    parser.add_argument(
        "--feature-dim-index", type=int, required=True,
        help="Dimension index for feature-based metrics",
    )
    parser.add_argument(
        "--cv-folds", type=int, required=True,
        help="Cross-validation folds for geometry probe metrics",
    )
    parser.add_argument(
        "--direction-n-bootstrap", type=int, required=True,
        help="Number of bootstrap iterations for direction stability",
    )
    parser.add_argument(
        "--direction-subset-fraction", type=float, required=True,
        help="Fraction of data for bootstrap subsets in direction analysis",
    )
    parser.add_argument(
        "--direction-std-penalty", type=float, required=True,
        help="Penalty weight for direction standard deviation",
    )
    parser.add_argument(
        "--consistency-w-cosine", type=float, required=True,
        help="Weight for cosine component in consistency metric",
    )
    parser.add_argument(
        "--consistency-w-positive", type=float, required=True,
        help="Weight for positive component in consistency metric",
    )
    parser.add_argument(
        "--consistency-w-high-sim", type=float, required=True,
        help="Weight for high-similarity component in consistency metric",
    )
    parser.add_argument(
        "--sparsity-threshold-fraction", type=float, required=True,
        help="Fraction threshold for sparsity metric computation",
    )
    parser.add_argument(
        "--pca-max-components-null", type=int, required=True,
        help="Maximum PCA components for null distribution comparison",
    )
    parser.add_argument(
        "--min-cloud-points", type=int, required=True,
        help="Minimum points required for two-cloud relationship analysis",
    )
    parser.add_argument(
        "--variance-explained-threshold", type=float, required=True,
        dest="variance_explained_90pct",
        help="Threshold for variance explained in PCA analysis",
    )
    parser.add_argument(
        "--blend-default", type=float, required=True,
        help="Blending value when probe cross-validation cannot run",
    )
    parser.add_argument(
        "--default-score", type=float, required=True,
        help="Score for multi-direction and structure analysis",
    )
    parser.add_argument(
        "--detection-threshold", type=float, required=True,
        help="Threshold for concept detection in multi-direction analysis",
    )
