% Generated by roxygen2: do not edit by hand % Please edit documentation in R/alignped1.R \name{alignped1} \alias{alignped1} \title{Alignment first routine} \usage{ alignped1(idx, dadx, momx, level, horder, packed, spouselist) } \arguments{ \item{idx}{Indexes of the subjects} \item{dadx}{Indexes of the fathers} \item{momx}{Indexes of the mothers} \item{level}{Vector of the level of each subject} \item{horder}{A named numeric vector with one element per subject in the Pedigree. It determines the relative horizontal order of subjects within a sibship, as well as the relative order of processing for the founder couples. (For this latter, the female founders are ordered as though they were sisters). The names of the vector should be the individual identifiers.} \item{packed}{Should the Pedigree be compressed. (i.e. allow diagonal lines connecting parents to children in order to have a smaller overall width for the plot.)} \item{spouselist}{Matrix of spouses with 4 columns: \itemize{ \item \code{1}: husband index \item \code{2}: wife index \item \code{3}: husband anchor \item \code{4}: wife anchor }} } \value{ A list containing the elements to plot the Pedigree. It contains a set of matrices along with the spouselist matrix. The latter has marriages removed as they are processed. \itemize{ \item \code{n} : A vector giving the number of subjects on each horizonal level of the plot \item \code{nid} : A matrix with one row for each level, giving the numeric id of each subject plotted. (A value of \code{17} means the 17th subject in the Pedigree). \item \code{pos} : A matrix giving the horizontal position of each plot point \item \code{fam} : A matrix giving the family id of each plot point. A value of \code{3} would mean that the two subjects in positions 3 and 4, in the row above, are this subject's parents. \item \code{spouselist} : Spouse matrix with anchors informations } } \description{ First alignment routine which create the subtree founded on a single subject as though it were the only tree. } \details{ In this routine the \strong{nid} array consists of the final \verb{nid array + 1/2} of the final spouse array. Note that the \strong{spouselist} matrix will only contain spouse pairs that are not yet processed. The logic for anchoring is slightly tricky. \subsection{1. Anchoring:}{ First, if col 4 of the spouselist matrix is 0, we anchor at the first opportunity. Also note that if \code{spouselist[, 3] == spouselist[, 4]} it is the husband who is the anchor (just write out the possibilities). } \subsection{2. Return values initialization:}{ Create the set of 3 return structures, which will be matrices with \code{1 + nspouse} columns. If there are children then other routines will widen the result. } \subsection{3. Create \strong{lspouse} and \strong{rspouse}:}{ This two complimentary lists denote the spouses plotted on the left and on the right. For someone with lots of spouses we try to split them evenly. If the number of spouses is odd, then men should have more on the right than on the left, women more on the right. Any hints in the spouselist matrix override. We put the undecided marriages closest to \strong{idx}, then add predetermined ones to the left and right. The majority of marriages will be undetermined singletons, for which \strong{nleft} will be \code{1} for female (put my husband to the left) and \code{0} for male. In one bug found by plotting canine data, lspouse could initially be empty but \code{length(rspouse) > 1}. This caused \code{nleft > length(indx)}. A fix was to not let \strong{indx} to be indexed beyond its length, fix by JPS 5/2013. } \subsection{4. List the children:}{ For each spouse get the list of children. If there are any we call \code{\link[=alignped2]{alignped2()}} to generate their tree and then mark the connection to their parent. If multiple marriages have children we need to join the trees. } \subsection{5. Splice the tree:}{ To finish up we need to splice together the tree made up from all the kids, which only has data from \code{lev + 1} down, with the data here. There are 3 cases: \enumerate{ \item No children were found. \item The tree below is wider than the tree here, in which case we add the data from this level onto theirs. \item The tree below is narrower, for instance an only child. } } } \examples{ data(sampleped) pedi <- Pedigree(sampleped) align(pedi) } \seealso{ \code{\link[=align]{align()}} } \keyword{alignment} \keyword{internal,}