summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2011-05-27 09:09:41 +0200
committerAndreas Maunz <andreas@maunz.de>2011-05-27 09:09:41 +0200
commitb04a09d3f35589fea83fce5eecdb5c2c91e9c413 (patch)
tree4e2cc2880339309ea7fc4dea433d9a7bc8e6316e
parent65eb02eabeb7fece614d93ed4a2dcc9f62867bc5 (diff)
parent736b01c045331bb3787bf491bc4c11c222aea206 (diff)
Merge branch 'development' into svm_matrix
Conflicts: lib/model.rb
-rw-r--r--lib/model.rb71
-rw-r--r--lib/serializer.rb2
2 files changed, 36 insertions, 37 deletions
diff --git a/lib/model.rb b/lib/model.rb
index cb24f23..7dec620 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -169,7 +169,6 @@ module OpenTox
@prediction_dataset.add_metadata( {
OT.hasSource => @uri,
DC.creator => @uri,
- # TODO: fix dependentVariable
DC.title => URI.decode(File.basename( @metadata[OT.dependentVariables] )),
OT.parameters => [{DC.title => "compound_uri", OT.paramValue => compound_uri}]
} )
@@ -250,49 +249,18 @@ module OpenTox
end
prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values}, props)")
end
-
- # TODO: reasonable feature name
- #prediction_feature_uri = File.join( @prediction_dataset.uri, "feature", "prediction", File.basename(@metadata[OT.dependentVariables]),@prediction_dataset.compounds.size.to_s)
- value_feature_uri = File.join( @prediction_dataset.uri, "feature", "prediction", File.basename(@metadata[OT.dependentVariables]),"value")
- confidence_feature_uri = File.join( @prediction_dataset.uri, "feature", "prediction", File.basename(@metadata[OT.dependentVariables]),"confidence")
+
+ value_feature_uri = File.join( @uri, "predicted", "value")
+ confidence_feature_uri = File.join( @uri, "predicted", "confidence")
prediction_feature_uris = {value_feature_uri => prediction[:prediction], confidence_feature_uri => prediction[:confidence]}
- #prediction_feature_uris[value_feature_uri] = "No similar compounds in training dataset." if @neighbors.size == 0 or prediction[:prediction].nil?
prediction_feature_uris[value_feature_uri] = nil if @neighbors.size == 0 or prediction[:prediction].nil?
- #@prediction_dataset.metadata[OT.dependentVariables] = prediction_feature_uri
@prediction_dataset.metadata[OT.dependentVariables] = @metadata[OT.dependentVariables]
+ @prediction_dataset.metadata[OT.predictedVariables] = [value_feature_uri, confidence_feature_uri]
-=begin
- if @neighbors.size == 0
- prediction_feature_uris.each do |prediction_feature_uri,value|
- @prediction_dataset.add_feature(prediction_feature_uri, {
- RDF.type => [OT.MeasuredFeature],
- OT.hasSource => @uri,
- DC.creator => @uri,
- DC.title => URI.decode(File.basename( @metadata[OT.dependentVariables] )),
- OT.error => "No similar compounds in training dataset.",
- #OT.parameters => [{DC.title => "compound_uri", OT.paramValue => compound_uri}]
- })
- @prediction_dataset.add @compound.uri, prediction_feature_uri, value
- end
-
- else
-=end
prediction_feature_uris.each do |prediction_feature_uri,value|
- @prediction_dataset.metadata[OT.predictedVariables] = [] unless @prediction_dataset.metadata[OT.predictedVariables]
- @prediction_dataset.metadata[OT.predictedVariables] << prediction_feature_uri
- @prediction_dataset.add_feature(prediction_feature_uri, {
- RDF.type => [OT.ModelPrediction],
- OT.hasSource => @uri,
- DC.creator => @uri,
- DC.title => URI.decode(File.basename( @metadata[OT.dependentVariables] )),
- # TODO: factor information to value
- })
- #OT.prediction => prediction[:prediction],
- #OT.confidence => prediction[:confidence],
- #OT.parameters => [{DC.title => "compound_uri", OT.paramValue => compound_uri}]
- @prediction_dataset.add @compound.uri, prediction_feature_uri, value
+ @prediction_dataset.add @compound.uri, prediction_feature_uri, value
end
if verbose
@@ -429,6 +397,35 @@ module OpenTox
end
end
+ def prediction_features
+ [prediction_value_feature,prediction_confidence_feature]
+ end
+
+ def prediction_value_feature
+ dependent_uri = @metadata[OT.dependentVariables].first
+ feature = OpenTox::Feature.new File.join( @uri, "predicted", "value")
+ feature.add_metadata( {
+ RDF.type => [OT.ModelPrediction],
+ OT.hasSource => @uri,
+ DC.creator => @uri,
+ DC.title => URI.decode(File.basename( dependent_uri )),
+ OWL.sameAs => dependent_uri
+ })
+ feature
+ end
+
+ def prediction_confidence_feature
+ dependent_uri = @metadata[OT.dependentVariables].first
+ feature = OpenTox::Feature.new File.join( @uri, "predicted", "confidence")
+ feature.add_metadata( {
+ RDF.type => [OT.ModelPrediction],
+ OT.hasSource => @uri,
+ DC.creator => @uri,
+ DC.title => "#{URI.decode(File.basename( dependent_uri ))} confidence"
+ })
+ feature
+ end
+
# Save model at model service
def save(subjectid)
self.uri = RestClientWrapper.post(@uri,self.to_yaml,{:content_type => "application/x-yaml", :subjectid => subjectid})
diff --git a/lib/serializer.rb b/lib/serializer.rb
index 62c1159..5a9fd0a 100644
--- a/lib/serializer.rb
+++ b/lib/serializer.rb
@@ -50,6 +50,7 @@ module OpenTox
OT.parameters => { RDF["type"] => [{ "type" => "uri", "value" => OWL.ObjectProperty }] } ,
OT.featureDataset => { RDF["type"] => [{ "type" => "uri", "value" => OWL.ObjectProperty }] } ,
OT.dependentVariables => { RDF["type"] => [{ "type" => "uri", "value" => OWL.ObjectProperty }] } ,
+ OT.predictedVariables => { RDF["type"] => [{ "type" => "uri", "value" => OWL.ObjectProperty }] } ,
OT.paramValue => { RDF["type"] => [{ "type" => "uri", "value" => OWL.ObjectProperty }] } ,
#object props for validation#
@@ -191,6 +192,7 @@ module OpenTox
@object[metadata[OT.featureDataset]] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Dataset }] }
@object[metadata[OT.trainingDataset]] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Dataset }] }
@object[metadata[OT.dependentVariables]] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Feature }] }
+ metadata[OT.predictedVariables].each{|feature| @object[feature] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Feature }] }}
# TODO: add algorithms from parameters
@object["http://ot-dev.in-silico.ch/algorithm/fminer/bbrc"] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Algorithm }] }
@object["http://ot-dev.in-silico.ch/algorithm/fminer/last"] = { RDF["type"] => [{ "type" => "uri", "value" => OT.Algorithm }] }