Added license information to R source files.
[openmx:openmx.git] / R / MxPath.R
1 #
2 #   Copyright 2007-2009 The OpenMx Project
3 #
4 #   Licensed under the Apache License, Version 2.0 (the "License");
5 #   you may not use this file except in compliance with the License.
6 #   You may obtain a copy of the License at
7
8 #        http://www.apache.org/licenses/LICENSE-2.0
9
10 #    Unless required by applicable law or agreed to in writing, software
11 #    distributed under the License is distributed on an "AS IS" BASIS,
12 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #   See the License for the specific language governing permissions and
14 #   limitations under the License.
15
16 # returns a list of paths
17 omxPath <- function(from, to = NULL, all = FALSE, free = NULL, 
18         arrows = NULL, startVal = NULL, 
19         endVal = NULL, algebra = NULL,
20         name = NULL, label = NULL,
21         boundMax = NULL, boundMin = NULL,
22         ciUpper = NULL, ciLower = NULL) {
23                 if (is.null(to)) {
24                         to <- from
25                 }
26                 from <- as.list(from)
27                 to <- as.list(to)
28                 if (all) {
29                         from <- rep(from, each=length(to))      
30                 }
31                 result <- suppressWarnings(mapply(omxSinglePath, from, to,
32                         free, arrows, startVal, endVal,
33                                 algebra, name, label, boundMax,
34                                 boundMin, ciUpper, ciLower, SIMPLIFY=FALSE))
35                 return(result)
36 }
37
38 omxSinglePath <- function(from, to, free = NULL, 
39         arrows = NULL, startVal = NULL, 
40         endVal = NULL, algebra = NULL,
41         name = NULL, label = NULL,
42         boundMax = NULL, boundMin = NULL,
43         ciUpper = NULL, ciLower = NULL) {
44         result <- list()
45         result[['from']] <- from
46         result[['to']] <- to
47         result[['free']] <- free[[1]]
48         result[['arrows']] <- arrows[[1]]
49         result[['startVal']] <- startVal[[1]]
50         result[['endVal']] <- endVal[[1]]
51         result[['algebra']] <- algebra[[1]]
52         result[['name']] <- name[[1]]
53         result[['label']] <- label[[1]] 
54         result[['boundMax']] <- boundMax[[1]]
55         result[['boundMin']] <- boundMin[[1]]
56         result[['ciUpper']] <- ciUpper[[1]]
57         result[['ciLower']] <- ciLower[[1]]
58         return(result)
59 }
60
61 omxIsPath <- function(value) {
62         return(is.list(value) && 
63                 !is.null(value[['from']]) &&
64                 !is.null(value[['to']]))
65 }
66
67
68 mxPath <- function(from, to = NULL, all = FALSE, free = NULL, 
69         arrows = NULL, startVal = NULL, 
70         endVal = NULL, algebra = NULL,
71         name = NULL, label = NULL,
72         boundMax = NULL, boundMin = NULL,
73         ciUpper = NULL, ciLower = NULL) {
74
75         omxPath(from, to, all, free, 
76                 arrows, startVal, endVal, 
77                 algebra, name, label, boundMax,
78                 boundMin, ciUpper, ciLower)
79 }