Third of the four co-routines to merges two pedigree trees which are side by side into a single object.
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.
n
: A vector giving the number of subjects on each horizonal level of the plotnid
: A matrix with one row for each level, giving the numeric id of each subject plotted. (A value of17
means the 17th subject in the Pedigree).pos
: A matrix giving the horizontal position of each plot pointfam
: A matrix giving the family id of each plot point. A value of3
would mean that the two subjects in positions 3 and 4, in the row above, are this subject's parents.spouselist
: Spouse matrix with anchors informations
Details
The primary special case is when the rightmost person in the left tree is the same as the leftmost person in the right tree; we need not plot two copies of the same person side by side. (When initializing the output structures do not worry about this, there is no harm if they are a column bigger than finally needed.) Beyond that the work is simple book keeping.
1. Slide:
For the unpacked case, which is the traditional way to draw a Pedigree when we can assume the paper is infinitely wide, all parents are centered over their children. In this case we think if the two trees to be merged as solid blocks. On input they both have a left margin of 0. Compute how far over we have to slide the right tree.
Examples
data(sampleped)
ped <- Pedigree(sampleped)
align(ped)
#> $`1`
#> $`1`$n
#> [1] 2 10 16 14
#>
#> $`1`$nid
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#> [1,] 35 36 0 0 0 0 0 0 0 0 0 0 0 0
#> [2,] 1 2 3 4 37 38 5 6 7 8 0 0 0 0
#> [3,] 9 10 11 12 14 39 40 41 14 15 12 18 17 16
#> [4,] 21 22 23 24 27 28 25 26 29 30 31 32 33 34
#> [,15] [,16]
#> [1,] 0 0
#> [2,] 0 0
#> [3,] 19 20
#> [4,] 0 0
#>
#> $`1`$pos
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
#> [1,] 3.8 4.8 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#> [2,] 0.0 1.0 2.8 3.8 4.80 5.80 11.25 12.25 14.01 15.01 0.00 0.00 0.00
#> [3,] 0.0 1.0 2.0 3.0 4.00 5.00 6.00 7.00 8.00 9.00 10.00 11.00 12.00
#> [4,] 0.0 1.0 2.0 3.0 6.01 7.01 8.01 9.01 10.01 11.01 12.01 13.01 14.01
#> [,14] [,15] [,16]
#> [1,] 0.00 0 0
#> [2,] 0.00 0 0
#> [3,] 13.00 14 15
#> [4,] 15.01 0 0
#>
#> $`1`$fam
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#> [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> [2,] 0 0 1 0 0 1 0 0 0 0 0 0 0 0
#> [3,] 1 3 3 3 3 5 5 5 0 7 0 7 0 7
#> [4,] 1 1 1 1 9 9 11 11 13 15 15 15 15 15
#> [,15] [,16]
#> [1,] 0 0
#> [2,] 0 0
#> [3,] 7 9
#> [4,] 0 0
#>
#> $`1`$spouse
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#> [1,] 1 0 0 0 0 0 0 0 0 0 0 0 0 0
#> [2,] 1 0 1 0 1 0 1 0 1 0 0 0 0 0
#> [3,] 1 0 0 0 0 0 0 0 1 0 1 0 1 0
#> [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> [,15] [,16]
#> [1,] 0 0
#> [2,] 0 0
#> [3,] 1 0
#> [4,] 0 0
#>
#>
#> $`2`
#> $`2`$n
#> [1] 2 7 5
#>
#> $`2`$nid
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 1 2 0 0 0 0 0
#> [2,] 3 4 5 6 7 9 8
#> [3,] 10 11 12 13 14 0 0
#>
#> $`2`$pos
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 2.7 3.7 0.0 0.0 0.0 0 0
#> [2,] 0.0 1.0 2.0 3.0 4.0 5 6
#> [3,] 0.0 1.0 4.5 5.5 6.5 0 0
#>
#> $`2`$fam
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 0 0 0 0 0 0 0
#> [2,] 0 1 1 1 1 0 1
#> [3,] 1 1 6 6 6 0 0
#>
#> $`2`$spouse
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 1 0 0 0 0 0 0
#> [2,] 1 0 0 0 0 1 0
#> [3,] 0 0 0 0 0 0 0
#>
#>