Search in sources :

Example 16 with TaskContext

use of org.dkpro.lab.engine.TaskContext in project dkpro-lab by dkpro.

the class ReportingEngine method run.

@Override
public String run(Task aConfiguration) throws ExecutionException, LifeCycleException {
    if (!(aConfiguration instanceof ReportingTask)) {
        throw new ExecutionException("This engine can only execute [" + ReportingTask.class.getName() + "]");
    }
    // Create persistence service for injection into analysis components
    TaskContext ctx = null;
    try {
        ctx = contextFactory.createContext(aConfiguration);
        // Now the setup is complete
        ctx.getLifeCycleManager().initialize(ctx, aConfiguration);
        // Start recording
        ctx.getLifeCycleManager().begin(ctx, aConfiguration);
        // End recording (here the reports will nbe done)
        ctx.getLifeCycleManager().complete(ctx, aConfiguration);
        return ctx.getId();
    } finally {
        if (ctx != null) {
            ctx.getLifeCycleManager().destroy(ctx, aConfiguration);
        }
    }
}
Also used : TaskContext(org.dkpro.lab.engine.TaskContext) ExecutionException(org.dkpro.lab.engine.ExecutionException) ReportingTask(org.dkpro.lab.task.ReportingTask)

Example 17 with TaskContext

use of org.dkpro.lab.engine.TaskContext in project dkpro-lab by dkpro.

the class BatchTaskEngine method run.

@Override
public String run(Task aConfiguration) throws ExecutionException, LifeCycleException {
    if (!(aConfiguration instanceof BatchTask)) {
        throw new ExecutionException("This engine can only execute [" + BatchTask.class.getName() + "]");
    }
    // Create persistence service for injection into analysis components
    TaskContext ctx = null;
    try {
        ctx = contextFactory.createContext(aConfiguration);
        // Now the setup is complete
        ctx.getLifeCycleManager().initialize(ctx, aConfiguration);
        // Start recording
        ctx.getLifeCycleManager().begin(ctx, aConfiguration);
        try {
            BatchTask cfg = (BatchTask) aConfiguration;
            ParameterSpace parameterSpace = cfg.getParameterSpace();
            // Try to calculate the parameter space size.
            int estimatedSize = 1;
            for (Dimension<?> d : parameterSpace.getDimensions()) {
                if (d instanceof FixedSizeDimension) {
                    FixedSizeDimension fsd = (FixedSizeDimension) d;
                    if (fsd.size() > 0) {
                        estimatedSize *= fsd.size();
                    }
                }
            }
            // A subtask execution may apply to multiple parameter space coordinates!
            Set<String> executedSubtasks = new LinkedHashSet<String>();
            ProgressMeter progress = new ProgressMeter(estimatedSize);
            for (Map<String, Object> config : parameterSpace) {
                if (cfg.getConfiguration() != null) {
                    for (Entry<String, Object> e : cfg.getConfiguration().entrySet()) {
                        if (!config.containsKey(e.getKey())) {
                            config.put(e.getKey(), e.getValue());
                        }
                    }
                }
                log.info("== Running new configuration [" + ctx.getId() + "] ==");
                List<String> keys = new ArrayList<String>(config.keySet());
                for (String key : keys) {
                    log.info("[" + key + "]: [" + StringUtils.abbreviateMiddle(Util.toString(config.get(key)), "…", 150) + "]");
                }
                executeConfiguration(cfg, ctx, config, executedSubtasks);
                progress.next();
                log.info("Completed configuration " + progress);
            }
            // Set the subtask property and persist again, so the property is available to
            // reports
            cfg.setAttribute(SUBTASKS_KEY, executedSubtasks.toString());
            cfg.persist(ctx);
        } catch (LifeCycleException e) {
            ctx.getLifeCycleManager().fail(ctx, aConfiguration, e);
            throw e;
        } catch (UnresolvedImportException e) {
            // HACK - pass unresolved import exceptions up to the outer batch task
            ctx.getLifeCycleManager().fail(ctx, aConfiguration, e);
            throw e;
        } catch (Throwable e) {
            ctx.getLifeCycleManager().fail(ctx, aConfiguration, e);
            throw new ExecutionException(e);
        }
        // End recording (here the reports will nbe done)
        ctx.getLifeCycleManager().complete(ctx, aConfiguration);
        return ctx.getId();
    } finally {
        if (ctx != null) {
            ctx.getLifeCycleManager().destroy(ctx, aConfiguration);
        }
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) TaskContext(org.dkpro.lab.engine.TaskContext) BatchTask(org.dkpro.lab.task.BatchTask) ArrayList(java.util.ArrayList) LifeCycleException(org.dkpro.lab.engine.LifeCycleException) FixedSizeDimension(org.dkpro.lab.task.FixedSizeDimension) UnresolvedImportException(org.dkpro.lab.storage.UnresolvedImportException) ParameterSpace(org.dkpro.lab.task.ParameterSpace) ProgressMeter(org.dkpro.lab.ProgressMeter) ExecutionException(org.dkpro.lab.engine.ExecutionException)

Aggregations

TaskContext (org.dkpro.lab.engine.TaskContext)17 DefaultBatchTask (org.dkpro.lab.task.impl.DefaultBatchTask)11 ExecutableTaskBase (org.dkpro.lab.task.impl.ExecutableTaskBase)9 Test (org.junit.Test)9 ParameterSpace (org.dkpro.lab.task.ParameterSpace)7 File (java.io.File)5 ExecutionException (org.dkpro.lab.engine.ExecutionException)5 Task (org.dkpro.lab.task.Task)5 LifeCycleException (org.dkpro.lab.engine.LifeCycleException)4 ArrayList (java.util.ArrayList)3 ImsCwbWriter (de.tudarmstadt.ukp.dkpro.core.io.imscwb.ImsCwbWriter)2 XmiWriter (de.tudarmstadt.ukp.dkpro.core.io.xmi.XmiWriter)2 SnowballStemmer (de.tudarmstadt.ukp.dkpro.core.snowball.SnowballStemmer)2 BreakIteratorSegmenter (de.tudarmstadt.ukp.dkpro.core.tokit.BreakIteratorSegmenter)2 Properties (java.util.Properties)2 UIMAFramework.newDefaultResourceManager (org.apache.uima.UIMAFramework.newDefaultResourceManager)2 AnalysisEngineDescription (org.apache.uima.analysis_engine.AnalysisEngineDescription)2 ResourceManager (org.apache.uima.resource.ResourceManager)2 ExamplePosAnnotator (org.dkpro.lab.ml.example.ExamplePosAnnotator)2 UnresolvedImportException (org.dkpro.lab.storage.UnresolvedImportException)2