summaryrefslogtreecommitdiff
path: root/validation/validation_service.rb
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-26 18:06:50 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-26 18:06:50 +0200
commit5abed3eedb5e0bc763574ef6a24b006546bdb22f (patch)
tree82a508835acdb71a34c8652accbb9f703b98ad44 /validation/validation_service.rb
parentc70021d0ce1d7bb68a609f24f9888fc2285fe774 (diff)
implemented loo crossvalidation
Diffstat (limited to 'validation/validation_service.rb')
-rwxr-xr-xvalidation/validation_service.rb20
1 files changed, 16 insertions, 4 deletions
diff --git a/validation/validation_service.rb b/validation/validation_service.rb
index d135a2c..a18c6ab 100755
--- a/validation/validation_service.rb
+++ b/validation/validation_service.rb
@@ -306,9 +306,16 @@ module Validation
# creates the cv folds
def create_cv_datasets( prediction_feature, task=nil )
- self.random_seed = 1 unless self.random_seed
- self.num_folds = 10 unless self.num_folds
- self.stratified = false unless self.stratified
+ if self.loo=="true"
+ orig_dataset = Lib::DatasetCache.find(self.dataset_uri,self.subjectid)
+ self.num_folds = orig_dataset.compounds.size
+ self.random_seed = 0
+ self.stratified = false
+ else
+ self.random_seed = 1 unless self.random_seed
+ self.num_folds = 10 unless self.num_folds
+ self.stratified = false unless self.stratified
+ end
if copy_cv_datasets( prediction_feature )
# dataset folds of a previous crossvalidaiton could be used
task.progress(100) if task
@@ -350,6 +357,7 @@ module Validation
:num_folds => self.num_folds,
:stratified => self.stratified,
:random_seed => self.random_seed,
+ :loo => self.loo,
:finished => true} ).reject{ |cv| cv.id == self.id }
cvs.each do |cv|
next if AA_SERVER and !OpenTox::Authorization.authorized?(cv.crossvalidation_uri,"GET",self.subjectid)
@@ -386,7 +394,11 @@ module Validation
orig_dataset = Lib::DatasetCache.find(self.dataset_uri,self.subjectid)
raise OpenTox::NotFoundError.new "Dataset not found: "+self.dataset_uri.to_s unless orig_dataset
- shuffled_compounds = orig_dataset.compounds.shuffle( self.random_seed )
+ if self.loo=="true"
+ shuffled_compounds = orig_dataset.compounds
+ else
+ shuffled_compounds = orig_dataset.compounds.shuffle( self.random_seed )
+ end
unless self.stratified
split_compounds = shuffled_compounds.chunk( self.num_folds.to_i )