% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/layout-target-saqr.R
\name{layout_saqr}
\alias{layout_saqr}
\title{Saqr Layout (Start/End transition flow)}
\usage{
layout_saqr(network, start = "Start", end = "End", jitter = 0.32, ...)
}
\arguments{
\item{network}{A \code{CographNetwork} or \code{cograph_network} object.}

\item{start}{Label of the Start node (default \code{"Start"}). Falls back to
the highest out-degree node when the label is not found.}

\item{end}{Label of the End node (default \code{"End"}). The End row is
omitted when the label is not found.}

\item{jitter}{Numeric in \code{[0, 1]}. Zig-zag amount applied to the first
middle row, as a fraction of the row spacing (default 0.32).}

\item{...}{Additional arguments (ignored).}
}
\value{
Data frame with \code{x}, \code{y} coordinates, one row per node.
}
\description{
Port of the Dynalytics Desktop "saqr" layout (Saqr et al., LAK25). Designed
for directed transition networks: the Start node sits alone on the top row,
the End node (if present) alone on the bottom row, and every other node is
ranked by its outgoing weight from Start (strongest connections nearest Start)
and split into 2 middle rows (<= 10 middle nodes) or 3 (> 10). A sine
envelope narrows the rows near Start/End for a lens-shaped silhouette, and the
first middle row is zig-zag jittered.
}
\details{
If the \code{start} label is absent the highest out-degree node is used. The
End row is only drawn when the \code{end} label is present.
}
\examples{
adj <- matrix(0, 5, 5,
  dimnames = list(c("Start", "A", "B", "C", "End"),
                  c("Start", "A", "B", "C", "End")))
adj["Start", "A"] <- 5; adj["Start", "B"] <- 3; adj["Start", "C"] <- 1
adj["A", "End"] <- 2; adj["B", "End"] <- 4; adj["C", "End"] <- 1
net <- CographNetwork$new(adj, directed = TRUE)
layout_saqr(net)

}
