macroape 3.2.2 → 3.3.0

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.
Files changed (37) hide show
  1. data/Rakefile +28 -7
  2. data/lib/macroape.rb +14 -26
  3. data/lib/macroape/aligned_pair_intersection.rb +24 -24
  4. data/lib/macroape/collection.rb +1 -2
  5. data/lib/macroape/count_by_threshold.rb +8 -26
  6. data/lib/macroape/exec/eval_alignment.rb +19 -19
  7. data/lib/macroape/exec/eval_similarity.rb +18 -16
  8. data/lib/macroape/exec/find_pvalue.rb +8 -6
  9. data/lib/macroape/exec/find_threshold.rb +7 -5
  10. data/lib/macroape/exec/preprocess_collection.rb +10 -7
  11. data/lib/macroape/exec/scan_collection.rb +13 -10
  12. data/lib/macroape/pwm_compare.rb +33 -2
  13. data/lib/macroape/pwm_compare_aligned.rb +38 -2
  14. data/lib/macroape/threshold_by_pvalue.rb +48 -43
  15. data/lib/macroape/version.rb +3 -3
  16. data/macroape.gemspec +2 -0
  17. data/test/data/test_collection.yaml +70 -4
  18. data/test/eval_alignment_similarity_test.rb +19 -0
  19. data/test/eval_similarity_test.rb +26 -0
  20. data/test/find_pvalue_test.rb +25 -0
  21. data/test/find_threshold_test.rb +29 -0
  22. data/test/preprocess_collection_test.rb +9 -0
  23. data/test/scan_collection_test.rb +17 -0
  24. data/test/test_helper.rb +10 -0
  25. metadata +33 -16
  26. data/lib/macroape/aligned_pair_metrics.rb +0 -24
  27. data/lib/macroape/aligned_pair_transformations.rb +0 -23
  28. data/lib/macroape/extract_pwm.rb +0 -32
  29. data/lib/macroape/gauss_estimation.rb +0 -30
  30. data/lib/macroape/matrix_information.rb +0 -29
  31. data/lib/macroape/matrix_on_background.rb +0 -16
  32. data/lib/macroape/matrix_transformations.rb +0 -29
  33. data/lib/macroape/pair_metrics.rb +0 -9
  34. data/lib/macroape/pair_transformations.rb +0 -28
  35. data/lib/macroape/single_matrix.rb +0 -45
  36. data/lib/macroape/support.rb +0 -34
  37. data/test/macroape_test.rb +0 -125
@@ -1,45 +0,0 @@
1
- module PWM
2
- class SingleMatrix
3
- attr_reader :matrix
4
- attr_accessor :name
5
- def initialize(matrix)
6
- @matrix = matrix
7
- end
8
- include MatrixTransformations, MatrixInformation
9
-
10
- def self.build_matrix(lines, name = nil)
11
- pwm_name = name
12
- begin
13
- lines.first.split.each{|x| Float(x) }
14
- start_line = 0
15
- rescue
16
- start_line = 1
17
- pwm_name = lines.first.chomp.match(/(?:>\s)?(.*)$/)[1]
18
- end
19
-
20
- if lines[start_line].split.length == 4
21
- pwm = SingleMatrix.new(lines[start_line..-1].map{|str| str.split.map(&:to_f)})
22
- else
23
- pwm = SingleMatrix.new(lines[start_line..-1].map{|str| str.split.map(&:to_f)}.transpose)
24
- end
25
- raise "PWM::SingleMatrix.build_matrix can't create matrix using this input" unless pwm.matrix.all?{|l| l.length == 4}
26
- pwm.name = pwm_name
27
- pwm
28
- end
29
-
30
- def self.load_from_stdin(input_stream, name = nil)
31
- build_matrix(input_stream.readlines, name)
32
- end
33
- def self.load_from_line_array(lines, name = nil)
34
- build_matrix(lines, name)
35
- end
36
-
37
- def self.load_pat(filename)
38
- build_matrix( File.open(filename,'r'){|f| f.readlines}, File.basename_wo_ext(filename))
39
- end
40
-
41
- def with_background(background)
42
- type_cast(MatrixOnBackground){@probabilities = background}.depth_dup
43
- end
44
- end
45
- end
@@ -1,34 +0,0 @@
1
- module Kernel
2
- def type_cast(new_class, &block)
3
- new_obj = new_class.allocate
4
- instance_variables.each do |varname|
5
- new_obj.instance_variable_set(varname, self.instance_variable_get(varname))
6
- end
7
- new_obj.instance_eval(&block) if block_given?
8
- new_obj
9
- end
10
-
11
- def depth_dup
12
- begin
13
- new_obj = self.dup
14
- rescue
15
- return self
16
- end
17
- new_obj.instance_variables.each do |varname|
18
- begin
19
- new_obj.instance_variable_set(varname, new_obj.instance_variable_get(varname).depth_dup)
20
- rescue
21
- end
22
- end
23
- new_obj
24
- end
25
-
26
- end
27
-
28
- def File.filename_wo_ext(filename)
29
- filename[0..-(1+File.extname(filename).length)]
30
- end
31
-
32
- def File.basename_wo_ext(filename)
33
- File.basename(filename)[0..-(1+File.extname(filename).length)]
34
- end
@@ -1,125 +0,0 @@
1
- require 'test/unit'
2
-
3
- module Helpers
4
- def self.obtain_pvalue_by_threshold(args)
5
- IO.popen("find_pvalue #{args}",&:read).strip.split.last
6
- end
7
- end
8
-
9
- class FindThresholdTest < Test::Unit::TestCase
10
- def test_process_several_pvalues
11
- pvalues = []
12
- IO.popen('find_threshold test/data/KLF4_f2.pat -p 0.001 0.0005', &:read).lines.each{|line|
13
- pvalue, threshold, real_pvalue = line.strip.split("\t")
14
- pvalues << pvalue
15
- assert_equal Helpers.obtain_pvalue_by_threshold("test/data/KLF4_f2.pat #{threshold}"), real_pvalue
16
- }
17
- assert_equal pvalues, ['0.0005', '0.001']
18
- end
19
- def test_process_one_pvalue
20
- pvalue, threshold, real_pvalue = IO.popen('find_threshold test/data/KLF4_f2.pat -p 0.001', &:read).strip.split("\t")
21
- assert_equal '0.001', pvalue
22
- assert_equal Helpers.obtain_pvalue_by_threshold("test/data/KLF4_f2.pat #{threshold}"), real_pvalue
23
- end
24
- def test_process_default_pvalue
25
- pvalue, threshold, real_pvalue = IO.popen('find_threshold test/data/KLF4_f2.pat', &:read).strip.split("\t")
26
- assert_equal '0.0005', pvalue
27
- assert_equal Helpers.obtain_pvalue_by_threshold("test/data/KLF4_f2.pat #{threshold}"), real_pvalue
28
- end
29
- def test_custom_discretization
30
- pvalue, threshold, real_pvalue = IO.popen('find_threshold test/data/KLF4_f2.pat -d 100',&:read).strip.split("\t")
31
- assert_equal '0.0005', pvalue
32
- assert_equal Helpers.obtain_pvalue_by_threshold("test/data/KLF4_f2.pat #{threshold} -d 100"), real_pvalue
33
- end
34
- end
35
-
36
- class FindPvalueTest < Test::Unit::TestCase
37
- def test_process_one_threshold
38
- IO.popen('find_pvalue test/data/KLF4_f2.pat 4.1719'){|f|
39
- assert_equal "4.1719\t1048.0\t0.00099945068359375\n", f.read
40
- }
41
- end
42
- def test_process_several_thresholds
43
- IO.popen('find_pvalue test/data/KLF4_f2.pat 4.1719 5.2403'){|f|
44
- assert_equal "4.1719\t1048.0\t0.00099945068359375\n5.2403\t524.0\t0.000499725341796875\n", f.read
45
- }
46
- end
47
- def test_process_several_thresholds_result_is_ordered
48
- IO.popen('find_pvalue test/data/KLF4_f2.pat 5.2403 4.1719'){|f|
49
- assert_equal "5.2403\t524.0\t0.000499725341796875\n4.1719\t1048.0\t0.00099945068359375\n", f.read
50
- }
51
- end
52
- def test_custom_discretization
53
- IO.popen('find_pvalue test/data/KLF4_f2.pat 5.2403 -d 100'){|f|
54
- assert_equal "5.2403\t527.0\t0.0005025863647460938\n", f.read
55
- }
56
- end
57
- end
58
-
59
-
60
- class TestEvalSimilarity < Test::Unit::TestCase
61
- def test_process_pair_of_pwms
62
- IO.popen('eval_similarity test/data/KLF4_f2.pat test/data/SP1_f1.pat'){|f|
63
- assert_equal "0.2420758234928527\n779.0\t11\n.>>>>>>>>>>\n>>>>>>>>>>>\n-1\tdirect\n", f.read
64
- }
65
- end
66
- def test_process_another_pair_of_pwms
67
- IO.popen('eval_similarity test/data/SP1_f1.pat test/data/AHR_si.pat'){|f|
68
- assert_equal "0.0037332005973120955\n15.0\t11\n>>>>>>>>>>>\n.>>>>>>>>>.\n1\tdirect\n", f.read
69
- }
70
- end
71
-
72
- def test_recognize_orientation_of_alignment
73
- IO.popen('eval_similarity test/data/SP1_f1_revcomp.pat test/data/SP1_f1.pat'){|f|
74
- assert_equal "1.0\n2033.0\t11\n>>>>>>>>>>>\n<<<<<<<<<<<\n0\trevcomp\n", f.read
75
- }
76
- end
77
-
78
- def test_process_custom_discretization
79
- IO.popen('eval_similarity test/data/SP1_f1.pat test/data/KLF4_f2.pat -d 1'){|f|
80
- assert_equal "0.22754919499105544\n636.0\t11\n>>>>>>>>>>>\n.>>>>>>>>>>\n1\tdirect\n", f.read
81
- }
82
- end
83
- end
84
-
85
- class TestEvalAlignmentSimilarity < Test::Unit::TestCase
86
- def test_process_at_optimal_alignment
87
- IO.popen('eval_alignment test/data/KLF4_f2.pat test/data/SP1_f1.pat -1 direct '){|f|
88
- assert_equal "0.2420758234928527\n779.0\t11\n.>>>>>>>>>>\n>>>>>>>>>>>\n-1\tdirect\n", f.read
89
- }
90
- end
91
- def test_process_not_optimal_alignment
92
- IO.popen('eval_alignment test/data/KLF4_f2.pat test/data/SP1_f1.pat 0 direct '){|f|
93
- assert_equal "0.0017543859649122807\n7.0\t11\n>>>>>>>>>>.\n>>>>>>>>>>>\n0\tdirect\n", f.read
94
- }
95
- end
96
- def test_process_at_optimal_alignment_reversed
97
- IO.popen('eval_alignment test/data/KLF4_f2.pat test/data/SP1_f1.pat -1 revcomp '){|f|
98
- assert_equal "0.0\n0.0\t11\n.>>>>>>>>>>\n<<<<<<<<<<<\n-1\trevcomp\n", f.read
99
- }
100
- end
101
- end
102
-
103
- class TestPreprocessCollection < Test::Unit::TestCase
104
- def test_multipvalue_preproceessing
105
- system('preprocess_collection ./test/data/test_collection -o test/data/test_collection.yaml.tmp -p 0.0005 0.0001 0.00005 --silent')
106
- assert_equal File.read('test/data/test_collection.yaml'), File.read('test/data/test_collection.yaml.tmp')
107
- File.delete 'test/data/test_collection.yaml.tmp'
108
- end
109
- end
110
-
111
- class TestScanCollection < Test::Unit::TestCase
112
- def test_scan_default_cutoff
113
- assert_equal File.read('test/data/KLF4_f2_scan_results_default_cutoff.txt'),
114
- IO.popen('scan_collection test/data/KLF4_f2.pat test/data/test_collection.yaml --silent', &:read)
115
- end
116
- def test_scan_and_output_all_results
117
- assert_equal File.read('test/data/KLF4_f2_scan_results_all.txt'),
118
- IO.popen('scan_collection test/data/KLF4_f2.pat test/data/test_collection.yaml --all --silent', &:read)
119
-
120
- end
121
- def test_scan_precise_mode
122
- assert_equal File.read('test/data/KLF4_f2_scan_results_precise_mode.txt'),
123
- IO.popen('scan_collection test/data/KLF4_f2.pat test/data/test_collection.yaml --precise --all --silent', &:read)
124
- end
125
- end