narray 0.5.9.4 → 0.5.9.5
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.
- data/src/ChangeLog +29 -0
- data/src/MANIFEST +7 -36
- data/src/README.en +1 -5
- data/src/README.ja +1 -2
- data/src/SPEC.en +15 -8
- data/src/SPEC.ja +5 -2
- data/src/bench/all.rb +88 -0
- data/src/bench/bench.m +61 -0
- data/src/bench/bench.py +89 -0
- data/src/bench/bench.rb +59 -0
- data/src/bench/dummy.m +0 -0
- data/src/bench/dummy.py +13 -0
- data/src/bench/dummy.rb +0 -0
- data/src/lib/narray_ext.rb +36 -2
- data/src/mkmath.rb +4 -4
- data/src/mkop.rb +16 -16
- data/src/na_array.c +32 -32
- data/src/na_func.c +50 -50
- data/src/na_index.c +26 -32
- data/src/na_linalg.c +23 -26
- data/src/na_random.c +15 -18
- data/src/narray.c +22 -32
- data/src/narray.h +3 -3
- data/src/narray_local.h +1 -1
- metadata +10 -39
- data/src/nimage/README.en +0 -38
- data/src/nimage/demo/fits.rb +0 -97
- data/src/nimage/demo/fits_convol.rb +0 -28
- data/src/nimage/demo/fits_fftdemo.rb +0 -27
- data/src/nimage/demo/fitsdemo1.rb +0 -13
- data/src/nimage/demo/fitsdemo2.rb +0 -30
- data/src/nimage/demo/fitsdemo3.rb +0 -26
- data/src/nimage/demo/fitsmorph.rb +0 -39
- data/src/nimage/demo/life_na.rb +0 -57
- data/src/nimage/demo/mandel.rb +0 -41
- data/src/nimage/extconf.rb +0 -12
- data/src/nimage/lib/nimage.rb +0 -51
- data/src/nimage/nimage.c +0 -328
- data/src/speed/add.py +0 -12
- data/src/speed/add.rb +0 -8
- data/src/speed/add_int.py +0 -12
- data/src/speed/add_int.rb +0 -9
- data/src/speed/lu.m +0 -14
- data/src/speed/lu.rb +0 -22
- data/src/speed/mat.m +0 -23
- data/src/speed/mat.rb +0 -28
- data/src/speed/mul.py +0 -12
- data/src/speed/mul.rb +0 -9
- data/src/speed/mul2.py +0 -15
- data/src/speed/mul2.rb +0 -13
- data/src/speed/mul_comp.py +0 -12
- data/src/speed/mul_comp.rb +0 -9
- data/src/speed/mul_int.py +0 -12
- data/src/speed/mul_int.rb +0 -9
- data/src/speed/mybench.py +0 -15
- data/src/speed/mybench.rb +0 -31
- data/src/speed/solve.m +0 -18
- data/src/speed/solve.py +0 -16
- data/src/speed/solve.rb +0 -21
data/src/narray.h
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
narray.h
|
3
3
|
Numerical Array Extention for Ruby
|
4
|
-
(C) Copyright 1999-
|
4
|
+
(C) Copyright 1999-2008 by Masahiro TANAKA
|
5
5
|
|
6
6
|
This program is free software.
|
7
7
|
You can distribute/modify this program
|
@@ -19,8 +19,8 @@
|
|
19
19
|
# include <sys/types.h>
|
20
20
|
#endif
|
21
21
|
|
22
|
-
#define NARRAY_VERSION "0.5.
|
23
|
-
#define NARRAY_VERSION_CODE
|
22
|
+
#define NARRAY_VERSION "0.5.9p5"
|
23
|
+
#define NARRAY_VERSION_CODE 595
|
24
24
|
|
25
25
|
/*
|
26
26
|
Data types used in NArray :
|
data/src/narray_local.h
CHANGED
metadata
CHANGED
@@ -3,14 +3,14 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: narray
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.5.9.
|
7
|
-
date: 2008-
|
6
|
+
version: 0.5.9.5
|
7
|
+
date: 2008-06-10 00:00:00 +09:00
|
8
8
|
summary: N-dimensional Numerical Array class for Ruby
|
9
9
|
require_paths:
|
10
10
|
- .
|
11
11
|
email: masa16.tanaka@gmail.com
|
12
12
|
homepage: http://narray.rubyforge.org/
|
13
|
-
rubyforge_project:
|
13
|
+
rubyforge_project: narray
|
14
14
|
description:
|
15
15
|
autorequire:
|
16
16
|
default_executable:
|
@@ -51,42 +51,6 @@ files:
|
|
51
51
|
- src/narray_local.h
|
52
52
|
- src/lib/narray_ext.rb
|
53
53
|
- src/lib/nmatrix.rb
|
54
|
-
- src/nimage/README.en
|
55
|
-
- src/nimage/extconf.rb
|
56
|
-
- src/nimage/nimage.c
|
57
|
-
- src/nimage/demo
|
58
|
-
- src/nimage/demo/fits.rb
|
59
|
-
- src/nimage/demo/fits_convol.rb
|
60
|
-
- src/nimage/demo/fits_fftdemo.rb
|
61
|
-
- src/nimage/demo/fitsdemo1.rb
|
62
|
-
- src/nimage/demo/fitsdemo2.rb
|
63
|
-
- src/nimage/demo/fitsdemo3.rb
|
64
|
-
- src/nimage/demo/fitsmorph.rb
|
65
|
-
- src/nimage/demo/life_na.rb
|
66
|
-
- src/nimage/demo/mandel.rb
|
67
|
-
- src/nimage/lib
|
68
|
-
- src/nimage/lib/nimage.rb
|
69
|
-
- src/speed/add.py
|
70
|
-
- src/speed/add.rb
|
71
|
-
- src/speed/add_int.py
|
72
|
-
- src/speed/add_int.rb
|
73
|
-
- src/speed/lu.m
|
74
|
-
- src/speed/lu.rb
|
75
|
-
- src/speed/mat.m
|
76
|
-
- src/speed/mat.rb
|
77
|
-
- src/speed/mul.py
|
78
|
-
- src/speed/mul.rb
|
79
|
-
- src/speed/mul2.py
|
80
|
-
- src/speed/mul2.rb
|
81
|
-
- src/speed/mul_comp.py
|
82
|
-
- src/speed/mul_comp.rb
|
83
|
-
- src/speed/mul_int.py
|
84
|
-
- src/speed/mul_int.rb
|
85
|
-
- src/speed/mybench.py
|
86
|
-
- src/speed/mybench.rb
|
87
|
-
- src/speed/solve.m
|
88
|
-
- src/speed/solve.py
|
89
|
-
- src/speed/solve.rb
|
90
54
|
- src/test/statistics.rb
|
91
55
|
- src/test/testarray.rb
|
92
56
|
- src/test/testbit.rb
|
@@ -111,6 +75,13 @@ files:
|
|
111
75
|
- src/test/teststr.rb
|
112
76
|
- src/test/testtrans.rb
|
113
77
|
- src/test/testwhere.rb
|
78
|
+
- src/bench/all.rb
|
79
|
+
- src/bench/bench.m
|
80
|
+
- src/bench/bench.py
|
81
|
+
- src/bench/bench.rb
|
82
|
+
- src/bench/dummy.m
|
83
|
+
- src/bench/dummy.py
|
84
|
+
- src/bench/dummy.rb
|
114
85
|
test_files: []
|
115
86
|
|
116
87
|
rdoc_options: []
|
data/src/nimage/README.en
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
|
2
|
-
NAME
|
3
|
-
|
4
|
-
NImage --- A Ruby Extension Library for displaying Images on X11
|
5
|
-
by Masahiro Tanaka 2000/07/05
|
6
|
-
|
7
|
-
DESCRIPTION
|
8
|
-
|
9
|
-
NImage is a simple Ruby class for displaying 2-D Data as images
|
10
|
-
on X11 display.
|
11
|
-
|
12
|
-
REQUIREMENT
|
13
|
-
|
14
|
-
Ruby (ver 1.4.4 or later)
|
15
|
-
NArray (ver 0.3.1 or later)
|
16
|
-
|
17
|
-
INSTALLATION
|
18
|
-
|
19
|
-
ruby extconf.rb
|
20
|
-
make
|
21
|
-
make install
|
22
|
-
|
23
|
-
USAGE
|
24
|
-
|
25
|
-
require "nimage"
|
26
|
-
image = NArray.float(100,100) # some 2-D array
|
27
|
-
win = NImage.show image
|
28
|
-
win.close
|
29
|
-
|
30
|
-
ACKNOWLEDGMENT
|
31
|
-
|
32
|
-
moriq-san for Ruby/X11 which is useful for prototyping
|
33
|
-
|
34
|
-
PS
|
35
|
-
|
36
|
-
FITS image file is not included. Sorry.
|
37
|
-
|
38
|
-
END
|
data/src/nimage/demo/fits.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
# A simple class for handling FITS images
|
2
|
-
# by Masahiro TANAKA 1999/12/19
|
3
|
-
# No document, sorry.
|
4
|
-
#
|
5
|
-
# Require: Ruby/NArray
|
6
|
-
# http://koala.astro.isas.ac.jp/~masa/ruby/
|
7
|
-
#
|
8
|
-
# Example:
|
9
|
-
# f = Fits.read('somthing.fits')
|
10
|
-
# f.data # => 2-dimentional NArray data
|
11
|
-
|
12
|
-
require 'narray'
|
13
|
-
|
14
|
-
class Fits
|
15
|
-
attr_accessor :data
|
16
|
-
attr_accessor :header
|
17
|
-
|
18
|
-
def initialize
|
19
|
-
@data = ""
|
20
|
-
@header = []
|
21
|
-
end
|
22
|
-
|
23
|
-
def data_to_narray(data,type,shape)
|
24
|
-
NArray.to_na( data, type, *shape ).ntoh
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
def read(fname)
|
29
|
-
f = File.open(fname, "r")
|
30
|
-
@header = []
|
31
|
-
nbytes = 0
|
32
|
-
foo = {}
|
33
|
-
|
34
|
-
while
|
35
|
-
line = f.read(80)
|
36
|
-
nbytes += 80;
|
37
|
-
|
38
|
-
@header.push line
|
39
|
-
|
40
|
-
name = line[0,8].strip!
|
41
|
-
break if name=="END"
|
42
|
-
|
43
|
-
rest = line[8..-1]
|
44
|
-
if rest =~ /^= +('[^']*')/ #'
|
45
|
-
foo[name] = $1
|
46
|
-
elsif rest =~ /^= +([^\s\/]+)/
|
47
|
-
foo[name] = $1
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# skip extra space
|
52
|
-
nbytes %= 2880
|
53
|
-
f.read(2880-nbytes) if nbytes > 0
|
54
|
-
|
55
|
-
naxis = foo["NAXIS"].to_i
|
56
|
-
|
57
|
-
case foo["BITPIX"]
|
58
|
-
when "8"; elm_size = 1; type = NArray::BYTE
|
59
|
-
when "16"; elm_size = 2; type = NArray::SINT
|
60
|
-
when "32"; elm_size = 4; type = NArray::LINT
|
61
|
-
when "-32"; elm_size = 4; type = NArray::SFLOAT
|
62
|
-
when "-64"; elm_size = 8; type = NArray::DFLOAT
|
63
|
-
end
|
64
|
-
|
65
|
-
size = 1
|
66
|
-
dims = []
|
67
|
-
for i in 1..naxis
|
68
|
-
key = "NAXIS#{i}"
|
69
|
-
if foo.key? key
|
70
|
-
n = foo[key].to_i
|
71
|
-
size = size * n
|
72
|
-
dims.push n
|
73
|
-
#printf "%s=%i\n", key,n
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
@data = data_to_narray( f.read(size*elm_size), type, dims )
|
78
|
-
f.close
|
79
|
-
|
80
|
-
if foo.key? "BSCALE"
|
81
|
-
s = foo["BSCALE"].to_f
|
82
|
-
@data = @data.to_f.mul!(s) if s != 1
|
83
|
-
end
|
84
|
-
|
85
|
-
if foo.key? "BZERO"
|
86
|
-
s = foo["BZERO"].to_f
|
87
|
-
@data = @data.to_f.add!(s) if s != 0
|
88
|
-
end
|
89
|
-
|
90
|
-
self
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
def Fits.read(*a)
|
96
|
-
Fits.new.read(*a)
|
97
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# FITS-FFT demo
|
2
|
-
require 'fits'
|
3
|
-
require 'nimage'
|
4
|
-
|
5
|
-
f = Fits.new
|
6
|
-
f.read( $*.shift || 'dss_m51.fits' )
|
7
|
-
nx,ny = f.data.shape
|
8
|
-
|
9
|
-
NImage.show f.data #, 'M51'
|
10
|
-
|
11
|
-
# FFT low-pass filtering
|
12
|
-
z = 50.0/nx
|
13
|
-
x = NArray.float(nx).indgen! * z
|
14
|
-
y = NArray.float(ny).indgen! * z
|
15
|
-
x[-(nx/2)..-1] = x[nx/2..1]
|
16
|
-
y[-(ny/2)..-1] = y[ny/2..1]
|
17
|
-
y.reshape!(1,ny)
|
18
|
-
# Operation between [nx,1] and [1,ny] arrays makes [nx,ny].
|
19
|
-
filt = NMath::exp(-(x**2)-(y**2))
|
20
|
-
filt /= filt.sum
|
21
|
-
|
22
|
-
print "Now executing FFT...\n"
|
23
|
-
lowpass = FFTW::convol(f.data,filt)
|
24
|
-
|
25
|
-
NImage.show lowpass #, 'M51 (FFT low-pass)'
|
26
|
-
|
27
|
-
print "Hit return key..."
|
28
|
-
STDIN.getc
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# FITS-FFT demo
|
2
|
-
require 'fits'
|
3
|
-
require 'nimage'
|
4
|
-
|
5
|
-
f = Fits.new
|
6
|
-
f.read( $*.shift || 'dss_m51.fits' )
|
7
|
-
nx,ny = f.data.shape
|
8
|
-
|
9
|
-
NImage.show f.data #, 'M51'
|
10
|
-
|
11
|
-
# FFT low-pass filtering
|
12
|
-
x = NArray.float(nx).indgen! / (nx*0.1)
|
13
|
-
y = NArray.float(ny).indgen! / (nx*0.1)
|
14
|
-
x[-nx/2] = x[nx/2-1..0]
|
15
|
-
y[-ny/2] = y[ny/2-1..0]
|
16
|
-
y.reshape!(1,ny)
|
17
|
-
# Operation between [nx,1] and [1,ny] arrays makes [nx,ny].
|
18
|
-
filt = 1 / (x**2 + y**2 + 1)
|
19
|
-
|
20
|
-
print "Now executing FFT...\n"
|
21
|
-
spec = FFTW.fftw(f.data,-1)
|
22
|
-
lowpass = FFTW.fftw(spec*filt,1).real / (nx*ny)
|
23
|
-
|
24
|
-
NImage.show lowpass #, 'M51 (FFT low-pass)'
|
25
|
-
|
26
|
-
print "Hit return key..."
|
27
|
-
STDIN.getc
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# FITS demo
|
2
|
-
require 'fits'
|
3
|
-
require 'nimage'
|
4
|
-
|
5
|
-
f = Fits.new
|
6
|
-
f.read( $*.shift || 'dss_m51.fits' )
|
7
|
-
|
8
|
-
NImage.show f.data #, 'M51'
|
9
|
-
|
10
|
-
nx = f.data.shape[0]
|
11
|
-
ny = f.data.shape[1]
|
12
|
-
|
13
|
-
x = NArray.int(nx/2).indgen!*2
|
14
|
-
y = NArray.int(ny/2).indgen!*2
|
15
|
-
NImage.show f.data[x,y] #, 'M51 (x0.5)'
|
16
|
-
|
17
|
-
x = NArray.float(nx*1.5).indgen!/1.5
|
18
|
-
y = NArray.float(ny*1.5).indgen!/1.5
|
19
|
-
NImage.show f.data[x,y] #, 'M51 (x1.5)'
|
20
|
-
|
21
|
-
x = NArray.float(nx).indgen!
|
22
|
-
y = NArray.float(ny).indgen!.newdim!(0)
|
23
|
-
i = y / (ny/2) - 1
|
24
|
-
i = (x-nx/2) * NMath.sqrt(i.abs) + nx/2 + y*nx
|
25
|
-
d = f.data.clone.fill!(0)
|
26
|
-
d[i] = f.data
|
27
|
-
NImage.show d #, 'M51 (x1.5)'
|
28
|
-
|
29
|
-
print "Hit return key..."
|
30
|
-
STDIN.getc
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# FITS demo
|
2
|
-
require 'fits'
|
3
|
-
require 'nimage'
|
4
|
-
|
5
|
-
f = Fits.new
|
6
|
-
f.read( $*.shift || 'dss_m51.fits' )
|
7
|
-
image = f.data
|
8
|
-
|
9
|
-
NImage.show image
|
10
|
-
|
11
|
-
nx = image.shape[0]
|
12
|
-
ny = image.shape[1]
|
13
|
-
|
14
|
-
# re-sampling
|
15
|
-
x = NArray.int(nx/2).indgen!*2
|
16
|
-
y = NArray.int(ny/2).indgen!*2
|
17
|
-
NImage.show image[x,y]
|
18
|
-
# 'M51 (x0.5, resample)'
|
19
|
-
|
20
|
-
# averaging
|
21
|
-
NImage.show image[0...nx/2*2,0...ny/2*2].to_f.
|
22
|
-
reshape!(2,nx/2,2,ny/2).sum(0,2).div!(4).reshape!
|
23
|
-
# 'M51 (x0.5, average)'
|
24
|
-
|
25
|
-
print "Hit return key..."
|
26
|
-
STDIN.getc
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# FITS demo
|
2
|
-
require 'fits'
|
3
|
-
require 'nimage'
|
4
|
-
|
5
|
-
def triang x, px
|
6
|
-
y = NArray.float(*x.shape)
|
7
|
-
i1,i2 = (x>px).where2
|
8
|
-
y[i1] = NMath.sin((1-x[i1]) * (Math::PI/2/(1-px)) )
|
9
|
-
y[i2] = NMath.sin((1+x[i2]) * (Math::PI/2/(1+px)) )
|
10
|
-
p y.min
|
11
|
-
y
|
12
|
-
end
|
13
|
-
|
14
|
-
# Read-in Image
|
15
|
-
f = Fits.new
|
16
|
-
f.read( $*.shift || 'dss_m51.fits' )
|
17
|
-
|
18
|
-
NImage.show f.data
|
19
|
-
|
20
|
-
nx,ny = f.data.shape
|
21
|
-
|
22
|
-
# Morphing parameters
|
23
|
-
px,py = [ 0.3, -0.6]
|
24
|
-
dx,dy = [-0.3, 0.7]
|
25
|
-
|
26
|
-
indx = NArray.float(nx,1).indgen!
|
27
|
-
indy = NArray.float(1,ny).indgen!
|
28
|
-
|
29
|
-
ix = triang indx/(nx-1)*2-1, px
|
30
|
-
iy = triang indy/(ny-1)*2-1, py
|
31
|
-
|
32
|
-
ii = ix * iy
|
33
|
-
ix = (indx + ii*(dx*(nx-1)/2)).round
|
34
|
-
iy = (indy + ii*(dy*(ny-1)/2)).round
|
35
|
-
|
36
|
-
NImage.show f.data[ix+iy*nx]
|
37
|
-
|
38
|
-
print "Hit return key..."
|
39
|
-
STDIN.getc
|
data/src/nimage/demo/life_na.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
# NArray demo : life game
|
2
|
-
# by Masahiro Tanaka <masa@ir.isas.ac.jp> 2001-01-18
|
3
|
-
|
4
|
-
require 'narray'
|
5
|
-
require 'nimage'
|
6
|
-
|
7
|
-
class NArray
|
8
|
-
def magnify(n)
|
9
|
-
src = shape.collect{|x| [1,x]}.flatten
|
10
|
-
dst = shape.collect{|x| [n,x]}.flatten
|
11
|
-
a = NArray.new(typecode,*dst)
|
12
|
-
a[*[true]*(rank*2)] = self.reshape(*src)
|
13
|
-
a.reshape!(*NArray[*shape]*n)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
class LifeGame
|
18
|
-
def initialize(nx,ny)
|
19
|
-
@d = NArray.byte(nx,ny)
|
20
|
-
w = 50
|
21
|
-
@d[nx/2-w,ny/2-w] = NArray.byte(w*2+1,w*2+1).random!(2)
|
22
|
-
@step = 0
|
23
|
-
@win = NImage.show @d #.magnify(2)
|
24
|
-
end
|
25
|
-
|
26
|
-
def life_step
|
27
|
-
sum =
|
28
|
-
@d[0..-3,0..-3] + @d[0..-3,1..-2] + @d[0..-3,2..-1] +
|
29
|
-
@d[1..-2,0..-3] + @d[1..-2,2..-1] +
|
30
|
-
@d[2..-1,0..-3] + @d[2..-1,1..-2] + @d[2..-1,2..-1]
|
31
|
-
@d[1,1] =
|
32
|
-
(sum.eq 3) | ((sum.eq 2) & @d[1..-2,1..-2])
|
33
|
-
@step += 1
|
34
|
-
@win.update( (@d*(NImage.ncolors-1)).to_s )
|
35
|
-
end
|
36
|
-
|
37
|
-
def close
|
38
|
-
@win.close
|
39
|
-
end
|
40
|
-
|
41
|
-
attr_reader :step
|
42
|
-
end
|
43
|
-
|
44
|
-
srand(1)
|
45
|
-
a = LifeGame.new(200,200)
|
46
|
-
|
47
|
-
print "Hit return key to start..."
|
48
|
-
STDIN.getc
|
49
|
-
|
50
|
-
begin
|
51
|
-
loop{ a.life_step }
|
52
|
-
ensure
|
53
|
-
printf "step=%i\n",a.step
|
54
|
-
print "Hit return key..."
|
55
|
-
STDIN.getc
|
56
|
-
a.close
|
57
|
-
end
|