public static ConcatVectorTable readFromProto(ConcatVectorTableProto.ConcatVectorTable proto) {
        int[] neighborSizes = new int[proto.getDimensionSizeCount()];
        for (int i = 0; i < neighborSizes.length; i++) {
            neighborSizes[i] = proto.getDimensionSize(i);
        }
        ConcatVectorTable factor = new ConcatVectorTable(neighborSizes);
        int i = 0;
        for (int[] assignment : factor) {
            final ConcatVector vector = ConcatVector.readFromProto(proto.getFactorTable(i));
            factor.setAssignmentValue(assignment, () -> vector);
            i++;
        }
        return factor;
    }
public static ConcatVectorTable readFromProto ( ConcatVectorTableProto . ConcatVectorTable proto ) { int [ ] neighborSizes = new int [ proto . getDimensionSizeCount ( ) ] ; for ( int i = 0 ; i < neighborSizes . length ; i ++ ) { neighborSizes [ i ] = proto . getDimensionSize ( i ) ; } ConcatVectorTable factor = new ConcatVectorTable ( neighborSizes ) ; int i = 0 ; for ( int [ ] assignment : factor ) { final ConcatVector vector = ConcatVector . readFromProto ( proto . getFactorTable ( i ) ) ; factor . setAssignmentValue ( assignment , ( ) -> vector ) ; i ++ ; } return factor ; }
Creates a new in-memory feature factor from a proto serialization,

@param proto the proto object to be turned into an in-memory feature factor
@return an in-memory feature factor, complete with in-memory concat vectors