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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +6 -0
- data/Gemfile +7 -0
- data/HISTORY.md +15 -0
- data/LICENSE.txt +675 -0
- data/README.md +287 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/example/blank.slr +3 -0
- data/example/category.slr +5 -0
- data/example/example_read.slr +10 -0
- data/example/iris.csv +151 -0
- data/example/mtcars.rda +0 -0
- data/example/new_mtcars.csv +33 -0
- data/example/new_mtcars.rda +0 -0
- data/example/plot_reg_example.slr +55 -0
- data/example/scatter.png +0 -0
- data/exe/sailr +54 -0
- data/exe/sailrREPL +75 -0
- data/lib/statsailr.rb +7 -0
- data/lib/statsailr/block_builder/sts_block.rb +167 -0
- data/lib/statsailr/block_builder/sts_block_parse_proc_opts.rb +168 -0
- data/lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb +52 -0
- data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_manager.rb +49 -0
- data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb +44 -0
- data/lib/statsailr/block_to_r/sts_block_to_r.rb +98 -0
- data/lib/statsailr/block_to_r/sts_lazy_func_gen.rb +236 -0
- data/lib/statsailr/block_to_r/top_stmt/top_stmt_to_r_func.rb +182 -0
- data/lib/statsailr/parser/sts_gram_node.rb +9 -0
- data/lib/statsailr/parser/sts_parse.output +831 -0
- data/lib/statsailr/parser/sts_parse.ry +132 -0
- data/lib/statsailr/parser/sts_parse.tab.rb +682 -0
- data/lib/statsailr/scanner/sample1.sts +37 -0
- data/lib/statsailr/scanner/sts_scanner.rb +433 -0
- data/lib/statsailr/scanner/test_sample1.rb +8 -0
- data/lib/statsailr/sts_build_exec.rb +304 -0
- data/lib/statsailr/sts_controller.rb +66 -0
- data/lib/statsailr/sts_output/output_manager.rb +192 -0
- data/lib/statsailr/sts_runner.rb +17 -0
- data/lib/statsailr/sts_server.rb +85 -0
- data/lib/statsailr/version.rb +3 -0
- data/statsailr.gemspec +32 -0
- 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
|
+
|
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: []
|