Search in sources :

Example 36 with Vec

use of water.fvec.Vec in project h2o-3 by h2oai.

the class AstRollupOp method apply.

@Override
public Val apply(Env env, Env.StackHelp stk, AstRoot[] asts) {
    Val arg1 = asts[1].exec(env);
    if (arg1.isRow()) {
        // Row-wise operation
        double[] ds = arg1.getRow();
        double d = ds[0];
        for (int i = 1; i < ds.length; i++) d = op(d, ds[i]);
        return new ValRow(new double[] { d }, null);
    }
    // Normal column-wise operation
    Frame fr = stk.track(arg1).getFrame();
    Vec[] vecs = fr.vecs();
    if (vecs.length == 0 || vecs[0].naCnt() > 0)
        return new ValNum(Double.NaN);
    double d = rup(vecs[0]);
    for (int i = 1; i < vecs.length; i++) {
        if (vecs[i].naCnt() > 0)
            return new ValNum(Double.NaN);
        d = op(d, rup(vecs[i]));
    }
    return new ValNum(d);
}
Also used : Val(water.rapids.Val) Frame(water.fvec.Frame) ValRow(water.rapids.vals.ValRow) Vec(water.fvec.Vec) ValNum(water.rapids.vals.ValNum)

Example 37 with Vec

use of water.fvec.Vec in project h2o-3 by h2oai.

the class AstSdev method apply.

@Override
public ValNums apply(Env env, Env.StackHelp stk, AstRoot[] asts) {
    Frame fr = stk.track(asts[1].exec(env)).getFrame();
    boolean narm = asts[2].exec(env).getNum() == 1;
    double[] ds = new double[fr.numCols()];
    Vec[] vecs = fr.vecs();
    for (int i = 0; i < fr.numCols(); i++) ds[i] = (!vecs[i].isNumeric() || vecs[i].length() == 0 || (!narm && vecs[i].naCnt() > 0)) ? Double.NaN : vecs[i].sigma();
    return new ValNums(ds);
}
Also used : Frame(water.fvec.Frame) Vec(water.fvec.Vec) ValNums(water.rapids.vals.ValNums)

Example 38 with Vec

use of water.fvec.Vec in project h2o-3 by h2oai.

the class AstRBind method apply.

@Override
public ValFrame apply(Env env, Env.StackHelp stk, AstRoot[] asts) {
    // Execute all args.  Find a canonical frame; all Frames must look like this one.
    // Each argument turns into either a Frame (whose rows are entirely
    // inlined) or a scalar (which is replicated across as a single row).
    // Canonical Frame; all frames have the same column count, types and names
    Frame fr = null;
    // Total chunks
    int nchks = 0;
    // Computed AstRoot results
    Val[] vals = new Val[asts.length];
    for (int i = 1; i < asts.length; i++) {
        vals[i] = stk.track(asts[i].exec(env));
        if (vals[i].isFrame()) {
            fr = vals[i].getFrame();
            // Total chunks
            nchks += fr.anyVec().nChunks();
        } else
            // One chunk per scalar
            nchks++;
    }
    // No Frame, just a pile-o-scalars?
    // The zero-length vec for the zero-frame frame
    Vec zz = null;
    if (fr == null) {
        // Zero-length, 1-column, default name
        fr = new Frame(new String[] { Frame.defaultColName(0) }, new Vec[] { zz = Vec.makeZero(0) });
        if (asts.length == 1)
            return new ValFrame(fr);
    }
    // Verify all Frames are the same columns, names, and types.  Domains can vary, and will be the union
    // Input frame
    final Frame[] frs = new Frame[asts.length];
    // Column types
    final byte[] types = fr.types();
    // Compute a new layout!
    final long[] espc = new long[nchks + 1];
    int coffset = 0;
    Frame[] tmp_frs = new Frame[asts.length];
    for (int i = 1; i < asts.length; i++) {
        // Save values computed for pass 2
        Val val = vals[i];
        Frame fr0 = val.isFrame() ? val.getFrame() : // Scalar: auto-expand into a 1-row frame
        (tmp_frs[i] = new Frame(fr._names, Vec.makeCons(val.getNum(), 1L, fr.numCols())));
        // Check that all frames are compatible
        if (fr.numCols() != fr0.numCols())
            throw new IllegalArgumentException("rbind frames must have all the same columns, found " + fr.numCols() + " and " + fr0.numCols() + " columns.");
        if (!Arrays.deepEquals(fr._names, fr0._names))
            throw new IllegalArgumentException("rbind frames must have all the same column names, found " + Arrays.toString(fr._names) + " and " + Arrays.toString(fr0._names));
        if (!Arrays.equals(types, fr0.types()))
            throw new IllegalArgumentException("rbind frames must have all the same column types, found " + Arrays.toString(types) + " and " + Arrays.toString(fr0.types()));
        // Save frame
        frs[i] = fr0;
        // Roll up the ESPC row counts
        long roffset = espc[coffset];
        long[] espc2 = fr0.anyVec().espc();
        for (// Roll up the row counts
        int j = 1; // Roll up the row counts
        j < espc2.length; // Roll up the row counts
        j++) espc[coffset + j] = (roffset + espc2[j]);
        // Chunk offset
        coffset += espc2.length - 1;
    }
    if (zz != null)
        zz.remove();
    // build up the new domains for each vec
    HashMap<String, Integer>[] dmap = new HashMap[types.length];
    String[][] domains = new String[types.length][];
    int[][][] cmaps = new int[types.length][][];
    for (int k = 0; k < types.length; ++k) {
        dmap[k] = new HashMap<>();
        int c = 0;
        byte t = types[k];
        if (t == Vec.T_CAT) {
            int[][] maps = new int[frs.length][];
            for (int i = 1; i < frs.length; i++) {
                maps[i] = new int[frs[i].vec(k).domain().length];
                for (int j = 0; j < maps[i].length; j++) {
                    String s = frs[i].vec(k).domain()[j];
                    if (!dmap[k].containsKey(s))
                        dmap[k].put(s, maps[i][j] = c++);
                    else
                        maps[i][j] = dmap[k].get(s);
                }
            }
            cmaps[k] = maps;
        } else {
            cmaps[k] = new int[frs.length][];
        }
        domains[k] = c == 0 ? null : new String[c];
        for (Map.Entry<String, Integer> e : dmap[k].entrySet()) domains[k][e.getValue()] = e.getKey();
    }
    // Now make Keys for the new Vecs
    Key<Vec>[] keys = fr.anyVec().group().addVecs(fr.numCols());
    Vec[] vecs = new Vec[fr.numCols()];
    int rowLayout = Vec.ESPC.rowLayout(keys[0], espc);
    for (int i = 0; i < vecs.length; i++) vecs[i] = new Vec(keys[i], rowLayout, domains[i], types[i]);
    // Do the row-binds column-by-column.
    // Switch to F/J thread for continuations
    AstRBind.ParallelRbinds t;
    H2O.submitTask(t = new AstRBind.ParallelRbinds(frs, espc, vecs, cmaps)).join();
    for (Frame tfr : tmp_frs) if (tfr != null)
        tfr.delete();
    return new ValFrame(new Frame(fr.names(), t._vecs));
}
Also used : Val(water.rapids.Val) ValFrame(water.rapids.vals.ValFrame) Frame(water.fvec.Frame) HashMap(java.util.HashMap) ValFrame(water.rapids.vals.ValFrame) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Vec(water.fvec.Vec) HashMap(java.util.HashMap) Map(java.util.Map) Key(water.Key)

Example 39 with Vec

use of water.fvec.Vec in project h2o-3 by h2oai.

the class UnfoldingFrame method materialize.

public List<DataColumn<X>> materialize() throws IOException {
    List<Vec> vecs = makeVecs();
    List<DataColumn<X>> result = new ArrayList<>(width);
    for (Vec vec : vecs) result.add(factory.newColumn(vec));
    return result;
}
Also used : Vec(water.fvec.Vec) ArrayList(java.util.ArrayList)

Example 40 with Vec

use of water.fvec.Vec in project h2o-3 by h2oai.

the class UnfoldingFrame method unfoldingFrame.

public static <X> UnfoldingFrame<X> unfoldingFrame(final ColumnFactory<X> factory, final Column<List<X>> master, int width) {
    return new UnfoldingFrame<X>(factory, master.size(), master, width) {

        @Override
        protected Vec buildZeroVec() {
            Vec v0 = DataColumns.buildZeroVec(this.len, factory.typeCode());
            v0.align(master.vec());
            return v0;
        }
    };
}
Also used : Vec(water.fvec.Vec)

Aggregations

Vec (water.fvec.Vec)280 Frame (water.fvec.Frame)213 Test (org.junit.Test)82 NFSFileVec (water.fvec.NFSFileVec)48 ValFrame (water.rapids.vals.ValFrame)47 Chunk (water.fvec.Chunk)30 Random (java.util.Random)25 NewChunk (water.fvec.NewChunk)23 DeepLearningParameters (hex.deeplearning.DeepLearningModel.DeepLearningParameters)22 Key (water.Key)21 MRTask (water.MRTask)17 Val (water.rapids.Val)14 File (java.io.File)11 ArrayList (java.util.ArrayList)11 Futures (water.Futures)11 H2OIllegalArgumentException (water.exceptions.H2OIllegalArgumentException)11 ValNum (water.rapids.vals.ValNum)11 ShuffleSplitFrame (hex.splitframe.ShuffleSplitFrame)10 BufferedString (water.parser.BufferedString)10 AppendableVec (water.fvec.AppendableVec)9