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