Added license information to R source files.
[openmx:openmx.git] / R / MxRAMObjective.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
17 setClass(Class = "MxRAMObjective",
18         representation = representation(
19                 A = "MxCharOrNumber",
20                 S = "MxCharOrNumber",
21                 F = "MxCharOrNumber",
22                 data = "numeric"),
23         contains = "MxBaseObjective")
24
25 setMethod("initialize", "MxRAMObjective",
26         function(.Object, name, A, S, F, data = NA_real_) {
27                 .Object@name <- name
28                 .Object@A <- A
29                 .Object@S <- S
30                 .Object@F <- F
31                 .Object@data <- data
32                 return(.Object)
33         }
34 )
35
36 setMethod("omxObjFunConvert", signature("MxRAMObjective", "MxFlatModel"), 
37         function(.Object, model, definitions) {
38                 name <- .Object@name
39                 aMatrix <- .Object@A
40                 sMatrix <- .Object@S
41                 fMatrix <- .Object@F
42                 A <- omxLocateIndex(model, aMatrix, name)
43                 S <- omxLocateIndex(model, sMatrix, name)
44                 F <- omxLocateIndex(model, fMatrix, name)
45                 dIndex <- omxDataIndex(.Object@name, model@datasets)
46                 if (is.na(dIndex)) {
47                         msg <- paste("Could not find a data set for objective", 
48                                 .Object@name, "in the model.")
49                         stop(msg)
50                 }
51                 return(new("MxRAMObjective", name, A, S, F, dIndex))
52 })
53
54 mxRAMObjective <- function(aMatrix = "A", sMatrix = "S", fMatrix = "F",
55         name = omxUntitledName()) {
56         if (typeof(name) != "character") {
57                 msg <- paste("Name argument is not a string",
58                         "(the name of the objective function)")
59                 stop(msg)
60         }
61         if (typeof(aMatrix) != "character") {
62                 msg <- paste("aMatrix argument is not a string",
63                         "(the name of the 'A' matrix)")
64                 stop(msg)
65         }       
66         if (typeof(sMatrix) != "character") {
67                 msg <- paste("sMatrix argument is not a string",
68                         "(the name of the 'S' matrix)")
69                 stop(msg)
70         }
71         if (typeof(fMatrix) != "character") {
72                 msg <- paste("fMatrix argument is not a string",
73                         "(the name of the 'F' matrix)")
74                 stop(msg)
75         }
76         return(new("MxRAMObjective", name, aMatrix, sMatrix, fMatrix))
77 }