use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.
the class BatchTaskTest method testNested.
@Test
public void testNested() throws Exception {
Dimension innerDim = Dimension.create("inner", "1", "2", "3");
ParameterSpace innerPSpace = new ParameterSpace(innerDim);
DefaultBatchTask innerTask = new DefaultBatchTask() {
@Override
public void setConfiguration(Map<String, Object> aConfig) {
super.setConfiguration(aConfig);
System.out.printf("A %10d %s %s%n", this.hashCode(), getType(), aConfig);
}
};
innerTask.setParameterSpace(innerPSpace);
innerTask.addTask(new ConfigDumperTask1());
Dimension outerDim = Dimension.create("outer", "1", "2", "3");
ParameterSpace outerPSpace = new ParameterSpace(outerDim);
DefaultBatchTask outerTask = new DefaultBatchTask() {
@Override
public void setConfiguration(Map<String, Object> aConfig) {
super.setConfiguration(aConfig);
System.out.printf("B %10d %s %s%n", this.hashCode(), getType(), aConfig);
}
};
outerTask.setParameterSpace(outerPSpace);
outerTask.addTask(innerTask);
outerTask.addTask(new ConfigDumperTask2());
Lab.getInstance().run(outerTask);
}
use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.
the class BatchTaskTest method testNested2.
@Test
public void testNested2() throws Exception {
DefaultBatchTask innerTask = new DefaultBatchTask() {
@Discriminator
private Integer outer;
@Override
public ParameterSpace getParameterSpace() {
// Dynamically configure parameter space of nested batch task
Integer[] values = new Integer[outer];
for (int i = 0; i < outer; i++) {
values[i] = i;
}
Dimension<Integer> innerDim = Dimension.create("inner", values);
ParameterSpace innerPSpace = new ParameterSpace(innerDim);
return innerPSpace;
}
@Override
public void setConfiguration(Map<String, Object> aConfig) {
super.setConfiguration(aConfig);
System.out.printf("A %10d %s %s%n", this.hashCode(), getType(), aConfig);
}
};
innerTask.addTask(new ConfigDumperTask1());
Dimension<Integer> outerDim = Dimension.create("outer", 1, 2, 3);
ParameterSpace outerPSpace = new ParameterSpace(outerDim);
DefaultBatchTask outerTask = new DefaultBatchTask() {
@Override
public void setConfiguration(Map<String, Object> aConfig) {
super.setConfiguration(aConfig);
System.out.printf("B %10d %s %s%n", this.hashCode(), getType(), aConfig);
}
};
outerTask.setParameterSpace(outerPSpace);
outerTask.addTask(innerTask);
outerTask.addTask(new ConfigDumperTask2());
Lab.getInstance().run(outerTask);
}
use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.
the class FoldDimensionBundleTest method testComparator.
/**
* Tests that instances in the same cluster (here, parent folder) go into a fold together.
*/
@Test
public void testComparator() {
Dimension<String> baseData = Dimension.create("base", "aa/1.txt", "aa/2.txt", "aa/3.txt", "bb/4.txt", "bb/5.txt", "bb/6.txt", "cc/7.txt", "cc/8.txt", "cc/9.txt", "cc/10.txt");
Comparator<String> comp = new Comparator<String>() {
@Override
public int compare(String filename1, String filename2) {
File file1 = new File(filename1);
File file2 = new File(filename2);
String folder1 = file1.getParentFile().getName();
String folder2 = file2.getParentFile().getName();
if (folder1.equals(folder2)) {
return 0;
}
return 1;
}
};
FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3, comp);
String expected = "0 - [aa/1.txt, aa/2.txt, aa/3.txt] [bb/4.txt, bb/5.txt, bb/6.txt, cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt]\n" + "1 - [bb/4.txt, bb/5.txt, bb/6.txt] [aa/1.txt, aa/2.txt, aa/3.txt, cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt]\n" + "2 - [cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt] [aa/1.txt, aa/2.txt, aa/3.txt, bb/4.txt, bb/5.txt, bb/6.txt]\n";
StringBuilder actual = new StringBuilder();
int n = 0;
ParameterSpace pSpace = new ParameterSpace(foldBundle);
for (Map<String, Object> config : pSpace) {
actual.append(String.format("%d - %s %s\n", n, config.get("fold_validation"), config.get("fold_training")));
n++;
}
assertEquals(3, n);
assertEquals(3, pSpace.getStepCount());
assertEquals(expected, actual.toString());
}
use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.
the class FoldDimensionBundleTest method testFoldDistribution.
/**
* Tests to see that instances are evenly distributed across folds.
*/
@Test
public void testFoldDistribution() {
Dimension<String> baseData = Dimension.create("base", "aa/1.txt", "aa/2.txt", "bb/3.txt", "cc/4.txt", "dd/5.txt", "dd/6.txt", "ee/7.txt", "ff/8.txt", "gg/9.txt", "gg/10.txt");
Comparator<String> comp = new Comparator<String>() {
@Override
public int compare(String filename1, String filename2) {
File file1 = new File(filename1);
File file2 = new File(filename2);
String folder1 = file1.getParentFile().getName();
String folder2 = file2.getParentFile().getName();
if (folder1.equals(folder2)) {
return 0;
}
return 1;
}
};
FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3, comp);
String expected = "0 - [aa/1.txt, aa/2.txt, ff/8.txt] [bb/3.txt, dd/5.txt, dd/6.txt, cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt]\n" + "1 - [bb/3.txt, dd/5.txt, dd/6.txt] [aa/1.txt, aa/2.txt, ff/8.txt, cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt]\n" + "2 - [cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt] [aa/1.txt, aa/2.txt, ff/8.txt, bb/3.txt, dd/5.txt, dd/6.txt]\n";
StringBuilder actual = new StringBuilder();
int n = 0;
ParameterSpace pSpace = new ParameterSpace(foldBundle);
for (Map<String, Object> config : pSpace) {
actual.append(String.format("%d - %s %s\n", n, config.get("fold_validation"), config.get("fold_training")));
n++;
}
// System.out.println(actual.toString());
assertEquals(3, n);
assertEquals(3, pSpace.getStepCount());
assertEquals(expected, actual.toString());
}
use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.
the class FoldDimensionBundleTest method testFoldInjection.
@Test
public void testFoldInjection() throws Exception {
File repo = new File("target/repository/" + getClass().getSimpleName() + "/" + name.getMethodName());
FileUtils.deleteDirectory(repo);
repo.mkdirs();
((FileSystemStorageService) Lab.getInstance().getStorageService()).setStorageRoot(repo);
Dimension<String> baseData = Dimension.create("base", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3);
String expected = "0 - [1, 4, 7, 10] [2, 5, 8, 3, 6, 9]\n" + "1 - [2, 5, 8] [1, 4, 7, 10, 3, 6, 9]\n" + "2 - [3, 6, 9] [1, 4, 7, 10, 2, 5, 8]\n";
ParameterSpace pSpace = new ParameterSpace(foldBundle);
final StringBuilder actual = new StringBuilder();
Task testTask = new ExecutableTaskBase() {
int n = 0;
@Discriminator
Collection<String> fold_validation;
@Discriminator
Collection<String> fold_training;
@Override
public void execute(TaskContext aContext) throws Exception {
System.out.printf("%d training : %s\n", n, fold_training);
System.out.printf("%d validation: %s\n", n, fold_validation);
actual.append(String.format("%d - %s %s\n", n, fold_validation, fold_training));
n++;
}
};
DefaultBatchTask batchTask = new DefaultBatchTask();
batchTask.setParameterSpace(pSpace);
batchTask.addTask(testTask);
Lab.getInstance().run(batchTask);
assertEquals(3, pSpace.getStepCount());
assertEquals(expected, actual.toString());
}
Aggregations