# File lib/numru/nusdas.rb, line 171
    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