/** @return the splitNames selected by the editor. */ public static DataModel createSplits(DataSet dataSet, SplitCasesParams params) { List<Integer> indices = new ArrayList<Integer>(dataSet.getNumRows()); for (int i = 0; i < dataSet.getNumRows(); i++) { indices.add(i); } if (params.isDataShuffled()) { Collections.shuffle(indices); } SplitCasesSpec spec = params.getSpec(); int numSplits = params.getNumSplits(); int sampleSize = spec.getSampleSize(); int[] breakpoints = spec.getBreakpoints(); List<String> splitNames = spec.getSplitNames(); int[] _breakpoints = new int[breakpoints.length + 2]; _breakpoints[0] = 0; _breakpoints[_breakpoints.length - 1] = sampleSize; System.arraycopy(breakpoints, 0, _breakpoints, 1, breakpoints.length); DataModelList list = new DataModelList(); int ncols = dataSet.getNumColumns(); for (int n = 0; n < numSplits; n++) { int _sampleSize = _breakpoints[n + 1] - _breakpoints[n]; DataSet _data = new ColtDataSet(_sampleSize, dataSet.getVariables()); _data.setName(splitNames.get(n)); for (int i = 0; i < _sampleSize; i++) { int oldCase = indices.get(i + _breakpoints[n]); for (int j = 0; j < ncols; j++) { _data.setObject(i, j, dataSet.getObject(oldCase, j)); } } list.add(_data); } return list; }
/** * Generates a simple exemplar of this class to test serialization. * * @see edu.cmu.TestSerialization * @see TetradSerializableUtils */ public static DataWrapper serializableInstance() { SplitCasesParams params = new SplitCasesParams(); params.setNumSplits(1); params.setSpec(new SplitCasesSpec(1, new int[1], Collections.singletonList("1"))); return new SplitCasesWrapper(DataWrapper.serializableInstance(), params); }