# File lib/numru/nusdas.rb, line 210
    def initialize(path, not_use_nusdas_def=false)
      @debug |= $DEBUG
      unless NuSDaS.is_a_NuSDaS?(path)
        raise "path must be NuSDaS root directory"
      end
      @root = path
      @meta = Hash.new
      flag = false
      unless not_use_nusdas_def
        flag = true if fnames = parse_nusdas_def
      end
      fnames = path unless flag
      unless search_dir(fnames, flag)
        raise "No NuSDaS files are found"
      end
      @meta[:basetimes].sort!
      @meta[:nbasetime] = @meta[:basetimes].length
      unless flag
        [:members, :validtimes, :planes, :planes2, :elements].each{|name|
          @meta[name].sort!.flatten!
        }
        @meta[:validtimes] = NArray.to_na(@meta[:validtimes])
        @meta[:nmember] = @meta[:members].length
        @meta[:nvalidtime] = @meta[:validtimes].length
        @meta[:nplane] = @meta[:planes].length
        @meta[:nelement] =  @meta[:elements].length
      end
      names = [:basetimes, :elements, :planes, :validtimes, :members]
      ind_hash = Hash.new
      @meta[:files].each_with_index{|hash,i|
        names.each{|name|
          ary = @meta[name].to_a
          v = hash[name]
          if v==ary
            hash[name] = true
          else
            unless h = ind_hash[name]
              ind_hash[name] = h = Hash.new
              ary.each_with_index{|vv,i| h[vv] = i}
            end
            if Array === v || NArray === v
              hash[name] = v.collect{|el| h[el]}
            else
              hash[name] = h[v]
            end
          end
        }
      }
      np = @meta[:nplane]
      nt = @meta[:nvalidtime]
      nm = @meta[:nmember]
      ne = @meta[:nelement]
      nb = @meta[:nbasetime]
      na = NArray.byte(ne, np, nt, nm, nb).fill(@@fnumber_max+1)
      ind = NArray.int(ne, np, nt, nm, nb).indgen
      @meta[:files].each_with_index{|h,i|
        slice = [h[:elements],h[:planes],h[:validtimes],h[:members],h[:basetimes]]
        pos = h[:record_pos]
        mask = pos.ne(0) & pos.ne(-1)
        na[ind[*slice][mask]] = i
      }
      @meta[:fnumber] = na
    end