statsailr 0.7.1

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 (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +7 -0
  5. data/HISTORY.md +15 -0
  6. data/LICENSE.txt +675 -0
  7. data/README.md +287 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/example/blank.slr +3 -0
  12. data/example/category.slr +5 -0
  13. data/example/example_read.slr +10 -0
  14. data/example/iris.csv +151 -0
  15. data/example/mtcars.rda +0 -0
  16. data/example/new_mtcars.csv +33 -0
  17. data/example/new_mtcars.rda +0 -0
  18. data/example/plot_reg_example.slr +55 -0
  19. data/example/scatter.png +0 -0
  20. data/exe/sailr +54 -0
  21. data/exe/sailrREPL +75 -0
  22. data/lib/statsailr.rb +7 -0
  23. data/lib/statsailr/block_builder/sts_block.rb +167 -0
  24. data/lib/statsailr/block_builder/sts_block_parse_proc_opts.rb +168 -0
  25. data/lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb +52 -0
  26. data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_manager.rb +49 -0
  27. data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb +44 -0
  28. data/lib/statsailr/block_to_r/sts_block_to_r.rb +98 -0
  29. data/lib/statsailr/block_to_r/sts_lazy_func_gen.rb +236 -0
  30. data/lib/statsailr/block_to_r/top_stmt/top_stmt_to_r_func.rb +182 -0
  31. data/lib/statsailr/parser/sts_gram_node.rb +9 -0
  32. data/lib/statsailr/parser/sts_parse.output +831 -0
  33. data/lib/statsailr/parser/sts_parse.ry +132 -0
  34. data/lib/statsailr/parser/sts_parse.tab.rb +682 -0
  35. data/lib/statsailr/scanner/sample1.sts +37 -0
  36. data/lib/statsailr/scanner/sts_scanner.rb +433 -0
  37. data/lib/statsailr/scanner/test_sample1.rb +8 -0
  38. data/lib/statsailr/sts_build_exec.rb +304 -0
  39. data/lib/statsailr/sts_controller.rb +66 -0
  40. data/lib/statsailr/sts_output/output_manager.rb +192 -0
  41. data/lib/statsailr/sts_runner.rb +17 -0
  42. data/lib/statsailr/sts_server.rb +85 -0
  43. data/lib/statsailr/version.rb +3 -0
  44. data/statsailr.gemspec +32 -0
  45. metadata +133 -0
@@ -0,0 +1,17 @@
1
+ require_relative "sts_build_exec.rb"
2
+
3
+ module StatSailr
4
+ def self.run( **kw_args )
5
+
6
+ if FileTest.exist?( $script_file_path )
7
+ script_file = File.open( $script_file_path, "r")
8
+ script = script_file.read()
9
+ script_file.close()
10
+ else
11
+ raise( $script_file_path + ":StatSailr source file does not exit")
12
+ end
13
+
14
+ StatSailr.build_exec(script, initR_beforeExec: true, endR_afterExec: true, block_idx_start: 1, set_working_dir: File.dirname( $script_file_path ),
15
+ **kw_args )
16
+ end
17
+ end
@@ -0,0 +1,85 @@
1
+ require_relative "sts_build_exec.rb"
2
+
3
+ module StatSailr
4
+ module Service
5
+ def self.start( reader , writer , fork_or_thread: "fork", **kwparams )
6
+ if $service_started
7
+ puts "StatSailr::Service has already started"
8
+ return false
9
+ else
10
+ $service_started = true
11
+ end
12
+
13
+ child_exec = lambda{
14
+ p self
15
+ if fork_or_thread == "fork"
16
+ writer.close() # close child's writer
17
+ end
18
+ script = ""
19
+ block_idx = 1
20
+ @first_time = true
21
+
22
+ puts "Ready to input"
23
+ print "(^0^): "
24
+ while line = reader.gets() do # !exit is dealt by REPL.
25
+ if line[0] == "!"
26
+ if line =~ /^!exec/ || line =~ /^!!$/
27
+ ### Execute script ###
28
+ begin
29
+ if @first_time
30
+ num_executed = StatSailr.build_exec( script, initR_beforeExec: true, endR_afterExec: false , **kwparams ) # start R
31
+ @first_time = false
32
+ else
33
+ num_executed = StatSailr.build_exec( script, initR_beforeExec: false, endR_afterExec: false , block_idx_start: block_idx )
34
+ end
35
+ rescue RuntimeError => e
36
+ print e.backtrace.map.with_index{|elem, idx| idx.to_s + " " + elem }.reverse.join("\n")
37
+ puts " \e[1m#{e.message}\e[22m" # show in bold
38
+ if e.respond_to? "block_num_executed"
39
+ num_executed = e.block_num_executed
40
+ end
41
+ ensure
42
+ if num_executed.nil?
43
+ puts "Information about num_executed is not returned: set 0"
44
+ num_executed = 0
45
+ end
46
+ block_idx = block_idx + num_executed
47
+ end
48
+ script = ""
49
+ elsif line =~ /^!clear/
50
+ script = ""
51
+ puts "script is cleared"
52
+ elsif line =~ /^!script/
53
+ puts "script currently in queue"
54
+ puts script
55
+ else
56
+ puts "Unknown command line is ignored : " + line
57
+ puts "Available commends: !exec !exit !clear !script"
58
+ end
59
+ else
60
+ script << line
61
+ end
62
+ end # end of while
63
+
64
+ puts "Finish child process/thread"
65
+ reader.close()
66
+ puts "Reader pipe closed"
67
+ StatSailr.build_exec( " ", initR_beforeExec: false, endR_afterExec: true ) # stop R
68
+ $service_started = false
69
+ puts "R program finished"
70
+ } # end of lambda
71
+
72
+ case fork_or_thread
73
+ when "fork"
74
+ child_pid = fork &child_exec
75
+ reader.close() # close parent's reader
76
+ return child_pid
77
+ when "thread"
78
+ child_thread = Thread.start &child_exec
79
+ return child_thread
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+
@@ -0,0 +1,3 @@
1
+ module StatSailr
2
+ VERSION = "0.7.1"
3
+ end
data/statsailr.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ require_relative 'lib/statsailr/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "statsailr"
5
+ spec.version = StatSailr::VERSION
6
+ spec.authors = ["Toshihiro Umehara"]
7
+ spec.email = ["toshi@niceume.com"]
8
+
9
+ spec.summary = %q{Provides a platform to focus on statistics}
10
+ spec.description = %q{StatSailr is a Ruby program that enables users to manipulate data and to apply statistical procedures in an intuiitive way. Internally, StatSailr converts StatSailr script into R's internal representation via Ruby, and executes it. }
11
+ spec.homepage = "https://github.com/niceume/statsailr"
12
+ spec.license = "GPL-3.0"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
+
15
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ spec.metadata["changelog_uri"] = spec.homepage
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_runtime_dependency "r_bridge" , '~> 0.5', '>= 0.5.1'
31
+ spec.add_runtime_dependency "statsailr_procs_base" , '~> 0.1', '>= 0.1.0'
32
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: statsailr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ platform: ruby
6
+ authors:
7
+ - Toshihiro Umehara
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: r_bridge
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.5.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.5'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.5.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: statsailr_procs_base
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.1.0
53
+ description: 'StatSailr is a Ruby program that enables users to manipulate data and
54
+ to apply statistical procedures in an intuiitive way. Internally, StatSailr converts
55
+ StatSailr script into R''s internal representation via Ruby, and executes it. '
56
+ email:
57
+ - toshi@niceume.com
58
+ executables:
59
+ - sailr
60
+ - sailrREPL
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".gitignore"
65
+ - ".travis.yml"
66
+ - Gemfile
67
+ - HISTORY.md
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/console
72
+ - bin/setup
73
+ - example/blank.slr
74
+ - example/category.slr
75
+ - example/example_read.slr
76
+ - example/iris.csv
77
+ - example/mtcars.rda
78
+ - example/new_mtcars.csv
79
+ - example/new_mtcars.rda
80
+ - example/plot_reg_example.slr
81
+ - example/scatter.png
82
+ - exe/sailr
83
+ - exe/sailrREPL
84
+ - lib/statsailr.rb
85
+ - lib/statsailr/block_builder/sts_block.rb
86
+ - lib/statsailr/block_builder/sts_block_parse_proc_opts.rb
87
+ - lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb
88
+ - lib/statsailr/block_to_r/proc_setting_support/proc_setting_manager.rb
89
+ - lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb
90
+ - lib/statsailr/block_to_r/sts_block_to_r.rb
91
+ - lib/statsailr/block_to_r/sts_lazy_func_gen.rb
92
+ - lib/statsailr/block_to_r/top_stmt/top_stmt_to_r_func.rb
93
+ - lib/statsailr/parser/sts_gram_node.rb
94
+ - lib/statsailr/parser/sts_parse.output
95
+ - lib/statsailr/parser/sts_parse.ry
96
+ - lib/statsailr/parser/sts_parse.tab.rb
97
+ - lib/statsailr/scanner/sample1.sts
98
+ - lib/statsailr/scanner/sts_scanner.rb
99
+ - lib/statsailr/scanner/test_sample1.rb
100
+ - lib/statsailr/sts_build_exec.rb
101
+ - lib/statsailr/sts_controller.rb
102
+ - lib/statsailr/sts_output/output_manager.rb
103
+ - lib/statsailr/sts_runner.rb
104
+ - lib/statsailr/sts_server.rb
105
+ - lib/statsailr/version.rb
106
+ - statsailr.gemspec
107
+ homepage: https://github.com/niceume/statsailr
108
+ licenses:
109
+ - GPL-3.0
110
+ metadata:
111
+ homepage_uri: https://github.com/niceume/statsailr
112
+ source_code_uri: https://github.com/niceume/statsailr
113
+ changelog_uri: https://github.com/niceume/statsailr
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 2.3.0
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubygems_version: 3.1.4
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Provides a platform to focus on statistics
133
+ test_files: []