numpy 0.1.0 → 0.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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