% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/landmarks.R
\name{linf.landmarks}
\alias{linf.landmarks}
\title{Landmark points for dCST dominance-lineages}
\usage{
linf.landmarks(
  M,
  csts,
  depth = NULL,
  view = c("active", "rare", "absorb"),
  landmark.types = c("endpoint.max", "endpoint.min", "mean.rep", "median.rep"),
  tie.method = c("first", "random", "error"),
  backend = c("auto", "dense", "sparse")
)
}
\arguments{
\item{M}{Numeric matrix (samples x features) used to build or refine the dCSTs.}

\item{csts}{A \code{"linf.csts"} object.}

\item{depth}{Integer. dCST depth to inspect. Defaults to the leaf depth
\code{csts$cst.depth}.}

\item{view}{Character. One of \code{"active"}, \code{"rare"}, or
\code{"absorb"}.}

\item{landmark.types}{Character vector containing any of
\code{"endpoint.max"}, \code{"endpoint.min"}, \code{"mean.rep"}, or
\code{"median.rep"}.}

\item{tie.method}{Character. Tie handling for landmark selection:
\code{"first"}, \code{"random"}, or \code{"error"}.}

\item{backend}{Character. Matrix backend to use: \code{"auto"},
\code{"dense"}, or \code{"sparse"}. The default \code{"auto"} preserves
sparse input and otherwise uses the dense path.}
}
\value{
A list of class \code{"linf.landmarks"} with components:
\itemize{
\item \code{depth}, \code{view}, \code{sep}, \code{rare.label}
\item \code{feature.ids}, \code{feature.labels}
\item \code{cells}: one row per dominance-lineage with computability
metadata; the component name is retained for backward compatibility
\item \code{landmarks}: one row per computed landmark point
}
}
\description{
Computes representative landmark points for the dominance-lineages of a
\code{"linf.csts"} object at a chosen depth and view.

Landmark types are defined with respect to the leaf feature of the dCST path:
the last feature ID in the lineage ID path.
Lineages whose leaf token is \code{rare.label} are reported but skipped for
landmark computation because they do not correspond to a unique target
feature.
}
