summaryrefslogtreecommitdiff
path: root/scripts/crossvalidation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/crossvalidation.rb')
-rwxr-xr-xscripts/crossvalidation.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/scripts/crossvalidation.rb b/scripts/crossvalidation.rb
new file mode 100755
index 0000000..79aeb83
--- /dev/null
+++ b/scripts/crossvalidation.rb
@@ -0,0 +1,25 @@
+require_relative 'include.rb'
+
+name = File.basename ARGV[0], ".csv"
+file = File.join DATA,ARGV[0]
+dataset = Dataset.from_csv_file file
+model = Model::LazarRegression.create(dataset, :prediction_algorithm => "OpenTox::Algorithm::Regression.local_fingerprint_regression")
+#model = Model::LazarRegression.create(dataset, :prediction_algorithm => "OpenTox::Algorithm::Regression.local_physchem_regression")
+#model = Model::LazarRegression.create(dataset, :prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average")
+csv_file = File.join(DATA,ARGV[0].sub(/.csv/,"-cv-#{ARGV[1]}.csv"))
+id_file = File.join(DATA,ARGV[0].sub(/.csv/,"-cv-#{ARGV[1]}.id"))
+cv = RegressionCrossValidation.create model
+File.open(id_file,"w+"){|f| f.puts cv.id}
+
+data = []
+cv.predictions.each do |p|
+ smi = Compound.find(p[0]).smiles
+ data << [smi,p[1].median,p[2],p[3]]
+end
+
+data.sort!{|a,b| a[1] <=> b[1]}
+
+CSV.open(csv_file,"w+") do |csv|
+ csv << ["SMILES","LOAEL_measured_median","LOAEL_predicted","Confidence"]
+ data.each{|r| csv << r}
+end