bioinform 0.1.17 → 0.2.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -3
  3. data/LICENSE +0 -1
  4. data/README.md +1 -1
  5. data/TODO.txt +23 -30
  6. data/bin/convert_motif +4 -0
  7. data/bin/pcm2pwm +1 -1
  8. data/bin/split_motifs +1 -1
  9. data/bioinform.gemspec +0 -2
  10. data/lib/bioinform.rb +54 -16
  11. data/lib/bioinform/alphabet.rb +85 -0
  12. data/lib/bioinform/background.rb +90 -0
  13. data/lib/bioinform/cli.rb +1 -2
  14. data/lib/bioinform/cli/convert_motif.rb +52 -17
  15. data/lib/bioinform/cli/pcm2pwm.rb +32 -26
  16. data/lib/bioinform/cli/split_motifs.rb +31 -30
  17. data/lib/bioinform/conversion_algorithms.rb +6 -0
  18. data/lib/bioinform/conversion_algorithms/pcm2ppm_converter.rb +13 -11
  19. data/lib/bioinform/conversion_algorithms/pcm2pwm_converter.rb +39 -11
  20. data/lib/bioinform/conversion_algorithms/pcm2pwm_mara_converter.rb +26 -0
  21. data/lib/bioinform/conversion_algorithms/ppm2pcm_converter.rb +30 -0
  22. data/lib/bioinform/conversion_algorithms/pwm2iupac_pwm_converter.rb +23 -0
  23. data/lib/bioinform/conversion_algorithms/pwm2pcm_converter.rb +85 -0
  24. data/lib/bioinform/data_models.rb +1 -7
  25. data/lib/bioinform/data_models/named_model.rb +38 -0
  26. data/lib/bioinform/data_models/pcm.rb +18 -28
  27. data/lib/bioinform/data_models/pm.rb +73 -170
  28. data/lib/bioinform/data_models/ppm.rb +11 -24
  29. data/lib/bioinform/data_models/pwm.rb +30 -56
  30. data/lib/bioinform/errors.rb +17 -0
  31. data/lib/bioinform/formatters.rb +4 -2
  32. data/lib/bioinform/formatters/consensus_formatter.rb +35 -0
  33. data/lib/bioinform/formatters/motif_formatter.rb +69 -0
  34. data/lib/bioinform/formatters/pretty_matrix_formatter.rb +36 -0
  35. data/lib/bioinform/formatters/transfac_formatter.rb +29 -37
  36. data/lib/bioinform/parsers.rb +1 -8
  37. data/lib/bioinform/parsers/matrix_parser.rb +44 -36
  38. data/lib/bioinform/parsers/motif_splitter.rb +45 -0
  39. data/lib/bioinform/support.rb +46 -14
  40. data/lib/bioinform/support/strip_doc.rb +1 -1
  41. data/lib/bioinform/version.rb +1 -1
  42. data/spec/alphabet_spec.rb +79 -0
  43. data/spec/background_spec.rb +57 -0
  44. data/spec/cli/cli_spec.rb +6 -6
  45. data/spec/cli/convert_motif_spec.rb +88 -88
  46. data/spec/cli/data/pcm2pwm/KLF4_f2.pwm.result +9 -9
  47. data/spec/cli/data/pcm2pwm/SP1_f1.pwm.result +11 -11
  48. data/spec/cli/pcm2pwm_spec.rb +22 -23
  49. data/spec/cli/shared_examples/convert_motif/motif_list_empty.rb +1 -1
  50. data/spec/cli/shared_examples/convert_motif/several_motifs_specified.rb +1 -1
  51. data/spec/cli/shared_examples/convert_motif/single_motif_specified.rb +5 -5
  52. data/spec/cli/shared_examples/convert_motif/yield_help_string.rb +2 -2
  53. data/spec/cli/shared_examples/convert_motif/yield_motif_conversion_error.rb +3 -3
  54. data/spec/cli/split_motifs_spec.rb +6 -21
  55. data/spec/converters/pcm2ppm_converter_spec.rb +32 -0
  56. data/spec/converters/pcm2pwm_converter_spec.rb +71 -0
  57. data/spec/converters/ppm2pcm_converter_spec.rb +32 -0
  58. data/spec/converters/pwm2iupac_pwm_converter_spec.rb +65 -0
  59. data/spec/converters/pwm2pcm_converter_spec.rb +57 -0
  60. data/spec/data_models/named_model_spec.rb +41 -0
  61. data/spec/data_models/pcm_spec.rb +114 -45
  62. data/spec/data_models/pm_spec.rb +132 -333
  63. data/spec/data_models/ppm_spec.rb +47 -44
  64. data/spec/data_models/pwm_spec.rb +85 -77
  65. data/spec/fabricators/motif_formats_fabricator.rb +116 -116
  66. data/spec/formatters/consensus_formatter_spec.rb +26 -0
  67. data/spec/formatters/raw_formatter_spec.rb +169 -0
  68. data/spec/parsers/matrix_parser_spec.rb +216 -0
  69. data/spec/parsers/motif_splitter_spec.rb +87 -0
  70. data/spec/spec_helper.rb +2 -2
  71. data/spec/spec_helper_source.rb +25 -5
  72. data/spec/support_spec.rb +31 -0
  73. metadata +43 -124
  74. data/bin/merge_into_collection +0 -4
  75. data/lib/bioinform/cli/merge_into_collection.rb +0 -80
  76. data/lib/bioinform/conversion_algorithms/ppm2pwm_converter.rb +0 -0
  77. data/lib/bioinform/data_models/collection.rb +0 -75
  78. data/lib/bioinform/data_models/motif.rb +0 -56
  79. data/lib/bioinform/formatters/raw_formatter.rb +0 -41
  80. data/lib/bioinform/parsers/jaspar_parser.rb +0 -35
  81. data/lib/bioinform/parsers/parser.rb +0 -92
  82. data/lib/bioinform/parsers/splittable_parser.rb +0 -57
  83. data/lib/bioinform/parsers/string_fantom_parser.rb +0 -35
  84. data/lib/bioinform/parsers/string_parser.rb +0 -72
  85. data/lib/bioinform/parsers/trivial_parser.rb +0 -34
  86. data/lib/bioinform/parsers/yaml_parser.rb +0 -35
  87. data/lib/bioinform/support/advanced_scan.rb +0 -8
  88. data/lib/bioinform/support/array_product.rb +0 -6
  89. data/lib/bioinform/support/array_zip.rb +0 -6
  90. data/lib/bioinform/support/collect_hash.rb +0 -7
  91. data/lib/bioinform/support/deep_dup.rb +0 -5
  92. data/lib/bioinform/support/delete_many.rb +0 -14
  93. data/lib/bioinform/support/inverf.rb +0 -13
  94. data/lib/bioinform/support/multiline_squish.rb +0 -6
  95. data/lib/bioinform/support/parameters.rb +0 -28
  96. data/lib/bioinform/support/partial_sums.rb +0 -16
  97. data/lib/bioinform/support/same_by.rb +0 -12
  98. data/lib/bioinform/support/third_part/active_support/core_ext/array/extract_options.rb +0 -29
  99. data/lib/bioinform/support/third_part/active_support/core_ext/hash/indifferent_access.rb +0 -23
  100. data/lib/bioinform/support/third_part/active_support/core_ext/hash/keys.rb +0 -54
  101. data/lib/bioinform/support/third_part/active_support/core_ext/module/attribute_accessors.rb +0 -64
  102. data/lib/bioinform/support/third_part/active_support/core_ext/object/try.rb +0 -57
  103. data/lib/bioinform/support/third_part/active_support/core_ext/string/access.rb +0 -99
  104. data/lib/bioinform/support/third_part/active_support/core_ext/string/behavior.rb +0 -6
  105. data/lib/bioinform/support/third_part/active_support/core_ext/string/filters.rb +0 -49
  106. data/lib/bioinform/support/third_part/active_support/core_ext/string/multibyte.rb +0 -72
  107. data/lib/bioinform/support/third_part/active_support/hash_with_indifferent_access.rb +0 -181
  108. data/lib/bioinform/support/third_part/active_support/multibyte.rb +0 -44
  109. data/lib/bioinform/support/third_part/active_support/multibyte/chars.rb +0 -476
  110. data/lib/bioinform/support/third_part/active_support/multibyte/exceptions.rb +0 -8
  111. data/lib/bioinform/support/third_part/active_support/multibyte/unicode.rb +0 -393
  112. data/lib/bioinform/support/third_part/active_support/multibyte/utils.rb +0 -60
  113. data/spec/cli/data/merge_into_collection/GABPA_f1.pwm +0 -14
  114. data/spec/cli/data/merge_into_collection/KLF4_f2.pwm +0 -11
  115. data/spec/cli/data/merge_into_collection/SP1_f1.pwm +0 -12
  116. data/spec/cli/data/merge_into_collection/collection.txt.result +0 -40
  117. data/spec/cli/data/merge_into_collection/collection.yaml.result +0 -188
  118. data/spec/cli/data/merge_into_collection/collection_pwm.yaml.result +0 -188
  119. data/spec/cli/data/merge_into_collection/pwm_folder/GABPA_f1.pwm +0 -14
  120. data/spec/cli/data/merge_into_collection/pwm_folder/KLF4_f2.pwm +0 -11
  121. data/spec/cli/data/merge_into_collection/pwm_folder/SP1_f1.pwm +0 -12
  122. data/spec/cli/data/split_motifs/collection.yaml +0 -188
  123. data/spec/cli/merge_into_collection_spec.rb +0 -100
  124. data/spec/data_models/collection_spec.rb +0 -98
  125. data/spec/data_models/motif_spec.rb +0 -224
  126. data/spec/fabricators/collection_fabricator.rb +0 -8
  127. data/spec/fabricators/motif_fabricator.rb +0 -33
  128. data/spec/fabricators/pcm_fabricator.rb +0 -25
  129. data/spec/fabricators/pm_fabricator.rb +0 -52
  130. data/spec/fabricators/ppm_fabricator.rb +0 -14
  131. data/spec/fabricators/pwm_fabricator.rb +0 -16
  132. data/spec/parsers/parser_spec.rb +0 -152
  133. data/spec/parsers/string_fantom_parser_spec.rb +0 -70
  134. data/spec/parsers/string_parser_spec.rb +0 -77
  135. data/spec/parsers/trivial_parser_spec.rb +0 -64
  136. data/spec/parsers/yaml_parser_spec.rb +0 -50
  137. data/spec/support/advanced_scan_spec.rb +0 -32
  138. data/spec/support/array_product_spec.rb +0 -15
  139. data/spec/support/array_zip_spec.rb +0 -15
  140. data/spec/support/collect_hash_spec.rb +0 -15
  141. data/spec/support/delete_many_spec.rb +0 -44
  142. data/spec/support/inverf_spec.rb +0 -19
  143. data/spec/support/multiline_squish_spec.rb +0 -25
  144. data/spec/support/partial_sums_spec.rb +0 -30
  145. data/spec/support/same_by_spec.rb +0 -36
@@ -1,14 +0,0 @@
1
- GABPA_f1
2
- -0.1106670158341858 0.013801606113892391 0.6054596108973699 -1.3518085041421573
3
- 0.37030668921643345 0.15761121480429963 0.009069314183831202 -0.9888619717703562
4
- 0.47526546359546684 -0.3011678534572083 0.4031522994412777 -1.8638752827041059
5
- -1.5544255540164373 1.1082369687811506 -0.2814091552834454 -5.30708531823271
6
- -0.6362037835776368 1.235338189985594 -3.5801322928552253 -5.717323067092849
7
- -5.852906870733575 -5.852906870733575 1.3841383838057746 -5.852906870733575
8
- -5.852906870733575 -5.852906870733575 1.3841383838057746 -5.852906870733575
9
- 1.3835219739184708 -5.2341956006430985 -5.852906870733575 -5.852906870733575
10
- 1.3756340514956562 -5.394962755562375 -5.394962755562375 -3.401117964959733
11
- -1.2176198315414444 -3.109079898175411 1.2964067931472216 -5.717323067092849
12
- -1.3716559438167257 -0.2761401935045069 -1.8504445165866068 1.0404320473626856
13
- -0.5440863133031895 -0.48103682561971345 0.907381908447086 -1.1280642594012078
14
- 0.10557340209290218 -0.01814819455289191 0.4381106695354074 -1.0304105539540915
@@ -1,11 +0,0 @@
1
- KLF4_f2
2
- 0.30861857265872605 -2.254321000121579 0.13505703522674192 0.3285194224375633
3
- -1.227018967707036 -4.814127713368663 1.3059890687390967 -4.908681463544344
4
- -2.443469374521196 -4.648238485031404 1.3588686548279805 -4.441801801188402
5
- -2.7177827948276123 -3.8073538975356565 1.356272809724262 -3.504104725510225
6
- -0.5563232977367343 0.5340697765121405 -3.61417723090579 0.5270259776377405
7
- -1.8687622060887386 -4.381483976582316 1.337932245336098 -3.815629658877517
8
- -2.045671123823928 -2.384975142213679 0.7198551207724355 0.5449254135616948
9
- -1.373157530374372 -3.0063112097748217 1.285188335493552 -2.5026044231773543
10
- -2.1030513122772208 -1.8941348100402244 1.249265758393991 -1.4284210948906104
11
- -1.3277128628152939 0.8982415633049462 -0.8080773665408135 -0.18161647647456935
@@ -1,12 +0,0 @@
1
- SP1_f1
2
- -0.24435707885585292 -0.674823404693731 0.8657012535789866 -1.1060188862599287
3
- -1.0631255752097797 -2.111925969423868 1.0960627561110403 -0.6138563775211977
4
- -0.3872276234760535 -2.9739851913218045 1.1807800242010378 -4.338927525031566
5
- -4.563896055436894 -2.9161633002532277 1.3684371349982638 -5.077972423609655
6
- -2.2369752892820083 -3.7196436313301846 1.3510439136452734 -4.889930670508233
7
- -0.07473964149330865 0.944919654762011 -2.6246857648086044 -0.8510983487822436
8
- -1.9643526491643322 -2.978402770880115 1.3113096718240573 -2.324334259499025
9
- -4.0155484139655835 -3.1384268078096667 1.3387488589788057 -2.084673903537648
10
- -0.44509385828355363 -2.2510053061629702 1.1265431574368685 -1.7780413702431372
11
- -1.1896356092245048 -1.2251832285630027 1.1636760063747527 -1.6080243648157353
12
- -0.5166047365590571 0.7641033353626657 -0.2862677570028208 -0.68254820978656
@@ -1,188 +0,0 @@
1
- --- !ruby/object:Bioinform::Collection
2
- container:
3
- - !ruby/object:Bioinform::Motif
4
- parameters: !ruby/object:OpenStruct
5
- table:
6
- :original_data_model: :pwm
7
- :pwm: !ruby/object:Bioinform::PWM
8
- parameters: !ruby/object:OpenStruct
9
- table:
10
- :name: GABPA_f1
11
- :background:
12
- - 1
13
- - 1
14
- - 1
15
- - 1
16
- modifiable: true
17
- matrix:
18
- - - -0.1106670158341858
19
- - 0.013801606113892391
20
- - 0.6054596108973699
21
- - -1.3518085041421573
22
- - - 0.37030668921643345
23
- - 0.15761121480429963
24
- - 0.009069314183831202
25
- - -0.9888619717703562
26
- - - 0.47526546359546684
27
- - -0.3011678534572083
28
- - 0.4031522994412777
29
- - -1.8638752827041059
30
- - - -1.5544255540164373
31
- - 1.1082369687811506
32
- - -0.2814091552834454
33
- - -5.30708531823271
34
- - - -0.6362037835776368
35
- - 1.235338189985594
36
- - -3.5801322928552253
37
- - -5.717323067092849
38
- - - -5.852906870733575
39
- - -5.852906870733575
40
- - 1.3841383838057746
41
- - -5.852906870733575
42
- - - -5.852906870733575
43
- - -5.852906870733575
44
- - 1.3841383838057746
45
- - -5.852906870733575
46
- - - 1.3835219739184708
47
- - -5.2341956006430985
48
- - -5.852906870733575
49
- - -5.852906870733575
50
- - - 1.3756340514956562
51
- - -5.394962755562375
52
- - -5.394962755562375
53
- - -3.401117964959733
54
- - - -1.2176198315414444
55
- - -3.109079898175411
56
- - 1.2964067931472216
57
- - -5.717323067092849
58
- - - -1.3716559438167257
59
- - -0.2761401935045069
60
- - -1.8504445165866068
61
- - 1.0404320473626856
62
- - - -0.5440863133031895
63
- - -0.48103682561971345
64
- - 0.907381908447086
65
- - -1.1280642594012078
66
- - - 0.10557340209290218
67
- - -0.01814819455289191
68
- - 0.4381106695354074
69
- - -1.0304105539540915
70
- modifiable: true
71
- - !ruby/object:Bioinform::Motif
72
- parameters: !ruby/object:OpenStruct
73
- table:
74
- :original_data_model: :pwm
75
- :pwm: !ruby/object:Bioinform::PWM
76
- parameters: !ruby/object:OpenStruct
77
- table:
78
- :name: KLF4_f2
79
- :background:
80
- - 1
81
- - 1
82
- - 1
83
- - 1
84
- modifiable: true
85
- matrix:
86
- - - 0.30861857265872605
87
- - -2.254321000121579
88
- - 0.13505703522674192
89
- - 0.3285194224375633
90
- - - -1.227018967707036
91
- - -4.814127713368663
92
- - 1.3059890687390967
93
- - -4.908681463544344
94
- - - -2.443469374521196
95
- - -4.648238485031404
96
- - 1.3588686548279805
97
- - -4.441801801188402
98
- - - -2.7177827948276123
99
- - -3.8073538975356565
100
- - 1.356272809724262
101
- - -3.504104725510225
102
- - - -0.5563232977367343
103
- - 0.5340697765121405
104
- - -3.61417723090579
105
- - 0.5270259776377405
106
- - - -1.8687622060887386
107
- - -4.381483976582316
108
- - 1.337932245336098
109
- - -3.815629658877517
110
- - - -2.045671123823928
111
- - -2.384975142213679
112
- - 0.7198551207724355
113
- - 0.5449254135616948
114
- - - -1.373157530374372
115
- - -3.0063112097748217
116
- - 1.285188335493552
117
- - -2.5026044231773543
118
- - - -2.1030513122772208
119
- - -1.8941348100402244
120
- - 1.249265758393991
121
- - -1.4284210948906104
122
- - - -1.3277128628152939
123
- - 0.8982415633049462
124
- - -0.8080773665408135
125
- - -0.18161647647456935
126
- modifiable: true
127
- - !ruby/object:Bioinform::Motif
128
- parameters: !ruby/object:OpenStruct
129
- table:
130
- :original_data_model: :pwm
131
- :pwm: !ruby/object:Bioinform::PWM
132
- parameters: !ruby/object:OpenStruct
133
- table:
134
- :name: SP1_f1
135
- :background:
136
- - 1
137
- - 1
138
- - 1
139
- - 1
140
- modifiable: true
141
- matrix:
142
- - - -0.24435707885585292
143
- - -0.674823404693731
144
- - 0.8657012535789866
145
- - -1.1060188862599287
146
- - - -1.0631255752097797
147
- - -2.111925969423868
148
- - 1.0960627561110403
149
- - -0.6138563775211977
150
- - - -0.3872276234760535
151
- - -2.9739851913218045
152
- - 1.1807800242010378
153
- - -4.338927525031566
154
- - - -4.563896055436894
155
- - -2.9161633002532277
156
- - 1.3684371349982638
157
- - -5.077972423609655
158
- - - -2.2369752892820083
159
- - -3.7196436313301846
160
- - 1.3510439136452734
161
- - -4.889930670508233
162
- - - -0.07473964149330865
163
- - 0.944919654762011
164
- - -2.6246857648086044
165
- - -0.8510983487822436
166
- - - -1.9643526491643322
167
- - -2.978402770880115
168
- - 1.3113096718240573
169
- - -2.324334259499025
170
- - - -4.0155484139655835
171
- - -3.1384268078096667
172
- - 1.3387488589788057
173
- - -2.084673903537648
174
- - - -0.44509385828355363
175
- - -2.2510053061629702
176
- - 1.1265431574368685
177
- - -1.7780413702431372
178
- - - -1.1896356092245048
179
- - -1.2251832285630027
180
- - 1.1636760063747527
181
- - -1.6080243648157353
182
- - - -0.5166047365590571
183
- - 0.7641033353626657
184
- - -0.2862677570028208
185
- - -0.68254820978656
186
- modifiable: true
187
- parameters: !ruby/object:OpenStruct
188
- table: {}
@@ -1,100 +0,0 @@
1
- require 'shellwords'
2
- require 'yaml'
3
- require_relative '../spec_helper'
4
- require_relative '../../lib/bioinform/cli/merge_into_collection'
5
- require_relative '../../lib/bioinform/data_models/collection'
6
-
7
-
8
- def run_merge_into_collection(cmd)
9
- Bioinform::CLI::MergeIntoCollection.main(cmd.shellsplit)
10
- end
11
-
12
- describe Bioinform::CLI::MergeIntoCollection do
13
- before :each do
14
- @start_dir = Dir.pwd
15
- Dir.chdir File.join(File.dirname(__FILE__), 'data', 'merge_into_collection')
16
- end
17
- after :each do
18
- File.delete('collection.yaml') if File.exist?('collection.yaml')
19
- File.delete('collection.txt') if File.exist?('collection.txt')
20
- File.delete('my_collection.yaml') if File.exist?('my_collection.yaml')
21
- File.delete('my_collection.txt') if File.exist?('my_collection.txt')
22
- File.delete('result.out') if File.exist?('result.out')
23
- Dir.chdir(@start_dir)
24
- end
25
-
26
- context 'without --plain option' do
27
- context 'when name not specified' do
28
- it 'collects motifs into file collection.yaml' do
29
- run_merge_into_collection('GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
30
- File.exist?('collection.yaml').should be_true
31
- YAML.load(File.read('collection.yaml')).should == YAML.load(File.read('collection.yaml.result'))
32
- end
33
- end
34
-
35
- context 'when name specified' do
36
- it 'collects motifs into file <collection name>.yaml' do
37
- run_merge_into_collection('--name my_collection GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
38
- File.exist?('my_collection.yaml').should be_true
39
- YAML.load(File.read('my_collection.yaml')).should == YAML.load(File.read('collection.yaml.result')).set_parameters(name: 'my_collection')
40
- end
41
- end
42
-
43
- context 'with --data-model option' do
44
- it 'treat motifs as specified data model' do
45
- run_merge_into_collection('--data-model pwm GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
46
- File.exist?('collection.yaml').should be_true
47
- YAML.load(File.read('collection.yaml')).should == YAML.load(File.read('collection_pwm.yaml.result'))
48
- end
49
- end
50
- end
51
-
52
- context 'with --plain option' do
53
- context 'when name not specified' do
54
- it 'should collect motifs into file collection.txt in plain-text format' do
55
- run_merge_into_collection('--plain GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
56
- File.exist?('collection.txt').should be_true
57
- YAML.load(File.read('collection.txt')).should == YAML.load(File.read('collection.txt.result'))
58
- end
59
- end
60
-
61
- context 'when name specified' do
62
- it 'should collect motifs into file <collection name>.txt in plain-text format' do
63
- run_merge_into_collection('--name my_collection --plain GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
64
- File.exist?('my_collection.txt').should be_true
65
- YAML.load(File.read('my_collection.txt')).should == YAML.load(File.read('collection.txt.result'))
66
- end
67
- end
68
-
69
- context 'with --data-model option' do
70
- it 'generate usual txt file' do
71
- run_merge_into_collection('--data-model pwm --plain GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
72
- File.exist?('collection.txt').should be_true
73
- YAML.load(File.read('collection.txt')).should == YAML.load(File.read('collection.txt.result'))
74
- end
75
- end
76
- end
77
-
78
- context 'when --output-file specified' do
79
- it 'collects motifs into specified file' do
80
- run_merge_into_collection('--output-file result.out GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm')
81
- File.exist?('result.out').should be_true
82
- YAML.load(File.read('result.out')).should == YAML.load(File.read('collection.yaml.result'))
83
- end
84
- end
85
-
86
- context 'when filelist is empty' do
87
- it 'takes filelist from stdin' do
88
- provide_stdin('GABPA_f1.pwm KLF4_f2.pwm SP1_f1.pwm'){ run_merge_into_collection('') }
89
- File.exist?('collection.yaml').should be_true
90
- YAML.load(File.read('collection.yaml')).should == YAML.load(File.read('collection.yaml.result'))
91
- end
92
- end
93
- context 'when filelist contain folder name' do
94
- it 'takes filelist as files from folder' do
95
- run_merge_into_collection('pwm_folder')
96
- File.exist?('collection.yaml').should be_true
97
- YAML.load(File.read('collection.yaml')).should == YAML.load(File.read('collection.yaml.result'))
98
- end
99
- end
100
- end
@@ -1,98 +0,0 @@
1
- require_relative '../spec_helper'
2
- require_relative '../../lib/bioinform/data_models/collection'
3
-
4
- module Bioinform
5
- describe Collection do
6
- before :each do
7
- @collection = Collection.new(name: 'Main collection')
8
- @pm_1 = Fabricate(:pm_1)
9
- @pm_2 = Fabricate(:pm_2)
10
- @pm_3 = Fabricate(:pm_3)
11
- end
12
- describe '#size' do
13
- it 'should return size of collection' do
14
- @collection << @pm_1 << @pm_2 << @pm_3
15
- @collection.size.should == 3
16
- end
17
- end
18
- describe '#<<' do
19
- it 'should add element to collection' do
20
- @collection << @pm_1
21
- @collection << @pm_2
22
- @collection << @pm_3
23
- @collection.should include(Motif.new(pm: @pm_1), Motif.new(pm: @pm_2), Motif.new(pm: @pm_3))
24
- end
25
- it 'should be chainable' do
26
- @collection << @pm_1 << @pm_2 << @pm_3
27
- @collection.should include(Motif.new(pm: @pm_1), Motif.new(pm: @pm_2), Motif.new(pm: @pm_3))
28
- end
29
- # it 'should mark motif with name' do
30
- # @collection << @pm_1 << @pm_2
31
- # @pm_1.should be_tagged('Main collection')
32
- # @pm_2.should be_tagged('Main collection')
33
- # end
34
- # it 'should mark motif with self' do
35
- # @collection << @pm_1 << @pm_2
36
- # @pm_1.should be_tagged(@collection)
37
- # @pm_2.should be_tagged(@collection)
38
- # end
39
- end
40
-
41
- describe '#each' do
42
- before :each do
43
- @collection << @pm_1 << @pm_2 << @pm_3
44
- end
45
- context 'with block given' do
46
- it 'should yield Motifs' do
47
- expect{|b| @collection.each(&b)}.to yield_successive_args(Motif,Motif,Motif)
48
- end
49
- end
50
- context 'with block given' do
51
- it 'return an Enumerator' do
52
- @collection.each.should be_kind_of(Enumerator)
53
- end
54
- end
55
- end
56
-
57
- describe '#each(:pcm)' do
58
- before :each do
59
- @collection << @pm_1.as_pcm << @pm_2 << @pm_3.as_pcm
60
- end
61
- context 'with block given' do
62
- it 'should yield elements of collecton converted to pcm' do
63
- expect{|b| @collection.each(:pcm, &b)}.to yield_successive_args(PCM, nil, PCM)
64
- end
65
- end
66
- context 'with block given' do
67
- it 'return an Enumerator' do
68
- @collection.each(:pcm).should be_kind_of(Enumerator)
69
- end
70
- end
71
- end
72
-
73
- describe '#+' do
74
- before :each do
75
- @collection << @pm_1 << @pm_2 << @pm_3
76
- @pm_sec_1 = Fabricate(:pm_4)
77
- @pm_sec_2 = Fabricate(:pm_5)
78
- @secondary_collection = Collection.new(name: 'Secondary collection')
79
- @secondary_collection << @pm_sec_1 << @pm_sec_2
80
- @summary_collection = @collection + @secondary_collection
81
- end
82
- it 'should create a collection consisting of all elements of both collections' do
83
- @summary_collection.should be_kind_of(Collection)
84
- @summary_collection.size.should == (@collection.size + @secondary_collection.size)
85
- @summary_collection.should include(Motif.new(pm: @pm_1), Motif.new(pm: @pm_2), Motif.new(pm: @pm_3),
86
- Motif.new(pm: @pm_sec_1), Motif.new(pm: @pm_sec_2))
87
- end
88
- # it 'should leave marks on motifs' do
89
- # @pm_1.should be_tagged('Main collection')
90
- # @pm_sec_1.should be_tagged('Secondary collection')
91
- # end
92
- # it 'should not mix marks of motifs in different collections' do
93
- # @pm_1.should_not be_tagged('Secondary collection')
94
- # @pm_sec_1.should_not be_tagged('Main collection')
95
- # end
96
- end
97
- end
98
- end
@@ -1,224 +0,0 @@
1
- require_relative '../../lib/bioinform/data_models/motif'
2
-
3
- shared_examples 'when pm is PM' do
4
- context 'when pm-value is a PCM' do
5
- let(:pm) { Fabricate(:pcm) }
6
- it 'sets pcm-attribute to specified PM' do
7
- subject.pcm.should == Fabricate(:pcm)
8
- end
9
- end
10
- context 'when pm-value is a PWM' do
11
- let(:pm) { Fabricate(:pwm) }
12
- it 'sets pwm-attribute to specified PM' do
13
- subject.pwm.should == Fabricate(:pwm)
14
- end
15
- end
16
- context 'when pm-value is a PPM' do
17
- let(:pm) { Fabricate(:ppm) }
18
- it 'sets ppm-attribute to specified PM' do
19
- subject.ppm.should == Fabricate(:ppm)
20
- end
21
- end
22
- context 'when pm-value is a PM' do
23
- let(:pm) { Fabricate(:pm) }
24
- it 'sets only parameter pm attribute to specified PM' do
25
- subject.parameters.pm.should == Fabricate(:pm)
26
- subject.pcm.should be_nil
27
- subject.pwm.should be_nil
28
- subject.ppm.should be_nil
29
- end
30
- end
31
- end
32
-
33
-
34
- module Bioinform
35
- describe Motif do
36
- describe '.new' do
37
- it 'accepts empty argument list' do
38
- expect{ described_class.new }.to_not raise_error
39
- end
40
-
41
- context 'when argument is a Hash' do
42
- subject{ described_class.new(hash) }
43
- context 'which contains usual symbolic parameters' do
44
- let(:hash){ {:a => 123, :key => 'value', :threshold => {0.1 => 15} } }
45
- it 'sets its content as parameters' do
46
- subject.parameters.a.should == 123
47
- subject.parameters.key.should == 'value'
48
- subject.parameters.threshold.should == {0.1 => 15}
49
- end
50
- end
51
- context 'which contains any combination of :pwm, :pcm and :ppm keys' do
52
- let(:hash) { {pcm: 'my_pcm', ppm: 'my_ppm'} }
53
- it 'sets corresponding attributes to specified values' do
54
- subject.pcm.should == 'my_pcm'
55
- subject.ppm.should == 'my_ppm'
56
- end
57
- end
58
- end
59
-
60
- context 'when argument is a Hash with pm-key' do
61
- subject{ described_class.new(pm: pm) }
62
-
63
- include_examples 'when pm is PM'
64
-
65
- context 'when pm-value is a usual object' do
66
- let(:pm) { 'stub pm' }
67
- it 'sets only parameter pm attribute to specified value' do
68
- subject.parameters.pm.should == 'stub pm'
69
- subject.pcm.should be_nil
70
- subject.pwm.should be_nil
71
- subject.ppm.should be_nil
72
- end
73
- end
74
- end
75
- context 'when argument is neither PM nor Hash' do
76
- it 'raises ArgumentError' do
77
- expect{ described_class.new('stub pm') }.to raise_error(ArgumentError)
78
- end
79
- end
80
- end
81
-
82
- ########################################################
83
- describe '#pcm' do
84
- subject { motif.pcm }
85
- context 'when pcm is set' do
86
- context 'when pwm and ppm aren\'t setted' do
87
- let(:motif) { Fabricate(:motif_pcm) }
88
- it 'returns setted pcm' do
89
- subject.should == Fabricate(:pcm)
90
- end
91
- end
92
- context 'when ppm also setted' do
93
- let(:motif) { Fabricate(:motif_pcm_and_ppm) }
94
- it 'returns setted pcm' do
95
- subject.should == Fabricate(:pcm)
96
- end
97
- end
98
- context 'when pwm also setted' do
99
- let(:motif) { Fabricate(:motif_pcm_and_pwm) }
100
- it 'returns setted pcm' do
101
- subject.should == Fabricate(:pcm)
102
- end
103
- end
104
- end
105
-
106
- context 'when pcm isn\'t set' do
107
- context 'when nothing set' do
108
- let(:motif) { Fabricate(:motif) }
109
- it 'returns nil' do
110
- subject.should be_nil
111
- end
112
- end
113
- context 'when pwm setted' do
114
- let(:motif) { Fabricate(:motif_pwm) }
115
- it 'returns nil' do
116
- subject.should be_nil
117
- end
118
- end
119
- context 'when ppm setted' do
120
- let(:motif) { Fabricate(:motif_ppm) }
121
- it 'returns nil' do
122
- subject.should be_nil
123
- end
124
- end
125
- end
126
- end
127
- ############################################
128
- describe '#pwm' do
129
- subject { motif.pwm }
130
- context 'when pwm is set' do
131
- context 'when pcm and ppm aren\'t setted' do
132
- let(:motif) { Fabricate(:motif_pwm) }
133
- it 'returns setted pwm' do
134
- subject.should == Fabricate(:pwm)
135
- end
136
- end
137
- context 'when ppm also setted' do
138
- let(:motif) { Fabricate(:motif_pwm_and_ppm) }
139
- it 'returns setted pwm' do
140
- subject.should == Fabricate(:pwm)
141
- end
142
- end
143
- context 'when pcm also setted' do
144
- let(:motif) { Fabricate(:motif_pcm_and_pwm) }
145
- it 'returns setted pwm' do
146
- subject.should == Fabricate(:pwm)
147
- end
148
- end
149
- end
150
-
151
- context 'when pwm isn\'t set' do
152
- context 'when nothing set' do
153
- let(:motif) { Fabricate(:motif) }
154
- it 'returns nil' do
155
- subject.should be_nil
156
- end
157
- end
158
- context 'when pcm setted' do
159
- let(:motif) { Fabricate(:motif_pcm) }
160
- it 'returns pcm converted to pwm' do
161
- subject.should == Fabricate(:pwm_by_pcm)
162
- end
163
- end
164
- context 'when ppm setted' do
165
- let(:motif) { Fabricate(:motif_ppm) }
166
- it 'returns nil' do
167
- subject.should be_nil
168
- end
169
- end
170
- end
171
- end
172
-
173
- ############################################
174
- describe '#ppm' do
175
- subject { motif.ppm }
176
- context 'when ppm is set' do
177
- context 'when pcm and pwm aren\'t setted' do
178
- let(:motif) { Fabricate(:motif_ppm) }
179
- it 'returns setted ppm' do
180
- subject.should == Fabricate(:ppm)
181
- end
182
- end
183
- context 'when pcm also setted' do
184
- let(:motif) { Fabricate(:motif_pcm_and_ppm) }
185
- it 'returns setted ppm' do
186
- subject.should == Fabricate(:ppm)
187
- end
188
- end
189
- context 'when pwm also setted' do
190
- let(:motif) { Fabricate(:motif_pwm_and_ppm) }
191
- it 'returns setted ppm' do
192
- subject.should == Fabricate(:ppm)
193
- end
194
- end
195
- end
196
-
197
- context 'when ppm isn\'t set' do
198
- context 'when nothing set' do
199
- let(:motif) { Fabricate(:motif) }
200
- it 'returns nil' do
201
- subject.should be_nil
202
- end
203
- end
204
- context 'when pcm setted' do
205
- let(:motif) { Fabricate(:motif_pcm) }
206
- it 'returns pcm converted to ppm' do
207
- subject.should == Fabricate(:ppm_by_pcm)
208
- end
209
- end
210
- context 'when pwm setted' do
211
- let(:motif) { Fabricate(:motif_pwm) }
212
- it 'returns nil' do
213
- subject.should be_nil
214
- end
215
- end
216
- end
217
- end
218
-
219
-
220
-
221
-
222
-
223
- end
224
- end