/* * #%L * gitools-ui-app * %% * Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.plugins.mutex.ui; import org.gitools.heatmap.Heatmap; import org.gitools.plugins.mutex.analysis.MutualExclusiveAnalysis; import org.gitools.resource.Property; import org.gitools.ui.core.components.wizard.AnalysisDetailsPage; import org.gitools.ui.core.components.wizard.AnalysisWizard; import org.gitools.ui.platform.wizard.IWizardPage; import org.gitools.utils.textpattern.TextPattern; import java.util.List; public class MutualExclusiveAnalysisWizard extends AnalysisWizard<MutualExclusiveAnalysis> { private final Heatmap heatmap; private MutualExclusiveAnalysisPage mutexPage; private AnalysisDetailsPage analysisDetailsPage; private MutualExclusiveAnalysis analysis; public MutualExclusiveAnalysisWizard(Heatmap heatmap) { super(); setTitle("Mutual exclusive & Co-occurrence analysis"); this.heatmap = heatmap; } @Override public void addPages() { // Column Selection mutexPage = new MutualExclusiveAnalysisPage(heatmap); addPage(mutexPage); // Analysis details analysisDetailsPage = new AnalysisDetailsPage(); addPage(analysisDetailsPage); String title = heatmap.getTitle() + " mutex-cooc"; analysisDetailsPage.setAnalysisTitle(title); } @Override public IWizardPage getPreviousPage(IWizardPage page) { page = getCurrentPage(); return super.getPreviousPage(page); } @Override public boolean canFinish() { boolean canFinish = super.canFinish(); IWizardPage page = getCurrentPage(); canFinish |= page.isComplete() && (page == mutexPage); return canFinish; } public MutualExclusiveAnalysis createAnalysis() { analysis = new MutualExclusiveAnalysis(heatmap); analysis.setTitle(analysisDetailsPage.getAnalysisTitle()); analysis.setDescription(analysisDetailsPage.getAnalysisDescription()); analysis.setProperties(analysisDetailsPage.getAnalysisProperties()); //TODO a.setMtc(mutexPage.getMtc()); //TODO a.setCopyAnnotation(groupingPage.isCopyHeatmapHeaders());/ analysis.setProperties(analysisDetailsPage.getAnalysisProperties()); List<Property> props = analysis.getProperties(); if (mutexPage.getColumnGroupsPattern() != null) { props.add(new Property("Column grouping", new TextPattern(mutexPage.getColumnGroupsPattern()).getVariableTokens().get(0).getVariableName())); } props.add(new Property("Rows grouping", new TextPattern(mutexPage.getRowsGroupsPattern()).getVariableTokens().get(0).getVariableName())); analysis.setTestDimension(heatmap.getRows()); analysis.setLayer(heatmap.getLayers().getTopLayer().getId()); analysis.setEventFunction(heatmap.getLayers().get(analysis.getLayer()).getEventFunction()); analysis.setDiscardEmpty(mutexPage.getDiscardEmpty()); analysis.setIterations(mutexPage.getPermutations()); analysis.setRowModuleMap(MutualExclusiveAnalysis.createModules(mutexPage.getRowsGroupsPattern(), false, heatmap.getRows())); analysis.setColumnsModuleMap(MutualExclusiveAnalysis.createModules(mutexPage.getColumnGroupsPattern(), mutexPage.isAllColumnsGroup(), heatmap.getColumns())); return analysis; } }