cmdstan 0.1.5 → 0.1.9
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 +4 -4
- data/CHANGELOG.md +17 -0
- data/LICENSE.txt +1 -1
- data/README.md +7 -7
- data/ext/cmdstan/extconf.rb +20 -9
- data/lib/cmdstan/mcmc.rb +4 -3
- data/lib/cmdstan/model.rb +2 -2
- data/lib/cmdstan/version.rb +1 -1
- metadata +6 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86b23f06c13af5825711739c0fc3a66c141fabc38507fd6b4e3e067137422c38
|
4
|
+
data.tar.gz: 4921aae2623e273021f1a3f37f11bd16631902f0b6fb663b36a28d8412968abf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfe6e78ce9194750c3ee8c89ac02eb9e1b5526c502f9e0908bd5a3c2f3296bb7650de0e0abc61381142a2888c3bb0dedac2d9c80db252084ccf51a7d7f91e41c
|
7
|
+
data.tar.gz: c6176782e0ffb1c9817ab4db949a0e208a143c87c2420ee1747de3149e3b590d6298b019052d5425dd8ec533f32acd190698dee8bb17fc291e96fd2770f0f1ed
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## 0.1.9 (2022-02-07)
|
2
|
+
|
3
|
+
- Added support for Linux ARM
|
4
|
+
- Updated CmdStan to 2.28.2
|
5
|
+
|
6
|
+
## 0.1.8 (2022-01-16)
|
7
|
+
|
8
|
+
- Updated CmdStan to 2.28.1
|
9
|
+
|
10
|
+
## 0.1.7 (2021-08-23)
|
11
|
+
|
12
|
+
- Updated CmdStan to 2.27.0
|
13
|
+
|
14
|
+
## 0.1.6 (2021-02-08)
|
15
|
+
|
16
|
+
- Updated CmdStan to 2.26.0
|
17
|
+
|
1
18
|
## 0.1.5 (2020-11-21)
|
2
19
|
|
3
20
|
- Added `tbb` to path for Linux
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
|
3
3
|
Bayesian inference for Ruby, powered by [CmdStan](https://github.com/stan-dev/cmdstan)
|
4
4
|
|
5
|
-
[](https://github.com/ankane/cmdstan/actions)
|
5
|
+
[](https://github.com/ankane/cmdstan-ruby/actions)
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
9
|
Add this line to your application’s Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem
|
12
|
+
gem "cmdstan"
|
13
13
|
```
|
14
14
|
|
15
15
|
Installation can take a few minutes as CmdStan downloads and builds.
|
@@ -64,22 +64,22 @@ This library is modeled after the [CmdStanPy API](https://github.com/stan-dev/cm
|
|
64
64
|
|
65
65
|
## History
|
66
66
|
|
67
|
-
View the [changelog](https://github.com/ankane/cmdstan/blob/master/CHANGELOG.md)
|
67
|
+
View the [changelog](https://github.com/ankane/cmdstan-ruby/blob/master/CHANGELOG.md)
|
68
68
|
|
69
69
|
## Contributing
|
70
70
|
|
71
71
|
Everyone is encouraged to help improve this project. Here are a few ways you can help:
|
72
72
|
|
73
|
-
- [Report bugs](https://github.com/ankane/cmdstan/issues)
|
74
|
-
- Fix bugs and [submit pull requests](https://github.com/ankane/cmdstan/pulls)
|
73
|
+
- [Report bugs](https://github.com/ankane/cmdstan-ruby/issues)
|
74
|
+
- Fix bugs and [submit pull requests](https://github.com/ankane/cmdstan-ruby/pulls)
|
75
75
|
- Write, clarify, or fix documentation
|
76
76
|
- Suggest or add new features
|
77
77
|
|
78
78
|
To get started with development:
|
79
79
|
|
80
80
|
```sh
|
81
|
-
git clone https://github.com/ankane/cmdstan.git
|
82
|
-
cd cmdstan
|
81
|
+
git clone https://github.com/ankane/cmdstan-ruby.git
|
82
|
+
cd cmdstan-ruby
|
83
83
|
bundle install
|
84
84
|
bundle exec ruby ext/cmdstan/extconf.rb
|
85
85
|
bundle exec rake test
|
data/ext/cmdstan/extconf.rb
CHANGED
@@ -3,13 +3,25 @@ require "fileutils"
|
|
3
3
|
require "net/http"
|
4
4
|
require "tmpdir"
|
5
5
|
|
6
|
-
version = "2.
|
7
|
-
|
8
|
-
|
6
|
+
version = "2.28.2"
|
7
|
+
# TODO figure out Mac ARM
|
8
|
+
if RbConfig::CONFIG["host_os"] !~ /darwin/i && RbConfig::CONFIG["host_cpu"] =~ /arm|aarch64/i
|
9
|
+
checksum = "cd8f588a1267e3e36761b7bcdff1b7f36bf43b8ec119667654995bfa5f921fa4"
|
10
|
+
url = "https://github.com/stan-dev/cmdstan/releases/download/v#{version}/cmdstan-#{version}-linux-arm64.tar.gz"
|
11
|
+
else
|
12
|
+
checksum = "4e6ed2685460d7f33ddbc81ccb1e59befa7efd91e46d5b040027aab8daec4526"
|
13
|
+
url = "https://github.com/stan-dev/cmdstan/releases/download/v#{version}/cmdstan-#{version}.tar.gz"
|
14
|
+
end
|
15
|
+
|
16
|
+
path = ENV["CMDSTAN"] || File.expand_path("../../tmp/cmdstan", __dir__)
|
17
|
+
FileUtils.mkdir_p(path)
|
18
|
+
raise "Directory not empty. Run: rake clean" unless Dir.empty?(path)
|
9
19
|
|
10
20
|
$stdout.sync = true
|
11
21
|
|
12
|
-
def download_file(url, download_path, checksum)
|
22
|
+
def download_file(url, download_path, checksum, redirects = 0)
|
23
|
+
raise "Too many redirects" if redirects > 10
|
24
|
+
|
13
25
|
uri = URI(url)
|
14
26
|
location = nil
|
15
27
|
|
@@ -35,7 +47,7 @@ def download_file(url, download_path, checksum)
|
|
35
47
|
end
|
36
48
|
puts # newline
|
37
49
|
|
38
|
-
abort "Bad checksum" if digest.hexdigest != checksum
|
50
|
+
abort "Bad checksum: #{digest.hexdigest}" if digest.hexdigest != checksum
|
39
51
|
else
|
40
52
|
abort "Bad response"
|
41
53
|
end
|
@@ -43,7 +55,7 @@ def download_file(url, download_path, checksum)
|
|
43
55
|
end
|
44
56
|
|
45
57
|
# outside of Net::HTTP block to close previous connection
|
46
|
-
download_file(location, download_path, checksum) if location
|
58
|
+
download_file(location, download_path, checksum, redirects + 1) if location
|
47
59
|
end
|
48
60
|
|
49
61
|
# download
|
@@ -52,8 +64,6 @@ download_path = "#{Dir.tmpdir}/cmdstan-#{version}.tar.gz"
|
|
52
64
|
download_file(url, download_path, checksum)
|
53
65
|
|
54
66
|
# extract
|
55
|
-
path = ENV["CMDSTAN"] || File.expand_path("../../tmp/cmdstan", __dir__)
|
56
|
-
FileUtils.mkdir_p(path)
|
57
67
|
Dir.chdir(path)
|
58
68
|
# TODO use Gem::Package::TarReader from Rubygems
|
59
69
|
tar_args = Gem.win_platform? ? ["--force-local"] : []
|
@@ -61,4 +71,5 @@ system "tar", "zxf", download_path, "-C", path, "--strip-components=1", *tar_arg
|
|
61
71
|
|
62
72
|
# build
|
63
73
|
make_command = Gem.win_platform? ? "mingw32-make" : "make"
|
64
|
-
system
|
74
|
+
success = system(make_command, "build")
|
75
|
+
raise "Build failed" unless success
|
data/lib/cmdstan/mcmc.rb
CHANGED
@@ -25,11 +25,12 @@ module CmdStan
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def summary
|
28
|
-
|
29
|
-
|
28
|
+
# add suffix since path can't already exist
|
29
|
+
path = "#{Tempfile.new.path}.csv"
|
30
|
+
run_command "#{CmdStan.path}/bin/stansummary#{extension}", "--csv_filename=#{path}", *@output_files.map(&:path)
|
30
31
|
|
31
32
|
result = {}
|
32
|
-
CSV.foreach(
|
33
|
+
CSV.foreach(path, headers: true, converters: :numeric) do |row|
|
33
34
|
value = row.to_h
|
34
35
|
name = value.delete("name")
|
35
36
|
result[name] = value if name == "lp__" || !name.end_with?("__")
|
data/lib/cmdstan/model.rb
CHANGED
@@ -61,7 +61,7 @@ module CmdStan
|
|
61
61
|
args << "num_samples=#{sampling_iters.to_i}" if sampling_iters
|
62
62
|
args += ["algorithm=hmc", "adapt", "engaged=1"]
|
63
63
|
|
64
|
-
run_command
|
64
|
+
run_command(*args)
|
65
65
|
|
66
66
|
output_files << output_file
|
67
67
|
end
|
@@ -99,7 +99,7 @@ module CmdStan
|
|
99
99
|
args << "algorithm=#{algorithm.to_s.downcase}" if algorithm
|
100
100
|
args << "iter=#{iter.to_i}" if iter
|
101
101
|
|
102
|
-
run_command
|
102
|
+
run_command(*args)
|
103
103
|
|
104
104
|
MLE.new(output_file)
|
105
105
|
end
|
data/lib/cmdstan/version.rb
CHANGED
metadata
CHANGED
@@ -1,59 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmdstan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5'
|
11
|
+
date: 2022-02-07 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
55
13
|
description:
|
56
|
-
email: andrew@
|
14
|
+
email: andrew@ankane.org
|
57
15
|
executables: []
|
58
16
|
extensions:
|
59
17
|
- ext/cmdstan/extconf.rb
|
@@ -70,7 +28,7 @@ files:
|
|
70
28
|
- lib/cmdstan/model.rb
|
71
29
|
- lib/cmdstan/utils.rb
|
72
30
|
- lib/cmdstan/version.rb
|
73
|
-
homepage: https://github.com/ankane/cmdstan
|
31
|
+
homepage: https://github.com/ankane/cmdstan-ruby
|
74
32
|
licenses:
|
75
33
|
- BSD-3-Clause
|
76
34
|
metadata: {}
|
@@ -89,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
47
|
- !ruby/object:Gem::Version
|
90
48
|
version: '0'
|
91
49
|
requirements: []
|
92
|
-
rubygems_version: 3.
|
50
|
+
rubygems_version: 3.3.3
|
93
51
|
signing_key:
|
94
52
|
specification_version: 4
|
95
53
|
summary: Bayesian inference for Ruby, powered by CmdStan
|