bioinform 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO.txt +7 -2
- data/bin/merge_into_collection +4 -0
- data/bin/pcm2pwm +1 -1
- data/bin/split_motifs +1 -1
- data/bioinform.gemspec +2 -0
- data/lib/bioinform/cli/merge_into_collection.rb +76 -0
- data/lib/bioinform/cli/pcm2pwm.rb +20 -20
- data/lib/bioinform/cli/split_motifs.rb +21 -20
- data/lib/bioinform/cli.rb +16 -2
- data/lib/bioinform/data_models/collection.rb +13 -10
- data/lib/bioinform/data_models/pcm.rb +2 -2
- data/lib/bioinform/data_models/pm.rb +24 -37
- data/lib/bioinform/data_models/ppm.rb +2 -2
- data/lib/bioinform/data_models/pwm.rb +2 -2
- data/lib/bioinform/data_models.rb +8 -8
- data/lib/bioinform/parsers/parser.rb +10 -5
- data/lib/bioinform/parsers/splittable_parser.rb +57 -0
- data/lib/bioinform/parsers/string_fantom_parser.rb +3 -3
- data/lib/bioinform/parsers/string_parser.rb +5 -24
- data/lib/bioinform/parsers/trivial_parser.rb +19 -3
- data/lib/bioinform/parsers/yaml_parser.rb +35 -0
- data/lib/bioinform/parsers.rb +6 -4
- data/lib/bioinform/support/parameters.rb +19 -0
- data/lib/bioinform/support/partial_sums.rb +1 -1
- data/lib/bioinform/support.rb +11 -10
- data/lib/bioinform/version.rb +1 -1
- data/lib/bioinform.rb +5 -5
- data/spec/cli/cli_spec.rb +8 -7
- data/spec/cli/data/merge_into_collection/GABPA_f1.pwm +14 -0
- data/spec/cli/data/{KLF4_f2.pwm.result → merge_into_collection/KLF4_f2.pwm} +0 -0
- data/spec/cli/data/{SP1_f1.pwm.result → merge_into_collection/SP1_f1.pwm} +0 -0
- data/spec/cli/data/merge_into_collection/collection.txt.result +40 -0
- data/spec/cli/data/merge_into_collection/collection.yaml.result +185 -0
- data/spec/cli/data/merge_into_collection/collection_pwm.yaml.result +185 -0
- data/spec/cli/data/merge_into_collection/pwm_folder/GABPA_f1.pwm +14 -0
- data/spec/cli/data/merge_into_collection/pwm_folder/KLF4_f2.pwm +11 -0
- data/spec/cli/data/merge_into_collection/pwm_folder/SP1_f1.pwm +12 -0
- data/spec/cli/data/{KLF4 f2 spaced name.pcm → pcm2pwm/KLF4 f2 spaced name.pcm} +0 -0
- data/spec/cli/data/{KLF4_f2.pcm → pcm2pwm/KLF4_f2.pcm} +0 -0
- data/spec/cli/data/pcm2pwm/KLF4_f2.pwm.result +11 -0
- data/spec/cli/data/{SP1_f1.pcm → pcm2pwm/SP1_f1.pcm} +0 -0
- data/spec/cli/data/pcm2pwm/SP1_f1.pwm.result +12 -0
- data/spec/cli/data/split_motifs/GABPA_f1.mat.result +14 -0
- data/spec/cli/data/split_motifs/KLF4_f2.mat.result +11 -0
- data/spec/cli/data/split_motifs/SP1_f1.mat.result +12 -0
- data/spec/cli/data/split_motifs/collection.yaml +197 -0
- data/spec/cli/data/split_motifs/plain_collection.txt +38 -0
- data/spec/cli/merge_into_collection_spec.rb +100 -0
- data/spec/cli/pcm2pwm_spec.rb +3 -3
- data/spec/cli/split_motifs_spec.rb +74 -3
- data/spec/data_models/collection_spec.rb +2 -2
- data/spec/data_models/pcm_spec.rb +2 -2
- data/spec/data_models/pm_spec.rb +10 -27
- data/spec/data_models/ppm_spec.rb +2 -2
- data/spec/data_models/pwm_spec.rb +3 -3
- data/spec/fabricators/collection_fabricator.rb +8 -0
- data/spec/fabricators/pm_fabricator.rb +43 -0
- data/spec/parsers/parser_spec.rb +29 -37
- data/spec/parsers/string_fantom_parser_spec.rb +38 -35
- data/spec/parsers/string_parser_spec.rb +33 -66
- data/spec/parsers/trivial_parser_spec.rb +48 -6
- data/spec/parsers/yaml_parser_spec.rb +50 -0
- data/spec/spec_helper.rb +2 -6
- data/spec/support/advanced_scan_spec.rb +2 -2
- data/spec/support/array_product_spec.rb +2 -2
- data/spec/support/array_zip_spec.rb +2 -2
- data/spec/support/collect_hash_spec.rb +2 -2
- data/spec/support/delete_many_spec.rb +2 -2
- data/spec/support/inverf_spec.rb +2 -2
- data/spec/support/multiline_squish_spec.rb +2 -2
- data/spec/support/partial_sums_spec.rb +2 -2
- data/spec/support/same_by_spec.rb +2 -2
- metadata +86 -12
@@ -0,0 +1,12 @@
|
|
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
|
@@ -0,0 +1,14 @@
|
|
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
|
@@ -0,0 +1,11 @@
|
|
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
|
@@ -0,0 +1,12 @@
|
|
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
|
@@ -0,0 +1,197 @@
|
|
1
|
+
--- &14005248 !ruby/object:Bioinform::Collection
|
2
|
+
collection:
|
3
|
+
- - !ruby/object:Bioinform::PWM
|
4
|
+
parameters: !ruby/object:OpenStruct
|
5
|
+
table:
|
6
|
+
:name: GABPA_f1
|
7
|
+
:tags:
|
8
|
+
- *14005248
|
9
|
+
:background: &14005452
|
10
|
+
- 1
|
11
|
+
- 1
|
12
|
+
- 1
|
13
|
+
- 1
|
14
|
+
:max_hash_size: 1000000
|
15
|
+
modifiable: true
|
16
|
+
matrix:
|
17
|
+
- - -0.1106670158341858
|
18
|
+
- 0.013801606113892391
|
19
|
+
- 0.6054596108973699
|
20
|
+
- -1.3518085041421573
|
21
|
+
- - 0.37030668921643345
|
22
|
+
- 0.15761121480429963
|
23
|
+
- 0.009069314183831202
|
24
|
+
- -0.9888619717703562
|
25
|
+
- - 0.47526546359546684
|
26
|
+
- -0.3011678534572083
|
27
|
+
- 0.4031522994412777
|
28
|
+
- -1.8638752827041059
|
29
|
+
- - -1.5544255540164373
|
30
|
+
- 1.1082369687811506
|
31
|
+
- -0.2814091552834454
|
32
|
+
- -5.30708531823271
|
33
|
+
- - -0.6362037835776368
|
34
|
+
- 1.235338189985594
|
35
|
+
- -3.5801322928552253
|
36
|
+
- -5.717323067092849
|
37
|
+
- - -5.852906870733575
|
38
|
+
- -5.852906870733575
|
39
|
+
- 1.3841383838057746
|
40
|
+
- -5.852906870733575
|
41
|
+
- - -5.852906870733575
|
42
|
+
- -5.852906870733575
|
43
|
+
- 1.3841383838057746
|
44
|
+
- -5.852906870733575
|
45
|
+
- - 1.3835219739184708
|
46
|
+
- -5.2341956006430985
|
47
|
+
- -5.852906870733575
|
48
|
+
- -5.852906870733575
|
49
|
+
- - 1.3756340514956562
|
50
|
+
- -5.394962755562375
|
51
|
+
- -5.394962755562375
|
52
|
+
- -3.401117964959733
|
53
|
+
- - -1.2176198315414444
|
54
|
+
- -3.109079898175411
|
55
|
+
- 1.2964067931472216
|
56
|
+
- -5.717323067092849
|
57
|
+
- - -1.3716559438167257
|
58
|
+
- -0.2761401935045069
|
59
|
+
- -1.8504445165866068
|
60
|
+
- 1.0404320473626856
|
61
|
+
- - -0.5440863133031895
|
62
|
+
- -0.48103682561971345
|
63
|
+
- 0.907381908447086
|
64
|
+
- -1.1280642594012078
|
65
|
+
- - 0.10557340209290218
|
66
|
+
- -0.01814819455289191
|
67
|
+
- 0.4381106695354074
|
68
|
+
- -1.0304105539540915
|
69
|
+
- !ruby/object:OpenStruct
|
70
|
+
table:
|
71
|
+
:rough:
|
72
|
+
0.0005: 12.1
|
73
|
+
:precise:
|
74
|
+
0.0005: 4.51
|
75
|
+
- - !ruby/object:Bioinform::PWM
|
76
|
+
parameters: !ruby/object:OpenStruct
|
77
|
+
table:
|
78
|
+
:name: KLF4_f2
|
79
|
+
:tags:
|
80
|
+
- *14005248
|
81
|
+
:background: *14005452
|
82
|
+
:max_hash_size: 1000000
|
83
|
+
modifiable: true
|
84
|
+
matrix:
|
85
|
+
- - 0.30861857265872605
|
86
|
+
- -2.254321000121579
|
87
|
+
- 0.13505703522674192
|
88
|
+
- 0.3285194224375633
|
89
|
+
- - -1.227018967707036
|
90
|
+
- -4.814127713368663
|
91
|
+
- 1.3059890687390967
|
92
|
+
- -4.908681463544344
|
93
|
+
- - -2.443469374521196
|
94
|
+
- -4.648238485031404
|
95
|
+
- 1.3588686548279805
|
96
|
+
- -4.441801801188402
|
97
|
+
- - -2.7177827948276123
|
98
|
+
- -3.8073538975356565
|
99
|
+
- 1.356272809724262
|
100
|
+
- -3.504104725510225
|
101
|
+
- - -0.5563232977367343
|
102
|
+
- 0.5340697765121405
|
103
|
+
- -3.61417723090579
|
104
|
+
- 0.5270259776377405
|
105
|
+
- - -1.8687622060887386
|
106
|
+
- -4.381483976582316
|
107
|
+
- 1.337932245336098
|
108
|
+
- -3.815629658877517
|
109
|
+
- - -2.045671123823928
|
110
|
+
- -2.384975142213679
|
111
|
+
- 0.7198551207724355
|
112
|
+
- 0.5449254135616948
|
113
|
+
- - -1.373157530374372
|
114
|
+
- -3.0063112097748217
|
115
|
+
- 1.285188335493552
|
116
|
+
- -2.5026044231773543
|
117
|
+
- - -2.1030513122772208
|
118
|
+
- -1.8941348100402244
|
119
|
+
- 1.249265758393991
|
120
|
+
- -1.4284210948906104
|
121
|
+
- - -1.3277128628152939
|
122
|
+
- 0.8982415633049462
|
123
|
+
- -0.8080773665408135
|
124
|
+
- -0.18161647647456935
|
125
|
+
- !ruby/object:OpenStruct
|
126
|
+
table:
|
127
|
+
:rough:
|
128
|
+
0.0005: 11.1
|
129
|
+
:precise:
|
130
|
+
0.0005: 5.8100000000000005
|
131
|
+
- - !ruby/object:Bioinform::PWM
|
132
|
+
parameters: !ruby/object:OpenStruct
|
133
|
+
table:
|
134
|
+
:name: SP1_f1
|
135
|
+
:tags:
|
136
|
+
- *14005248
|
137
|
+
:background: *14005452
|
138
|
+
:max_hash_size: 1000000
|
139
|
+
modifiable: true
|
140
|
+
matrix:
|
141
|
+
- - -0.24435707885585292
|
142
|
+
- -0.674823404693731
|
143
|
+
- 0.8657012535789866
|
144
|
+
- -1.1060188862599287
|
145
|
+
- - -1.0631255752097797
|
146
|
+
- -2.111925969423868
|
147
|
+
- 1.0960627561110403
|
148
|
+
- -0.6138563775211977
|
149
|
+
- - -0.3872276234760535
|
150
|
+
- -2.9739851913218045
|
151
|
+
- 1.1807800242010378
|
152
|
+
- -4.338927525031566
|
153
|
+
- - -4.563896055436894
|
154
|
+
- -2.9161633002532277
|
155
|
+
- 1.3684371349982638
|
156
|
+
- -5.077972423609655
|
157
|
+
- - -2.2369752892820083
|
158
|
+
- -3.7196436313301846
|
159
|
+
- 1.3510439136452734
|
160
|
+
- -4.889930670508233
|
161
|
+
- - -0.07473964149330865
|
162
|
+
- 0.944919654762011
|
163
|
+
- -2.6246857648086044
|
164
|
+
- -0.8510983487822436
|
165
|
+
- - -1.9643526491643322
|
166
|
+
- -2.978402770880115
|
167
|
+
- 1.3113096718240573
|
168
|
+
- -2.324334259499025
|
169
|
+
- - -4.0155484139655835
|
170
|
+
- -3.1384268078096667
|
171
|
+
- 1.3387488589788057
|
172
|
+
- -2.084673903537648
|
173
|
+
- - -0.44509385828355363
|
174
|
+
- -2.2510053061629702
|
175
|
+
- 1.1265431574368685
|
176
|
+
- -1.7780413702431372
|
177
|
+
- - -1.1896356092245048
|
178
|
+
- -1.2251832285630027
|
179
|
+
- 1.1636760063747527
|
180
|
+
- -1.6080243648157353
|
181
|
+
- - -0.5166047365590571
|
182
|
+
- 0.7641033353626657
|
183
|
+
- -0.2862677570028208
|
184
|
+
- -0.68254820978656
|
185
|
+
- !ruby/object:OpenStruct
|
186
|
+
table:
|
187
|
+
:rough:
|
188
|
+
0.0005: 11.1
|
189
|
+
:precise:
|
190
|
+
0.0005: 5.61
|
191
|
+
parameters: !ruby/object:OpenStruct
|
192
|
+
table:
|
193
|
+
:rough_discretization: 1
|
194
|
+
:precise_discretization: 10
|
195
|
+
:background: *14005452
|
196
|
+
:pvalues:
|
197
|
+
- 0.0005
|
@@ -0,0 +1,38 @@
|
|
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
|
13
|
+
|
14
|
+
KLF4_f2
|
15
|
+
0.30861857265872605 -2.254321000121579 0.13505703522674192 0.3285194224375633
|
16
|
+
-1.227018967707036 -4.814127713368663 1.3059890687390967 -4.908681463544344
|
17
|
+
-2.443469374521196 -4.648238485031404 1.3588686548279805 -4.441801801188402
|
18
|
+
-2.7177827948276123 -3.8073538975356565 1.356272809724262 -3.504104725510225
|
19
|
+
-0.5563232977367343 0.5340697765121405 -3.61417723090579 0.5270259776377405
|
20
|
+
-1.8687622060887386 -4.381483976582316 1.337932245336098 -3.815629658877517
|
21
|
+
-2.045671123823928 -2.384975142213679 0.7198551207724355 0.5449254135616948
|
22
|
+
-1.373157530374372 -3.0063112097748217 1.285188335493552 -2.5026044231773543
|
23
|
+
-2.1030513122772208 -1.8941348100402244 1.249265758393991 -1.4284210948906104
|
24
|
+
-1.3277128628152939 0.8982415633049462 -0.8080773665408135 -0.18161647647456935
|
25
|
+
GABPA_f1
|
26
|
+
-0.1106670158341858 0.013801606113892391 0.6054596108973699 -1.3518085041421573
|
27
|
+
0.37030668921643345 0.15761121480429963 0.009069314183831202 -0.9888619717703562
|
28
|
+
0.47526546359546684 -0.3011678534572083 0.4031522994412777 -1.8638752827041059
|
29
|
+
-1.5544255540164373 1.1082369687811506 -0.2814091552834454 -5.30708531823271
|
30
|
+
-0.6362037835776368 1.235338189985594 -3.5801322928552253 -5.717323067092849
|
31
|
+
-5.852906870733575 -5.852906870733575 1.3841383838057746 -5.852906870733575
|
32
|
+
-5.852906870733575 -5.852906870733575 1.3841383838057746 -5.852906870733575
|
33
|
+
1.3835219739184708 -5.2341956006430985 -5.852906870733575 -5.852906870733575
|
34
|
+
1.3756340514956562 -5.394962755562375 -5.394962755562375 -3.401117964959733
|
35
|
+
-1.2176198315414444 -3.109079898175411 1.2964067931472216 -5.717323067092849
|
36
|
+
-1.3716559438167257 -0.2761401935045069 -1.8504445165866068 1.0404320473626856
|
37
|
+
-0.5440863133031895 -0.48103682561971345 0.907381908447086 -1.1280642594012078
|
38
|
+
0.10557340209290218 -0.01814819455289191 0.4381106695354074 -1.0304105539540915
|
@@ -0,0 +1,100 @@
|
|
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
|
data/spec/cli/pcm2pwm_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'spec_helper'
|
2
1
|
require 'shellwords'
|
3
|
-
|
2
|
+
require_relative '../spec_helper'
|
3
|
+
require_relative '../../lib/bioinform/cli/pcm2pwm'
|
4
4
|
|
5
5
|
|
6
6
|
def run_pcm2pwm(cmd)
|
@@ -10,7 +10,7 @@ end
|
|
10
10
|
describe Bioinform::CLI::PCM2PWM do
|
11
11
|
before :each do
|
12
12
|
@start_dir = Dir.pwd
|
13
|
-
Dir.chdir File.join(File.dirname(__FILE__), 'data')
|
13
|
+
Dir.chdir File.join(File.dirname(__FILE__), 'data', 'pcm2pwm')
|
14
14
|
end
|
15
15
|
after :each do
|
16
16
|
File.delete('KLF4_f2.pwm') if File.exist?('KLF4_f2.pwm')
|
@@ -1,6 +1,77 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/bioinform/cli/split_motifs'
|
3
3
|
|
4
|
-
|
4
|
+
def run_split_motifs(cmd)
|
5
|
+
Bioinform::CLI::SplitMotifs.main(cmd.shellsplit)
|
6
|
+
end
|
5
7
|
|
8
|
+
describe Bioinform::CLI::SplitMotifs do
|
9
|
+
before :each do
|
10
|
+
@start_dir = Dir.pwd
|
11
|
+
@motifs_in_collection = %w[KLF4_f2 SP1_f1 GABPA_f1]
|
12
|
+
Dir.chdir File.join(File.dirname(__FILE__), 'data', 'split_motifs')
|
13
|
+
end
|
14
|
+
after :each do
|
15
|
+
@motifs_in_collection.each do |motif_name|
|
16
|
+
File.delete("#{motif_name}.mat") if File.exist?("#{motif_name}.mat")
|
17
|
+
File.delete("#{motif_name}.pwm") if File.exist?("#{motif_name}.pwm")
|
18
|
+
File.delete("#{motif_name}.pat") if File.exist?("#{motif_name}.pat")
|
19
|
+
end
|
20
|
+
FileUtils.rm_rf('result_folder') if Dir.exist?('result_folder')
|
21
|
+
Dir.chdir(@start_dir)
|
22
|
+
end
|
23
|
+
it 'splits plain text into separate files' do
|
24
|
+
run_split_motifs('plain_collection.txt')
|
25
|
+
@motifs_in_collection.each do |motif_name|
|
26
|
+
File.exist?("#{motif_name}.mat").should be_true
|
27
|
+
File.read("#{motif_name}.mat") == File.read("#{motif_name}.mat.result")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
it 'create files with specified extension' do
|
31
|
+
run_split_motifs('plain_collection.txt -e pwm')
|
32
|
+
@motifs_in_collection.each do |motif_name|
|
33
|
+
File.exist?("#{motif_name}.pwm").should be_true
|
34
|
+
File.read("#{motif_name}.pwm") == File.read("#{motif_name}.mat.result")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when specified folder exist' do
|
39
|
+
before :each do
|
40
|
+
Dir.mkdir('result_folder') unless Dir.exist?('result_folder')
|
41
|
+
end
|
42
|
+
it 'create files in specified folder' do
|
43
|
+
run_split_motifs('plain_collection.txt -f result_folder')
|
44
|
+
@motifs_in_collection.each do |motif_name|
|
45
|
+
File.exist?(File.join('result_folder', "#{motif_name}.mat")).should be_true
|
46
|
+
File.read(File.join('result_folder', "#{motif_name}.mat")) == File.read("#{motif_name}.mat.result")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
context 'when specified folder not exist' do
|
51
|
+
before :each do
|
52
|
+
FileUtils.rm_rf('result_folder') if Dir.exist?('result_folder')
|
53
|
+
end
|
54
|
+
it 'create files in specified folder' do
|
55
|
+
run_split_motifs('plain_collection.txt -f result_folder')
|
56
|
+
@motifs_in_collection.each do |motif_name|
|
57
|
+
File.exist?(File.join('result_folder', "#{motif_name}.mat")).should be_true
|
58
|
+
File.read(File.join('result_folder', "#{motif_name}.mat")) == File.read("#{motif_name}.mat.result")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'splits motifs from Collections (yamled Bioinform::Collection instances) with appropriate extension' do
|
64
|
+
run_split_motifs('collection.yaml')
|
65
|
+
@motifs_in_collection.each do |motif_name|
|
66
|
+
File.exist?("#{motif_name}.pwm").should be_true
|
67
|
+
File.read("#{motif_name}.pwm") == File.read("#{motif_name}.mat.result")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
it 'splits motifs from Collections with specified extension' do
|
71
|
+
run_split_motifs('collection.yaml -e pat')
|
72
|
+
@motifs_in_collection.each do |motif_name|
|
73
|
+
File.exist?("#{motif_name}.pat").should be_true
|
74
|
+
File.read("#{motif_name}.pat") == File.read("#{motif_name}.mat.result")
|
75
|
+
end
|
76
|
+
end
|
6
77
|
end
|
data/spec/data_models/pm_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/bioinform/data_models/pm'
|
3
3
|
|
4
4
|
module Bioinform
|
5
5
|
describe PM do
|
@@ -8,7 +8,7 @@ module Bioinform
|
|
8
8
|
before :each do
|
9
9
|
@collection = Collection.new(name: 'Collection 1')
|
10
10
|
@matrix = [[1,2,3,4],[5,6,7,8]]
|
11
|
-
@name = '
|
11
|
+
@name = 'PM_motif'
|
12
12
|
@background = [0.2,0.3,0.3,0.2]
|
13
13
|
@tags = [@collection, 'Collection 2']
|
14
14
|
@pm = PM.new(matrix: @matrix, name: @name, background: @background, tags: @tags)
|
@@ -25,7 +25,7 @@ module Bioinform
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
describe '#tagged?' do
|
30
30
|
context 'when PM marked with Collection object' do
|
31
31
|
context 'without collection-name' do
|
@@ -115,7 +115,7 @@ module Bioinform
|
|
115
115
|
pm_eq = PM.new(matrix: [[1,2,3,4],[5,6,7,8]], name: 'First motif')
|
116
116
|
pm_neq_matrix = PM.new(matrix: [[1,2,3,4],[15,16,17,18]], name: 'First motif')
|
117
117
|
pm_neq_name = PM.new(matrix: [[1,2,3,4],[5,6,7,8]], name: 'Second motif')
|
118
|
-
pm_neq_background = PM.new(matrix: [[1,2,3,4],[5,6,7,8]], name: 'First motif').background
|
118
|
+
pm_neq_background = PM.new(matrix: [[1,2,3,4],[5,6,7,8]], name: 'First motif').set_parameters(background: [1,2,2,1])
|
119
119
|
|
120
120
|
pm.should_not == pm_neq_matrix
|
121
121
|
pm.should_not == pm_neq_name
|
@@ -240,26 +240,9 @@ module Bioinform
|
|
240
240
|
before :each do
|
241
241
|
@pm = PM.new( [[1,2,3,4],[1,4,5,6.5]] )
|
242
242
|
end
|
243
|
-
context 'when
|
244
|
-
|
245
|
-
|
246
|
-
@pm.background.should == [1,1,1,1]
|
247
|
-
end
|
248
|
-
end
|
249
|
-
it 'should return background' do
|
250
|
-
@pm.background = [0.2, 0.3, 0.3, 0.2]
|
251
|
-
@pm.background.should == [0.2, 0.3, 0.3, 0.2]
|
252
|
-
end
|
253
|
-
end
|
254
|
-
context 'when one argument passed' do
|
255
|
-
it 'should set background' do
|
256
|
-
@pm.background([0.2,0.3,0.3,0.2])
|
257
|
-
@pm.background.should == [0.2, 0.3, 0.3, 0.2]
|
258
|
-
end
|
259
|
-
end
|
260
|
-
context 'when more than one argument passed' do
|
261
|
-
it 'should raise an ArgumentError' do
|
262
|
-
expect { @pm.background(:first, :second) }.to raise_error ArgumentError
|
243
|
+
context 'when pm just created' do
|
244
|
+
it 'should be [1,1,1,1]' do
|
245
|
+
@pm.background.should == [1,1,1,1]
|
263
246
|
end
|
264
247
|
end
|
265
248
|
end
|
@@ -335,10 +318,10 @@ module Bioinform
|
|
335
318
|
end
|
336
319
|
context 'when background is normalized probabilities' do
|
337
320
|
it 'should be 1.0' do
|
338
|
-
@pm_2_positions.background
|
321
|
+
@pm_2_positions.background = [0.2, 0.3, 0.3, 0.2]
|
339
322
|
@pm_2_positions.vocabulary_volume.should == 1.0
|
340
323
|
|
341
|
-
@pm_3_positions.background
|
324
|
+
@pm_3_positions.background = [0.2, 0.3, 0.3, 0.2]
|
342
325
|
@pm_3_positions.vocabulary_volume.should == 1.0
|
343
326
|
end
|
344
327
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/bioinform/data_models/pwm'
|
3
3
|
|
4
4
|
module Bioinform
|
5
5
|
describe PWM do
|
@@ -9,7 +9,7 @@ module Bioinform
|
|
9
9
|
pwm.score_mean.should == 1.5 + 6 + 2
|
10
10
|
end
|
11
11
|
it 'should be equal to a mean score of pwm by measure induced from background probability mean' do
|
12
|
-
pwm = PWM.new( [[1,2,1,2],[4,6,8,6],[2,2,2,2]] ).background
|
12
|
+
pwm = PWM.new( [[1,2,1,2],[4,6,8,6],[2,2,2,2]] ).set_parameters(background: [0.2, 0.3, 0.3, 0.2])
|
13
13
|
pwm.score_mean.should == ((0.2*1+0.3*2+0.3*1+0.2*2) + (0.2*4+0.3*6+0.3*8+0.2*6) + (0.2*2+0.3*2+0.3*2+0.2*2)) / (0.2+0.3+0.3+0.2)
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Fabricator(:pm_collection, from: Bioinform::Collection, aliases: [:two_elements_collection]) do
|
2
|
+
name 'PM_collection'
|
3
|
+
after_build{|collection| collection << Fabricate(:pm_first) << Fabricate(:pm_second) }
|
4
|
+
end
|
5
|
+
|
6
|
+
Fabricator(:unnamed_pm_collection, from: :pm_collection) do
|
7
|
+
name nil
|
8
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Fabricator(:pm, from: Bioinform::PM) do
|
2
|
+
initialize_with{ Bioinform::PM.new(matrix: [[1,2,3,4],[5,6,7,8]], name: 'PM_name') }
|
3
|
+
end
|
4
|
+
|
5
|
+
Fabricator(:pm_unnamed, from: :pm) do
|
6
|
+
name nil
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
Fabricator(:pm_first, from: :pm) do
|
11
|
+
name 'PM_first'
|
12
|
+
end
|
13
|
+
|
14
|
+
Fabricator(:pm_second, from: :pm) do
|
15
|
+
matrix [[15,16,17,18],[11,21,31,41]]
|
16
|
+
name 'PM_second'
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
Fabricator(:pm_4x4, from: :pm) do
|
21
|
+
matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
|
22
|
+
end
|
23
|
+
|
24
|
+
Fabricator(:pm_4x4_unnamed, from: :pm_4x4) do
|
25
|
+
name nil
|
26
|
+
end
|
27
|
+
|
28
|
+
Fabricator(:pm_with_floats, from: :pm_unnamed) do
|
29
|
+
matrix [[1.23, 4.56, 7.8, 9.0], [9, -8.7, 6.54, -3210]]
|
30
|
+
end
|
31
|
+
|
32
|
+
Fabricator(:pm_1, from: :pm) do
|
33
|
+
matrix [[0,1,2,3],[4,5,6,7]]
|
34
|
+
name 'motif_1'
|
35
|
+
end
|
36
|
+
Fabricator(:pm_2, from: :pm) do
|
37
|
+
matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
|
38
|
+
name 'motif_2'
|
39
|
+
end
|
40
|
+
Fabricator(:pm_3, from: :pm) do
|
41
|
+
matrix [[2,3,4,5],[6,7,8,9]]
|
42
|
+
name 'motif_3'
|
43
|
+
end
|