summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2011-05-26 20:52:10 +0000
committerChristoph Helma <helma@in-silico.ch>2011-05-26 20:52:10 +0000
commit1ddea6e712319b7f21a6acf24739a2ef54c41042 (patch)
tree185a660e9721f2caed23c2bb5bf16a4fe71ce5b8 /lib
parentf13763a8505ad997739b65d7cfcd804411ff9c77 (diff)
predicted/value and predicted/confidence stored as separate features in model
Diffstat (limited to 'lib')
-rw-r--r--lib/model.rb67
-rw-r--r--lib/serializer.rb2
2 files changed, 34 insertions, 35 deletions
diff --git a/lib/model.rb b/lib/model.rb
index 139aed8..31a513e 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -168,7 +168,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}]
} )
@@ -235,47 +234,16 @@ module OpenTox
prediction = eval("#{@prediction_algorithm}(@neighbors,{:similarity_algorithm => @similarity_algorithm, :p_values => @p_values})")
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
end
@@ -401,6 +369,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 }] }