def initialize(path)
unless NuSDaS.is_a_NuSDaS?(path)
raise "path must be NuSDaS root directory"
end
@root = path
@meta = Hash.new
unless search_dir(path)
raise "No NuSDas files are found"
end
@meta[:basetimes].each{|bt,hash|
[:members, :validtimes, :planes, :elements].each{|name|
hash[name].sort!.flatten!
}
nm = hash[:members].length
nt = hash[:validtimes].length
np = hash[:planes].length
ne = hash[:elements].length
hash[:nmember] = nm
hash[:nvalidtime] = nt
hash[:nplane] = np
hash[:nelement] = ne
na = NArray.byte(ne, np, nt, nm).fill(@@fnumber_max+1)
ind = NArray.sint(ne, np, nt, nm).indgen
hash[:files].each_with_index{|h5,i|
slice = Array.new
[:elements, :planes, :validtimes, :members].each{|name|
ary = hash[name].to_a
slice.push h5[name].collect{|el| ary.index(el)}
}
pos = h5[:record_pos]
mask = pos.ne(0) & pos.ne(-1)
na[ind[*slice][mask]] = i
}
hash[:fnumber] = na
}
end