daru 0.1.3.1 → 0.1.4

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rspec +2 -1
  4. data/.rspec_formatter.rb +33 -0
  5. data/.rubocop.yml +26 -2
  6. data/History.md +38 -0
  7. data/README.md +22 -13
  8. data/Rakefile +50 -2
  9. data/benchmarks/csv_reading.rb +22 -0
  10. data/daru.gemspec +9 -2
  11. data/lib/daru.rb +36 -4
  12. data/lib/daru/accessors/array_wrapper.rb +6 -1
  13. data/lib/daru/accessors/dataframe_by_row.rb +10 -2
  14. data/lib/daru/accessors/gsl_wrapper.rb +1 -3
  15. data/lib/daru/accessors/nmatrix_wrapper.rb +9 -0
  16. data/lib/daru/category.rb +935 -0
  17. data/lib/daru/core/group_by.rb +29 -38
  18. data/lib/daru/core/merge.rb +186 -145
  19. data/lib/daru/core/query.rb +22 -11
  20. data/lib/daru/dataframe.rb +976 -885
  21. data/lib/daru/date_time/index.rb +166 -166
  22. data/lib/daru/date_time/offsets.rb +66 -77
  23. data/lib/daru/formatters/table.rb +54 -0
  24. data/lib/daru/helpers/array.rb +40 -0
  25. data/lib/daru/index.rb +476 -73
  26. data/lib/daru/io/io.rb +66 -45
  27. data/lib/daru/io/sql_data_source.rb +33 -62
  28. data/lib/daru/iruby/helpers.rb +38 -0
  29. data/lib/daru/iruby/templates/dataframe.html.erb +52 -0
  30. data/lib/daru/iruby/templates/dataframe_mi.html.erb +58 -0
  31. data/lib/daru/iruby/templates/multi_index.html.erb +12 -0
  32. data/lib/daru/iruby/templates/vector.html.erb +27 -0
  33. data/lib/daru/iruby/templates/vector_mi.html.erb +36 -0
  34. data/lib/daru/maths/arithmetic/dataframe.rb +16 -18
  35. data/lib/daru/maths/arithmetic/vector.rb +4 -6
  36. data/lib/daru/maths/statistics/dataframe.rb +8 -15
  37. data/lib/daru/maths/statistics/vector.rb +120 -98
  38. data/lib/daru/monkeys.rb +12 -40
  39. data/lib/daru/plotting/gruff.rb +3 -0
  40. data/lib/daru/plotting/gruff/category.rb +49 -0
  41. data/lib/daru/plotting/gruff/dataframe.rb +91 -0
  42. data/lib/daru/plotting/gruff/vector.rb +57 -0
  43. data/lib/daru/plotting/nyaplot.rb +3 -0
  44. data/lib/daru/plotting/nyaplot/category.rb +34 -0
  45. data/lib/daru/plotting/nyaplot/dataframe.rb +187 -0
  46. data/lib/daru/plotting/nyaplot/vector.rb +46 -0
  47. data/lib/daru/vector.rb +694 -421
  48. data/lib/daru/version.rb +1 -1
  49. data/profile/_base.rb +23 -0
  50. data/profile/df_to_a.rb +10 -0
  51. data/profile/filter.rb +13 -0
  52. data/profile/joining.rb +13 -0
  53. data/profile/sorting.rb +12 -0
  54. data/profile/vector_each_with_index.rb +9 -0
  55. data/spec/accessors/wrappers_spec.rb +2 -4
  56. data/spec/categorical_spec.rb +1734 -0
  57. data/spec/core/group_by_spec.rb +52 -2
  58. data/spec/core/merge_spec.rb +63 -2
  59. data/spec/core/query_spec.rb +236 -80
  60. data/spec/dataframe_spec.rb +1373 -79
  61. data/spec/date_time/data_spec.rb +3 -5
  62. data/spec/date_time/index_spec.rb +154 -17
  63. data/spec/date_time/offsets_spec.rb +3 -4
  64. data/spec/fixtures/empties.dat +2 -0
  65. data/spec/fixtures/strings.dat +2 -0
  66. data/spec/formatters/table_formatter_spec.rb +99 -0
  67. data/spec/helpers_spec.rb +8 -0
  68. data/spec/index/categorical_index_spec.rb +168 -0
  69. data/spec/index/index_spec.rb +283 -0
  70. data/spec/index/multi_index_spec.rb +570 -0
  71. data/spec/io/io_spec.rb +31 -4
  72. data/spec/io/sql_data_source_spec.rb +0 -1
  73. data/spec/iruby/dataframe_spec.rb +172 -0
  74. data/spec/iruby/helpers_spec.rb +49 -0
  75. data/spec/iruby/multi_index_spec.rb +37 -0
  76. data/spec/iruby/vector_spec.rb +107 -0
  77. data/spec/math/arithmetic/dataframe_spec.rb +71 -13
  78. data/spec/math/arithmetic/vector_spec.rb +8 -10
  79. data/spec/math/statistics/dataframe_spec.rb +3 -5
  80. data/spec/math/statistics/vector_spec.rb +45 -55
  81. data/spec/monkeys_spec.rb +32 -9
  82. data/spec/plotting/dataframe_spec.rb +386 -0
  83. data/spec/plotting/vector_spec.rb +230 -0
  84. data/spec/shared/vector_display_spec.rb +215 -0
  85. data/spec/spec_helper.rb +23 -0
  86. data/spec/vector_spec.rb +905 -138
  87. metadata +143 -11
  88. data/.rubocop_todo.yml +0 -44
  89. data/lib/daru/plotting/dataframe.rb +0 -104
  90. data/lib/daru/plotting/vector.rb +0 -38
  91. data/spec/daru_spec.rb +0 -58
  92. data/spec/index_spec.rb +0 -375
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.1
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sameer Deshmukh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-12 00:00:00.000000000 Z
11
+ date: 2016-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: backports
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: reportbuilder
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -17,7 +31,7 @@ dependencies:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
33
  version: '1.4'
20
- type: :runtime
34
+ type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
@@ -31,7 +45,7 @@ dependencies:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
47
  version: 1.1.1
34
- type: :runtime
48
+ type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '3.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec-its
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: awesome_print
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -262,6 +290,62 @@ dependencies:
262
290
  - - ">="
263
291
  - !ruby/object:Gem::Version
264
292
  version: 0.40.0
293
+ - !ruby/object:Gem::Dependency
294
+ name: ruby-prof
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: simplecov
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: nokogiri
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ - !ruby/object:Gem::Dependency
336
+ name: gruff
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: '0'
265
349
  description: |
266
350
  Daru (Data Analysis in RUby) is a library for analysis, manipulation and visualization
267
351
  of data. Daru works seamlessly accross interpreters and leverages interpreter-specific
@@ -277,8 +361,8 @@ extra_rdoc_files: []
277
361
  files:
278
362
  - ".gitignore"
279
363
  - ".rspec"
364
+ - ".rspec_formatter.rb"
280
365
  - ".rubocop.yml"
281
- - ".rubocop_todo.yml"
282
366
  - ".travis.yml"
283
367
  - CONTRIBUTING.md
284
368
  - Gemfile
@@ -287,6 +371,7 @@ files:
287
371
  - README.md
288
372
  - Rakefile
289
373
  - benchmarks/TradeoffData.csv
374
+ - benchmarks/csv_reading.rb
290
375
  - benchmarks/dataframe_creation.rb
291
376
  - benchmarks/duplicating.rb
292
377
  - benchmarks/group_by.rb
@@ -319,6 +404,7 @@ files:
319
404
  - lib/daru/accessors/gsl_wrapper.rb
320
405
  - lib/daru/accessors/mdarray_wrapper.rb
321
406
  - lib/daru/accessors/nmatrix_wrapper.rb
407
+ - lib/daru/category.rb
322
408
  - lib/daru/core/group_by.rb
323
409
  - lib/daru/core/merge.rb
324
410
  - lib/daru/core/query.rb
@@ -327,23 +413,43 @@ files:
327
413
  - lib/daru/date_time/offsets.rb
328
414
  - lib/daru/exceptions.rb
329
415
  - lib/daru/extensions/rserve.rb
416
+ - lib/daru/formatters/table.rb
417
+ - lib/daru/helpers/array.rb
330
418
  - lib/daru/index.rb
331
419
  - lib/daru/io/io.rb
332
420
  - lib/daru/io/sql_data_source.rb
421
+ - lib/daru/iruby/helpers.rb
422
+ - lib/daru/iruby/templates/dataframe.html.erb
423
+ - lib/daru/iruby/templates/dataframe_mi.html.erb
424
+ - lib/daru/iruby/templates/multi_index.html.erb
425
+ - lib/daru/iruby/templates/vector.html.erb
426
+ - lib/daru/iruby/templates/vector_mi.html.erb
333
427
  - lib/daru/maths/arithmetic/dataframe.rb
334
428
  - lib/daru/maths/arithmetic/vector.rb
335
429
  - lib/daru/maths/statistics/dataframe.rb
336
430
  - lib/daru/maths/statistics/vector.rb
337
431
  - lib/daru/monkeys.rb
338
- - lib/daru/plotting/dataframe.rb
339
- - lib/daru/plotting/vector.rb
432
+ - lib/daru/plotting/gruff.rb
433
+ - lib/daru/plotting/gruff/category.rb
434
+ - lib/daru/plotting/gruff/dataframe.rb
435
+ - lib/daru/plotting/gruff/vector.rb
436
+ - lib/daru/plotting/nyaplot.rb
437
+ - lib/daru/plotting/nyaplot/category.rb
438
+ - lib/daru/plotting/nyaplot/dataframe.rb
439
+ - lib/daru/plotting/nyaplot/vector.rb
340
440
  - lib/daru/vector.rb
341
441
  - lib/daru/version.rb
442
+ - profile/_base.rb
443
+ - profile/df_to_a.rb
444
+ - profile/filter.rb
445
+ - profile/joining.rb
446
+ - profile/sorting.rb
447
+ - profile/vector_each_with_index.rb
342
448
  - spec/accessors/wrappers_spec.rb
449
+ - spec/categorical_spec.rb
343
450
  - spec/core/group_by_spec.rb
344
451
  - spec/core/merge_spec.rb
345
452
  - spec/core/query_spec.rb
346
- - spec/daru_spec.rb
347
453
  - spec/dataframe_spec.rb
348
454
  - spec/date_time/data_spec.rb
349
455
  - spec/date_time/index_spec.rb
@@ -351,21 +457,34 @@ files:
351
457
  - spec/extensions/rserve_spec.rb
352
458
  - spec/fixtures/bank2.dat
353
459
  - spec/fixtures/countries.json
460
+ - spec/fixtures/empties.dat
354
461
  - spec/fixtures/matrix_test.csv
355
462
  - spec/fixtures/music_data.tsv
356
463
  - spec/fixtures/repeated_fields.csv
357
464
  - spec/fixtures/sales-funnel.csv
358
465
  - spec/fixtures/scientific_notation.csv
359
466
  - spec/fixtures/stock_data.csv
467
+ - spec/fixtures/strings.dat
360
468
  - spec/fixtures/test_xls.xls
361
- - spec/index_spec.rb
469
+ - spec/formatters/table_formatter_spec.rb
470
+ - spec/helpers_spec.rb
471
+ - spec/index/categorical_index_spec.rb
472
+ - spec/index/index_spec.rb
473
+ - spec/index/multi_index_spec.rb
362
474
  - spec/io/io_spec.rb
363
475
  - spec/io/sql_data_source_spec.rb
476
+ - spec/iruby/dataframe_spec.rb
477
+ - spec/iruby/helpers_spec.rb
478
+ - spec/iruby/multi_index_spec.rb
479
+ - spec/iruby/vector_spec.rb
364
480
  - spec/math/arithmetic/dataframe_spec.rb
365
481
  - spec/math/arithmetic/vector_spec.rb
366
482
  - spec/math/statistics/dataframe_spec.rb
367
483
  - spec/math/statistics/vector_spec.rb
368
484
  - spec/monkeys_spec.rb
485
+ - spec/plotting/dataframe_spec.rb
486
+ - spec/plotting/vector_spec.rb
487
+ - spec/shared/vector_display_spec.rb
369
488
  - spec/spec_helper.rb
370
489
  - spec/support/database_helper.rb
371
490
  - spec/vector_spec.rb
@@ -414,10 +533,10 @@ specification_version: 4
414
533
  summary: Data Analysis in RUby
415
534
  test_files:
416
535
  - spec/accessors/wrappers_spec.rb
536
+ - spec/categorical_spec.rb
417
537
  - spec/core/group_by_spec.rb
418
538
  - spec/core/merge_spec.rb
419
539
  - spec/core/query_spec.rb
420
- - spec/daru_spec.rb
421
540
  - spec/dataframe_spec.rb
422
541
  - spec/date_time/data_spec.rb
423
542
  - spec/date_time/index_spec.rb
@@ -425,21 +544,34 @@ test_files:
425
544
  - spec/extensions/rserve_spec.rb
426
545
  - spec/fixtures/bank2.dat
427
546
  - spec/fixtures/countries.json
547
+ - spec/fixtures/empties.dat
428
548
  - spec/fixtures/matrix_test.csv
429
549
  - spec/fixtures/music_data.tsv
430
550
  - spec/fixtures/repeated_fields.csv
431
551
  - spec/fixtures/sales-funnel.csv
432
552
  - spec/fixtures/scientific_notation.csv
433
553
  - spec/fixtures/stock_data.csv
554
+ - spec/fixtures/strings.dat
434
555
  - spec/fixtures/test_xls.xls
435
- - spec/index_spec.rb
556
+ - spec/formatters/table_formatter_spec.rb
557
+ - spec/helpers_spec.rb
558
+ - spec/index/categorical_index_spec.rb
559
+ - spec/index/index_spec.rb
560
+ - spec/index/multi_index_spec.rb
436
561
  - spec/io/io_spec.rb
437
562
  - spec/io/sql_data_source_spec.rb
563
+ - spec/iruby/dataframe_spec.rb
564
+ - spec/iruby/helpers_spec.rb
565
+ - spec/iruby/multi_index_spec.rb
566
+ - spec/iruby/vector_spec.rb
438
567
  - spec/math/arithmetic/dataframe_spec.rb
439
568
  - spec/math/arithmetic/vector_spec.rb
440
569
  - spec/math/statistics/dataframe_spec.rb
441
570
  - spec/math/statistics/vector_spec.rb
442
571
  - spec/monkeys_spec.rb
572
+ - spec/plotting/dataframe_spec.rb
573
+ - spec/plotting/vector_spec.rb
574
+ - spec/shared/vector_display_spec.rb
443
575
  - spec/spec_helper.rb
444
576
  - spec/support/database_helper.rb
445
577
  - spec/vector_spec.rb
@@ -1,44 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2016-05-06 16:48:54 +0300 using RuboCop version 0.39.0.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 66
10
- Metrics/AbcSize:
11
- Max: 110
12
-
13
- # Offense count: 6
14
- Metrics/BlockNesting:
15
- Max: 6
16
-
17
- # Offense count: 6
18
- # Configuration parameters: CountComments.
19
- Metrics/ClassLength:
20
- Max: 1400
21
-
22
- # Offense count: 26
23
- Metrics/CyclomaticComplexity:
24
- Max: 22
25
-
26
- # Offense count: 273
27
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
28
- # URISchemes: http, https
29
- Metrics/LineLength:
30
- Max: 164
31
-
32
- # Offense count: 81
33
- # Configuration parameters: CountComments.
34
- Metrics/MethodLength:
35
- Max: 100
36
-
37
- # Offense count: 3
38
- # Configuration parameters: CountComments.
39
- Metrics/ModuleLength:
40
- Max: 419
41
-
42
- # Offense count: 22
43
- Metrics/PerceivedComplexity:
44
- Max: 28
@@ -1,104 +0,0 @@
1
- module Daru
2
- module Plotting
3
- module DataFrame
4
- # Plots a DataFrame with Nyaplot on IRuby using the given options. Yields
5
- # the corresponding Nyaplot::Plot object and the Nyaplot::Diagram object
6
- # to the block, if it is specified. See the nyaplot docs for info on how to
7
- # further use these objects.
8
- #
9
- # Detailed instructions on use of the plotting API can be found in the
10
- # notebooks whose links you can find in the README.
11
- #
12
- # == Options
13
- #
14
- # * +:type+ - Type of plot. Can be :scatter, :bar, :histogram, :line or :box.
15
- # * +:x+ - Vector to be used for X co-ordinates.
16
- # * +:y+ - Vector to be used for Y co-ordinates.
17
- #
18
- # == Usage
19
- # # Simple bar chart
20
- # df = Daru::DataFrame.new({a:['A', 'B', 'C', 'D', 'E'], b:[10,20,30,40,50]})
21
- # df.plot type: :bar, x: :a, y: :b
22
- def plot opts={}
23
- options = {
24
- type: :scatter
25
- }.merge(opts)
26
-
27
- plot = Nyaplot::Plot.new
28
- types = extract_option :type, options
29
-
30
- diagram =
31
- case
32
- when !([:scatter, :bar, :line, :histogram] & types).empty?
33
- if single_diagram? options
34
- add_single_diagram plot, options
35
- else
36
- add_multiple_diagrams plot, options
37
- end
38
- when types.include?(:box)
39
- numeric = only_numerics(clone: false).dup_only_valid
40
-
41
- plot.add_with_df(
42
- numeric.to_nyaplotdf,
43
- :box, *numeric.vectors.to_a
44
- )
45
- end
46
-
47
- yield(plot, diagram) if block_given?
48
-
49
- plot.show
50
- end
51
-
52
- private
53
-
54
- def single_diagram? options
55
- options[:x] and options[:x].is_a?(Symbol)
56
- end
57
-
58
- def add_single_diagram plot, options
59
- args = [
60
- to_nyaplotdf,
61
- options[:type],
62
- options[:x]
63
- ]
64
-
65
- args << options[:y] if options[:y]
66
-
67
- plot.add_with_df(*args)
68
- end
69
-
70
- def add_multiple_diagrams plot, options
71
- types = extract_option :type, options
72
- x_vecs = extract_option :x, options
73
- y_vecs = extract_option :y, options
74
-
75
- diagrams = []
76
- nyaplot_df = to_nyaplotdf
77
- total = x_vecs.size
78
- types = types.size < total ? types*total : types
79
-
80
- (0...total).each do |i|
81
- diagrams << plot.add_with_df(
82
- nyaplot_df,
83
- types[i],
84
- x_vecs[i],
85
- y_vecs[i]
86
- )
87
- end
88
-
89
- diagrams
90
- end
91
-
92
- def extract_option opt, options
93
- if options[opt]
94
- o = options[opt]
95
- o.is_a?(Array) ? o : [o]
96
- else
97
- arr = options.keys
98
- arr.keep_if { |a| a =~ Regexp.new("\\A#{opt}") }.sort
99
- arr.map { |a| options[a] }
100
- end
101
- end
102
- end
103
- end
104
- end if Daru.has_nyaplot?
@@ -1,38 +0,0 @@
1
- module Daru
2
- module Plotting
3
- module Vector
4
- # Plots a Vector with Nyaplot on IRuby using the given options. Yields the
5
- # plot object (Nyaplot::Plot) and the diagram object (Nyaplot::Diagram)
6
- # to the block, which can be used for setting various options as per the
7
- # Nyaplot API.
8
- #
9
- # == Options
10
- # type (:scatter, :bar, :histogram), title, x_label, y_label, color(true/false)
11
- #
12
- # == Usage
13
- # vector = Daru::Vector.new [10,20,30,40], [:one, :two, :three, :four]
14
- # vector.plot(type: :bar) do |plot|
15
- # plot.title "My first plot"
16
- # plot.width 1200
17
- # end
18
- def plot opts={}
19
- options = {
20
- type: :scatter
21
- }.merge(opts)
22
-
23
- x_axis = options[:type] == :scatter ? Array.new(@size) { |i| i } : @index.to_a
24
- plot = Nyaplot::Plot.new
25
- diagram =
26
- if [:box, :histogram].include? options[:type]
27
- plot.add(options[:type], @data.to_a)
28
- else
29
- plot.add(options[:type], x_axis, @data.to_a)
30
- end
31
-
32
- yield plot, diagram if block_given?
33
-
34
- plot.show
35
- end
36
- end
37
- end
38
- end if Daru.has_nyaplot?