public MetricsResult generate()

in src/main/java/com/epam/fonda/tools/impl/DnaPicardQc.java [120:154]


    public MetricsResult generate(Configuration configuration, TemplateEngine templateEngine) {
        workflowType = configuration.getGlobalConfig().getPipelineInfo().getWorkflow();
        libraryType = validate(configuration.getStudyConfig().getLibraryType(), StudyConfigFormat.LIBRARY_TYPE);
        if (checkWorkflow()) {
            return metricsResult;
        }
        StringBuilder cmd = new StringBuilder();
        AdditionalFields additionalFields = initializeAdditionalFields(configuration);
        MetricsFields metricsFields = initializeMetricsFields();
        Context context = buildContext(configuration, additionalFields, metricsFields);
        AbstractCommand resultCommand = metricsResult.getCommand();

        if (isWorkflowDnaAmplicon()) {
            cmd.append(templateEngine.process(DNA_AMPLICON_PICARD_QC_TOOL_TEMPLATE_NAME, context));
        } else if (isCaptureWorkflowTargetType(libraryType)) {
            cmd.append(templateEngine.process(DNA_CAPTURE_PICARD_QC_TOOL_TEMPLATE_NAME, context));
        } else if (isWorkflowDnaCapture() && matchesExomeLibraryTypeCondition(libraryType) ||
                isRnaWorkflow(configuration)) {
            cmd.append(templateEngine.process(DNA_PICARD_QC_TOOL_TEMPLATE_NAME, context));
        } else if (isWorkflowDnaWgs()) {
            cmd.append(templateEngine.process(DNA_WGS_PICARD_QC_TOOL_TEMPLATE_NAME, context));
        }
        if (isWorkflowRna()) {
            TaskContainer.addTasks("RNA QC metrics", "Merge RNA QC");
        } else {
            TaskContainer.addTasks("DNA QC metrics", "Merge DNA QC");
        }
        resultCommand.setToolCommand(resultCommand.getToolCommand() + cmd);

        return MetricsResult.builder()
                .bamOutput(metricsResult.getBamOutput())
                .metricsOutput(buildMetricsOutput())
                .command(resultCommand)
                .build();
    }