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.
- 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
|