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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ce02ff5fab4bb7e3920bd11317c9709e68d56ce
4
- data.tar.gz: 78f48636de46a5b1bd7f91b11747b76033bd1f79
3
+ metadata.gz: 42bc2741ed1cb9934d9920bb3c27ae63a67d64cc
4
+ data.tar.gz: cb002d9c44eeb1ae1b21a82676e23994a99744d5
5
5
  SHA512:
6
- metadata.gz: 57f23cc65af411dc64aeedca1276659afc198e57b7bbc914eb9f26d42746b00ce4815b3d2ad0efcdba331f11b42f09e9e6e156cf5ab212cbe5805feb0388f3d5
7
- data.tar.gz: 13852779407b6cd82d3fa1960d3f29bfe6b15cf53728b6dd641d8c183a8d02b979575a4f18c60a06b67b4012e6c1cd56521d340ce02e5c5c0a89f67ee9d12bc8
6
+ metadata.gz: 5835fce18272746e19bed82b402f541c9051269b1f7162e5a0742235e1a652165ef0c1cf6899b16b3e8caf315f2f9af739cc2d7f59df3f98ab1e75eb558a7e98
7
+ data.tar.gz: 0e597194080519c77cbc8906feeb6f11db456e3d04c65595ab266003c92019453519aebd90e1afbb072c9374ce46c054a0e5afaa5a6091218ad422c9ed39baf3
@@ -1,6 +1,6 @@
1
1
 
2
2
  Gem::Specification::new do |s|
3
- version = "1.0.0"
3
+ version = "1.0.1"
4
4
 
5
5
  files = Dir.glob("**/*") - [
6
6
  Dir.glob("carray-*.gem"),
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
- dims: dims.map{|x| x.name },
89
- attributes: @attributes.dup
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, NC::NC_GLOBAL)
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
- dims: @dims.map{|x| [x.name, x.definition] }.to_h,
334
- vars: @vars.map{|x| [x.name, x.definition] }.to_h,
335
- attributes: @attributes.dup
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[:type]
371
- @dims = definition[:dims]
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
- @var_id = nc_def_var(@file_id, @name, @type, @dim_ids)
375
- @attributes = definition[:attributes].map{|key, value| [key.to_s, value]}.to_h.freeze
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 = nc_create(file)
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[:dims].each do |name, len|
487
- dim = Dim.new(self, name.to_s, len.to_i)
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.to_s] = dim
501
+ @name2dim[name] = dim
490
502
  end
491
- definition[:vars].each do |name, info|
492
- var = Var.new(self, name.to_s, info)
503
+ definition["variables"].each do |name, info|
504
+ var = Var.new(self, name, info)
493
505
  @vars.push var
494
- @name2var[name.to_s] = var
506
+ @name2var[name] = var
495
507
  end
496
- @attributes = definition[:attributes].map{|key, value| [key.to_s, value]}.to_h.freeze
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.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.13
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