protected int calcStructureSize() { int structureSize = 0; for (Variable member : members) { structureSize += member.getSize() * member.getElementSize(); } return structureSize; }
protected int calcStructureSize() { int structureSize = 0; for (Variable member : members) { structureSize += member.getSize() * member.getElementSize(); } return structureSize; }
protected int calcStructureSize() { int structureSize = 0; for (Variable member : members) { structureSize += member.getSize() * member.getElementSize(); } return structureSize; }
/** * Force recalculation of size of one element of this structure - equals the sum of sizes of its members. * This is used only by low level classes like IOSPs. */ public void calcElementSize() { int total = 0; for (Variable v : members) { total += v.getElementSize() * v.getSize(); } elementSize = total; }
/** * Force recalculation of size of one element of this structure - equals the sum of sizes of its members. * This is used only by low level classes like IOSPs. */ public void calcElementSize() { int total = 0; for (Variable v : members) { total += v.getElementSize() * v.getSize(); } elementSize = total; }
/** * Force recalculation of size of one element of this structure - equals the sum of sizes of its members. * This is used only by low level classes like IOSPs. */ public void calcElementSize() { int total = 0; for (Variable v : members) { total += v.getElementSize() * v.getSize(); } elementSize = total; }
@Override public boolean isChunked(Variable v) { if (v.isUnlimited()) return true; long size = v.getSize() * v.getElementSize(); return size >= DEFAULT_CHUNKSIZE; }
@Override public boolean isChunked(Variable v) { if (v.isUnlimited()) return true; // if (getChunkAttribute(v) != null) return true; long size = v.getSize() * v.getElementSize(); return (size > minVariableSize); }
/** * Will this Variable be cached when read. * Set externally, or calculated based on total size < sizeToCache. * * @return true is caching */ public boolean isCaching() { if (!this.cache.cachingSet) { cache.isCaching = !isVariableLength && (getSize() * getElementSize() < getSizeToCache()); this.cache.cachingSet = true; } return cache.isCaching; }
@Override public boolean isChunked(Variable v) { if (v.isUnlimited()) return true; if (getChunkAttribute(v) != null) return true; long size = v.getSize() * v.getElementSize(); return (size > minVariableSize); }
@Override public boolean isChunked(Variable v) { if (v.isUnlimited()) return true; // if (getChunkAttribute(v) != null) return true; int n = v.getRank(); return n >= 2 && v.getSize() * v.getElementSize() > getMinVariableSize(); }
public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
@Override public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
@Override public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
@Override public boolean isChunked(Variable v) { if (v.isUnlimited()) return true; if (getChunkAttribute(v) != null) return true; int n = v.getRank(); return n >= 2 && v.getSize() * v.getElementSize() > getMinVariableSize(); }
@Override public long[] computeChunking(Variable v) { // use entire if small enough long size = v.getSize() * v.getElementSize(); if (size < DEFAULT_CHUNKSIZE) return convert(v.getShape()); // all of it if (v.isUnlimited()) return _computeChunkingUnlimited(v); return _computeChunking(v); }
private ucar.ma2.Array readNestedData(ucar.nc2.Variable v2, Section section) throws java.io.IOException, ucar.ma2.InvalidRangeException { N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); // construct the full shape for use by RegularIndexer int[] fullShape = new int[v2.getRank() + 1]; fullShape[0] = header.numrecs; // the first dimension System.arraycopy(v2.getShape(), 0, fullShape, 1, v2.getRank()); // the remaining dimensions Layout layout = new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, fullShape, section); Object dataObject = readData(layout, dataType); return Array.factory(dataType, section.getShape(), dataObject); }
private ucar.ma2.Array readNestedData(ucar.nc2.Variable v2, Section section) throws java.io.IOException, ucar.ma2.InvalidRangeException { N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); // construct the full shape for use by RegularIndexer int[] fullShape = new int[v2.getRank() + 1]; fullShape[0] = header.numrecs; // the first dimension System.arraycopy(v2.getShape(), 0, fullShape, 1, v2.getRank()); // the remaining dimensions Layout layout = new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, fullShape, section); Object dataObject = readData(layout, dataType); return Array.factory(dataType.getPrimitiveClassType(), section.getShape(), dataObject); }
public ucar.ma2.Array readNestedData(ucar.nc2.Variable v2, Section section) throws java.io.IOException, ucar.ma2.InvalidRangeException { N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); // construct the full shape for use by RegularIndexer int[] fullShape = new int[v2.getRank() + 1]; fullShape[0] = header.numrecs; // the first dimension System.arraycopy(v2.getShape(), 0, fullShape, 1, v2.getRank()); // the remaining dimensions Layout layout = new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, fullShape, section); Object dataObject = readData(layout, dataType); return Array.factory(dataType.getPrimitiveClassType(), section.getShape(), dataObject); }
public Array readData(Variable v2, Section wantSection) throws IOException, InvalidRangeException { // raf.seek(0); raf.order(RandomAccessFile.BIG_ENDIAN); int size = (int) wantSection.computeSize(); short[] arr = new short[size]; LayoutRegular indexer = new LayoutRegular(0, v2.getElementSize(), v2.getShape(), wantSection); while (indexer.hasNext()) { Layout.Chunk chunk = indexer.next(); raf.seek(chunk.getSrcPos()); raf.readShort(arr, (int) chunk.getDestElem(), chunk.getNelems()); // copy into primitive array } return Array.factory(v2.getDataType().getPrimitiveClassType(), wantSection.getShape(), arr); }