cell_cycle 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/ACKNOWLEDGMENT.txt +6 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/bin/run_virginia +6 -0
- data/cell_cycle.gemspec +23 -0
- data/lib/cell_cycle/alternative_syntax_for_transitions.rb +351 -0
- data/lib/cell_cycle/simple.rb +75 -0
- data/lib/cell_cycle/version.rb +3 -0
- data/lib/cell_cycle/virginia_tech/mammalian_constants.rb +144 -0
- data/lib/cell_cycle/virginia_tech.rb +463 -0
- data/lib/cell_cycle.rb +5 -0
- data/test/simple_test.rb +35 -0
- data/test/virginia_test.rb +270 -0
- metadata +92 -0
@@ -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
|