carray-netcdf 1.0.0 → 1.0.1
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/carray-netcdf.gemspec +1 -1
- data/examples/test.nc +0 -0
- data/examples/write.rb +47 -0
- data/lib/io/netcdf.rb +40 -25
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42bc2741ed1cb9934d9920bb3c27ae63a67d64cc
|
4
|
+
data.tar.gz: cb002d9c44eeb1ae1b21a82676e23994a99744d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5835fce18272746e19bed82b402f541c9051269b1f7162e5a0742235e1a652165ef0c1cf6899b16b3e8caf315f2f9af739cc2d7f59df3f98ab1e75eb558a7e98
|
7
|
+
data.tar.gz: 0e597194080519c77cbc8906feeb6f11db456e3d04c65595ab266003c92019453519aebd90e1afbb072c9374ce46c054a0e5afaa5a6091218ad422c9ed39baf3
|
data/carray-netcdf.gemspec
CHANGED
data/examples/test.nc
ADDED
Binary file
|
data/examples/write.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require "pp"
|
2
|
+
require "carray-netcdf"
|
3
|
+
include NC
|
4
|
+
|
5
|
+
=begin
|
6
|
+
definition = {
|
7
|
+
dims: {
|
8
|
+
time: 24
|
9
|
+
},
|
10
|
+
vars: {
|
11
|
+
time: {
|
12
|
+
dims: ["time"],
|
13
|
+
long_name: "time from 00UT"
|
14
|
+
},
|
15
|
+
temp: {
|
16
|
+
dims: ["time"],
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
=end
|
21
|
+
|
22
|
+
require "yaml"
|
23
|
+
|
24
|
+
definition = YAML.load %{
|
25
|
+
dimensions:
|
26
|
+
time: 24
|
27
|
+
variables:
|
28
|
+
time:
|
29
|
+
dim: ["time"]
|
30
|
+
long_name: "time from 00UT"
|
31
|
+
temp:
|
32
|
+
type: #{NC_DOUBLE}
|
33
|
+
dim: ["time"]
|
34
|
+
creator: "foobar"
|
35
|
+
}
|
36
|
+
|
37
|
+
pp definition
|
38
|
+
|
39
|
+
out = NCFileWriter.new("test.nc")
|
40
|
+
out.define definition
|
41
|
+
out["time"] = CArray.int(24).seq
|
42
|
+
out["temp"] = CArray.float(24).random
|
43
|
+
out.close
|
44
|
+
|
45
|
+
nc = NCFile.open("test.nc")
|
46
|
+
|
47
|
+
pp nc.definition
|
data/lib/io/netcdf.rb
CHANGED
@@ -85,9 +85,8 @@ class NCVar < NCObject
|
|
85
85
|
def definition
|
86
86
|
{
|
87
87
|
type: @vartype,
|
88
|
-
|
89
|
-
|
90
|
-
}
|
88
|
+
dim: dims.map{|x| x.name }
|
89
|
+
}.update(@attributes)
|
91
90
|
end
|
92
91
|
|
93
92
|
def inspect
|
@@ -303,7 +302,7 @@ class NCFile < NCObject
|
|
303
302
|
@vars = []
|
304
303
|
@name2dim = {}
|
305
304
|
@name2var = {}
|
306
|
-
@attributes = get_attributes(@file_id,
|
305
|
+
@attributes = get_attributes(@file_id, NC_GLOBAL)
|
307
306
|
parse_metadata()
|
308
307
|
end
|
309
308
|
|
@@ -330,10 +329,9 @@ class NCFile < NCObject
|
|
330
329
|
|
331
330
|
def definition
|
332
331
|
{
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
}
|
332
|
+
dimensions: @dims.map{|x| [x.name, x.definition] }.to_h,
|
333
|
+
variables: @vars.map{|x| [x.name, x.definition] }.to_h
|
334
|
+
}.update(@attributes)
|
337
335
|
end
|
338
336
|
|
339
337
|
def [] (name)
|
@@ -365,20 +363,22 @@ class NCFileWriter
|
|
365
363
|
def initialize (ncfile, name, definition)
|
366
364
|
@ncfile = ncfile
|
367
365
|
@file_id = ncfile.file_id
|
368
|
-
@definition = definition
|
369
366
|
@name = name
|
370
|
-
@type = definition[
|
371
|
-
@dims = definition[
|
372
|
-
@dim_ids = @dims.map{|key| @ncfile.dim(key).dim_id }
|
367
|
+
@type = definition["type"] || NC_FLOAT
|
368
|
+
@dims = definition["dim"]
|
373
369
|
@shape = @dims.map{|key| @ncfile.dim(key).to_i }
|
374
|
-
|
375
|
-
@
|
370
|
+
dim_ids = @dims.map{|key| @ncfile.dim(key).dim_id }
|
371
|
+
@var_id = nc_def_var(@file_id, @name, @type, dim_ids)
|
372
|
+
@attributes = definition.dup
|
373
|
+
@attributes.delete("type")
|
374
|
+
@attributes.delete("dim")
|
376
375
|
@attributes.each do |name, value|
|
377
376
|
nc_put_att(@file_id, @var_id, name, value)
|
378
377
|
end
|
378
|
+
@attributes.freeze
|
379
379
|
end
|
380
380
|
|
381
|
-
attr_reader :name, :attributes
|
381
|
+
attr_reader :name, :type, :attributes
|
382
382
|
|
383
383
|
def []= (*argv)
|
384
384
|
put(*argv)
|
@@ -472,31 +472,46 @@ class NCFileWriter
|
|
472
472
|
end
|
473
473
|
|
474
474
|
def initialize (file)
|
475
|
-
@file_id
|
476
|
-
@dims
|
475
|
+
@file_id = nc_create(file)
|
476
|
+
@dims = []
|
477
477
|
@name2dim = {}
|
478
|
-
@vars
|
478
|
+
@vars = []
|
479
479
|
@name2var = {}
|
480
480
|
@attributes = nil
|
481
481
|
end
|
482
482
|
|
483
483
|
attr_reader :file_id
|
484
484
|
|
485
|
+
def normalize_definition (definition)
|
486
|
+
out = {}
|
487
|
+
definition.each do |key, value|
|
488
|
+
if value.is_a?(Hash)
|
489
|
+
value = normalize_definition(value)
|
490
|
+
end
|
491
|
+
out[key.to_s] = value
|
492
|
+
end
|
493
|
+
return out
|
494
|
+
end
|
495
|
+
|
485
496
|
def define (definition)
|
486
|
-
definition
|
487
|
-
|
497
|
+
definition = normalize_definition(definition)
|
498
|
+
definition["dimensions"].each do |name, len|
|
499
|
+
dim = Dim.new(self, name, len.to_i)
|
488
500
|
@dims.push dim
|
489
|
-
@name2dim[name
|
501
|
+
@name2dim[name] = dim
|
490
502
|
end
|
491
|
-
definition[
|
492
|
-
var = Var.new(self, name
|
503
|
+
definition["variables"].each do |name, info|
|
504
|
+
var = Var.new(self, name, info)
|
493
505
|
@vars.push var
|
494
|
-
@name2var[name
|
506
|
+
@name2var[name] = var
|
495
507
|
end
|
496
|
-
@attributes = definition
|
508
|
+
@attributes = definition.dup
|
509
|
+
@attributes.delete("dimensions")
|
510
|
+
@attributes.delete("variables")
|
497
511
|
@attributes.each do |name, value|
|
498
512
|
nc_put_att(@file_id, NC_GLOBAL, name, value)
|
499
513
|
end
|
514
|
+
@attributes.freeze
|
500
515
|
nc_enddef(@file_id)
|
501
516
|
end
|
502
517
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carray-netcdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroki Motoyoshi
|
@@ -21,7 +21,9 @@ files:
|
|
21
21
|
- API.md
|
22
22
|
- README.md
|
23
23
|
- carray-netcdf.gemspec
|
24
|
+
- examples/test.nc
|
24
25
|
- examples/test.rb
|
26
|
+
- examples/write.rb
|
25
27
|
- extconf.rb
|
26
28
|
- lib/carray-netcdf.rb
|
27
29
|
- lib/io/netcdf.rb
|
@@ -45,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
47
|
version: '0'
|
46
48
|
requirements: []
|
47
49
|
rubyforge_project:
|
48
|
-
rubygems_version: 2.6.
|
50
|
+
rubygems_version: 2.6.11
|
49
51
|
signing_key:
|
50
52
|
specification_version: 4
|
51
53
|
summary: Extension for manipulating NetCDF3 file with CArray
|