rbbt-dm 1.1.25 → 1.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94d4fbd7b7ffddd81c3c6dd24485a15b1e420134
4
- data.tar.gz: 94f9901bce9948cb345674a4a49241b6d33a5254
3
+ metadata.gz: 3e5b27776c034b4c967220236bfccd5755449a22
4
+ data.tar.gz: 2a302c7c957ba414c11bd9741c958c1214bf137c
5
5
  SHA512:
6
- metadata.gz: fa1a981b51c442d4e6a48dcd492ed6130edf2d69a10dac97a02d43ce5986751c37a5b116c0a64bc9697439650d7ec39b474daf4e11ea8fdd5ca78aa03bdacee1
7
- data.tar.gz: a5eb5605c22a764824ead1cc5c591b7f039790778ec623d6901db4d0293aeb5cb2c8c8b045f712917be62c98a1377193e6594ddbba659880a395711996fa7195
6
+ metadata.gz: 017abb949fb6b639922267d2444e9ba6890e82c9609ef91ead6765af9bc026bfa8737d9bb4635dbcb1de3d011e37a80056dccf17ce75c076e6ef971d95d107e8
7
+ data.tar.gz: 974b43b88f3969ededb3c4a4dfb8a4e2c2443b52db480798303b27ff692a21949a9433c19e8595e0922e16a79be3888d0ec010c46b0d67f506488d3245758043
@@ -221,6 +221,7 @@ module RandomWalk
221
221
  end
222
222
 
223
223
  set_scoring :score_fitted_weight
224
+ #set_scoring :score_plain_weight
224
225
 
225
226
 
226
227
  def self.combine(up, down)
@@ -294,7 +295,7 @@ module RandomWalk
294
295
 
295
296
  def self.persisted_permutations(size, total, missing = 0, times = 10_000)
296
297
  require 'rbbt/util/tc_cache'
297
- repo_file = "/tmp/rw_repo9"
298
+ repo_file = "/tmp/rw_repo9_" << scoring_method.to_s
298
299
  key = Misc.digest([size, total, missing, times, scoring_method].inspect)
299
300
  cache = TCCache.open(repo_file, :float_array)
300
301
  p = cache.cache(key) do
@@ -305,7 +306,7 @@ module RandomWalk
305
306
 
306
307
  def self.persisted_permutations_up_down(up_size, down_size, total, missing = 0, times = 10_000)
307
308
  require 'rbbt/util/tc_cache'
308
- repo_file = "/tmp/rw_repo9"
309
+ repo_file = "/tmp/rw_repo9_" << scoring_method.to_s
309
310
  key = Misc.digest([up_size, down_size, total, missing, times, scoring_method].inspect)
310
311
  cache = TCCache.open(repo_file, :float_array)
311
312
  p = cache.cache(key) do
@@ -318,10 +319,12 @@ module RandomWalk
318
319
  def self.pvalue(permutations, score)
319
320
  positive = score > 0
320
321
  score = score.abs
321
- pvalue = permutations.inject(1){|acc, per|
322
- acc += 1 if per > score
323
- acc
324
- }.to_f / permutations.length
322
+
323
+ count = permutations.select{|per| per.abs >= score.abs }.length
324
+
325
+ pvalue = (0.0 + count) / (permutations.length)
326
+
327
+ pvalue = 1.0/permutations.length if pvalue == 0.0
325
328
 
326
329
  positive ? pvalue : - pvalue
327
330
  end
@@ -423,15 +426,6 @@ module OrderedList
423
426
  OrderedList.draw_hits(self, set, filename, options)
424
427
  end
425
428
 
426
- #def pvalue(set, options = {})
427
- # set = Set.new(set.compact) unless Set === set
428
- # options = Misc.add_defaults options, :permutations => 10000, :missing => 0
429
- # hits = hits(set)
430
- # score = RandomWalk.score(hits.sort, self.length, 0)
431
- # permutations = RandomWalk.permutations(set.length, self.length, options[:missing], options[:permutations])
432
- # RandomWalk.pvalue(permutations, score)
433
- #end
434
-
435
429
  def pvalue(set, cutoff = 0.1, options = {})
436
430
  set = Set.new(set.compact) unless Set === set
437
431
  options = Misc.add_defaults options, :permutations => 10000, :missing => 0
@@ -439,12 +433,13 @@ module OrderedList
439
433
 
440
434
  hits = hits(set)
441
435
 
442
- return 1.0 if hits.empty?
436
+ return 1.0 if hits.length < 3
443
437
 
444
438
  target_score = RandomWalk.score(hits.sort, self.length, missing)
439
+ total = self.length
445
440
 
446
- if persist_permutations
447
- permutations = RandomWalk.persisted_permutations(set.length, self.length, missing, permutations)
441
+ if persist_permutations
442
+ permutations = RandomWalk.persisted_permutations(hits.length, self.length, missing, permutations)
448
443
  RandomWalk.pvalue(permutations, target_score)
449
444
  else
450
445
  # P-value computation
@@ -452,27 +447,23 @@ module OrderedList
452
447
 
453
448
  max = (permutations.to_f * cutoff).ceil
454
449
 
455
- size = set.length
450
+ size = hits.length
456
451
  total = self.length
457
452
  better_permutation_score_count = 1
458
- if size == 0
459
- 1.0
460
- else
461
- (1..permutations).each do
462
- p= []
463
- RandomWalk.sample_without_replacement(total, size, p)
464
-
465
- permutation_score = RandomWalk.score(p.sort, total, missing).abs
466
- if permutation_score.abs > target_score_abs
467
- better_permutation_score_count += 1
468
- end
453
+ (1..permutations).each do
454
+ p= []
455
+ RandomWalk.sample_without_replacement(total, size, p)
469
456
 
470
- return 1.0 if better_permutation_score_count > max
457
+ permutation_score = RandomWalk.score(p.sort, total, missing).abs
458
+ if permutation_score.abs > target_score_abs
459
+ better_permutation_score_count += 1
471
460
  end
472
- p = (better_permutation_score_count.to_f + 1) / permutations
473
- p = -p if target_score < 0
474
- p
461
+
462
+ return 1.0 if better_permutation_score_count > max
475
463
  end
464
+ p = (better_permutation_score_count.to_f + 1) / permutations
465
+ p = -p if target_score < 0
466
+ p
476
467
  end
477
468
  end
478
469
 
@@ -486,12 +477,12 @@ module OrderedList
486
477
  up_hits = hits(up_set)
487
478
  down_hits = hits(down_set)
488
479
 
489
- return 1.0 if up_hits.empty? or down_hits.empty? # Repasar
480
+ return 1.0 if up_hits.length + down_hits.length < 3
490
481
 
491
482
  target_score = RandomWalk.score_up_down(up_hits.sort, down_hits.sort, self.length, missing)
492
483
 
493
484
  if persist_permutations
494
- permutations = RandomWalk.persisted_permutations_up_down(up_set.length, down_set.length, self.length, missing, permutations)
485
+ permutations = RandomWalk.persisted_permutations_up_down(up_hits.length, down_hits.length, self.length, missing, permutations)
495
486
  RandomWalk.pvalue(permutations, target_score)
496
487
  else
497
488
  # P-value computation
@@ -539,7 +530,7 @@ module OrderedList
539
530
 
540
531
  hits = hits(set)
541
532
 
542
- return 1.0 if hits.empty?
533
+ return 1.0 if hits.length < 3
543
534
 
544
535
  target_score = RandomWalk.score_weights(hits.sort, @weights, @total_weights, self.length, 0)
545
536
  target_score_abs = target_score.abs
@@ -557,7 +548,7 @@ module OrderedList
557
548
  RandomWalk.sample_without_replacement(total, size, p)
558
549
 
559
550
  permutation_score = RandomWalk.score_weights(p.sort, @weights, @total_weights, total, missing).abs
560
- if permutation_score.abs > target_score_abs
551
+ if permutation_score.abs >= target_score_abs
561
552
  better_permutation_score_count += 1
562
553
  end
563
554
 
@@ -574,7 +565,7 @@ module TSV
574
565
 
575
566
  def self.rank_enrichment_for_list(list, hits, options = {})
576
567
  cutoff = options[:cutoff]
577
- list.extend OrderedList
568
+ list.extend OrderedList unless OrderedList === list
578
569
  if cutoff
579
570
  list.pvalue(hits, cutoff, options)
580
571
  else
@@ -585,7 +576,7 @@ module TSV
585
576
  def self.rank_enrichment(tsv, list, options = {})
586
577
  masked = options[:masked]
587
578
  if tsv.fields
588
- res = TSV.setup({}, :cast => :to_f, :type => :double, :key_field => tsv.key_field, :fields => ["p-value", tsv.fields.first])
579
+ res = TSV.setup({}, :cast => :to_f, :type => :double, :key_field => tsv.key_field, :fields => ["p-value", tsv.fields.first, "Hits"])
589
580
  else
590
581
  res = TSV.setup({}, :cast => :to_f, :type => :double)
591
582
  end
@@ -597,9 +588,12 @@ module TSV
597
588
  next if masked and masked.include? key
598
589
  values = values.flatten.compact.reject{|v| v.empty?}
599
590
  matches = (values.respond_to?(:subset) ? values.subset(list) : values & list).compact
600
- next if matches.length < 2
591
+ next if matches.length < 3
592
+ list.extend OrderedList unless OrderedList === list
593
+ total = list.length
594
+ hits = list.hits(values).collect{|p| p.to_f / total}
601
595
  pvalue = rank_enrichment_for_list(list, values, options)
602
- res[key] = [pvalue, matches]
596
+ res[key] = [pvalue, matches, hits]
603
597
  end
604
598
  end
605
599
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-dm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.25
4
+ version: 1.1.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbbt-util