numpy 0.1.0 → 0.2.0.beta1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 05f6865f2a7c4ef94b5bdf981a36305418b54492
4
- data.tar.gz: 9ec963ca157264a8fd3d01275534db3a4a4fa1b3
2
+ SHA256:
3
+ metadata.gz: 5e7d2063cc44796bd4b50a0b45c7374e2edc6c963cb9f47a2b0f550af5982a9b
4
+ data.tar.gz: 1f9141a62ef7ac7360a6bc745107da1bb76853ccfcabfeab2486ef58001054c7
5
5
  SHA512:
6
- metadata.gz: 48124607ab6a3655d0c710fd86633a8178624e32b0e3d3b912badf8aab28d5fb79cb2f80574fd1171e61c7f67d9b199f8a2cdf64dd7e01dc7827fd0843ff7c6f
7
- data.tar.gz: 1c8350190e9b6f7d7818628a012831802b1ef2d6d8115c267252f09d9802aedb367c04202bbf0a319910057c94d5f0ff6bcf7d089af31c70b307a6ddc5252054
6
+ metadata.gz: 6dc0004877b66df9683820a86bc9cdcf6272d974bf1ce6bcbb8d8e9be10ab03f6995b5456d32496df9819521c986453befd355265f0d88b56c9cf3606b8d201d
7
+ data.tar.gz: c90649d97a5e8c394fa298442eb48056c807cefba49556042227e7aac692b2ac03e5a3764dd57079572c34a1c00bec634210c706b6ac9cccf7cc539f36c8ecf9
data/CHANGES.md ADDED
@@ -0,0 +1,7 @@
1
+ # 0.2.0
2
+
3
+ * Support scalar type conversion
4
+
5
+ # 0.1.0
6
+
7
+ * First release
data/example/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'pycall', '>= 1.0.1'
4
+ gem 'numpy'
5
+ gem 'matplotlib'
6
+ gem 'pandas'
7
+ gem 'iruby'
8
+ gem 'cztop'
9
+ gem 'pry'
10
+ gem 'numo-narray'
11
+ gem 'numo-linalg'
@@ -0,0 +1,121 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "data": {
10
+ "text/plain": [
11
+ "\"4\""
12
+ ]
13
+ },
14
+ "execution_count": 1,
15
+ "metadata": {},
16
+ "output_type": "execute_result"
17
+ }
18
+ ],
19
+ "source": [
20
+ "require 'benchmark'\n",
21
+ "\n",
22
+ "require 'numo/narray'\n",
23
+ "require \"numo/linalg/linalg\"\n",
24
+ "Numo::Linalg::Blas.dlopen(\"/opt/brew/opt/openblas/lib/libopenblas.dylib\")\n",
25
+ "Numo::Linalg::Lapack.dlopen(\"/opt/brew/opt/openblas/lib/libopenblas.dylib\")\n",
26
+ "\n",
27
+ "require 'pycall'\n",
28
+ "require 'numpy'\n",
29
+ "scipy_blas = PyCall.import_module('scipy.linalg.blas')\n",
30
+ "\n",
31
+ "ENV['OMP_NUM_THREADS'] = '4'"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "code",
36
+ "execution_count": 4,
37
+ "metadata": {},
38
+ "outputs": [
39
+ {
40
+ "name": "stdout",
41
+ "output_type": "stream",
42
+ "text": [
43
+ "[1500, 1500]\n",
44
+ "[1500, 1500]\n",
45
+ "(1500, 1500)\n",
46
+ "(1500, 1500)\n"
47
+ ]
48
+ }
49
+ ],
50
+ "source": [
51
+ "a = Numo::DFloat.new(1500,1500).seq\n",
52
+ "b = Numo::DFloat.new(1500,1500).seq\n",
53
+ "c = Numpy.arange(1500*1500, dtype: :float64).reshape(1500, 1500)\n",
54
+ "d = Numpy.arange(1500*1500, dtype: :float64).reshape(1500, 1500)\n",
55
+ "\n",
56
+ "p a.shape\n",
57
+ "p b.shape\n",
58
+ "p c.shape\n",
59
+ "p d.shape\n",
60
+ "nil"
61
+ ]
62
+ },
63
+ {
64
+ "cell_type": "code",
65
+ "execution_count": 10,
66
+ "metadata": {},
67
+ "outputs": [
68
+ {
69
+ "name": "stdout",
70
+ "output_type": "stream",
71
+ "text": [
72
+ "numo-linalg 33.400000 1.460000 34.860000 ( 5.738896)\n",
73
+ "numpy-linalg 34.210000 1.440000 35.650000 ( 9.099735)\n"
74
+ ]
75
+ }
76
+ ],
77
+ "source": [
78
+ "n = 100\n",
79
+ "Benchmark.benchmark('', 15) do |x|\n",
80
+ " x.report('numo-linalg') { n.times{ Numo::Linalg::Blas.dgemm(a,b) } }\n",
81
+ " x.report('numpy-linalg') { n.times{ scipy_blas.dgemm(1.0, c, d) } }\n",
82
+ "end\n",
83
+ "nil"
84
+ ]
85
+ },
86
+ {
87
+ "cell_type": "code",
88
+ "execution_count": null,
89
+ "metadata": {
90
+ "collapsed": true
91
+ },
92
+ "outputs": [],
93
+ "source": []
94
+ }
95
+ ],
96
+ "metadata": {
97
+ "kernelspec": {
98
+ "display_name": "Ruby 2.4.1",
99
+ "language": "ruby",
100
+ "name": "ruby"
101
+ },
102
+ "language_info": {
103
+ "file_extension": ".rb",
104
+ "mimetype": "application/x-ruby",
105
+ "name": "ruby",
106
+ "version": "2.4.1"
107
+ },
108
+ "toc": {
109
+ "nav_menu": {},
110
+ "number_sections": true,
111
+ "sideBar": true,
112
+ "skip_h1_title": false,
113
+ "toc_cell": false,
114
+ "toc_position": {},
115
+ "toc_section_display": "block",
116
+ "toc_window_display": false
117
+ }
118
+ },
119
+ "nbformat": 4,
120
+ "nbformat_minor": 2
121
+ }
data/lib/numpy.rb CHANGED
@@ -35,4 +35,5 @@ module Numpy
35
35
  end
36
36
  end
37
37
 
38
+ require 'numpy/conversion'
38
39
  require 'numpy/ndarray'
@@ -0,0 +1,36 @@
1
+ module Numpy
2
+ module Conversion
3
+ module_function
4
+
5
+ def to_ruby(val)
6
+ case val
7
+ when Numpy.integer
8
+ PyCall.builtins.int.(val)
9
+ when Numpy.floating
10
+ PyCall.builtins.float.(val)
11
+ when Numpy.complexfloating
12
+ val = PyCall.builtins.complex.(val)
13
+ Complex(val.real.to_f, val.imag.to_f)
14
+ when Numpy.bool_
15
+ PyCall.builtins.bool.(val)
16
+ else
17
+ val
18
+ end
19
+ end
20
+ end
21
+
22
+ Bool_ = Numpy.bool_
23
+ Integer = Numpy.integer
24
+ Floating = Numpy.floating
25
+ ComplexFloating = Numpy.complexfloating
26
+
27
+ [ Bool_, Integer, Floating, ComplexFloating ].each do |klass|
28
+ klass.class_eval do
29
+ register_python_type_mapping
30
+
31
+ def self.wrap_pyptr(pyptr)
32
+ Conversion.to_ruby(pyptr)
33
+ end
34
+ end
35
+ end
36
+ end
data/lib/numpy/ndarray.rb CHANGED
@@ -4,24 +4,7 @@ module Numpy
4
4
  register_python_type_mapping
5
5
 
6
6
  def [](*index)
7
- to_ruby(super)
8
- end
9
-
10
- private
11
-
12
- def to_ruby(val)
13
- case val
14
- when Numpy.integer
15
- val.to_i
16
- when Numpy.floating
17
- val.to_f
18
- when Numpy.complexfloating
19
- Complex(val.real.to_f, val.imag.to_f)
20
- when Numpy.bool_
21
- val.to_i == 1
22
- else
23
- val
24
- end
7
+ Conversion.to_ruby(super)
25
8
  end
26
9
  end
27
10
  end
data/lib/numpy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Numpy
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0.beta1"
3
3
  end
data/numpy.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "pycall", ">= 1.0.1"
24
+ spec.add_dependency "pycall", ">= 1.2.0.beta1"
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.15"
27
27
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numpy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenta Murata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-08 00:00:00.000000000 Z
11
+ date: 2018-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pycall
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.1
19
+ version: 1.2.0.beta1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.1
26
+ version: 1.2.0.beta1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -76,13 +76,17 @@ files:
76
76
  - ".gitignore"
77
77
  - ".rspec"
78
78
  - ".travis.yml"
79
+ - CHANGES.md
79
80
  - Gemfile
80
81
  - LICENSE.txt
81
82
  - README.md
82
83
  - Rakefile
83
84
  - bin/console
84
85
  - bin/setup
86
+ - example/Gemfile
87
+ - example/benchmarking.ipynb
85
88
  - lib/numpy.rb
89
+ - lib/numpy/conversion.rb
86
90
  - lib/numpy/ndarray.rb
87
91
  - lib/numpy/version.rb
88
92
  - numpy.gemspec
@@ -101,12 +105,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
105
  version: '0'
102
106
  required_rubygems_version: !ruby/object:Gem::Requirement
103
107
  requirements:
104
- - - ">="
108
+ - - ">"
105
109
  - !ruby/object:Gem::Version
106
- version: '0'
110
+ version: 1.3.1
107
111
  requirements: []
108
112
  rubyforge_project:
109
- rubygems_version: 2.6.12
113
+ rubygems_version: 2.7.6
110
114
  signing_key:
111
115
  specification_version: 4
112
116
  summary: Numpy wrapper for Ruby