Added license information to R source files.
[openmx:openmx.git] / R / MxFIMLObjective.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 = "MxFIMLObjective",
18         representation = representation(
19                 covariance = "MxCharOrNumber",
20                 means = "MxCharOrNumber",
21                 data = "numeric",
22                 definitionVars = "list"),
23         contains = "MxBaseObjective")
24
25 setMethod("initialize", "MxFIMLObjective",
26         function(.Object, name, covariance, means, 
27                                 data = NA_real_, definitionVars = list()) {
28                 .Object@name <- name
29                 .Object@covariance <- covariance
30                 .Object@means <- means
31                 .Object@data <- data
32                 .Object@definitionVars <- definitionVars
33                 return(.Object)
34         }
35 )
36
37 setMethod("omxObjFunConvert", signature("MxFIMLObjective", "MxFlatModel"), 
38         function(.Object, model, definitions) {
39                 name <- .Object@name
40                 covariance <- .Object@covariance
41                 means <- .Object@means
42                 covarianceIndex <- omxLocateIndex(model, covariance, name)
43                 meansIndex <- omxLocateIndex(model, means, name)
44                 dIndex <- omxDataIndex(.Object@name, model@datasets)
45                 if (is.na(covarianceIndex)) {
46                         stop(paste("Could not find a matrix/algebra with name", 
47                         covariance, "in the model."))
48                 }
49                 if (is.na(meansIndex)) {
50                         stop(paste("Could not find a matrix/algebra with name", 
51                         means, "in the model."))
52                 }
53                 if (is.na(dIndex)) {
54                         stop(paste("Could not find a data set for objective", 
55                         .Object@name, "in the model."))
56                 }
57                 return(new("MxFIMLObjective", name, covarianceIndex, meansIndex, dIndex, definitions))
58 })
59
60 mxFIMLObjective <- function(covariance, means, name = omxUntitledName()) {
61         if (typeof(name) != "character") {
62                 stop("Name argument is not a string (the name of the objective function)")
63         }
64         if (missing(covariance) || typeof(covariance) != "character") {
65                 stop("Covariance argument is not a string (the name of the expected covariance matrix)")
66         }
67         if (missing(means) || typeof(means) != "character") {
68                 stop("Means argument is not a string (the name of the expected means matrix)")
69         }
70         return(new("MxFIMLObjective", name, covariance, means))
71 }