cell_cycle 0.0.2

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.
@@ -0,0 +1,270 @@
1
+ #! /usr/bin/ruby
2
+ # encoding: utf-8
3
+
4
+ require 'minitest/autorun'
5
+ require 'sy'
6
+ require 'y_nelson' and include YNelson
7
+
8
+ bp = './../../lib/'
9
+ .tap { |s| s.singleton_class.class_exec do attr_accessor :loaded end }
10
+ .tap { |s| s.loaded = {} }
11
+
12
+ require_once = -> path do
13
+ bp.loaded[ path ] or
14
+ require( bp + path ) && bp.loaded.update( path => true )
15
+ end
16
+
17
+ describe :mammalian_cell_cycle do
18
+ before do
19
+ require_once.( 'ttp_pathway/version' )
20
+ require_once.( 'michaelis_menten' )
21
+ require_once.( 'general_assumptions' )
22
+ require_once.( 'cell_cycle/virginia' )
23
+ end
24
+
25
+ describe "sanity of this test itself" do
26
+ it "should have version loaded" do
27
+ TtpPathway::VERSION.must_be_kind_of String
28
+ end
29
+
30
+ it "should have michaelis_menten loaded" do
31
+ [ Vmax, Km_reduced, Occupancy, MMi ].all? &[ :kind_of?, Proc ]
32
+ end
33
+
34
+ it "should have general_assumptions loaded" do
35
+ assert defined? Cell_diameter
36
+ assert defined? Cytoplasm_volume
37
+ assert defined? Pieces_per_µM
38
+ end
39
+ end
40
+
41
+ describe "basic elements" do
42
+ it "should have basic interface places" do
43
+ A_phase.must_be_kind_of Place
44
+ S_phase.must_be_kind_of Place
45
+ Cdc20A.must_be_kind_of Place
46
+ end
47
+
48
+ it "should have parametrizing constants CASE and G2_MODULE" do
49
+ assert defined? CASE
50
+ assert defined? G2_MODULE
51
+ end
52
+
53
+ it "should have Godlbeter-Koshland function defined" do
54
+ assert B.is_a? Proc # B function as per Csikasznagy2006agm
55
+ assert GK.is_a? Proc # Golbeter-Koshland function
56
+ end
57
+
58
+ it "should have growth and cell division related constants" do
59
+ assert defined? CELL_MASS_DOUBLING_TIME
60
+ assert defined? CELL_GROWTH_RATE
61
+ assert defined? CycB_DIVISION_THRESHOLD
62
+ end
63
+
64
+ it "should have DATA hash holding the generic cycle parameters for " +
65
+ "budding yeast (BY), mammalian cell (MA), fission yeast (FY), and " +
66
+ "Xenopus embryo (XE)" do
67
+ key, val = DATA.first
68
+ key.must_be_kind_of Symbol
69
+ val.must_be_kind_of Hash
70
+ val.keys.must_equal [ :BY, :MA, :FY, :G2, :XE ]
71
+ # Now we will make an example of a single parameter that must be present
72
+ # both as a key in the DATA hash, and as a constant in the TOP namespace.
73
+ DATA.keys.must_include :J20
74
+ assert defined? J20 # Must be also defined as a constant.
75
+ J20.must_equal DATA[ :J20 ][ :MA ] # It must be set to the mammalian parameter.
76
+ end
77
+ end
78
+
79
+ describe "Module 0 -- cell growth and division" do
80
+ describe "places" do
81
+ it "should have Mass (cell mass) place" do Mass.must_be_kind_of Place end
82
+ it "should have CycD (cyclin D) place" do CycD.must_be_kind_of Place end
83
+ end
84
+
85
+ describe "assignment transitions" do
86
+ describe "A transition controlling CycD" do
87
+ it "must exist" do
88
+ assert transition( :CycD_ϝ ).A? # it must exist and be an A transition
89
+ end
90
+
91
+ describe "its dynamic behavior" do
92
+ before do
93
+ @net = Net() << Mass << CycD << transition( :CycD_ϝ )
94
+ @sim = @net.simulation initial_marking: { Mass: 1.0 }
95
+ @feature = @net.State.Feature.Assignment( CycD )
96
+ end
97
+
98
+ it "must assign to CycD a value proportional to the cell mass" do
99
+ v1 = @feature.extract_from( @sim )
100
+ # construct a second simulation with double mass:
101
+ sim2 = @net.simulation initial_marking: { Mass: 2.0 }
102
+ v2 = @feature.extract_from( sim2 )
103
+ # with double mass, the action of CycD_ϝ should be double
104
+ v2.must_be_within_epsilon v1 * 2
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ describe "transitions" do
111
+ describe "Cell_growth" do
112
+ it "should be of correct type" do
113
+ assert Cell_growth.TS?
114
+ end
115
+
116
+ describe "its dynamic behavior" do
117
+ before do
118
+ @net = Net() << Mass << Cell_growth
119
+ @sim = @net.simulation initial_marking: { Mass: 1.0 }, step: 0.1
120
+ end
121
+
122
+ it "should define exponential growth" do
123
+ # Starting mass is 1. After 10 time units, the mas will be:
124
+ @sim.run! upto: 10
125
+ mass_after_10 = @sim.marking( :Mass ).first
126
+ # After 20 time units, the mass should be the square of it:
127
+ @sim.run! upto: 20
128
+ mass_after_20 = @sim.marking( :Mass ).first
129
+ mass_after_20.must_be_within_epsilon( mass_after_10 ** 2 )
130
+ end
131
+ end
132
+ end
133
+
134
+ describe "Cytokinesis && License_cocking" do
135
+ it "should be of correct type" do
136
+ assert Cytokinesis.A?
137
+ assert License_cocking.A?
138
+ end
139
+
140
+ describe "dynamic behavior" do
141
+ before do
142
+ @net = Net() << Mass << ActCycB << Ck_license << Cytokinesis << License_cocking
143
+ end
144
+
145
+ describe "low cyclin B, cytokinesis license present" do
146
+ before do
147
+ @s1 = @net.simulation initial_marking: { Ck_license: 1, Mass: 1.0, ActCycB: 0.01 }, step: 1.0
148
+ @s1.step!
149
+ end
150
+
151
+ it "cytokinesis should happen" do
152
+ @s1.m( Ck_license ).first.must_equal 0 # consumed
153
+ assert @s1.m( Mass ).first < 1 # decreased
154
+ end
155
+ end
156
+
157
+ describe "high cyclin B, cytokinesis license absent" do
158
+ before do
159
+ @s2 = @net.simulation initial_marking: { Ck_license: 0, Mass: 1.0, ActCycB: 100 }, step: 1.0
160
+ @s2.step!
161
+ end
162
+
163
+ it "license should cock" do
164
+ @s2.m( Ck_license ).first.must_equal 1 # cocked
165
+ assert @s2.m( Mass ).first >= 1 # not decreased
166
+ end
167
+ end
168
+
169
+ describe "high cyclin B, cytokinesis license present" do
170
+ before do
171
+ @s3 = @net.simulation initial_marking: { Ck_license: 1, Mass: 1.0, ActCycB: 100 }, step: 1.0
172
+ @s3.step!
173
+ end
174
+
175
+ it "cytokinesis should not happen" do
176
+ @s3.m( Ck_license ).first.must_equal 1 # unchanged
177
+ assert @s3.m( Mass ).first >= 1 # not decreased
178
+ end
179
+ end
180
+
181
+ describe "low cyclin B, cytokinesis license absent" do
182
+ before do
183
+ @s4 = @net.simulation initial_marking: { Ck_license: 0, Mass: 1.0, ActCycB: 0.1 }, step: 1.0
184
+ @s4.step!
185
+ end
186
+
187
+ it "nothing should happen" do
188
+ @s4.m( Ck_license ).first.must_equal 0 # cocked
189
+ assert @s4.m( Mass ).first >= 1 # not decreased
190
+ end
191
+ end
192
+ end
193
+ end
194
+ end
195
+ end
196
+
197
+ describe "Modules 4, 10, and 13 -- synthesis and degradation of cyclins B, E, and A" do
198
+ # Cyclin E is active primarily at the G1-S boundary, cyclin A is active from S phase
199
+ # to early M phase, and cyclin B is essential for mitosis.
200
+
201
+ it "must have certain places" do
202
+ CycB.must_be_kind_of Place # Mitotic Cdk/cyclin complex
203
+ ActCycB.must_be_kind_of Place # activated CycB
204
+ CycE.must_be_kind_of Place # G1/S transition inducer Cdk/cyclin
205
+ ActCycE.must_be_kind_of Place # activated CycE
206
+ CycA.must_be_kind_of Place # S-phase Cdk/cyclin complex
207
+ ActCycA.must_be_kind_of Place # S-phase Cdk/cyclin complex
208
+ end
209
+
210
+ describe "assigment transitions" do
211
+
212
+ end
213
+
214
+ describe "transitions" do
215
+
216
+ end
217
+ end
218
+
219
+ describe "Modules 1 and 2 -- regulation of the anaphase promoting complex (APC)" do
220
+ # The APC works in conjunction with Cdc20 and Cdh1 to ubiquitinylate
221
+ # cyclin B, thereby labeling it for degradation by proteasomes. The APC
222
+ # must be phosphorylated by the mitotic CycB kinase before it will associate
223
+ # readily with Cdc20, but not so with Cdh1. On the other hand, Cdh1 can be
224
+ # inactivated by phosphorylation by cyclin-dependent kinases. Cdc14 is a
225
+ # phosphatase that opposes Cdk by dephosphorylating and activating Cdh1.
226
+
227
+ describe "places" do
228
+
229
+ end
230
+
231
+ describe "transitions" do
232
+
233
+ end
234
+ end
235
+
236
+ describe "Module 8 -- synthesis and degradation of CKI (cyclin-dependent kinase inhibitor)" do
237
+ # Degradation of CKI is promoted by phoshporylation by cyclin-dependent kinases and
238
+ # inhibited by Cdc14 phosphatase.
239
+
240
+ describe "places" do
241
+
242
+ end
243
+ end
244
+
245
+ describe "Modules 6, 9 and 12 -- reversible binding of CKI to cyclin/Cdk dimers to produce " +
246
+ "catalytically inactive trimers (stoichiometric inhibition)." do
247
+
248
+ end
249
+
250
+ describe "Module 3, 7, and 11 -- regulation of the transcription factors that drive " +
251
+ "expression of cyclins and CKI" do
252
+ # TFB is activated by cyclin B-dependent kinase. TFE is activated by some cyclin-dependent
253
+ # kinases and inhibited by others. TFI is inhibited by cyclin B-dependent kinase and activated
254
+ # by Cdc14 phosphatase.
255
+ end
256
+
257
+ describe "Module 5 -- regulation of cyclin B-dependent kinase by tyrosine phosphorylation " +
258
+ "and dephosphorylation (by Wee1 kinase and Cdc25 phosphatase, respectively)." do
259
+ # The tyrosine-phosphorylated form is less active than the unphosphorylated form.
260
+ # Cyclin B-dependent kinase phosphorylates both Wee1 (inactivating it) and Cdc25
261
+ # (activating it), and these phosphorylations are reversed by Cdc14 phosphatase.
262
+ end
263
+
264
+ # The model is replete with positive feedback loops (CycB activates TFB, which drives synthesis
265
+ # of CycB; CKI inhibits CycB, which inhibits Cdh1), and negative feedback loops (CycB activates
266
+ # APC, which activates Cdc20, which degrades CycB; CycB activates Cdc20, which activates Cdc14,
267
+ # which opposes CycB; TFE drives synthesis of CycA, which inhibits TFE). These complex, inter-
268
+ # woven feedback loops create the interesting dynamical properties of the control system, which
269
+ # account for the characteristic features of cell cycle regulation, as we intend to show.
270
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cell_cycle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - boris
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: 'Eukaryotic cell cycle modelled at different levels of precision. Has
42
+ two levels at the moment: Simple and Virginia Tech.'
43
+ email:
44
+ - '"boris@iis.sinica.edu.tw"'
45
+ executables:
46
+ - run_virginia
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gitignore"
51
+ - ACKNOWLEDGMENT.txt
52
+ - Gemfile
53
+ - LICENSE.txt
54
+ - README.md
55
+ - Rakefile
56
+ - bin/run_virginia
57
+ - cell_cycle.gemspec
58
+ - lib/cell_cycle.rb
59
+ - lib/cell_cycle/alternative_syntax_for_transitions.rb
60
+ - lib/cell_cycle/simple.rb
61
+ - lib/cell_cycle/version.rb
62
+ - lib/cell_cycle/virginia_tech.rb
63
+ - lib/cell_cycle/virginia_tech/mammalian_constants.rb
64
+ - test/simple_test.rb
65
+ - test/virginia_test.rb
66
+ homepage: ''
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.2.2
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: A model of eukaryotic cell cycle.
90
+ test_files:
91
+ - test/simple_test.rb
92
+ - test/virginia_test.rb