## MAPPINGS TO POPULATION ################################################################
## component, net
## HAS_TESTS
setMethod("Mapping",
signature(current = "Component",
target = "Population"),
function(current, target, dominant = c("Female", "Male")) {
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.age.current <- match("age", dimtypes.current, nomatch = 0L)
has.age <- i.age.current > 0L
n.time.current <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current, i.time.current)
i.shared.target <- setdiff(s.target, i.time.target)
if (has.age) {
n.age <- dim.current[i.age.current]
i.age.target <- match("age", dimtypes.target)
i.triangle <- match("triangle", dimtypes.current)
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
i.shared.current <- setdiff(i.shared.current, c(i.age.current, i.triangle))
i.shared.target <- setdiff(i.shared.target, i.age.target)
}
else {
n.age <- NA_integer_
step.age.current <- NA_integer_
step.age.target <- NA_integer_
step.triangle.current <- NA_integer_
}
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToPopn",
nTimeCurrent = n.time.current,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## births no parent, births with parent
## HAS_TESTS
## 'age' in 'current' is age of mother; 'age' in 'target' is age of child.
## Always set 'hasAge' to FALSE, and omit 'age' from shared dimensions.
## Include dimensions from 'current' with dimtype "child" in
## shared dimensions and exclude dimensions with dimtype "parent"
setMethod("Mapping",
signature(current = "BirthsMovements",
target = "Population"),
function(current, target, dominant = c("Female", "Male")) {
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.age.mother <- match("age", dimtypes.current, nomatch = 0L)
i.age.child <- match("age", dimtypes.target, nomatch = 0L)
i.triangle <- match("triangle", dimtypes.current, nomatch = 0L)
i.parent <- grep("parent", dimtypes.current)
has.age.mother <- i.age.mother > 0L
has.age.child <- i.age.child > 0L
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
n.time.current <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current, i.time.current)
i.shared.target <- setdiff(s.target, i.time.target)
if (has.age.mother)
i.shared.current <- setdiff(i.shared.current, c(i.age.mother, i.triangle))
if (has.age.child)
i.shared.target <- setdiff(i.shared.target, i.age.child)
i.shared.current <- setdiff(i.shared.current, i.parent)
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToPopn",
nTimeCurrent = n.time.current,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = FALSE,
nAgeCurrent = NA_integer_,
stepAgeCurrent = NA_integer_,
stepAgeTarget = NA_integer_,
stepTriangleCurrent = NA_integer_)
})
## orig-dest
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsOrigDest",
target = "Population"),
function(current, target, dominant = c("Female", "Male")) {
names.current <- names(current)
names.target <- names(target)
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.orig.current <- grep("origin", dimtypes.current)
base <- sub("_orig", "", names.current[i.orig.current])
i.dest.current <- match(paste(base, "dest", sep = "_"), names.current)
i.orig.dest.target <- match(base, names.target)
i.age.current <- match("age", dimtypes.current, nomatch = 0L)
has.age <- i.age.current > 0L
n.time.current <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
n.orig.dest.vec <- dim.current[i.orig.current]
n.orig.dest <- length(n.orig.dest.vec)
step.orig.current.vec <- integer(length = n.orig.dest)
step.dest.current.vec <- integer(length = n.orig.dest)
step.orig.dest.target.vec <- integer(length = n.orig.dest)
for (i in seq_len(n.orig.dest)) {
step.orig.current <- 1L
step.dest.current <- 1L
step.orig.dest.target <- 1L
for (d in seq_len(i.orig.current[i] - 1L))
step.orig.current <- step.orig.current * dim.current[d]
for (d in seq_len(i.dest.current[i] - 1L))
step.dest.current <- step.dest.current * dim.current[d]
for (d in seq_len(i.orig.dest.target[i] - 1L))
step.orig.dest.target <- step.orig.dest.target * dim.target[d]
step.orig.current.vec[i] <- step.orig.current
step.dest.current.vec[i] <- step.dest.current
step.orig.dest.target.vec[i] <- step.orig.dest.target
}
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current,
c(i.time.current, i.orig.current, i.dest.current))
i.shared.target <- setdiff(s.target,
c(i.time.target, i.orig.dest.target))
if (has.age) {
n.age <- dim.current[i.age.current]
i.age.target <- match("age", dimtypes.target)
i.triangle <- match("triangle", dimtypes.current)
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
i.shared.current <- setdiff(i.shared.current, c(i.age.current, i.triangle))
i.shared.target <- setdiff(i.shared.target, i.age.target)
}
else {
n.age <- NA_integer_
step.age.current <- NA_integer_
step.age.target <- NA_integer_
step.triangle.current <- NA_integer_
}
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingOrigDestToPopn",
nTimeCurrent = n.time.current,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nOrigDestVec = n.orig.dest.vec,
stepOrigCurrentVec = step.orig.current.vec,
stepDestCurrentVec = step.dest.current.vec,
stepOrigDestTargetVec = step.orig.dest.target.vec,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## pool
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsPool",
target = "Population"),
function(current, target, dominant = c("Female", "Male")) {
i.direction <- current@iDirection # specific to Pool
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.age.current <- match("age", dimtypes.current, nomatch = 0L)
has.age <- i.age.current > 0L
n.time.current <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current, i.time.current)
i.shared.target <- setdiff(s.target, i.time.target)
i.shared.current <- setdiff(i.shared.current, i.direction) # specific to Pool
if (has.age) {
n.age <- dim.current[i.age.current]
i.age.target <- match("age", dimtypes.target)
i.triangle <- match("triangle", dimtypes.current)
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
i.shared.current <- setdiff(i.shared.current, c(i.age.current, i.triangle))
i.shared.target <- setdiff(i.shared.target, i.age.target)
}
else {
n.age <- NA_integer_
step.age.current <- NA_integer_
step.age.target <- NA_integer_
step.triangle.current <- NA_integer_
}
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToPopn",
nTimeCurrent = n.time.current,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## MAPPINGS TO ACCESSION ################################################################
## component, net
## HAS_TESTS
setMethod("Mapping",
signature(current = "Component",
target = "Accession"),
function(current, target, dominant = c("Female", "Male")) {
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.age.current <- match("age", dimtypes.current)
i.age.target <- match("age", dimtypes.target)
i.triangle.current <- match("triangle", dimtypes.current)
n.time.current <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
n.age <- dim.current[i.age.current]
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle.current - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current,
c(i.time.current, i.age.current, i.triangle.current))
i.shared.target <- setdiff(s.target,
c(i.time.target, i.age.target))
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToAcc",
nTimeCurrent = n.time.current,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = TRUE,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## births no parent, births with parent
## HAS_TESTS
## 'age' in 'current' is age of mother; 'age' in 'target' is age of child.
## Always set 'hasAge' to FALSE, and omit 'age' from shared dimensions,
## since the ages refer to different things.
## Include dimensions from 'current' with dimtype "child" in
## shared dimensions and exclude dimensions with dimtype "parent"
setMethod("Mapping",
signature(current = "BirthsMovements",
target = "Accession"),
function(current, target, dominant = c("Female", "Male")) {
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.age.mother <- match("age", dimtypes.current, nomatch = 0L)
i.age.child <- match("age", dimtypes.target, nomatch = 0L)
i.triangle <- match("triangle", dimtypes.current, nomatch = 0L)
i.parent <- grep("parent", dimtypes.current)
has.age.mother <- i.age.mother > 0L
has.age.child <- i.age.child > 0L
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
n.time <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current,
c(i.time.current, i.age.mother, i.triangle, i.parent))
i.shared.target <- setdiff(s.target,
c(i.time.target, i.age.child))
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToAcc",
nTimeCurrent = n.time,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = FALSE,
nAgeCurrent = NA_integer_,
stepAgeCurrent = NA_integer_,
stepAgeTarget = NA_integer_,
stepTriangleCurrent = NA_integer_)
})
## orig-dest
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsOrigDest",
target = "Accession"),
function(current, target, dominant = c("Female", "Male")) {
names.current <- names(current)
names.target <- names(target)
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.orig.current <- grep("origin", dimtypes.current)
base <- sub("_orig", "", names.current[i.orig.current])
i.dest.current <- match(paste(base, "dest", sep = "_"), names.current)
i.orig.dest.target <- match(base, names.target)
i.age.current <- match("age", dimtypes.current)
n.time <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
n.orig.dest.vec <- dim.current[i.orig.current]
n.orig.dest <- length(n.orig.dest.vec)
step.orig.current.vec <- integer(length = n.orig.dest)
step.dest.current.vec <- integer(length = n.orig.dest)
step.orig.dest.target.vec <- integer(length = n.orig.dest)
for (i in seq_len(n.orig.dest)) {
step.orig.current <- 1L
step.dest.current <- 1L
step.orig.dest.target <- 1L
for (d in seq_len(i.orig.current[i] - 1L))
step.orig.current <- step.orig.current * dim.current[d]
for (d in seq_len(i.dest.current[i] - 1L))
step.dest.current <- step.dest.current * dim.current[d]
for (d in seq_len(i.orig.dest.target[i] - 1L))
step.orig.dest.target <- step.orig.dest.target * dim.target[d]
step.orig.current.vec[i] <- step.orig.current
step.dest.current.vec[i] <- step.dest.current
step.orig.dest.target.vec[i] <- step.orig.dest.target
}
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current,
c(i.time.current, i.orig.current, i.dest.current))
i.shared.target <- setdiff(s.target,
c(i.time.target, i.orig.dest.target))
n.age <- dim.current[i.age.current]
i.age.target <- match("age", dimtypes.target)
i.triangle <- match("triangle", dimtypes.current)
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
i.shared.current <- setdiff(i.shared.current, c(i.age.current, i.triangle))
i.shared.target <- setdiff(i.shared.target, i.age.target)
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingOrigDestToAcc",
nTimeCurrent = n.time,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nOrigDestVec = n.orig.dest.vec,
stepOrigCurrentVec = step.orig.current.vec,
stepDestCurrentVec = step.dest.current.vec,
stepOrigDestTargetVec = step.orig.dest.target.vec,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = TRUE,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## pool
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsPool",
target = "Accession"),
function(current, target, dominant = c("Female", "Male")) {
i.direction <- current@iDirection # specific to Pool
dim.current <- dim(current)
dim.target <- dim(target)
dimtypes.current <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.target <- dembase::dimtypes(target, use.names = FALSE)
i.time.current <- match("time", dimtypes.current)
i.time.target <- match("time", dimtypes.target)
i.age.current <- match("age", dimtypes.current, nomatch = 0L)
n.time <- dim.current[i.time.current]
step.time.current <- 1L
for (d in seq_len(i.time.current - 1L))
step.time.current <- step.time.current * dim.current[d]
step.time.target <- 1L
for (d in seq_len(i.time.target - 1L))
step.time.target <- step.time.target * dim.target[d]
s.current <- seq_along(dim.current)
s.target <- seq_along(dim.target)
i.shared.current <- setdiff(s.current, i.time.current)
i.shared.target <- setdiff(s.target, i.time.target)
i.shared.current <- setdiff(i.shared.current, i.direction) # specific to Pool
n.age <- dim.current[i.age.current]
i.age.target <- match("age", dimtypes.target)
i.triangle <- match("triangle", dimtypes.current)
step.age.current <- 1L
for (d in seq_len(i.age.current - 1L))
step.age.current <- step.age.current * dim.current[d]
step.age.target <- 1L
for (d in seq_len(i.age.target - 1L))
step.age.target <- step.age.target * dim.target[d]
step.triangle.current <- 1L
for (d in seq_len(i.triangle - 1L))
step.triangle.current <- step.triangle.current * dim.current[d]
i.shared.current <- setdiff(i.shared.current, c(i.age.current, i.triangle))
i.shared.target <- setdiff(i.shared.target, i.age.target)
n.shared.vec <- dim.current[i.shared.current]
length.shared <- length(i.shared.current)
step.shared.current.vec <- integer(length = length.shared)
step.shared.target.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.current[i] - 1L))
step <- step * dim.current[d]
step.shared.current.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.target[i] - 1L))
step <- step * dim.target[d]
step.shared.target.vec[i] <- step
}
methods::new("MappingCompToAcc",
nTimeCurrent = n.time,
stepTimeCurrent = step.time.current,
stepTimeTarget = step.time.target,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.current.vec,
stepSharedTargetVec = step.shared.target.vec,
hasAge = TRUE,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.current,
stepAgeTarget = step.age.target,
stepTriangleCurrent = step.triangle.current)
})
## MAPPINGS TO EXPOSURE ##################################################################
## HAS_TESTS
setMethod("Mapping",
signature(current = "Component",
target = "Exposure"),
function(current, target, dominant = c("Female", "Male")) {
metadata.comp <- current@metadata
metadata.exp <- target@metadata
dim.comp <- dim(current)
dim.exp <- dim(target)
dimtypes.comp <- dembase::dimtypes(current,
use.names = FALSE)
dimtypes.exp <- dembase::dimtypes(target,
use.names = FALSE)
is.one.to.one <- identical(metadata.comp, metadata.exp)
i.time.comp <- match("time", dimtypes.comp)
i.time.exp <- match("time", dimtypes.exp)
i.age.comp <- match("age", dimtypes.comp, nomatch = 0L)
n.time <- dim.comp[i.time.comp]
step.time.comp <- 1L
for (d in seq_len(i.time.comp - 1L))
step.time.comp <- step.time.comp * dim.comp[d]
step.time.exp <- 1L
for (d in seq_len(i.time.exp - 1L))
step.time.exp <- step.time.exp * dim.exp[d]
s.comp <- seq_along(dim.comp)
s.exp <- seq_along(dim.exp)
i.shared.comp <- setdiff(s.comp,
c(i.time.comp))
i.shared.exp <- setdiff(s.exp,
i.time.comp)
has.age <- i.age.comp > 0L
if (has.age) {
n.age <- dim.comp[i.age.comp]
i.age.exp <- match("age", dimtypes.exp)
i.triangle.comp <- match("triangle", dimtypes.comp)
i.triangle.exp <- match("triangle", dimtypes.exp)
step.age.comp <- 1L
for (d in seq_len(i.age.comp - 1L))
step.age.comp <- step.age.comp * dim.comp[d]
step.age.exp <- 1L
for (d in seq_len(i.age.exp - 1L))
step.age.exp <- step.age.exp * dim.exp[d]
step.triangle.comp <- 1L
for (d in seq_len(i.triangle.comp - 1L))
step.triangle.comp <- step.triangle.comp * dim.comp[d]
step.triangle.exp <- 1L
for (d in seq_len(i.triangle.exp - 1L))
step.triangle.exp <- step.triangle.exp * dim.exp[d]
i.shared.comp <- setdiff(i.shared.comp,
c(i.age.comp, i.triangle.comp))
i.shared.exp <- setdiff(i.shared.exp,
c(i.age.exp, i.triangle.exp))
}
else {
n.age <- NA_integer_
step.age.comp <- NA_integer_
step.age.exp <- NA_integer_
step.triangle.comp <- NA_integer_
step.triangle.exp <- NA_integer_
}
n.shared.vec <- dim.comp[i.shared.comp]
length.shared <- length(i.shared.comp)
step.shared.comp.vec <- integer(length = length.shared)
step.shared.exp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.comp[i] - 1L))
step <- step * dim.comp[d]
step.shared.comp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
}
methods::new("MappingCompToExp",
isOneToOne = is.one.to.one,
nTimeCurrent = n.time,
stepTimeCurrent = step.time.comp,
stepTimeTarget = step.time.exp,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.comp.vec,
stepSharedTargetVec = step.shared.exp.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.comp,
stepAgeTarget = step.age.exp,
stepTriangleCurrent = step.triangle.comp,
stepTriangleTarget = step.triangle.exp)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "BirthsMovements",
target = "Exposure"),
function(current, target, dominant = c("Female", "Male")) {
dominant <- match.arg(dominant)
metadata.births <- current@metadata
metadata.exp <- target@metadata
dim.births <- dim(current)
dim.exp <- dim(target)
dimtypes.births <- dembase::dimtypes(current,
use.names = FALSE)
dimtypes.exp <- dembase::dimtypes(target,
use.names = FALSE)
DimScales.births <- dembase::DimScales(current,
use.names = FALSE)
DimScales.exp <- dembase::DimScales(target,
use.names = FALSE)
## time dimension
i.time.births <- match("time", dimtypes.births)
i.time.exp <- match("time", dimtypes.exp)
n.time <- dim.births[i.time.births]
step.time.births <- 1L
for (d in seq_len(i.time.births - 1L))
step.time.births <- step.time.births * dim.births[d]
step.time.exp <- 1L
for (d in seq_len(i.time.exp - 1L))
step.time.exp <- step.time.exp * dim.exp[d]
## shared dimensions (complete later)
i.shared.births <- seq_along(dim.births)
i.shared.exp <- seq_along(dim.exp)
i.shared.births <- setdiff(i.shared.births, i.time.births)
i.shared.exp <- setdiff(i.shared.exp, i.time.exp)
## age
i.age.births <- match("age", dimtypes.births, nomatch = 0L)
has.age <- i.age.births > 0L
if (has.age) {
i.age.exp <- match("age", dimtypes.exp)
i.triangle.births <- match("triangle", dimtypes.births)
i.triangle.exp <- match("triangle", dimtypes.exp)
DS.age.births <- DimScales.births[[i.age.births]]
DS.age.exp <- DimScales.exp[[i.age.exp]]
dv.age.births <- DS.age.births@dimvalues
dv.age.exp <- DS.age.exp@dimvalues
i.min.age <- match(dv.age.births[1L], dv.age.exp)
n.age <- dim.births[i.age.births]
step.age.births <- 1L
for (d in seq_len(i.age.births - 1L))
step.age.births <- step.age.births * dim.births[d]
step.age.exp <- 1L
for (d in seq_len(i.age.exp - 1L))
step.age.exp <- step.age.exp * dim.exp[d]
step.triangle.births <- 1L
for (d in seq_len(i.triangle.births - 1L))
step.triangle.births <- step.triangle.births * dim.births[d]
step.triangle.exp <- 1L
for (d in seq_len(i.triangle.exp - 1L))
step.triangle.exp <- step.triangle.exp * dim.exp[d]
i.shared.births <- setdiff(i.shared.births,
c(i.age.births, i.triangle.births))
i.shared.exp <- setdiff(i.shared.exp,
c(i.age.exp, i.triangle.exp))
}
else {
n.age <- NA_integer_
i.min.age <- NA_integer_
step.age.births <- NA_integer_
step.age.exp <- NA_integer_
step.triangle.births <- NA_integer_
step.triangle.exp <- NA_integer_
}
## sex
i.sex.births <- match("sex", dimtypes.births, nomatch = 0L)
has.sex <- i.sex.births > 0L
if (has.sex) {
i.sex.exp <- match("sex", dimtypes.exp)
DimScale.sex <- DimScales.births[[i.sex.births]]
if (identical(dominant, "Female"))
i.sex.dominant <- dembase::iFemale(DimScale.sex)
else if (identical(dominant, "Male"))
i.sex.dominant <- dembase::iMale(DimScale.sex)
else {
stop(gettextf("'%s' equals \"%s\" : must be one of \"%s\" or \"%s\"",
"dominant", dominant, "Female", "Male"))
}
i.sex.dominant <- i.sex.dominant - 1L # C style
step.sex.births <- 1L
for (d in seq_len(i.sex.births - 1L))
step.sex.births <- step.sex.births * dim.births[d]
step.sex.exp <- 1L
for (d in seq_len(i.sex.exp - 1L))
step.sex.exp <- step.sex.exp * dim.exp[d]
i.shared.births <- setdiff(i.shared.births, i.sex.births)
i.shared.exp <- setdiff(i.shared.exp, i.sex.exp)
}
else {
i.sex.dominant <- NA_integer_
step.sex.births <- NA_integer_
step.sex.exp <- NA_integer_
}
## parent
i.parent <- grep("parent", dimtypes.births)
has.par.ch <- length(i.parent) > 0L
if (has.par.ch) {
i.child <- grep("child", dimtypes.births)
i.shared.births.parent <- setdiff(i.shared.births, i.child)
}
i.shared.births <- setdiff(i.shared.births, i.parent)
n.shared.vec <- dim.births[i.shared.births]
length.shared <- length(i.shared.births)
step.shared.births.vec <- integer(length = length.shared)
step.shared.exp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.births[i] - 1L))
step <- step * dim.births[d]
step.shared.births.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
}
if (has.par.ch) {
step.shared.births.exposure.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.births.parent[i] - 1L))
step <- step * dim.births[d]
step.shared.births.exposure.vec[i] <- step
}
}
else
step.shared.births.exposure.vec <- step.shared.births.vec
methods::new("MappingBirthsToExp",
isOneToOne = FALSE,
nTimeCurrent = n.time,
stepTimeCurrent = step.time.births,
stepTimeTarget = step.time.exp,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.births.vec,
stepSharedCurrentExposureVec = step.shared.births.exposure.vec,
stepSharedTargetVec = step.shared.exp.vec,
hasAge = has.age,
nAgeCurrent = n.age,
iMinAge = i.min.age,
stepAgeCurrent = step.age.births,
stepAgeTarget = step.age.exp,
stepTriangleCurrent = step.triangle.births,
stepTriangleTarget = step.triangle.exp,
hasSex = has.sex,
iSexDominant = i.sex.dominant,
stepSexCurrent = step.sex.births,
stepSexTarget = step.sex.exp)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsOrigDest",
target = "Exposure"),
function(current, target, dominant = c("Female", "Male")) {
metadata.comp <- current@metadata
metadata.exp <- target@metadata
names.comp <- names(current)
names.exp <- names(target)
dim.comp <- dim(current)
dim.exp <- dim(target)
dimtypes.comp <- dembase::dimtypes(current,
use.names = FALSE)
dimtypes.exp <- dembase::dimtypes(target,
use.names = FALSE)
i.time.comp <- match("time", dimtypes.comp)
i.time.exp <- match("time", dimtypes.exp)
i.age.comp <- match("age", dimtypes.comp, nomatch = 0L)
i.orig.comp <- grep("origin", dimtypes.comp)
base <- sub("_orig", "", names.comp[i.orig.comp])
i.dest.comp <- match(paste(base, "dest", sep = "_"), names.comp)
i.orig.dest.exp <- match(base, names.exp)
n.time <- dim.comp[i.time.comp]
step.time.comp <- 1L
for (d in seq_len(i.time.comp - 1L))
step.time.comp <- step.time.comp * dim.comp[d]
step.time.exp <- 1L
for (d in seq_len(i.time.exp - 1L))
step.time.exp <- step.time.exp * dim.exp[d]
n.orig.dest.vec <- dim.comp[i.orig.comp]
n.orig.dest <- length(n.orig.dest.vec)
step.orig.comp.vec <- integer(length = n.orig.dest)
step.dest.comp.vec <- integer(length = n.orig.dest)
step.orig.dest.exp.vec <- integer(length = n.orig.dest)
for (i in seq_len(n.orig.dest)) {
step.orig.comp <- 1L
step.dest.comp <- 1L
step.orig.dest.exp <- 1L
for (d in seq_len(i.orig.comp[i] - 1L))
step.orig.comp <- step.orig.comp * dim.comp[d]
for (d in seq_len(i.dest.comp[i] - 1L))
step.dest.comp <- step.dest.comp * dim.comp[d]
for (d in seq_len(i.orig.dest.exp[i] - 1L))
step.orig.dest.exp <- step.orig.dest.exp * dim.exp[d]
step.orig.comp.vec[i] <- step.orig.comp
step.dest.comp.vec[i] <- step.dest.comp
step.orig.dest.exp.vec[i] <- step.orig.dest.exp
}
s.comp <- seq_along(dim.comp)
s.exp <- seq_along(dim.exp)
i.shared.comp <- setdiff(s.comp,
c(i.time.comp, i.orig.comp, i.dest.comp))
i.shared.exp <- setdiff(s.exp,
c(i.time.exp, i.orig.dest.exp))
has.age <- i.age.comp > 0L
if (has.age) {
n.age <- dim.comp[i.age.comp]
i.age.exp <- match("age", dimtypes.exp)
i.triangle.comp <- match("triangle", dimtypes.comp)
i.triangle.exp <- match("triangle", dimtypes.exp)
step.age.comp <- 1L
for (d in seq_len(i.age.comp - 1L))
step.age.comp <- step.age.comp * dim.comp[d]
step.age.exp <- 1L
for (d in seq_len(i.age.exp - 1L))
step.age.exp <- step.age.exp * dim.exp[d]
step.triangle.comp <- 1L
for (d in seq_len(i.triangle.comp - 1L))
step.triangle.comp <- step.triangle.comp * dim.comp[d]
step.triangle.exp <- 1L
for (d in seq_len(i.triangle.exp - 1L))
step.triangle.exp <- step.triangle.exp * dim.exp[d]
i.shared.comp <- setdiff(i.shared.comp,
c(i.age.comp, i.triangle.comp))
i.shared.exp <- setdiff(i.shared.exp,
c(i.age.exp, i.triangle.exp))
}
else {
n.age <- NA_integer_
step.age.comp <- NA_integer_
step.age.exp <- NA_integer_
step.triangle.comp <- NA_integer_
step.triangle.exp <- NA_integer_
}
n.shared.vec <- dim.comp[i.shared.comp]
length.shared <- length(i.shared.comp)
step.shared.comp.vec <- integer(length = length.shared)
step.shared.exp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.comp[i] - 1L))
step <- step * dim.comp[d]
step.shared.comp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
}
methods::new("MappingOrigDestToExp",
isOneToOne = FALSE,
nTimeCurrent = n.time,
stepTimeCurrent = step.time.comp,
stepTimeTarget = step.time.exp,
nOrigDestVec = n.orig.dest.vec,
stepOrigCurrentVec = step.orig.comp.vec,
stepDestCurrentVec = step.dest.comp.vec,
stepOrigDestTargetVec = step.orig.dest.exp.vec,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.comp.vec,
stepSharedTargetVec = step.shared.exp.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.comp,
stepAgeTarget = step.age.exp,
stepTriangleCurrent = step.triangle.comp,
stepTriangleTarget = step.triangle.exp)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "InternalMovementsPool",
target = "Exposure"),
function(current, target, dominant = c("Female", "Male")) {
i.direction <- current@iDirection # specific to Pool
metadata.comp <- current@metadata
metadata.exp <- target@metadata
dim.comp <- dim(current)
dim.exp <- dim(target)
dimtypes.comp <- dembase::dimtypes(current,
use.names = FALSE)
dimtypes.exp <- dembase::dimtypes(target,
use.names = FALSE)
i.time.comp <- match("time", dimtypes.comp)
i.time.exp <- match("time", dimtypes.exp)
i.age.comp <- match("age", dimtypes.comp, nomatch = 0L)
n.time <- dim.comp[i.time.comp]
step.time.comp <- 1L
for (d in seq_len(i.time.comp - 1L))
step.time.comp <- step.time.comp * dim.comp[d]
step.time.exp <- 1L
for (d in seq_len(i.time.exp - 1L))
step.time.exp <- step.time.exp * dim.exp[d]
s.comp <- seq_along(dim.comp)
s.exp <- seq_along(dim.exp)
i.shared.comp <- setdiff(s.comp,
c(i.direction, i.time.comp))
i.shared.exp <- setdiff(s.exp,
i.time.comp)
has.age <- i.age.comp > 0L
if (has.age) {
n.age <- dim.comp[i.age.comp]
i.age.exp <- match("age", dimtypes.exp)
i.triangle.comp <- match("triangle", dimtypes.comp)
i.triangle.exp <- match("triangle", dimtypes.exp)
step.age.comp <- 1L
for (d in seq_len(i.age.comp - 1L))
step.age.comp <- step.age.comp * dim.comp[d]
step.age.exp <- 1L
for (d in seq_len(i.age.exp - 1L))
step.age.exp <- step.age.exp * dim.exp[d]
step.triangle.comp <- 1L
for (d in seq_len(i.triangle.comp - 1L))
step.triangle.comp <- step.triangle.comp * dim.comp[d]
step.triangle.exp <- 1L
for (d in seq_len(i.triangle.exp - 1L))
step.triangle.exp <- step.triangle.exp * dim.exp[d]
i.shared.comp <- setdiff(i.shared.comp,
c(i.age.comp, i.triangle.comp))
i.shared.exp <- setdiff(i.shared.exp,
c(i.age.exp, i.triangle.exp))
}
else {
n.age <- NA_integer_
step.age.comp <- NA_integer_
step.age.exp <- NA_integer_
step.triangle.comp <- NA_integer_
step.triangle.exp <- NA_integer_
}
n.shared.vec <- dim.comp[i.shared.comp]
length.shared <- length(i.shared.comp)
step.shared.comp.vec <- integer(length = length.shared)
step.shared.exp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.comp[i] - 1L))
step <- step * dim.comp[d]
step.shared.comp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
}
methods::new("MappingCompToExp",
isOneToOne = FALSE,
nTimeCurrent = n.time,
stepTimeCurrent = step.time.comp,
stepTimeTarget = step.time.exp,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.comp.vec,
stepSharedTargetVec = step.shared.exp.vec,
hasAge = has.age,
nAgeCurrent = n.age,
stepAgeCurrent = step.age.comp,
stepAgeTarget = step.age.exp,
stepTriangleCurrent = step.triangle.comp,
stepTriangleTarget = step.triangle.exp)
})
## MAPPINGS FROM EXPOSURE ################################################################
## HAS_TESTS
## should always be one-to-one, but fill in other slots to get valid object
setMethod("Mapping",
signature(current = "Exposure",
target = "Component"),
function(current, target, dominant = c("Female", "Male")) {
metadata.exp <- current@metadata
metadata.comp <- target@metadata
is.one.to.one <- identical(metadata.exp, metadata.comp)
if (!is.one.to.one)
stop(gettextf("'%s' and '%s' have different metadata",
"exposure", "component"))
dim <- dim(current)
i.shared <- seq_along(dim)
n.shared.vec <- dim
length.shared <- length(i.shared)
step.shared.exp.vec <- integer(length = length.shared)
step.shared.comp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared[i] - 1L))
step <- step * dim[d]
step.shared.exp.vec[i] <- step
step.shared.comp.vec[i] <- step
}
methods::new("MappingExpToComp",
isOneToOne = is.one.to.one,
nSharedVec = dim,
stepSharedCurrentVec = step.shared.exp.vec,
stepSharedTargetVec = step.shared.exp.vec)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "Exposure",
target = "BirthsMovements"),
function(current, target, dominant = c("Female", "Male")) {
dominant <- match.arg(dominant)
i.min.age <- target@iMinAge
dim.exp <- dim(current)
dim.births <- dim(target)
dimtypes.exp <- dembase::dimtypes(current, use.names = FALSE)
dimtypes.births <- dembase::dimtypes(target, use.names = FALSE)
DimScales.births <- dembase::DimScales(target, use.names = FALSE)
i.time.exp <- match("time", dimtypes.exp)
i.time.births <- match("time", dimtypes.births)
i.age.exp <- match("age", dimtypes.exp, nomatch = 0L)
has.age <- i.age.exp > 0L
i.child <- grep("child", dimtypes.births)
n.time <- dim.exp[i.time.exp]
step.time.exp <- 1L
for (d in seq_len(i.time.exp - 1L))
step.time.exp <- step.time.exp * dim.exp[d]
step.time.births <- 1L
for (d in seq_len(i.time.births - 1L))
step.time.births <- step.time.births * dim.births[d]
s.exp <- seq_along(dim.exp)
s.births <- seq_along(dim.births)
i.shared.exp <- setdiff(s.exp, i.time.exp)
i.shared.births <- setdiff(s.births,
c(i.time.births, i.child))
if (has.age) {
i.age.births <- match("age", dimtypes.births)
i.triangle.exp <- match("triangle", dimtypes.exp)
i.triangle.births <- match("triangle", dimtypes.births)
n.age.exp <- dim.exp[i.age.exp]
n.age.births <- dim.births[i.age.births]
step.age.exp <- 1L
for (d in seq_len(i.age.exp - 1L))
step.age.exp <- step.age.exp * dim.exp[d]
step.age.births <- 1L
for (d in seq_len(i.age.births - 1L))
step.age.births <- step.age.births * dim.births[d]
step.triangle.exp <- 1L
for (d in seq_len(i.triangle.exp - 1L))
step.triangle.exp <- step.triangle.exp * dim.exp[d]
step.triangle.births <- 1L
for (d in seq_len(i.triangle.births - 1L))
step.triangle.births <- step.triangle.births * dim.births[d]
i.shared.exp <- setdiff(i.shared.exp,
c(i.age.exp, i.triangle.exp))
i.shared.births <- setdiff(i.shared.births,
c(i.age.births, i.triangle.births))
}
else {
n.age.exp <- NA_integer_
n.age.births <- NA_integer_
step.age.exp <- NA_integer_
step.age.births <- NA_integer_
step.triangle.exp <- NA_integer_
step.triangle.births <- NA_integer_
}
## sex
i.sex.births <- match("sex", dimtypes.births, nomatch = 0L)
has.sex <- i.sex.births > 0L
if (has.sex) {
i.sex.exp <- match("sex", dimtypes.exp)
DimScale.sex <- DimScales.births[[i.sex.births]]
if (identical(dominant, "Female"))
i.sex.dominant <- dembase::iFemale(DimScale.sex)
else if (identical(dominant, "Male"))
i.sex.dominant <- dembase::iMale(DimScale.sex)
else {
stop(gettextf("'%s' equals \"%s\" : must be one of \"%s\" or \"%s\"",
"dominant", dominant, "Female", "Male"))
}
i.sex.dominant <- i.sex.dominant - 1L # C style
step.sex.births <- 1L
for (d in seq_len(i.sex.births - 1L))
step.sex.births <- step.sex.births * dim.births[d]
step.sex.exp <- 1L
for (d in seq_len(i.sex.exp - 1L))
step.sex.exp <- step.sex.exp * dim.exp[d]
i.shared.exp <- setdiff(i.shared.exp, i.sex.exp)
i.shared.births <- setdiff(i.shared.births, i.sex.births)
}
else {
i.sex.dominant <- NA_integer_
step.sex.births <- NA_integer_
step.sex.exp <- NA_integer_
}
n.shared.vec <- dim.exp[i.shared.exp]
length.shared <- length(i.shared.exp)
step.shared.exp.vec <- integer(length = length.shared)
step.shared.births.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.births[i] - 1L))
step <- step * dim.births[d]
step.shared.births.vec[i] <- step
}
methods::new("MappingExpToBirths",
isOneToOne = FALSE,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.exp.vec,
stepSharedTargetVec = step.shared.births.vec,
nTimeCurrent = n.time,
stepTimeCurrent = step.time.exp,
stepTimeTarget = step.time.births,
hasAge = has.age,
iMinAge = i.min.age,
nAgeCurrent = n.age.exp,
nAgeTarget = n.age.births,
stepAgeCurrent = step.age.exp,
stepAgeTarget = step.age.births,
stepTriangleCurrent = step.triangle.exp,
stepTriangleTarget = step.triangle.births,
hasSex = has.sex,
iSexDominant = i.sex.dominant,
stepSexCurrent = step.sex.exp,
stepSexTarget = step.sex.births)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "Exposure",
target = "InternalMovementsOrigDest"),
function(current, target, dominant = c("Female", "Male")) {
dim.exp <- dim(current)
dim.comp <- dim(target)
dimtypes.comp <- dembase::dimtypes(target, use.names = FALSE)
i.dest <- grep("destination", dimtypes.comp)
i.shared.exp <- seq_along(dim.exp)
i.shared.comp <- seq_along(dim.comp)
i.shared.comp <- setdiff(i.shared.comp, i.dest)
n.shared.vec <- dim.exp[i.shared.exp]
length.shared <- length(i.shared.exp)
step.shared.exp.vec <- integer(length = length.shared)
step.shared.comp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.comp[i] - 1L))
step <- step * dim.comp[d]
step.shared.comp.vec[i] <- step
}
methods::new("MappingExpToComp",
isOneToOne = FALSE,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.exp.vec,
stepSharedTargetVec = step.shared.comp.vec)
})
## HAS_TESTS
setMethod("Mapping",
signature(current = "Exposure",
target = "InternalMovementsPool"),
function(current, target, dominant = c("Female", "Male")) {
dim.exp <- dim(current)
dim.comp <- dim(target)
i.direction <- target@iDirection
i.shared.exp <- seq_along(dim.exp)
i.shared.comp <- seq_along(dim.comp)
i.shared.comp <- setdiff(i.shared.comp, i.direction)
n.shared.vec <- dim.exp[i.shared.exp]
length.shared <- length(i.shared.exp)
step.shared.exp.vec <- integer(length = length.shared)
step.shared.comp.vec <- integer(length = length.shared)
for (i in seq_len(length.shared)) {
step <- 1L
for (d in seq_len(i.shared.exp[i] - 1L))
step <- step * dim.exp[d]
step.shared.exp.vec[i] <- step
step <- 1L
for (d in seq_len(i.shared.comp[i] - 1L))
step <- step * dim.comp[d]
step.shared.comp.vec[i] <- step
}
methods::new("MappingExpToComp",
isOneToOne = FALSE,
nSharedVec = n.shared.vec,
stepSharedCurrentVec = step.shared.exp.vec,
stepSharedTargetVec = step.shared.comp.vec)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.