toji 2.5.0 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/example/calendar.ipynb +6 -6
- data/example/calendar.yaml +6 -6
- data/example/example_core.rb +6 -5
- data/example/moromi.ipynb +24 -24
- data/example/{shubo.rb → moto.rb} +2 -2
- data/example/{shubo.yaml → moto.yaml} +0 -0
- data/lib/toji/brew.rb +1 -1
- data/lib/toji/brew/graph/ab.rb +14 -4
- data/lib/toji/brew/moromi.rb +2 -2
- data/lib/toji/brew/{shubo.rb → moto.rb} +1 -1
- data/lib/toji/calendar.rb +2 -2
- data/lib/toji/calendar/date_column.rb +4 -4
- data/lib/toji/product.rb +60 -32
- data/lib/toji/product/event.rb +4 -35
- data/lib/toji/product/rice_event.rb +28 -0
- data/lib/toji/product/rice_event_group.rb +19 -0
- data/lib/toji/recipe.rb +21 -5
- data/lib/toji/recipe/ab_expect.rb +8 -0
- data/lib/toji/recipe/step.rb +40 -16
- data/lib/toji/version.rb +1 -1
- metadata +8 -6
- data/example/shubo.ipynb +0 -121
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6064acd8dc9d6655025954b4f6e7af6eb2ff57a5e96b8b3bab0b1dd9840fd892
|
4
|
+
data.tar.gz: 91bb99e9d7b664863773e5b1bf52e7fbb1bd0bf3961ace3b7b1d874b4963d437
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23dbc8597c3c9e366d14e5aaf02bcca1b3512d244ae52e789ef918f392e5504f9e2acbceeb3a2174f11239dcb8966b4b6d82ac3b03df6fdaa7ed8dc7e1adbb1d
|
7
|
+
data.tar.gz: bf3d505d1e0e7770d4efa74df9c67e8638eebfe622127feb854716be2c07ea268b853b84462b3f7e5920dc8892ad1b1be633633456e916a8a3c01cb6baf68be2
|
data/example/calendar.ipynb
CHANGED
@@ -302,7 +302,7 @@
|
|
302
302
|
" name: \"仕1\",\n",
|
303
303
|
" description: \"姫野国夫による酒母省略仕込\",\n",
|
304
304
|
" recipe: Example::Recipe::TEMPLATES[:simple_sokujo_himeno].scale(600).round(0),\n",
|
305
|
-
"
|
305
|
+
" base_date: Time.mktime(2020, 2, 24)\n",
|
306
306
|
"))\n",
|
307
307
|
".add(Example::Product.create(\n",
|
308
308
|
" name: \"仕2\",\n",
|
@@ -311,7 +311,7 @@
|
|
311
311
|
" r.steps[0].kake_interval_days = 5\n",
|
312
312
|
" r.steps[2].kake_interval_days = 3\n",
|
313
313
|
" },\n",
|
314
|
-
"
|
314
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
315
315
|
"))\n",
|
316
316
|
".add(Example::Product.create(\n",
|
317
317
|
" name: \"仕3\",\n",
|
@@ -320,13 +320,13 @@
|
|
320
320
|
" r.steps[1].koji_interval_days = 11\n",
|
321
321
|
" r.steps[1].kake_interval_days = 13\n",
|
322
322
|
" },\n",
|
323
|
-
"
|
323
|
+
" base_date: Time.mktime(2020, 2, 20)\n",
|
324
324
|
"))\n",
|
325
325
|
".add(Example::Product.create(\n",
|
326
326
|
" name: \"仕4\",\n",
|
327
327
|
" description: \"酒造教本による標準型仕込配合\",\n",
|
328
328
|
" recipe: Example::Recipe::TEMPLATES[:sokujo_textbook].scale(900).round(0),\n",
|
329
|
-
"
|
329
|
+
" base_date: Time.mktime(2020, 2, 20)\n",
|
330
330
|
"))\n",
|
331
331
|
".add(Example::Product.create(\n",
|
332
332
|
" name: \"仕5\",\n",
|
@@ -335,13 +335,13 @@
|
|
335
335
|
" r.steps[1].koji_interval_days = 11\n",
|
336
336
|
" r.steps[1].kake_interval_days = 13\n",
|
337
337
|
" },\n",
|
338
|
-
"
|
338
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
339
339
|
"))\n",
|
340
340
|
".add(Example::Product.create(\n",
|
341
341
|
" name: \"仕6\",\n",
|
342
342
|
" description: \"酒造教本による標準型仕込配合\",\n",
|
343
343
|
" recipe: Example::Recipe::TEMPLATES[:sokujo_textbook].scale(900).round(0),\n",
|
344
|
-
"
|
344
|
+
" base_date: Time.mktime(2020, 2, 27)\n",
|
345
345
|
"))\n",
|
346
346
|
"\n",
|
347
347
|
"cal.products.each {|product|\n",
|
data/example/calendar.yaml
CHANGED
@@ -4,34 +4,34 @@ products:
|
|
4
4
|
recipe: :simple_sokujo_himeno
|
5
5
|
scale: 600
|
6
6
|
round: 0
|
7
|
-
|
7
|
+
base_date: 2020-2-24
|
8
8
|
- name: 仕2
|
9
9
|
description: 姫野国夫による酒母省略仕込
|
10
10
|
recipe: :simple_sokujo_himeno
|
11
11
|
scale: 550
|
12
12
|
round: 0
|
13
|
-
|
13
|
+
base_date: 2020-2-27
|
14
14
|
- name: 仕3
|
15
15
|
description: 灘における仕込配合
|
16
16
|
recipe: :sokujo_nada
|
17
17
|
scale: 900
|
18
18
|
round: 0
|
19
|
-
|
19
|
+
base_date: 2020-2-20
|
20
20
|
- name: 仕4
|
21
21
|
description: 酒造教本による標準型仕込配合
|
22
22
|
recipe: :sokujo_textbook
|
23
23
|
scale: 900
|
24
24
|
round: 0
|
25
|
-
|
25
|
+
base_date: 2020-2-20
|
26
26
|
- name: 仕5
|
27
27
|
description: 灘における仕込配合
|
28
28
|
recipe: :sokujo_nada
|
29
29
|
scale: 900
|
30
30
|
round: 0
|
31
|
-
|
31
|
+
base_date: 2020-2-27
|
32
32
|
- name: 仕6
|
33
33
|
description: 酒造教本による標準型仕込配合
|
34
34
|
recipe: :sokujo_textbook
|
35
35
|
scale: 900
|
36
36
|
round: 0
|
37
|
-
|
37
|
+
base_date: 2020-2-27
|
data/example/example_core.rb
CHANGED
@@ -56,8 +56,8 @@ module Example
|
|
56
56
|
include Toji::Brew::Koji
|
57
57
|
end
|
58
58
|
|
59
|
-
class
|
60
|
-
include Toji::Brew::
|
59
|
+
class Moto < Base
|
60
|
+
include Toji::Brew::Moto
|
61
61
|
end
|
62
62
|
|
63
63
|
class Moromi < Base
|
@@ -68,6 +68,7 @@ module Example
|
|
68
68
|
|
69
69
|
class Step
|
70
70
|
include Toji::Recipe::Step
|
71
|
+
attr_accessor :name
|
71
72
|
|
72
73
|
def self.create(name:, kake: 0, koji: 0, water: 0, lactic_acid: 0, alcohol: 0, yeast: 0, koji_interval_days: 0, kake_interval_days: 0)
|
73
74
|
new.tap {|o|
|
@@ -249,12 +250,12 @@ module Example
|
|
249
250
|
attr_accessor :description
|
250
251
|
attr_accessor :color
|
251
252
|
|
252
|
-
def initialize(reduce_key, name, description, recipe,
|
253
|
+
def initialize(reduce_key, name, description, recipe, base_date, color=nil)
|
253
254
|
@reduce_key = reduce_key || SecureRandom.uuid
|
254
255
|
@name = name
|
255
256
|
@description = description
|
256
257
|
@recipe = recipe
|
257
|
-
@
|
258
|
+
@base_date = base_date
|
258
259
|
@color = color
|
259
260
|
end
|
260
261
|
|
@@ -278,7 +279,7 @@ module Example
|
|
278
279
|
args[:name],
|
279
280
|
args[:description],
|
280
281
|
recipe,
|
281
|
-
args[:
|
282
|
+
args[:base_date],
|
282
283
|
args[:color]
|
283
284
|
)
|
284
285
|
else
|
data/example/moromi.ipynb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"cells": [
|
3
3
|
{
|
4
4
|
"cell_type": "code",
|
5
|
-
"execution_count":
|
5
|
+
"execution_count": 4,
|
6
6
|
"metadata": {
|
7
7
|
"scrolled": false
|
8
8
|
},
|
@@ -16,25 +16,25 @@
|
|
16
16
|
" </script>\n",
|
17
17
|
"\n",
|
18
18
|
"\n",
|
19
|
-
"<div id=\"
|
19
|
+
"<div id=\"0e89b2f2-9a2a-4713-ba37-1f73b14ca4dd\" style=\"height: 100%; width: 100%;\"></div>\n",
|
20
20
|
"\n",
|
21
21
|
"<script>\n",
|
22
22
|
" require(['plotly'], function(Plotly) { \n",
|
23
23
|
"Plotly.newPlot(\n",
|
24
|
-
" '
|
25
|
-
" [{\"x\":[0.0,1.0,86400.0,172800.0,259200.0,259201.0,345600.0,345601.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1555200.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0,2073600.0],\"y\":[14.8,11.0,14.3,11.3,6.9,10.6,7.5,8.0,9.1,10.4,11.9,12.3,13.1,13.1,12.9,12.8,12.9,12.6,12.0,11.2,10.2,9.7,9.8,9.1,8.4,8.1,8.3,8.1],\"text\":[\"01/16 00:00\",\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],\"name\":\"temps\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#1f77b4\"}},{\"x\":[0.0,86400.0,172800.0,259200.0,345600.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1555200.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0,2073600.0],\"y\":[9,9,8.5,9,6,7,7,8,8,7.5,7.5,7.5,7.0,8.0,8.0,7.0,7.0,6.5,7.0,8.0,6.0,5.0,5.0,7.0,6.0],\"text\":[\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],\"name\":\"room_temp\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#2ca02c\"}},{\"x\":[604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0],\"y\":[8.6,8.0,7.2,5.8,4.8,4.0,3.4,2.7,2.1,1.
|
24
|
+
" '0e89b2f2-9a2a-4713-ba37-1f73b14ca4dd',\n",
|
25
|
+
" [{\"x\":[0.0,1.0,86400.0,172800.0,259200.0,259201.0,345600.0,345601.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1555200.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0,2073600.0],\"y\":[14.8,11.0,14.3,11.3,6.9,10.6,7.5,8.0,9.1,10.4,11.9,12.3,13.1,13.1,12.9,12.8,12.9,12.6,12.0,11.2,10.2,9.7,9.8,9.1,8.4,8.1,8.3,8.1],\"text\":[\"01/16 00:00\",\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],\"name\":\"temps\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#1f77b4\"}},{\"x\":[0.0,86400.0,172800.0,259200.0,345600.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1555200.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0,2073600.0],\"y\":[9,9,8.5,9,6,7,7,8,8,7.5,7.5,7.5,7.0,8.0,8.0,7.0,7.0,6.5,7.0,8.0,6.0,5.0,5.0,7.0,6.0],\"text\":[\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],\"name\":\"room_temp\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#2ca02c\"}},{\"x\":[604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0],\"y\":[8.6,8.0,7.2,5.8,4.8,4.0,3.4,2.7,2.1,1.7,1.3,0.8,0.5,0.3,0.2,-0.0],\"text\":[\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\"],\"name\":\"baume\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#9467bd\"}},{\"x\":[691200.0,777600.0,864000.0,1036800.0,1123200.0,1209600.0,1296000.0,1641600.0,1814400.0],\"y\":[4.8,6.75,7.992,10.7,11.6,12.7,13.7,16.0,16.3],\"text\":[\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/04 00:00\",\"02/06 00:00\"],\"name\":\"alcohol\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#7f7f7f\"}},{\"x\":[604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0,1209600.0,1296000.0,1382400.0,1468800.0,1641600.0,1728000.0,1814400.0,1900800.0,1987200.0],\"y\":[34.4,40.0,43.2,40.6,38.4,36.0,34.0,29.700000000000003,25.200000000000003,22.099999999999998,18.2,12.8,8.5,5.3999999999999995,3.8000000000000003,-0.0],\"text\":[\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\"],\"name\":\"bmd\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#bcbd22\"}}],\n",
|
26
26
|
" {\"xaxis\":{\"dtick\":86400,\"tickvals\":[0,86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200,1209600,1296000,1382400,1468800,1555200,1641600,1728000,1814400,1900800,1987200,2073600],\"ticktext\":[\"添\",\"踊\",\"踊\",\"仲\",\"留\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\"]},\"annotations\":[{\"x\":0.0,\"y\":14.8,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"添\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":259200.0,\"y\":6.9,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"仲\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":345600.0,\"y\":7.5,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"留\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40}]},\n",
|
27
27
|
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
28
28
|
")\n",
|
29
29
|
"\n",
|
30
30
|
"window.addEventListener('resize', function() {\n",
|
31
|
-
" Plotly.Plots.resize(document.getElementById('
|
31
|
+
" Plotly.Plots.resize(document.getElementById('0e89b2f2-9a2a-4713-ba37-1f73b14ca4dd'))\n",
|
32
32
|
"})\n",
|
33
33
|
" }) \n",
|
34
34
|
"</script>"
|
35
35
|
],
|
36
36
|
"text/plain": [
|
37
|
-
"#<Plotly::Offline::HTML:
|
37
|
+
"#<Plotly::Offline::HTML:0x00007fe57118c758 @id=\"0e89b2f2-9a2a-4713-ba37-1f73b14ca4dd\", @data=[{:x=>[0.0, 1.0, 86400.0, 172800.0, 259200.0, 259201.0, 345600.0, 345601.0, 432000.0, 518400.0, 604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0, 1209600.0, 1296000.0, 1382400.0, 1468800.0, 1555200.0, 1641600.0, 1728000.0, 1814400.0, 1900800.0, 1987200.0, 2073600.0], :y=>[14.8, 11.0, 14.3, 11.3, 6.9, 10.6, 7.5, 8.0, 9.1, 10.4, 11.9, 12.3, 13.1, 13.1, 12.9, 12.8, 12.9, 12.6, 12.0, 11.2, 10.2, 9.7, 9.8, 9.1, 8.4, 8.1, 8.3, 8.1], :text=>[\"01/16 00:00\", \"01/16 00:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/01 00:00\", \"02/02 00:00\", \"02/03 00:00\", \"02/04 00:00\", \"02/05 00:00\", \"02/06 00:00\", \"02/07 00:00\", \"02/08 00:00\", \"02/09 00:00\"], :name=>\"temps\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#1f77b4\"}}, {:x=>[0.0, 86400.0, 172800.0, 259200.0, 345600.0, 432000.0, 518400.0, 604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0, 1209600.0, 1296000.0, 1382400.0, 1468800.0, 1555200.0, 1641600.0, 1728000.0, 1814400.0, 1900800.0, 1987200.0, 2073600.0], :y=>[9, 9, 8.5, 9, 6, 7, 7, 8, 8, 7.5, 7.5, 7.5, 7.0, 8.0, 8.0, 7.0, 7.0, 6.5, 7.0, 8.0, 6.0, 5.0, 5.0, 7.0, 6.0], :text=>[\"01/16 00:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/01 00:00\", \"02/02 00:00\", \"02/03 00:00\", \"02/04 00:00\", \"02/05 00:00\", \"02/06 00:00\", \"02/07 00:00\", \"02/08 00:00\", \"02/09 00:00\"], :name=>\"room_temp\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#2ca02c\"}}, {:x=>[604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0, 1209600.0, 1296000.0, 1382400.0, 1468800.0, 1641600.0, 1728000.0, 1814400.0, 1900800.0, 1987200.0], :y=>[8.6, 8.0, 7.2, 5.8, 4.8, 4.0, 3.4, 2.7, 2.1, 1.7, 1.3, 0.8, 0.5, 0.3, 0.2, -0.0], :text=>[\"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/01 00:00\", \"02/02 00:00\", \"02/04 00:00\", \"02/05 00:00\", \"02/06 00:00\", \"02/07 00:00\", \"02/08 00:00\"], :name=>\"baume\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#9467bd\"}}, {:x=>[691200.0, 777600.0, 864000.0, 1036800.0, 1123200.0, 1209600.0, 1296000.0, 1641600.0, 1814400.0], :y=>[4.8, 6.75, 7.992, 10.7, 11.6, 12.7, 13.7, 16.0, 16.3], :text=>[\"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/04 00:00\", \"02/06 00:00\"], :name=>\"alcohol\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#7f7f7f\"}}, {:x=>[604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0, 1209600.0, 1296000.0, 1382400.0, 1468800.0, 1641600.0, 1728000.0, 1814400.0, 1900800.0, 1987200.0], :y=>[34.4, 40.0, 43.2, 40.6, 38.4, 36.0, 34.0, 29.700000000000003, 25.200000000000003, 22.099999999999998, 18.2, 12.8, 8.5, 5.3999999999999995, 3.8000000000000003, -0.0], :text=>[\"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/01 00:00\", \"02/02 00:00\", \"02/04 00:00\", \"02/05 00:00\", \"02/06 00:00\", \"02/07 00:00\", \"02/08 00:00\"], :name=>\"bmd\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#bcbd22\"}}], @layout={:xaxis=>{:dtick=>86400, :tickvals=>[0, 86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200, 1209600, 1296000, 1382400, 1468800, 1555200, 1641600, 1728000, 1814400, 1900800, 1987200, 2073600], :ticktext=>[\"添\", \"踊\", \"踊\", \"仲\", \"留\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\"]}, :annotations=>[{:x=>0.0, :y=>14.8, :xref=>\"x\", :yref=>\"y\", :text=>\"添\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>259200.0, :y=>6.9, :xref=>\"x\", :yref=>\"y\", :text=>\"仲\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>345600.0, :y=>7.5, :xref=>\"x\", :yref=>\"y\", :text=>\"留\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}]}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
38
38
|
]
|
39
39
|
},
|
40
40
|
"metadata": {},
|
@@ -49,25 +49,25 @@
|
|
49
49
|
" </script>\n",
|
50
50
|
"\n",
|
51
51
|
"\n",
|
52
|
-
"<div id=\"
|
52
|
+
"<div id=\"7eb61d12-042e-4b84-9373-06ec2c071d79\" style=\"height: 100%; width: 100%;\"></div>\n",
|
53
53
|
"\n",
|
54
54
|
"<script>\n",
|
55
55
|
" require(['plotly'], function(Plotly) { \n",
|
56
56
|
"Plotly.newPlot(\n",
|
57
|
-
" '
|
58
|
-
" [{\"type\":\"table\",\"header\":{\"values\":[\"day_label\",\"display_time\",\"mark\",\"temps\",\"room_temp\",\"display_baume\",\"alcohol\",\"bmd\"]},\"cells\":{\"values\":[[\"添\",\"踊\",\"踊\",\"仲\",\"留\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\"],[\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],[\"添\",\"\",\"\",\"仲\",\"留\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[\"14.8, 11.0\",\"14.3\",\"11.3\",\"6.9, 10.6\",\"7.5, 8.0\",\"9.1\",\"10.4\",\"11.9\",\"12.3\",\"13.1\",\"13.1\",\"12.9\",\"12.8\",\"12.9\",\"12.6\",\"12.0\",\"11.2\",\"10.2\",\"9.7\",\"9.8\",\"9.1\",\"8.4\",\"8.1\",\"8.3\",\"8.1\"],[9
|
57
|
+
" '7eb61d12-042e-4b84-9373-06ec2c071d79',\n",
|
58
|
+
" [{\"type\":\"table\",\"header\":{\"values\":[\"day_label\",\"display_time\",\"mark\",\"temps\",\"room_temp\",\"display_baume\",\"alcohol\",\"bmd\"]},\"cells\":{\"values\":[[\"添\",\"踊\",\"踊\",\"仲\",\"留\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\"],[\"01/16 00:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\",\"01/30 00:00\",\"01/31 00:00\",\"02/01 00:00\",\"02/02 00:00\",\"02/03 00:00\",\"02/04 00:00\",\"02/05 00:00\",\"02/06 00:00\",\"02/07 00:00\",\"02/08 00:00\",\"02/09 00:00\"],[\"添\",\"\",\"\",\"仲\",\"留\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[\"14.8, 11.0\",\"14.3\",\"11.3\",\"6.9, 10.6\",\"7.5, 8.0\",\"9.1\",\"10.4\",\"11.9\",\"12.3\",\"13.1\",\"13.1\",\"12.9\",\"12.8\",\"12.9\",\"12.6\",\"12.0\",\"11.2\",\"10.2\",\"9.7\",\"9.8\",\"9.1\",\"8.4\",\"8.1\",\"8.3\",\"8.1\"],[\"9\",\"9\",\"8.5\",\"9\",\"6\",\"7\",\"7\",\"8\",\"8\",\"7.5\",\"7.5\",\"7.5\",\"7.0\",\"8.0\",\"8.0\",\"7.0\",\"7.0\",\"6.5\",\"7.0\",\"8.0\",\"6.0\",\"5.0\",\"5.0\",\"7.0\",\"6.0\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"8.6\",\"8.0\",\"7.2\",\"5.8\",\"4.8\",\"4.0\",\"3.4\",\"-27.0\",\"-21.0\",\"-17.0\",\"-13.0\",\"\",\"-8.0\",\"-5.0\",\"-3.0\",\"-2.0\",\"0.0\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"4.8\",\"6.75\",\"7.992\",\"\",\"10.7\",\"11.6\",\"12.7\",\"13.7\",\"\",\"\",\"\",\"16.0\",\"\",\"16.3\",\"\",\"\",\"\"],[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"34.4\",\"40.0\",\"43.2\",\"40.6\",\"38.4\",\"36.0\",\"34.0\",\"29.7\",\"25.2\",\"22.1\",\"18.2\",\"\",\"12.8\",\"8.5\",\"5.4\",\"3.8\",\"-0.0\",\"\"]]}}],\n",
|
59
59
|
" {\"height\":1000},\n",
|
60
60
|
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
61
61
|
")\n",
|
62
62
|
"\n",
|
63
63
|
"window.addEventListener('resize', function() {\n",
|
64
|
-
" Plotly.Plots.resize(document.getElementById('
|
64
|
+
" Plotly.Plots.resize(document.getElementById('7eb61d12-042e-4b84-9373-06ec2c071d79'))\n",
|
65
65
|
"})\n",
|
66
66
|
" }) \n",
|
67
67
|
"</script>"
|
68
68
|
],
|
69
69
|
"text/plain": [
|
70
|
-
"#<Plotly::Offline::HTML:
|
70
|
+
"#<Plotly::Offline::HTML:0x00007fe5752c8690 @id=\"7eb61d12-042e-4b84-9373-06ec2c071d79\", @data=[{:type=>:table, :header=>{:values=>[:day_label, :display_time, :mark, :temps, :room_temp, :display_baume, :alcohol, :bmd]}, :cells=>{:values=>[[\"添\", \"踊\", \"踊\", \"仲\", \"留\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\"], [\"01/16 00:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\", \"01/30 00:00\", \"01/31 00:00\", \"02/01 00:00\", \"02/02 00:00\", \"02/03 00:00\", \"02/04 00:00\", \"02/05 00:00\", \"02/06 00:00\", \"02/07 00:00\", \"02/08 00:00\", \"02/09 00:00\"], [\"添\", \"\", \"\", \"仲\", \"留\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"], [\"14.8, 11.0\", \"14.3\", \"11.3\", \"6.9, 10.6\", \"7.5, 8.0\", \"9.1\", \"10.4\", \"11.9\", \"12.3\", \"13.1\", \"13.1\", \"12.9\", \"12.8\", \"12.9\", \"12.6\", \"12.0\", \"11.2\", \"10.2\", \"9.7\", \"9.8\", \"9.1\", \"8.4\", \"8.1\", \"8.3\", \"8.1\"], [\"9\", \"9\", \"8.5\", \"9\", \"6\", \"7\", \"7\", \"8\", \"8\", \"7.5\", \"7.5\", \"7.5\", \"7.0\", \"8.0\", \"8.0\", \"7.0\", \"7.0\", \"6.5\", \"7.0\", \"8.0\", \"6.0\", \"5.0\", \"5.0\", \"7.0\", \"6.0\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"8.6\", \"8.0\", \"7.2\", \"5.8\", \"4.8\", \"4.0\", \"3.4\", \"-27.0\", \"-21.0\", \"-17.0\", \"-13.0\", \"\", \"-8.0\", \"-5.0\", \"-3.0\", \"-2.0\", \"0.0\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"4.8\", \"6.75\", \"7.992\", \"\", \"10.7\", \"11.6\", \"12.7\", \"13.7\", \"\", \"\", \"\", \"16.0\", \"\", \"16.3\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"34.4\", \"40.0\", \"43.2\", \"40.6\", \"38.4\", \"36.0\", \"34.0\", \"29.7\", \"25.2\", \"22.1\", \"18.2\", \"\", \"12.8\", \"8.5\", \"5.4\", \"3.8\", \"-0.0\", \"\"]]}}], @layout={:height=>1000}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
71
71
|
]
|
72
72
|
},
|
73
73
|
"metadata": {},
|
@@ -82,25 +82,25 @@
|
|
82
82
|
" </script>\n",
|
83
83
|
"\n",
|
84
84
|
"\n",
|
85
|
-
"<div id=\"
|
85
|
+
"<div id=\"1cbb8a13-f102-482a-8367-a98d4f4e480a\" style=\"height: 100%; width: 100%;\"></div>\n",
|
86
86
|
"\n",
|
87
87
|
"<script>\n",
|
88
88
|
" require(['plotly'], function(Plotly) { \n",
|
89
89
|
"Plotly.newPlot(\n",
|
90
|
-
" '
|
91
|
-
" [{\"x\":[345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200,1209600,1382400,1468800,1555200,1641600,1728000],\"y\":[34.4,40.0,43.2,40.6,38.4,36.0,34.0,29.700000000000003,25.200000000000003,22.
|
90
|
+
" '1cbb8a13-f102-482a-8367-a98d4f4e480a',\n",
|
91
|
+
" [{\"x\":[345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200,1209600,1382400,1468800,1555200,1641600,1728000],\"y\":[34.4,40.0,43.2,40.6,38.4,36.0,34.0,29.700000000000003,25.200000000000003,22.099999999999998,18.2,12.8,8.5,5.3999999999999995,3.8000000000000003,-0.0],\"text\":[\"01/23 00:00\\u003cbr /\\u003emoromi day=4, be=8.6, bmd=34.4\",\"01/24 00:00\\u003cbr /\\u003emoromi day=5, be=8.0, bmd=40.0\",\"01/25 00:00\\u003cbr /\\u003emoromi day=6, be=7.2, bmd=43.2\",\"01/26 00:00\\u003cbr /\\u003emoromi day=7, be=5.8, bmd=40.6\",\"01/27 00:00\\u003cbr /\\u003emoromi day=8, be=4.8, bmd=38.4\",\"01/28 00:00\\u003cbr /\\u003emoromi day=9, be=4.0, bmd=36.0\",\"01/29 00:00\\u003cbr /\\u003emoromi day=10, be=3.4, bmd=34.0\",\"01/30 00:00\\u003cbr /\\u003emoromi day=11, be=2.7, bmd=29.700000000000003\",\"01/31 00:00\\u003cbr /\\u003emoromi day=12, be=2.1, bmd=25.200000000000003\",\"02/01 00:00\\u003cbr /\\u003emoromi day=13, be=1.7, bmd=22.099999999999998\",\"02/02 00:00\\u003cbr /\\u003emoromi day=14, be=1.3, bmd=18.2\",\"02/04 00:00\\u003cbr /\\u003emoromi day=16, be=0.8, bmd=12.8\",\"02/05 00:00\\u003cbr /\\u003emoromi day=17, be=0.5, bmd=8.5\",\"02/06 00:00\\u003cbr /\\u003emoromi day=18, be=0.3, bmd=5.3999999999999995\",\"02/07 00:00\\u003cbr /\\u003emoromi day=19, be=0.2, bmd=3.8000000000000003\",\"02/08 00:00\\u003cbr /\\u003emoromi day=20, be=-0.0, bmd=-0.0\"],\"name\":\"actual\"}],\n",
|
92
92
|
" {\"xaxis\":{\"title\":\"Moromi day\",\"dtick\":86400,\"range\":[86400,1814400],\"tickvals\":[0,86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200,1209600,1296000,1382400,1468800,1555200,1641600,1728000],\"ticktext\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]},\"yaxis\":{\"title\":\"BMD\"}},\n",
|
93
93
|
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
94
94
|
")\n",
|
95
95
|
"\n",
|
96
96
|
"window.addEventListener('resize', function() {\n",
|
97
|
-
" Plotly.Plots.resize(document.getElementById('
|
97
|
+
" Plotly.Plots.resize(document.getElementById('1cbb8a13-f102-482a-8367-a98d4f4e480a'))\n",
|
98
98
|
"})\n",
|
99
99
|
" }) \n",
|
100
100
|
"</script>"
|
101
101
|
],
|
102
102
|
"text/plain": [
|
103
|
-
"#<Plotly::Offline::HTML:
|
103
|
+
"#<Plotly::Offline::HTML:0x00007fe5753222d0 @id=\"1cbb8a13-f102-482a-8367-a98d4f4e480a\", @data=[{:x=>[345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200, 1209600, 1382400, 1468800, 1555200, 1641600, 1728000], :y=>[34.4, 40.0, 43.2, 40.6, 38.4, 36.0, 34.0, 29.700000000000003, 25.200000000000003, 22.099999999999998, 18.2, 12.8, 8.5, 5.3999999999999995, 3.8000000000000003, -0.0], :text=>[\"01/23 00:00<br />moromi day=4, be=8.6, bmd=34.4\", \"01/24 00:00<br />moromi day=5, be=8.0, bmd=40.0\", \"01/25 00:00<br />moromi day=6, be=7.2, bmd=43.2\", \"01/26 00:00<br />moromi day=7, be=5.8, bmd=40.6\", \"01/27 00:00<br />moromi day=8, be=4.8, bmd=38.4\", \"01/28 00:00<br />moromi day=9, be=4.0, bmd=36.0\", \"01/29 00:00<br />moromi day=10, be=3.4, bmd=34.0\", \"01/30 00:00<br />moromi day=11, be=2.7, bmd=29.700000000000003\", \"01/31 00:00<br />moromi day=12, be=2.1, bmd=25.200000000000003\", \"02/01 00:00<br />moromi day=13, be=1.7, bmd=22.099999999999998\", \"02/02 00:00<br />moromi day=14, be=1.3, bmd=18.2\", \"02/04 00:00<br />moromi day=16, be=0.8, bmd=12.8\", \"02/05 00:00<br />moromi day=17, be=0.5, bmd=8.5\", \"02/06 00:00<br />moromi day=18, be=0.3, bmd=5.3999999999999995\", \"02/07 00:00<br />moromi day=19, be=0.2, bmd=3.8000000000000003\", \"02/08 00:00<br />moromi day=20, be=-0.0, bmd=-0.0\"], :name=>:actual}], @layout={:xaxis=>{:title=>\"Moromi day\", :dtick=>86400, :range=>[86400, 1814400], :tickvals=>[0, 86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200, 1209600, 1296000, 1382400, 1468800, 1555200, 1641600, 1728000], :ticktext=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]}, :yaxis=>{:title=>\"BMD\"}}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
104
104
|
]
|
105
105
|
},
|
106
106
|
"metadata": {},
|
@@ -115,25 +115,25 @@
|
|
115
115
|
" </script>\n",
|
116
116
|
"\n",
|
117
117
|
"\n",
|
118
|
-
"<div id=\"
|
118
|
+
"<div id=\"be5e3e28-c1f7-4993-b255-596bf278f355\" style=\"height: 100%; width: 100%;\"></div>\n",
|
119
119
|
"\n",
|
120
120
|
"<script>\n",
|
121
121
|
" require(['plotly'], function(Plotly) { \n",
|
122
122
|
"Plotly.newPlot(\n",
|
123
|
-
" '
|
124
|
-
" [{\"x\":[4.8,6.75,7.992,10.7,11.6,12.7,13.7,16.0,16.3],\"y\":[8.0,7.2,5.8,4.0,3.4,2.7,2.1,0.8,0.
|
123
|
+
" 'be5e3e28-c1f7-4993-b255-596bf278f355',\n",
|
124
|
+
" [{\"x\":[4.8,6.75,7.992,10.7,11.6,12.7,13.7,16.0,16.3],\"y\":[8.0,7.2,5.8,4.0,3.4,2.7,2.1,0.8,0.3],\"text\":[\"01/24 00:00\\u003cbr /\\u003ealc=4.8, be=8.0\",\"01/25 00:00\\u003cbr /\\u003ealc=6.75, be=7.2\",\"01/26 00:00\\u003cbr /\\u003ealc=7.992, be=5.8\",\"01/28 00:00\\u003cbr /\\u003ealc=10.7, be=4.0\",\"01/29 00:00\\u003cbr /\\u003ealc=11.6, be=3.4\",\"01/30 00:00\\u003cbr /\\u003ealc=12.7, be=2.7\",\"01/31 00:00\\u003cbr /\\u003ealc=13.7, be=2.1\",\"02/04 00:00\\u003cbr /\\u003ealc=16.0, be=0.8\",\"02/06 00:00\\u003cbr /\\u003ealc=16.3, be=0.3\"],\"name\":\"actual\"},{\"x\":[16.08,4.879999999999999],\"y\":[0.0,8.0],\"name\":\"+3.0 16.5\"},{\"x\":[16.58,5.379999999999999],\"y\":[0.0,8.0],\"name\":\"+3.0 17.0\"},{\"x\":[16.5,5.300000000000001],\"y\":[0.0,8.0],\"name\":\"+0.0 16.5\"}],\n",
|
125
125
|
" {\"xaxis\":{\"title\":\"Alcohol\",\"dtick\":2,\"range\":[0,20]},\"yaxis\":{\"title\":\"Baume\",\"dtick\":1,\"range\":[0,10]}},\n",
|
126
126
|
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
127
127
|
")\n",
|
128
128
|
"\n",
|
129
129
|
"window.addEventListener('resize', function() {\n",
|
130
|
-
" Plotly.Plots.resize(document.getElementById('
|
130
|
+
" Plotly.Plots.resize(document.getElementById('be5e3e28-c1f7-4993-b255-596bf278f355'))\n",
|
131
131
|
"})\n",
|
132
132
|
" }) \n",
|
133
133
|
"</script>"
|
134
134
|
],
|
135
135
|
"text/plain": [
|
136
|
-
"#<Plotly::Offline::HTML:
|
136
|
+
"#<Plotly::Offline::HTML:0x00007fe575351b70 @id=\"be5e3e28-c1f7-4993-b255-596bf278f355\", @data=[{:x=>[4.8, 6.75, 7.992, 10.7, 11.6, 12.7, 13.7, 16.0, 16.3], :y=>[8.0, 7.2, 5.8, 4.0, 3.4, 2.7, 2.1, 0.8, 0.3], :text=>[\"01/24 00:00<br />alc=4.8, be=8.0\", \"01/25 00:00<br />alc=6.75, be=7.2\", \"01/26 00:00<br />alc=7.992, be=5.8\", \"01/28 00:00<br />alc=10.7, be=4.0\", \"01/29 00:00<br />alc=11.6, be=3.4\", \"01/30 00:00<br />alc=12.7, be=2.7\", \"01/31 00:00<br />alc=13.7, be=2.1\", \"02/04 00:00<br />alc=16.0, be=0.8\", \"02/06 00:00<br />alc=16.3, be=0.3\"], :name=>:actual}, {:x=>[16.08, 4.879999999999999], :y=>[0.0, 8.0], :name=>\"+3.0 16.5\"}, {:x=>[16.58, 5.379999999999999], :y=>[0.0, 8.0], :name=>\"+3.0 17.0\"}, {:x=>[16.5, 5.300000000000001], :y=>[0.0, 8.0], :name=>\"+0.0 16.5\"}], @layout={:xaxis=>{:title=>\"Alcohol\", :dtick=>2, :range=>[0, 20]}, :yaxis=>{:title=>\"Baume\", :dtick=>1, :range=>[0, 10]}}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
137
137
|
]
|
138
138
|
},
|
139
139
|
"metadata": {},
|
@@ -142,10 +142,10 @@
|
|
142
142
|
{
|
143
143
|
"data": {
|
144
144
|
"text/plain": [
|
145
|
-
"#<CZTop::Socket::PUB:
|
145
|
+
"#<CZTop::Socket::PUB:0x7fe5759f3ab0 last_endpoint=\"tcp://127.0.0.1:54895\">"
|
146
146
|
]
|
147
147
|
},
|
148
|
-
"execution_count":
|
148
|
+
"execution_count": 4,
|
149
149
|
"metadata": {},
|
150
150
|
"output_type": "execute_result"
|
151
151
|
}
|
@@ -161,7 +161,7 @@
|
|
161
161
|
"moromi.progress.table.tap{|t| t.layout.height=1000}.show\n",
|
162
162
|
"moromi.bmd.plot.show\n",
|
163
163
|
"\n",
|
164
|
-
"moromi.ab(1.
|
164
|
+
"moromi.ab(1.4)\n",
|
165
165
|
" .expect(16.5, +3)\n",
|
166
166
|
" .expect(17.0, +3)\n",
|
167
167
|
" .expect(16.5, +0)\n",
|
@@ -2,12 +2,12 @@ require 'toji'
|
|
2
2
|
require_relative 'example_core'
|
3
3
|
require 'terminal-table'
|
4
4
|
|
5
|
-
|
5
|
+
moto = Example::Brew::Moto.load_yaml_file(File.dirname(__FILE__)+"/moto.yaml")
|
6
6
|
|
7
7
|
table = Terminal::Table.new do |t|
|
8
8
|
t << ["作業", "日数", "品温(度)", "ボーメ", "酸度", "経過時間", "日時"]
|
9
9
|
t << :separator
|
10
|
-
|
10
|
+
moto.wrapped_states.each {|s|
|
11
11
|
temp = s.temps.map(&:to_s).join(" / ")
|
12
12
|
t << [s.mark, s.day_label, temp, s.baume, s.acid, s.elapsed_time, s.display_time]
|
13
13
|
}
|
File without changes
|
data/lib/toji/brew.rb
CHANGED
data/lib/toji/brew/graph/ab.rb
CHANGED
@@ -2,14 +2,17 @@ module Toji
|
|
2
2
|
module Brew
|
3
3
|
module Graph
|
4
4
|
class Ab
|
5
|
-
|
6
|
-
|
7
|
-
def initialize(coef=1.5)
|
8
|
-
@coef = coef
|
5
|
+
def initialize
|
6
|
+
@coef = 1.0
|
9
7
|
@actuals = []
|
10
8
|
@expects = []
|
11
9
|
end
|
12
10
|
|
11
|
+
def coef(coef)
|
12
|
+
@coef = coef
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
13
16
|
def actual(moromi, name=:actual)
|
14
17
|
@actuals << [moromi, name]
|
15
18
|
self
|
@@ -20,6 +23,13 @@ module Toji
|
|
20
23
|
self
|
21
24
|
end
|
22
25
|
|
26
|
+
def expects(expects)
|
27
|
+
expects.each {|o|
|
28
|
+
expect(o.alcohol, o.nihonshudo)
|
29
|
+
}
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
23
33
|
def plot_data
|
24
34
|
result = []
|
25
35
|
|
data/lib/toji/brew/moromi.rb
CHANGED
data/lib/toji/calendar.rb
CHANGED
@@ -16,7 +16,7 @@ module Toji
|
|
16
16
|
alias_method :add, :<<
|
17
17
|
|
18
18
|
def date_rows
|
19
|
-
events = @products.map{|product| product.
|
19
|
+
events = @products.map{|product| product.rice_events}.flatten
|
20
20
|
|
21
21
|
result = {}
|
22
22
|
events.each {|event|
|
@@ -28,7 +28,7 @@ module Toji
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def table_data
|
31
|
-
events = @products.map{|product| product.
|
31
|
+
events = @products.map{|product| product.rice_events}.flatten
|
32
32
|
|
33
33
|
koji_len = events.select{|e| e.type==:koji}.map(&:group_index).max + 1
|
34
34
|
kake_len = events.select{|e| e.type==:kake}.map(&:group_index).max + 1
|
@@ -1,19 +1,19 @@
|
|
1
1
|
module Toji
|
2
2
|
class Calendar
|
3
3
|
class DateColumn
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :rice_events
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
@
|
7
|
+
@rice_events = []
|
8
8
|
end
|
9
9
|
|
10
10
|
def <<(event)
|
11
|
-
@
|
11
|
+
@rice_events << event
|
12
12
|
end
|
13
13
|
alias_method :add, :<<
|
14
14
|
|
15
15
|
def event_groups
|
16
|
-
@
|
16
|
+
@rice_events.group_by {|e|
|
17
17
|
e.group_key
|
18
18
|
}.values
|
19
19
|
end
|
data/lib/toji/product.rb
CHANGED
@@ -1,65 +1,93 @@
|
|
1
1
|
require 'toji/product/event'
|
2
|
+
require 'toji/product/rice_event'
|
3
|
+
require 'toji/product/rice_event_group'
|
2
4
|
|
3
5
|
module Toji
|
4
6
|
module Product
|
5
7
|
attr_reader :reduce_key
|
6
8
|
attr_accessor :name
|
7
9
|
attr_accessor :recipe
|
8
|
-
attr_accessor :
|
10
|
+
attr_accessor :base_date
|
9
11
|
|
10
12
|
def koji_dates
|
11
|
-
date =
|
13
|
+
date = base_date
|
12
14
|
recipe.steps.map {|step|
|
13
15
|
date = date.next_day(step.koji_interval_days)
|
14
16
|
}
|
15
17
|
end
|
16
18
|
|
17
19
|
def kake_dates
|
18
|
-
date =
|
20
|
+
date = base_date
|
19
21
|
recipe.steps.map {|step|
|
20
22
|
date = date.next_day(step.kake_interval_days)
|
21
23
|
}
|
22
24
|
end
|
23
25
|
|
24
|
-
def
|
25
|
-
|
26
|
+
def squeeze_date
|
27
|
+
base_date.next_day(recipe.squeeze_interval_days)
|
28
|
+
end
|
26
29
|
|
27
|
-
|
28
|
-
|
30
|
+
def koji_events
|
31
|
+
koji_dates.map.with_index {|date,i|
|
32
|
+
RiceEvent.new(
|
33
|
+
product: self,
|
34
|
+
type: :koji,
|
35
|
+
index: i,
|
36
|
+
group_index: koji_dates.find_index(date),
|
37
|
+
date: date,
|
38
|
+
weight: recipe.steps[i].koji,
|
39
|
+
)
|
29
40
|
}
|
41
|
+
end
|
30
42
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
43
|
+
def kake_events
|
44
|
+
kake_dates.map.with_index {|date,i|
|
45
|
+
RiceEvent.new(
|
46
|
+
product: self,
|
47
|
+
type: :kake,
|
48
|
+
index: i,
|
49
|
+
group_index: kake_dates.find_index(date),
|
50
|
+
date: date,
|
51
|
+
weight: recipe.steps[i].kake,
|
52
|
+
)
|
53
|
+
}
|
54
|
+
end
|
41
55
|
|
42
|
-
|
56
|
+
def rice_events
|
57
|
+
koji_events + kake_events
|
43
58
|
end
|
44
59
|
|
45
|
-
def
|
46
|
-
|
60
|
+
def koji_event_groups
|
61
|
+
koji_events.select{|event|
|
62
|
+
0<event.weight
|
63
|
+
}.group_by{|event|
|
47
64
|
event.group_key
|
48
65
|
}.map {|group_key,events|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
if 1<breakdown.length
|
53
|
-
breakdown = breakdown.select{|event| 0<event[:weight]}
|
54
|
-
end
|
66
|
+
RiceEventGroup.new(events)
|
67
|
+
}
|
68
|
+
end
|
55
69
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
70
|
+
def kake_event_groups
|
71
|
+
kake_events.select{|event|
|
72
|
+
0<event.weight
|
73
|
+
}.group_by{|event|
|
74
|
+
event.group_key
|
75
|
+
}.map {|group_key,events|
|
76
|
+
RiceEventGroup.new(events)
|
62
77
|
}
|
63
78
|
end
|
79
|
+
|
80
|
+
def rice_event_groups
|
81
|
+
koji_event_groups + kake_event_groups
|
82
|
+
end
|
83
|
+
|
84
|
+
def events
|
85
|
+
events = []
|
86
|
+
|
87
|
+
events += rice_event_groups
|
88
|
+
events << Event.new(squeeze_date, :squeeze)
|
89
|
+
|
90
|
+
events
|
91
|
+
end
|
64
92
|
end
|
65
93
|
end
|
data/lib/toji/product/event.rb
CHANGED
@@ -1,43 +1,12 @@
|
|
1
1
|
module Toji
|
2
2
|
module Product
|
3
3
|
class Event
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :date
|
5
5
|
attr_reader :type
|
6
|
-
attr_reader :index
|
7
|
-
|
8
|
-
def initialize(product, type, index)
|
9
|
-
@product = product
|
10
|
-
@type = type
|
11
|
-
@index = index
|
12
|
-
end
|
13
|
-
|
14
|
-
def date
|
15
|
-
method = "#{@type}_dates".to_sym
|
16
|
-
@product.send(method)[@index]
|
17
|
-
end
|
18
|
-
|
19
|
-
def group_index
|
20
|
-
method = "#{@type}_dates".to_sym
|
21
|
-
dates = @product.send(method)
|
22
|
-
date = dates[@index]
|
23
6
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
dates.index(date)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def group_key
|
32
|
-
a = []
|
33
|
-
a << product.reduce_key
|
34
|
-
a << type
|
35
|
-
a << group_index
|
36
|
-
a.map(&:to_s).join(":")
|
37
|
-
end
|
38
|
-
|
39
|
-
def weight
|
40
|
-
@product.recipe.steps[@index].send(@type)
|
7
|
+
def initialize(date, type)
|
8
|
+
@date = date
|
9
|
+
@type = type
|
41
10
|
end
|
42
11
|
end
|
43
12
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'toji/product/event'
|
2
|
+
|
3
|
+
module Toji
|
4
|
+
module Product
|
5
|
+
class RiceEvent < Event
|
6
|
+
attr_reader :product
|
7
|
+
attr_reader :index
|
8
|
+
attr_reader :group_index
|
9
|
+
attr_reader :weight
|
10
|
+
|
11
|
+
def initialize(product:, type:, index:, group_index:, date:, weight:)
|
12
|
+
super(date, type)
|
13
|
+
@product = product
|
14
|
+
@index = index
|
15
|
+
@group_index = group_index
|
16
|
+
@weight = weight
|
17
|
+
end
|
18
|
+
|
19
|
+
def group_key
|
20
|
+
a = []
|
21
|
+
a << product.reduce_key
|
22
|
+
a << type
|
23
|
+
a << group_index
|
24
|
+
a.map(&:to_s).join(":")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'toji/product/event'
|
2
|
+
|
3
|
+
module Toji
|
4
|
+
module Product
|
5
|
+
class RiceEventGroup < Event
|
6
|
+
attr_reader :breakdown
|
7
|
+
|
8
|
+
def initialize(events)
|
9
|
+
o = events.first
|
10
|
+
super(o&.date, o&.type)
|
11
|
+
@breakdown = events
|
12
|
+
end
|
13
|
+
|
14
|
+
def weight
|
15
|
+
@breakdown.map(&:weight).sum
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/toji/recipe.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
require 'toji/recipe/step'
|
2
|
+
require 'toji/recipe/ab_expect'
|
2
3
|
|
3
4
|
module Toji
|
4
5
|
module Recipe
|
5
6
|
attr_accessor :steps
|
7
|
+
attr_accessor :has_moto
|
8
|
+
attr_accessor :has_moromi
|
9
|
+
attr_accessor :ab_coef
|
10
|
+
attr_accessor :ab_expects
|
11
|
+
attr_accessor :squeeze_interval_days
|
6
12
|
|
7
13
|
def scale(rice_total)
|
8
14
|
rate = rice_total / steps.map(&:rice_total).sum
|
@@ -12,6 +18,11 @@ module Toji
|
|
12
18
|
|
13
19
|
self.class.new.tap {|o|
|
14
20
|
o.steps = new_steps
|
21
|
+
o.has_moto = has_moto
|
22
|
+
o.has_moromi = has_moromi
|
23
|
+
o.ab_coef = ab_coef
|
24
|
+
o.ab_expects = ab_expects.deep_dup
|
25
|
+
o.squeeze_interval_days = squeeze_interval_days
|
15
26
|
}
|
16
27
|
end
|
17
28
|
|
@@ -22,6 +33,11 @@ module Toji
|
|
22
33
|
|
23
34
|
self.class.new.tap {|o|
|
24
35
|
o.steps = new_steps
|
36
|
+
o.has_moto = has_moto
|
37
|
+
o.has_moromi = has_moromi
|
38
|
+
o.ab_coef = ab_coef
|
39
|
+
o.ab_expects = ab_expects.deep_dup
|
40
|
+
o.squeeze_interval_days = squeeze_interval_days
|
25
41
|
}
|
26
42
|
end
|
27
43
|
|
@@ -35,12 +51,12 @@ module Toji
|
|
35
51
|
end
|
36
52
|
|
37
53
|
# 酒母歩合の累計
|
38
|
-
def
|
54
|
+
def cumulative_moto_rates
|
39
55
|
rice_total = steps.map(&:rice_total)
|
40
|
-
|
56
|
+
moto = rice_total.first
|
41
57
|
|
42
58
|
rice_total.map.with_index {|x,i|
|
43
|
-
|
59
|
+
moto / rice_total[0..i].inject(&:+)
|
44
60
|
}
|
45
61
|
end
|
46
62
|
|
@@ -50,8 +66,8 @@ module Toji
|
|
50
66
|
# 汲水歩合が大きい高温糖化酒母では6%程度である
|
51
67
|
#
|
52
68
|
# 出典: 酒造教本 P96
|
53
|
-
def
|
54
|
-
|
69
|
+
def moto_rate
|
70
|
+
cumulative_moto_rates.last || 0.0
|
55
71
|
end
|
56
72
|
|
57
73
|
# 白米比率
|
data/lib/toji/recipe/step.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
module Toji
|
2
2
|
module Recipe
|
3
3
|
module Step
|
4
|
-
attr_accessor :name
|
5
|
-
attr_accessor :kake
|
6
4
|
attr_accessor :koji
|
5
|
+
attr_accessor :koji_soaked_rate
|
6
|
+
attr_accessor :koji_steamed_rate
|
7
|
+
attr_accessor :koji_dekoji_rate
|
8
|
+
attr_accessor :koji_interval_days
|
9
|
+
|
10
|
+
attr_accessor :kake
|
11
|
+
attr_accessor :kake_soaked_rate
|
12
|
+
attr_accessor :kake_steamed_rate
|
13
|
+
attr_accessor :kake_interval_days
|
14
|
+
|
7
15
|
attr_accessor :water
|
8
16
|
attr_accessor :lactic_acid
|
9
17
|
attr_accessor :alcohol
|
10
18
|
attr_accessor :yeast
|
11
|
-
attr_accessor :koji_interval_days
|
12
|
-
attr_accessor :kake_interval_days
|
13
19
|
|
14
20
|
# 総米
|
15
21
|
def rice_total
|
@@ -46,30 +52,42 @@ module Toji
|
|
46
52
|
end
|
47
53
|
|
48
54
|
self.class.new.tap {|o|
|
49
|
-
o.name = name
|
50
|
-
o.kake = kake.to_f.round(ndigit, half: half)
|
51
55
|
o.koji = koji.to_f.round(ndigit, half: half)
|
56
|
+
o.koji_soaked_rate = koji_soaked_rate.to_f
|
57
|
+
o.koji_steamed_rate = koji_steamed_rate.to_f
|
58
|
+
o.koji_dekoji_rate = koji_dekoji_rate.to_f
|
59
|
+
o.koji_interval_days = koji_interval_days.to_i
|
60
|
+
|
61
|
+
o.kake = kake.to_f.round(ndigit, half: half)
|
62
|
+
o.kake_soaked_rate = kake_soaked_rate.to_f
|
63
|
+
o.kake_steamed_rate = kake_steamed_rate.to_f
|
64
|
+
o.kake_interval_days = kake_interval_days.to_i
|
65
|
+
|
52
66
|
o.water = water.to_f.round(ndigit, half: half)
|
53
67
|
o.lactic_acid = lactic_acid.to_f.round(mini_ndigit, half: half)
|
54
68
|
o.alcohol = alcohol.to_f.round(ndigit, half: half)
|
55
69
|
o.yeast = yeast.to_f.round(mini_ndigit, half: half)
|
56
|
-
o.koji_interval_days = koji_interval_days.to_i
|
57
|
-
o.kake_interval_days = kake_interval_days.to_i
|
58
70
|
}
|
59
71
|
end
|
60
72
|
|
61
73
|
def +(other)
|
62
74
|
if Step===other
|
63
75
|
self.class.new.tap {|o|
|
64
|
-
o.name = name
|
65
|
-
o.kake = kake.to_f + other.kake.to_f
|
66
76
|
o.koji = koji.to_f + other.koji.to_f
|
77
|
+
o.koji_soaked_rate = koji_soaked_rate.to_f
|
78
|
+
o.koji_steamed_rate = koji_steamed_rate.to_f
|
79
|
+
o.koji_dekoji_rate = koji_dekoji_rate.to_f
|
80
|
+
o.koji_interval_days = koji_interval_days.to_i
|
81
|
+
|
82
|
+
o.kake = kake.to_f + other.kake.to_f
|
83
|
+
o.kake_soaked_rate = kake_soaked_rate.to_f
|
84
|
+
o.kake_steamed_rate = kake_steamed_rate.to_f
|
85
|
+
o.kake_interval_days = kake_interval_days.to_i
|
86
|
+
|
67
87
|
o.water = water.to_f + other.water.to_f
|
68
88
|
o.lactic_acid = lactic_acid.to_f + other.lactic_acid.to_f
|
69
89
|
o.alcohol = alcohol.to_f + other.alcohol.to_f
|
70
90
|
o.yeast = yeast.to_f + other.yeast.to_f
|
71
|
-
o.koji_interval_days = koji_interval_days.to_i
|
72
|
-
o.kake_interval_days = kake_interval_days.to_i
|
73
91
|
}
|
74
92
|
else
|
75
93
|
x, y = other.coerce(self)
|
@@ -80,15 +98,21 @@ module Toji
|
|
80
98
|
def *(other)
|
81
99
|
if Integer===other || Float===other
|
82
100
|
self.class.new.tap {|o|
|
83
|
-
o.name = name
|
84
|
-
o.kake = kake.to_f * other
|
85
101
|
o.koji = koji.to_f * other
|
102
|
+
o.koji_soaked_rate = koji_soaked_rate.to_f
|
103
|
+
o.koji_steamed_rate = koji_steamed_rate.to_f
|
104
|
+
o.koji_dekoji_rate = koji_dekoji_rate.to_f
|
105
|
+
o.koji_interval_days = koji_interval_days.to_i
|
106
|
+
|
107
|
+
o.kake = kake.to_f * other
|
108
|
+
o.kake_soaked_rate = kake_soaked_rate.to_f
|
109
|
+
o.kake_steamed_rate = kake_steamed_rate.to_f
|
110
|
+
o.kake_interval_days = kake_interval_days.to_i
|
111
|
+
|
86
112
|
o.water = water.to_f * other
|
87
113
|
o.lactic_acid = lactic_acid.to_f * other
|
88
114
|
o.alcohol = alcohol.to_f * other
|
89
115
|
o.yeast = yeast.to_f * other
|
90
|
-
o.koji_interval_days = koji_interval_days.to_i
|
91
|
-
o.kake_interval_days = kake_interval_days.to_i
|
92
116
|
}
|
93
117
|
else
|
94
118
|
x, y = other.coerce(self)
|
data/lib/toji/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toji
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoshida Tetsuya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06
|
11
|
+
date: 2020-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -122,10 +122,9 @@ files:
|
|
122
122
|
- example/moromi.ipynb
|
123
123
|
- example/moromi.rb
|
124
124
|
- example/moromi.yaml
|
125
|
+
- example/moto.rb
|
126
|
+
- example/moto.yaml
|
125
127
|
- example/recipe.rb
|
126
|
-
- example/shubo.ipynb
|
127
|
-
- example/shubo.rb
|
128
|
-
- example/shubo.yaml
|
129
128
|
- lib/toji.rb
|
130
129
|
- lib/toji/brew.rb
|
131
130
|
- lib/toji/brew/base.rb
|
@@ -137,7 +136,7 @@ files:
|
|
137
136
|
- lib/toji/brew/graph/progress.rb
|
138
137
|
- lib/toji/brew/koji.rb
|
139
138
|
- lib/toji/brew/moromi.rb
|
140
|
-
- lib/toji/brew/
|
139
|
+
- lib/toji/brew/moto.rb
|
141
140
|
- lib/toji/brew/state.rb
|
142
141
|
- lib/toji/brew/wrapped_state.rb
|
143
142
|
- lib/toji/calendar.rb
|
@@ -162,7 +161,10 @@ files:
|
|
162
161
|
- lib/toji/ingredient/rice_rate.rb
|
163
162
|
- lib/toji/product.rb
|
164
163
|
- lib/toji/product/event.rb
|
164
|
+
- lib/toji/product/rice_event.rb
|
165
|
+
- lib/toji/product/rice_event_group.rb
|
165
166
|
- lib/toji/recipe.rb
|
167
|
+
- lib/toji/recipe/ab_expect.rb
|
166
168
|
- lib/toji/recipe/step.rb
|
167
169
|
- lib/toji/version.rb
|
168
170
|
- toji.gemspec
|
data/example/shubo.ipynb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "code",
|
5
|
-
"execution_count": 1,
|
6
|
-
"metadata": {},
|
7
|
-
"outputs": [
|
8
|
-
{
|
9
|
-
"data": {
|
10
|
-
"text/html": [
|
11
|
-
"\n",
|
12
|
-
" <script>\n",
|
13
|
-
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
14
|
-
" </script>\n",
|
15
|
-
"\n",
|
16
|
-
"\n",
|
17
|
-
"<div id=\"105867eb-e572-490c-8509-e506179e76ad\" style=\"height: 100%; width: 100%;\"></div>\n",
|
18
|
-
"\n",
|
19
|
-
"<script>\n",
|
20
|
-
" require(['plotly'], function(Plotly) { \n",
|
21
|
-
"Plotly.newPlot(\n",
|
22
|
-
" '105867eb-e572-490c-8509-e506179e76ad',\n",
|
23
|
-
" [{\"x\":[0.0,3600.0,86400.0,172800.0,172801.0,259200.0,259201.0,345600.0,345601.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0],\"y\":[12.0,20.0,14.0,8.0,11.0,10.0,13.0,12.0,15.0,14.0,20.0,20.0,20.0,20.0,15.0,12.0,10.0,9.0],\"text\":[\"01/16 00:00\",\"01/16 01:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\"],\"name\":\"temps\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#1f77b4\"}},{\"x\":[86400.0,172800.0,259200.0,345600.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0],\"y\":[15.0,16.0,16.5,17.0,17.0,17.0,14.0,12.0,9.0,8.0,7.0,6.0,5.0],\"text\":[\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\"],\"name\":\"baume\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#9467bd\"}},{\"x\":[0.0,3600.0,86400.0,172800.0,259200.0,345600.0,432000.0,518400.0,604800.0,691200.0,777600.0,864000.0,950400.0,1036800.0,1123200.0],\"y\":[13.0,13.0,13.0,13.0,13.5,13.5,14.0,14.5,15.5,16.0,16.0,16.5,17.0,17.5,17.5],\"text\":[\"01/16 00:00\",\"01/16 01:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\"],\"name\":\"acid\",\"line\":{\"dash\":\"solid\",\"shape\":\"linear\"},\"marker\":{\"color\":\"#8c564b\"}}],\n",
|
24
|
-
" {\"xaxis\":{\"dtick\":86400,\"tickvals\":[0,86400,172800,259200,345600,432000,518400,604800,691200,777600,864000,950400,1036800,1123200],\"ticktext\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\"]},\"annotations\":[{\"x\":0.0,\"y\":12.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"水麹\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":3600.0,\"y\":20.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"仕込み\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":86400.0,\"y\":14.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"打瀬\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40},{\"x\":777600.0,\"y\":20.0,\"xref\":\"x\",\"yref\":\"y\",\"text\":\"分け\",\"showarrow\":true,\"arrowhead\":1,\"ax\":0,\"ay\":-40}]},\n",
|
25
|
-
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
26
|
-
")\n",
|
27
|
-
"\n",
|
28
|
-
"window.addEventListener('resize', function() {\n",
|
29
|
-
" Plotly.Plots.resize(document.getElementById('105867eb-e572-490c-8509-e506179e76ad'))\n",
|
30
|
-
"})\n",
|
31
|
-
" }) \n",
|
32
|
-
"</script>"
|
33
|
-
],
|
34
|
-
"text/plain": [
|
35
|
-
"#<Plotly::Offline::HTML:0x00007f983ea69c48 @id=\"105867eb-e572-490c-8509-e506179e76ad\", @data=[{:x=>[0.0, 3600.0, 86400.0, 172800.0, 172801.0, 259200.0, 259201.0, 345600.0, 345601.0, 432000.0, 518400.0, 604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0], :y=>[12.0, 20.0, 14.0, 8.0, 11.0, 10.0, 13.0, 12.0, 15.0, 14.0, 20.0, 20.0, 20.0, 20.0, 15.0, 12.0, 10.0, 9.0], :text=>[\"01/16 00:00\", \"01/16 01:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\"], :name=>\"temps\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#1f77b4\"}}, {:x=>[86400.0, 172800.0, 259200.0, 345600.0, 432000.0, 518400.0, 604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0], :y=>[15.0, 16.0, 16.5, 17.0, 17.0, 17.0, 14.0, 12.0, 9.0, 8.0, 7.0, 6.0, 5.0], :text=>[\"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\"], :name=>\"baume\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#9467bd\"}}, {:x=>[0.0, 3600.0, 86400.0, 172800.0, 259200.0, 345600.0, 432000.0, 518400.0, 604800.0, 691200.0, 777600.0, 864000.0, 950400.0, 1036800.0, 1123200.0], :y=>[13.0, 13.0, 13.0, 13.0, 13.5, 13.5, 14.0, 14.5, 15.5, 16.0, 16.0, 16.5, 17.0, 17.5, 17.5], :text=>[\"01/16 00:00\", \"01/16 01:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\"], :name=>\"acid\", :line=>{:dash=>:solid, :shape=>:linear}, :marker=>{:color=>\"#8c564b\"}}], @layout={:xaxis=>{:dtick=>86400, :tickvals=>[0, 86400, 172800, 259200, 345600, 432000, 518400, 604800, 691200, 777600, 864000, 950400, 1036800, 1123200], :ticktext=>[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\"]}, :annotations=>[{:x=>0.0, :y=>12.0, :xref=>\"x\", :yref=>\"y\", :text=>\"水麹\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>3600.0, :y=>20.0, :xref=>\"x\", :yref=>\"y\", :text=>\"仕込み\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>86400.0, :y=>14.0, :xref=>\"x\", :yref=>\"y\", :text=>\"打瀬\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}, {:x=>777600.0, :y=>20.0, :xref=>\"x\", :yref=>\"y\", :text=>\"分け\", :showarrow=>true, :arrowhead=>1, :ax=>0, :ay=>-40}]}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
36
|
-
]
|
37
|
-
},
|
38
|
-
"metadata": {},
|
39
|
-
"output_type": "display_data"
|
40
|
-
},
|
41
|
-
{
|
42
|
-
"data": {
|
43
|
-
"text/html": [
|
44
|
-
"\n",
|
45
|
-
" <script>\n",
|
46
|
-
" requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n",
|
47
|
-
" </script>\n",
|
48
|
-
"\n",
|
49
|
-
"\n",
|
50
|
-
"<div id=\"23560ab9-b0dc-4006-9779-b9219ab608c6\" style=\"height: 100%; width: 100%;\"></div>\n",
|
51
|
-
"\n",
|
52
|
-
"<script>\n",
|
53
|
-
" require(['plotly'], function(Plotly) { \n",
|
54
|
-
"Plotly.newPlot(\n",
|
55
|
-
" '23560ab9-b0dc-4006-9779-b9219ab608c6',\n",
|
56
|
-
" [{\"type\":\"table\",\"header\":{\"values\":[\"day_label\",\"display_time\",\"mark\",\"temps\",\"display_baume\",\"acid\",\"warmings\"]},\"cells\":{\"values\":[[\"1\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\"],[\"01/16 00:00\",\"01/16 01:00\",\"01/17 00:00\",\"01/18 00:00\",\"01/19 00:00\",\"01/20 00:00\",\"01/21 00:00\",\"01/22 00:00\",\"01/23 00:00\",\"01/24 00:00\",\"01/25 00:00\",\"01/26 00:00\",\"01/27 00:00\",\"01/28 00:00\",\"01/29 00:00\"],[\"水麹\",\"仕込み\",\"打瀬\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"分け\",\"\",\"\",\"\",\"\"],[\"12.0\",\"20.0\",\"14.0\",\"8.0, 11.0\",\"10.0, 13.0\",\"12.0, 15.0\",\"14.0\",\"20.0\",\"20.0\",\"20.0\",\"20.0\",\"15.0\",\"12.0\",\"10.0\",\"9.0\"],[\"\",\"\",15.0,16.0,16.5,17.0,17.0,17.0,14.0,12.0,9.0,8.0,7.0,6.0,5.0],[13.0,13.0,13.0,13.0,13.5,13.5,14.0,14.5,15.5,16.0,16.0,16.5,17.0,17.5,17.5],[\"\",\"\",\"\",\"暖気\",\"暖気\",\"暖気\",\"行火\",\"行火\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]]}}],\n",
|
57
|
-
" {\"height\":650},\n",
|
58
|
-
" {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n",
|
59
|
-
")\n",
|
60
|
-
"\n",
|
61
|
-
"window.addEventListener('resize', function() {\n",
|
62
|
-
" Plotly.Plots.resize(document.getElementById('23560ab9-b0dc-4006-9779-b9219ab608c6'))\n",
|
63
|
-
"})\n",
|
64
|
-
" }) \n",
|
65
|
-
"</script>"
|
66
|
-
],
|
67
|
-
"text/plain": [
|
68
|
-
"#<Plotly::Offline::HTML:0x00007f9841041718 @id=\"23560ab9-b0dc-4006-9779-b9219ab608c6\", @data=[{:type=>:table, :header=>{:values=>[:day_label, :display_time, :mark, :temps, :display_baume, :acid, :warmings]}, :cells=>{:values=>[[\"1\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\"], [\"01/16 00:00\", \"01/16 01:00\", \"01/17 00:00\", \"01/18 00:00\", \"01/19 00:00\", \"01/20 00:00\", \"01/21 00:00\", \"01/22 00:00\", \"01/23 00:00\", \"01/24 00:00\", \"01/25 00:00\", \"01/26 00:00\", \"01/27 00:00\", \"01/28 00:00\", \"01/29 00:00\"], [\"水麹\", \"仕込み\", \"打瀬\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"分け\", \"\", \"\", \"\", \"\"], [\"12.0\", \"20.0\", \"14.0\", \"8.0, 11.0\", \"10.0, 13.0\", \"12.0, 15.0\", \"14.0\", \"20.0\", \"20.0\", \"20.0\", \"20.0\", \"15.0\", \"12.0\", \"10.0\", \"9.0\"], [\"\", \"\", 15.0, 16.0, 16.5, 17.0, 17.0, 17.0, 14.0, 12.0, 9.0, 8.0, 7.0, 6.0, 5.0], [13.0, 13.0, 13.0, 13.0, 13.5, 13.5, 14.0, 14.5, 15.5, 16.0, 16.0, 16.5, 17.0, 17.5, 17.5], [\"\", \"\", \"\", \"暖気\", \"暖気\", \"暖気\", \"行火\", \"行火\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]]}}], @layout={:height=>650}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>"
|
69
|
-
]
|
70
|
-
},
|
71
|
-
"metadata": {},
|
72
|
-
"output_type": "display_data"
|
73
|
-
},
|
74
|
-
{
|
75
|
-
"data": {
|
76
|
-
"text/plain": [
|
77
|
-
"#<CZTop::Socket::PUB:0x7f984321b6b0 last_endpoint=\"tcp://127.0.0.1:56600\">"
|
78
|
-
]
|
79
|
-
},
|
80
|
-
"execution_count": 1,
|
81
|
-
"metadata": {},
|
82
|
-
"output_type": "execute_result"
|
83
|
-
}
|
84
|
-
],
|
85
|
-
"source": [
|
86
|
-
"$LOAD_PATH << File.dirname(__FILE__) + \"/../lib\"\n",
|
87
|
-
"require 'toji'\n",
|
88
|
-
"require './example_core'\n",
|
89
|
-
"require 'rbplotly'\n",
|
90
|
-
"\n",
|
91
|
-
"shubo = Example::Brew::Shubo.load_yaml_file(\"shubo.yaml\")\n",
|
92
|
-
"shubo.progress.plot.show\n",
|
93
|
-
"shubo.progress.table.tap {|t|\n",
|
94
|
-
" t.layout.height = 650\n",
|
95
|
-
"}.show"
|
96
|
-
]
|
97
|
-
},
|
98
|
-
{
|
99
|
-
"cell_type": "code",
|
100
|
-
"execution_count": null,
|
101
|
-
"metadata": {},
|
102
|
-
"outputs": [],
|
103
|
-
"source": []
|
104
|
-
}
|
105
|
-
],
|
106
|
-
"metadata": {
|
107
|
-
"kernelspec": {
|
108
|
-
"display_name": "Ruby 2.7.1",
|
109
|
-
"language": "ruby",
|
110
|
-
"name": "ruby"
|
111
|
-
},
|
112
|
-
"language_info": {
|
113
|
-
"file_extension": ".rb",
|
114
|
-
"mimetype": "application/x-ruby",
|
115
|
-
"name": "ruby",
|
116
|
-
"version": "2.6.3"
|
117
|
-
}
|
118
|
-
},
|
119
|
-
"nbformat": 4,
|
120
|
-
"nbformat_minor": 2
|
121
|
-
}
|