Search in sources :

Example 1 with EMSignatureDataSet

use of org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet in project EnrichmentMapApp by BaderLab.

the class LegacySessionLoader method loadSession.

/**
	 * Restore Enrichment maps
	 *
	 * @param pStateFileList - list of files associated with thie session
	 */
@SuppressWarnings("unchecked")
public void loadSession(CySession session) {
    Map<Long, EnrichmentMapParameters> paramsMap = new HashMap<>();
    Map<Long, EnrichmentMap> enrichmentMapMap = new HashMap<>();
    List<File> fileList = session.getAppFileListMap().get(CyActivator.APP_NAME);
    try {
        //go through the prop files first to create the correct objects to be able to add other files to.
        for (File prop_file : fileList) {
            if (prop_file.getName().contains(".props")) {
                InputStream reader = streamUtil.getInputStream(prop_file.getAbsolutePath());
                String fullText = new Scanner(reader, "UTF-8").useDelimiter("\\A").next();
                //Given the file with all the parameters create a new parameter
                EnrichmentMapParameters params = enrichmentMapParametersFactory.create(fullText);
                EnrichmentMap em = new EnrichmentMap(params.getCreationParameters(), serviceRegistrar);
                //get the network name
                String param_name = em.getName();
                //TODO:distinguish between GSEA and EM saved sessions
                String props_name = (prop_file.getName().split("\\."))[0];
                String networkName = param_name;
                //related to bug ticket #49
                if (!props_name.equalsIgnoreCase(param_name))
                    networkName = props_name;
                //after associated the properties with the network
                //initialized each Dataset that we have files for
                HashMap<String, DataSetFiles> files = params.getFiles();
                for (Iterator<String> j = params.getFiles().keySet().iterator(); j.hasNext(); ) {
                    String current_dataset = j.next();
                    Method method = EnrichmentMapParameters.stringToMethod(params.getMethod());
                    em.createDataSet(current_dataset, method, files.get(current_dataset));
                }
                CyNetwork network = getNetworkByName(networkName);
                Long suid = network.getSUID();
                em.setNetworkID(suid);
                paramsMap.put(suid, params);
                enrichmentMapMap.put(suid, em);
            }
        }
        // go through the rest of the files
        for (File propFile : fileList) {
            FileNameParts parts = ParseFileName(propFile);
            if (parts == null || propFile.getName().contains(".props"))
                continue;
            CyNetwork net = getNetworkByName(parts.name);
            EnrichmentMap em = net == null ? null : enrichmentMapMap.get(net.getSUID());
            EnrichmentMapParameters params = paramsMap.get(net.getSUID());
            Method method = EnrichmentMapParameters.stringToMethod(params.getMethod());
            if (em == null) {
                System.out.println("network for file" + propFile.getName() + " does not exist.");
            } else if ((!propFile.getName().contains(".props")) && (!propFile.getName().contains(".expression1.txt")) && (!propFile.getName().contains(".expression2.txt"))) {
                HashMap<String, String> props = params.getProps();
                //if this a dataset specific file make sure there is a dataset object for it
                if (!(parts.dataset == null) && em.getDataSet(parts.dataset) == null && !parts.dataset.equalsIgnoreCase("signature"))
                    em.createDataSet(parts.dataset, method, params.getFiles().get(parts.dataset));
                if (parts.type == null)
                    System.out.println("Sorry, unable to determine the type of the file: " + propFile.getName());
                //read the file
                InputStream reader = streamUtil.getInputStream(propFile.getAbsolutePath());
                String fullText = new Scanner(reader, "UTF-8").useDelimiter("\\A").next();
                //if the file is empty then skip it
                if (fullText == null || fullText.equalsIgnoreCase(""))
                    continue;
                if (propFile.getName().contains(".gmt")) {
                    HashMap<String, GeneSet> gsMap = (HashMap<String, GeneSet>) params.repopulateHashmap(fullText, 1);
                    if (propFile.getName().contains(".signature.gmt")) {
                        // TODO Find a better way to serialize EMSignatureDataSet
                        String sdsName = propFile.getName().replace(".signature.gmt", "");
                        sdsName = NamingUtil.getUniqueName(sdsName, em.getSignatureDataSets().keySet());
                        EMSignatureDataSet sigDataSet = new EMSignatureDataSet(sdsName);
                        em.addSignatureDataSet(sigDataSet);
                        SetOfGeneSets sigGeneSets = sigDataSet.getGeneSetsOfInterest();
                        gsMap.forEach((k, v) -> sigGeneSets.addGeneSet(k, v));
                    } else if (propFile.getName().contains(".set2.gmt")) {
                        // account for legacy session files
                        if (em.getAllGeneSets().containsKey(LegacySupport.DATASET2)) {
                            SetOfGeneSets gs = new SetOfGeneSets(LegacySupport.DATASET2, props);
                            gs.setGeneSets(gsMap);
                        }
                    } else {
                        SetOfGeneSets gs = new SetOfGeneSets(parts.dataset, props);
                        gs.setGeneSets(gsMap);
                        em.getDataSets().get(parts.dataset).setSetOfGeneSets(gs);
                    }
                }
                if (propFile.getName().contains(".genes.txt")) {
                    HashMap<String, Integer> genes = params.repopulateHashmap(fullText, 2);
                    genes.forEach(em::addGene);
                    //ticket #188 - unable to open session files that have empty enrichment maps.
                    if (genes != null && !genes.isEmpty())
                        // Ticket #107 : restore also gene count (needed to determine the next free hash in case we do PostAnalysis with a restored session)
                        em.setNumberOfGenes(Math.max(em.getNumberOfGenes(), Collections.max(genes.values()) + 1));
                }
                if (propFile.getName().contains(".hashkey2genes.txt")) {
                    HashMap<Integer, String> hashkey2gene = params.repopulateHashmap(fullText, 5);
                    //ticket #188 - unable to open session files that have empty enrichment maps.
                    if (hashkey2gene != null && !hashkey2gene.isEmpty())
                        // Ticket #107 : restore also gene count (needed to determine the next free hash in case we do PostAnalysis with a restored session)
                        em.setNumberOfGenes(Math.max(em.getNumberOfGenes(), Collections.max(hashkey2gene.keySet()) + 1));
                }
                if ((parts.type != null && (parts.type.equalsIgnoreCase("ENR") || (parts.type.equalsIgnoreCase("SubENR")))) || propFile.getName().contains(".ENR1.txt") || propFile.getName().contains(".SubENR1.txt")) {
                    SetOfEnrichmentResults enrichments;
                    int temp = 1;
                    //check to see if this dataset has enrichment results already
                    if (parts.dataset != null && em.getDataSet(parts.dataset).getEnrichments() != null) {
                        enrichments = em.getDataSet(parts.dataset).getEnrichments();
                    } else if (parts.dataset == null) {
                        enrichments = em.getDataSet(LegacySupport.DATASET1).getEnrichments();
                    /*enrichments = new SetOfEnrichmentResults(EnrichmentMap.DATASET1,props);
                			em.getDataset(EnrichmentMap.DATASET1).setEnrichments(enrichments);*/
                    } else {
                        enrichments = new SetOfEnrichmentResults(parts.dataset, props);
                        em.getDataSet(parts.dataset).setEnrichments(enrichments);
                    }
                    if (parts.type.equalsIgnoreCase("ENR") || propFile.getName().contains(".ENR1.txt")) {
                        if (params.getMethod().equalsIgnoreCase(EnrichmentMapParameters.method_GSEA))
                            enrichments.setEnrichments(params.repopulateHashmap(fullText, 3));
                        else
                            enrichments.setEnrichments(params.repopulateHashmap(fullText, 4));
                    }
                }
                //it would only happen for sessions saved with version 0.8
                if (propFile.getName().contains(".RANKS1.txt") || propFile.getName().contains(".RANKS1Genes.txt")) {
                    Ranking new_ranking;
                    //Check to see if there is already GSEARanking
                    if (em.getDataSet(LegacySupport.DATASET1).getExpressionSets().getAllRanksNames().contains(Ranking.GSEARanking)) {
                        new_ranking = em.getDataSet(LegacySupport.DATASET1).getExpressionSets().getRanksByName(Ranking.GSEARanking);
                    } else {
                        new_ranking = new Ranking();
                        em.getDataSet(LegacySupport.DATASET1).getExpressionSets().addRanks(Ranking.GSEARanking, new_ranking);
                    }
                    if (propFile.getName().contains(".RANKS1.txt")) {
                        Map<Integer, Rank> ranks = (Map<Integer, Rank>) params.repopulateHashmap(fullText, 7);
                        ranks.forEach(new_ranking::addRank);
                    }
                //						if(prop_file.getName().contains(".RANKS1Genes.txt"))
                //							new_ranking.setRank2gene(em.getParams().repopulateHashmap(fullText,7));
                //						if(prop_file.getName().contains(".RANKS1.txt"))
                //							new_ranking.setRanking(em.getParams().repopulateHashmap(fullText,6));
                }
                if (propFile.getName().contains(".RANKS.txt")) {
                    if (parts.ranks_name == null) {
                        //we need to get the name of this set of rankings
                        // network_name.ranking_name.ranks.txt --> split by "." and get 2
                        String[] file_name_tokens = (propFile.getName()).split("\\.");
                        if ((file_name_tokens.length == 4) && (file_name_tokens[1].equals("Dataset 1 Ranking") || file_name_tokens[1].equals("Dataset 2 Ranking")) || (propFile.getName().contains(Ranking.GSEARanking)))
                            parts.ranks_name = Ranking.GSEARanking;
                        else //this is an extra rank file for backwards compatability.  Ignore it.
                        if ((file_name_tokens.length == 4) && (file_name_tokens[1].equals("Dataset 1") || file_name_tokens[1].equals("Dataset 2")) && file_name_tokens[2].equals("RANKS"))
                            continue;
                        else
                            //file name is not structured properly --> default to file name
                            parts.ranks_name = propFile.getName();
                    }
                    Ranking new_ranking = new Ranking();
                    Map<Integer, Rank> ranks = (Map<Integer, Rank>) params.repopulateHashmap(fullText, 6);
                    ranks.forEach(new_ranking::addRank);
                    if (parts.dataset != null)
                        em.getDataSet(parts.dataset).getExpressionSets().addRanks(parts.ranks_name, new_ranking);
                    else
                        em.getDataSet(LegacySupport.DATASET1).getExpressionSets().addRanks(parts.ranks_name, new_ranking);
                }
                //Deal with legacy issues                    
                if (params.isTwoDatasets()) {
                    //make sure there is a Dataset2
                    if (!em.getDataSets().containsKey(LegacySupport.DATASET2))
                        em.createDataSet(LegacySupport.DATASET2, method, new DataSetFiles());
                    if (propFile.getName().contains(".ENR2.txt") || propFile.getName().contains(".SubENR2.txt")) {
                        SetOfEnrichmentResults enrichments;
                        //check to see if this dataset has enrichment results already
                        if (em.getDataSet(LegacySupport.DATASET2).getEnrichments() != null) {
                            enrichments = em.getDataSet(LegacySupport.DATASET2).getEnrichments();
                        } else {
                            enrichments = new SetOfEnrichmentResults(LegacySupport.DATASET2, props);
                            em.getDataSet(LegacySupport.DATASET2).setEnrichments(enrichments);
                        }
                        if (propFile.getName().contains(".ENR2.txt")) {
                            if (params.getMethod().equalsIgnoreCase(EnrichmentMapParameters.method_GSEA))
                                enrichments.setEnrichments(params.repopulateHashmap(fullText, 3));
                            else
                                enrichments.setEnrichments(params.repopulateHashmap(fullText, 4));
                        }
                    }
                    //it would only happen for sessions saved with version 0.8
                    if (propFile.getName().contains(".RANKS2.txt") || propFile.getName().contains(".RANKS2Genes.txt")) {
                        Ranking new_ranking;
                        // Check to see if there is already GSEARanking
                        if (em.getDataSet(LegacySupport.DATASET2).getExpressionSets().getAllRanksNames().contains(Ranking.GSEARanking)) {
                            new_ranking = em.getDataSet(LegacySupport.DATASET2).getExpressionSets().getRanksByName(Ranking.GSEARanking);
                        } else {
                            new_ranking = new Ranking();
                            em.getDataSet(LegacySupport.DATASET2).getExpressionSets().addRanks(Ranking.GSEARanking, new_ranking);
                        }
                        if (propFile.getName().contains(".RANKS2.txt")) {
                            Map<Integer, Rank> ranks = (Map<Integer, Rank>) params.repopulateHashmap(fullText, 6);
                            ranks.forEach(new_ranking::addRank);
                        }
                    }
                }
            }
        }
        //info from the parameters
        for (int i = 0; i < fileList.size(); i++) {
            File prop_file = fileList.get(i);
            FileNameParts parts_exp = ParseFileName(prop_file);
            //unrecognized file
            if ((parts_exp == null) || (parts_exp.name == null))
                continue;
            CyNetwork net = getNetworkByName(parts_exp.name);
            EnrichmentMap map = net == null ? null : enrichmentMapMap.get(net.getSUID());
            EnrichmentMapParameters params = paramsMap.get(net.getSUID());
            Map<String, String> props = params.getProps();
            if (parts_exp.type != null && parts_exp.type.equalsIgnoreCase("expression")) {
                if (map.getDataSets().containsKey(parts_exp.dataset)) {
                    EMDataSet ds = map.getDataSet(parts_exp.dataset);
                    ds.getDataSetFiles().setExpressionFileName(prop_file.getAbsolutePath());
                    ds.getExpressionSets().setFilename(prop_file.getAbsolutePath());
                    ExpressionFileReaderTask expressionFile1 = new ExpressionFileReaderTask(ds);
                    GeneExpressionMatrix matrix = expressionFile1.parse();
                    matrix.restoreProps(parts_exp.dataset, props);
                }
            }
            //Deal with legacy session files.
            if (prop_file.getName().contains("expression1.txt")) {
                EMDataSet ds1 = map.getDataSet(LegacySupport.DATASET1);
                ds1.getDataSetFiles().setExpressionFileName(prop_file.getAbsolutePath());
                ds1.getExpressionSets().setFilename(prop_file.getAbsolutePath());
                ExpressionFileReaderTask expressionFile1 = new ExpressionFileReaderTask(ds1);
                expressionFile1.parse();
            }
            if (prop_file.getName().contains("expression2.txt")) {
                EMDataSet ds2 = map.getDataSet(LegacySupport.DATASET2);
                ds2.getDataSetFiles().setExpressionFileName(prop_file.getAbsolutePath());
                ds2.getExpressionSets().setFilename(prop_file.getAbsolutePath());
                ExpressionFileReaderTask expressionFile2 = new ExpressionFileReaderTask(ds2);
                expressionFile2.parse();
                //are dealing with two distinct expression files.
                if (map.getDataSet(LegacySupport.DATASET2) != null && map.getDataSet(LegacySupport.DATASET2).getGeneSetsOfInterest() != null && !map.getDataSet(LegacySupport.DATASET2).getGeneSetsOfInterest().getGeneSets().isEmpty()) {
                    map.setDistinctExpressionSets(true);
                    map.getDataSet(LegacySupport.DATASET1).setDataSetGenes(new HashSet<Integer>((Set<Integer>) map.getDataSet(LegacySupport.DATASET1).getExpressionSets().getGeneIds()));
                    map.getDataSet(LegacySupport.DATASET2).setDataSetGenes(new HashSet<Integer>((Set<Integer>) map.getDataSet(LegacySupport.DATASET2).getExpressionSets().getGeneIds()));
                }
            }
        }
        //iterate over the networks
        for (Iterator<Long> j = enrichmentMapMap.keySet().iterator(); j.hasNext(); ) {
            Long id = j.next();
            EnrichmentMap map = enrichmentMapMap.get(id);
            //only initialize objects if there is a map for this network
            if (map != null) {
                if (map.getDataSets().size() > 1) {
                    Set<Integer> dataset1_genes = map.getDataSets().get(LegacySupport.DATASET1).getDataSetGenes();
                    Set<Integer> dataset2_genes = map.getDataSets().get(LegacySupport.DATASET2).getDataSetGenes();
                    if (!dataset1_genes.equals(dataset2_genes))
                        map.setDistinctExpressionSets(true);
                }
                //initialize the Genesets (makes sure the leading edge is set correctly)
                //Initialize the set of genesets and GSEA results that we want to compute over
                InitializeGenesetsOfInterestTask genesets_init = new InitializeGenesetsOfInterestTask(map);
                // MKTODO really?
                genesets_init.setThrowIfMissing(false);
                genesets_init.initializeSets(null);
            //					//for each map compute the similarity matrix, (easier than storing it) compute the geneset similarities
            //					ComputeSimilarityTask similarities = new ComputeSimilarityTask(map, ComputeSimilarityTask.ENRICHMENT);
            //					Map<String, GenesetSimilarity> similarity_results = similarities.computeGenesetSimilarities(null);
            //					map.setGenesetSimilarity(similarity_results);
            //
            //					// also compute geneset similarities between Enrichment- and Signature Genesets (if any)
            //					if (! map.getSignatureGenesets().isEmpty()){
            //						ComputeSimilarityTask sigSimilarities = new ComputeSimilarityTask(map, ComputeSimilarityTask.SIGNATURE);
            //						Map<String, GenesetSimilarity> sig_similarity_results = sigSimilarities.computeGenesetSimilarities(null);
            //						map.getGenesetSimilarity().putAll(sig_similarity_results);
            //					}
            }
        //end of if(map != null)
        }
        for (Iterator<Long> j = enrichmentMapMap.keySet().iterator(); j.hasNext(); ) {
            Long id = j.next();
            CyNetwork currentNetwork = cyNetworkManager.getNetwork(id);
            EnrichmentMap map = enrichmentMapMap.get(id);
            map.setLegacy(true);
            emManager.registerEnrichmentMap(map);
            if (!j.hasNext()) {
                //set the last network to be the one viewed and initialize the parameters panel
                cyApplicationManager.setCurrentNetwork(currentNetwork);
            }
        }
    } catch (Exception ee) {
        ee.printStackTrace();
    }
}
Also used : DataSetFiles(org.baderlab.csplugins.enrichmentmap.model.DataSetFiles) NamingUtil(org.baderlab.csplugins.enrichmentmap.util.NamingUtil) CySession(org.cytoscape.session.CySession) Inject(com.google.inject.Inject) EnrichmentMap(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap) EnrichmentMapParameters(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapParameters) Scanner(java.util.Scanner) ExpressionFileReaderTask(org.baderlab.csplugins.enrichmentmap.parsers.ExpressionFileReaderTask) HashMap(java.util.HashMap) Ranking(org.baderlab.csplugins.enrichmentmap.model.Ranking) CyActivator(org.baderlab.csplugins.enrichmentmap.CyActivator) StreamUtil(org.cytoscape.io.util.StreamUtil) SetOfEnrichmentResults(org.baderlab.csplugins.enrichmentmap.model.SetOfEnrichmentResults) HashSet(java.util.HashSet) GeneExpressionMatrix(org.baderlab.csplugins.enrichmentmap.model.GeneExpressionMatrix) CyNetwork(org.cytoscape.model.CyNetwork) Map(java.util.Map) CyServiceRegistrar(org.cytoscape.service.util.CyServiceRegistrar) Method(org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method) Iterator(java.util.Iterator) LegacySupport(org.baderlab.csplugins.enrichmentmap.model.LegacySupport) GeneSet(org.baderlab.csplugins.enrichmentmap.model.GeneSet) Set(java.util.Set) CyNetworkManager(org.cytoscape.model.CyNetworkManager) EnrichmentMapManager(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager) SetOfGeneSets(org.baderlab.csplugins.enrichmentmap.model.SetOfGeneSets) File(java.io.File) List(java.util.List) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) CyApplicationManager(org.cytoscape.application.CyApplicationManager) Rank(org.baderlab.csplugins.enrichmentmap.model.Rank) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) Collections(java.util.Collections) InitializeGenesetsOfInterestTask(org.baderlab.csplugins.enrichmentmap.task.InitializeGenesetsOfInterestTask) InputStream(java.io.InputStream) Scanner(java.util.Scanner) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) HashSet(java.util.HashSet) GeneSet(org.baderlab.csplugins.enrichmentmap.model.GeneSet) Set(java.util.Set) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) HashMap(java.util.HashMap) CyNetwork(org.cytoscape.model.CyNetwork) SetOfGeneSets(org.baderlab.csplugins.enrichmentmap.model.SetOfGeneSets) Ranking(org.baderlab.csplugins.enrichmentmap.model.Ranking) ExpressionFileReaderTask(org.baderlab.csplugins.enrichmentmap.parsers.ExpressionFileReaderTask) GeneSet(org.baderlab.csplugins.enrichmentmap.model.GeneSet) InputStream(java.io.InputStream) InitializeGenesetsOfInterestTask(org.baderlab.csplugins.enrichmentmap.task.InitializeGenesetsOfInterestTask) Rank(org.baderlab.csplugins.enrichmentmap.model.Rank) EnrichmentMap(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap) Method(org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method) GeneExpressionMatrix(org.baderlab.csplugins.enrichmentmap.model.GeneExpressionMatrix) EnrichmentMapParameters(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapParameters) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) File(java.io.File) EnrichmentMap(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap) HashMap(java.util.HashMap) Map(java.util.Map) DataSetFiles(org.baderlab.csplugins.enrichmentmap.model.DataSetFiles) SetOfEnrichmentResults(org.baderlab.csplugins.enrichmentmap.model.SetOfEnrichmentResults)

Example 2 with EMSignatureDataSet

use of org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet in project EnrichmentMapApp by BaderLab.

the class SessionModelIO method updateSuids.

private void updateSuids(EnrichmentMap map, CySession session) {
    for (EMDataSet ds : map.getDataSetList()) {
        ds.setNodeSuids(mapSuids(ds.getNodeSuids(), session, CyNode.class));
        ds.setEdgeSuids(mapSuids(ds.getEdgeSuids(), session, CyEdge.class));
    }
    for (EMSignatureDataSet ds : map.getSignatureSetList()) {
        ds.setNodeSuids(mapSuids(ds.getNodeSuids(), session, CyNode.class));
        ds.setEdgeSuids(mapSuids(ds.getEdgeSuids(), session, CyEdge.class));
    }
}
Also used : EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) CyNode(org.cytoscape.model.CyNode) CyEdge(org.cytoscape.model.CyEdge)

Example 3 with EMSignatureDataSet

use of org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet in project EnrichmentMapApp by BaderLab.

the class ControlPanelMediator method removeSignatureDataSets.

private void removeSignatureDataSets(EnrichmentMap map, EMViewControlPanel viewPanel) {
    Set<EMSignatureDataSet> dataSets = viewPanel.getSelectedSignatureDataSets();
    if (!dataSets.isEmpty()) {
        if (JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(getControlPanel(), "Are you sure you want to remove the selected Signature Gene Sets\nand associated nodes?", "Remove Signature Gene Sets", JOptionPane.YES_NO_OPTION))
            return;
        RemoveSignatureDataSetsTask task = removeDataSetsTaskFactory.create(dataSets, map);
        dialogTaskManager.execute(new TaskIterator(task), new TaskObserver() {

            @Override
            public void taskFinished(ObservableTask task) {
            }

            @Override
            public void allFinished(FinishStatus finishStatus) {
                viewPanel.updateDataSetSelector();
                updateLegends(viewPanel);
                viewPanel.getNetworkView().updateView();
            }
        });
    }
}
Also used : TaskObserver(org.cytoscape.work.TaskObserver) ObservableTask(org.cytoscape.work.ObservableTask) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) TaskIterator(org.cytoscape.work.TaskIterator) FinishStatus(org.cytoscape.work.FinishStatus) RemoveSignatureDataSetsTask(org.baderlab.csplugins.enrichmentmap.task.postanalysis.RemoveSignatureDataSetsTask)

Example 4 with EMSignatureDataSet

use of org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet in project EnrichmentMapApp by BaderLab.

the class DataSetSelector method updateRemoveButton.

private void updateRemoveButton() {
    boolean onlySignatureSelected = true;
    int[] selectedRows = getTable().getSelectedRows();
    if (selectedRows.length > 0) {
        for (int r : selectedRows) {
            AbstractDataSet ds = (AbstractDataSet) table.getModel().getValueAt(r, NAME_COL_IDX);
            if (ds instanceof EMSignatureDataSet == false) {
                onlySignatureSelected = false;
                break;
            }
        }
    } else {
        onlySignatureSelected = false;
    }
    getRemoveButton().setEnabled(onlySignatureSelected);
}
Also used : EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) AbstractDataSet(org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet)

Example 5 with EMSignatureDataSet

use of org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet in project EnrichmentMapApp by BaderLab.

the class EMStyleBuilder method setNodeColors.

private void setNodeColors(VisualStyle vs, EMStyleOptions options) {
    String prefix = options.getAttributePrefix();
    List<AbstractDataSet> dataSets = options.getDataSets().stream().filter(// Ignore Signature Data Sets in charts
    ds -> ds instanceof EMDataSet).collect(Collectors.toList());
    if (dataSets.size() == 1) {
        // Only 1 Data Set? Use node colour instead of charts...
        EMDataSet ds = (EMDataSet) dataSets.iterator().next();
        // Create boundary conditions
        BoundaryRangeValues<Paint> bv3a = new BoundaryRangeValues<>(Colors.MAX_PHENOTYPE_2, Colors.MAX_PHENOTYPE_2, Colors.MAX_PHENOTYPE_2);
        BoundaryRangeValues<Paint> bv3b = new BoundaryRangeValues<>(Colors.LIGHTER_PHENOTYPE_2, Colors.LIGHTER_PHENOTYPE_2, Colors.MAX_PHENOTYPE_2);
        BoundaryRangeValues<Paint> bv3c = new BoundaryRangeValues<>(Colors.LIGHTEST_PHENOTYPE_2, Colors.LIGHTEST_PHENOTYPE_2, Colors.LIGHTER_PHENOTYPE_2);
        BoundaryRangeValues<Paint> bv3d = new BoundaryRangeValues<>(Colors.LIGHTEST_PHENOTYPE_2, Colors.OVER_COLOR, Colors.OVER_COLOR);
        BoundaryRangeValues<Paint> bv3e = new BoundaryRangeValues<>(Colors.OVER_COLOR, Colors.OVER_COLOR, Colors.OVER_COLOR);
        BoundaryRangeValues<Paint> bv3f = new BoundaryRangeValues<>(Colors.OVER_COLOR, Colors.OVER_COLOR, Colors.LIGHTEST_PHENOTYPE_1);
        BoundaryRangeValues<Paint> bv3g = new BoundaryRangeValues<>(Colors.LIGHTEST_PHENOTYPE_1, Colors.LIGHTEST_PHENOTYPE_1, Colors.LIGHTER_PHENOTYPE_1);
        BoundaryRangeValues<Paint> bv3h = new BoundaryRangeValues<>(Colors.LIGHTER_PHENOTYPE_1, Colors.LIGHTER_PHENOTYPE_1, Colors.MAX_PHENOTYPE_1);
        BoundaryRangeValues<Paint> bv3i = new BoundaryRangeValues<>(Colors.MAX_PHENOTYPE_1, Colors.MAX_PHENOTYPE_1, Colors.MAX_PHENOTYPE_1);
        // Continuous Mapping - set node colour based on the sign of the ES score of the dataset
        ContinuousMapping<Double, Paint> cm = (ContinuousMapping<Double, Paint>) cmFactory.createVisualMappingFunction(Columns.NODE_COLOURING.with(prefix, ds.getName()), Double.class, BasicVisualLexicon.NODE_FILL_COLOR);
        // Silence events fired by this mapping to prevent unnecessary style and view updates
        eventHelper.silenceEventSource(cm);
        try {
            // Set the attribute point values associated with the boundary values
            cm.addPoint(-1.0, bv3a);
            cm.addPoint(-0.995, bv3b);
            cm.addPoint(-0.95, bv3c);
            cm.addPoint(-0.9, bv3d);
            cm.addPoint(0.0, bv3e);
            cm.addPoint(0.9, bv3f);
            cm.addPoint(0.95, bv3g);
            cm.addPoint(0.995, bv3h);
            cm.addPoint(1.0, bv3i);
        } finally {
            eventHelper.unsilenceEventSource(cm);
        }
        vs.addVisualMappingFunction(cm);
        // Then we need to use bypass to colour the hub nodes (signature genesets)
        List<EMSignatureDataSet> signatureDataSets = options.getEnrichmentMap().getSignatureSetList();
        CyNetworkView netView = options.getNetworkView();
        CyNetwork net = netView.getModel();
        for (EMSignatureDataSet sds : signatureDataSets) {
            for (Long suid : sds.getNodeSuids()) {
                CyNode node = net.getNode(suid);
                if (node != null) {
                    View<CyNode> nv = netView.getNodeView(node);
                    if (nv != null)
                        nv.setLockedValue(NODE_FILL_COLOR, Colors.SIG_NODE_COLOR);
                }
            }
        }
    } else {
        // 2 or more Data Sets? Use simple node colours and charts...
        // Add mapping function for node fill color
        DiscreteMapping<String, Paint> dm = (DiscreteMapping<String, Paint>) dmFactory.createVisualMappingFunction(Columns.NODE_GS_TYPE.with(prefix, null), String.class, NODE_FILL_COLOR);
        // Silence events fired by this mapping to prevent unnecessary style and view updates
        eventHelper.silenceEventSource(dm);
        try {
            dm.putMapValue(Columns.NODE_GS_TYPE_ENRICHMENT, Colors.DEF_NODE_COLOR);
            dm.putMapValue(Columns.NODE_GS_TYPE_SIGNATURE, Colors.SIG_NODE_COLOR);
        } finally {
            eventHelper.unsilenceEventSource(dm);
        }
        vs.addVisualMappingFunction(dm);
    }
}
Also used : Color(java.awt.Color) NODE_SHAPE(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_SHAPE) RECTANGLE(org.cytoscape.view.presentation.property.NodeShapeVisualProperty.RECTANGLE) NODE_BORDER_TRANSPARENCY(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_BORDER_TRANSPARENCY) NodeShape(org.cytoscape.view.presentation.property.values.NodeShape) Inject(com.google.inject.Inject) EDGE_UNSELECTED_PAINT(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_UNSELECTED_PAINT) LineType(org.cytoscape.view.presentation.property.values.LineType) ColorBrewer(org.jcolorbrewer.ColorBrewer) View(org.cytoscape.view.model.View) CyCustomGraphics2(org.cytoscape.view.presentation.customgraphics.CyCustomGraphics2) NODE_TOOLTIP(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_TOOLTIP) Discrete(org.baderlab.csplugins.enrichmentmap.CytoscapeServiceModule.Discrete) CyNetwork(org.cytoscape.model.CyNetwork) NODE_SIZE(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_SIZE) NODE_FILL_COLOR(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_FILL_COLOR) VisualStyleChangedEvent(org.cytoscape.view.vizmap.events.VisualStyleChangedEvent) BasicVisualLexicon(org.cytoscape.view.presentation.property.BasicVisualLexicon) RenderingEngineManager(org.cytoscape.view.presentation.RenderingEngineManager) VisualLexicon(org.cytoscape.view.model.VisualLexicon) Collectors(java.util.stream.Collectors) AbstractDataSet(org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet) List(java.util.List) NETWORK_BACKGROUND_PAINT(org.cytoscape.view.presentation.property.BasicVisualLexicon.NETWORK_BACKGROUND_PAINT) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) Paint(java.awt.Paint) DIAMOND(org.cytoscape.view.presentation.property.NodeShapeVisualProperty.DIAMOND) Optional(java.util.Optional) NODE_LABEL(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_LABEL) LineTypeVisualProperty(org.cytoscape.view.presentation.property.LineTypeVisualProperty) VisualStyle(org.cytoscape.view.vizmap.VisualStyle) ContinuousMapping(org.cytoscape.view.vizmap.mappings.ContinuousMapping) Passthrough(org.baderlab.csplugins.enrichmentmap.CytoscapeServiceModule.Passthrough) EDGE_LINE_TYPE(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_LINE_TYPE) EDGE_STROKE_UNSELECTED_PAINT(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT) CyNode(org.cytoscape.model.CyNode) PassthroughMapping(org.cytoscape.view.vizmap.mappings.PassthroughMapping) EnrichmentMap(org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap) EDGE_LABEL_TRANSPARENCY(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_LABEL_TRANSPARENCY) EDGE_WIDTH(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_WIDTH) ELLIPSE(org.cytoscape.view.presentation.property.NodeShapeVisualProperty.ELLIPSE) DiscreteMapping(org.cytoscape.view.vizmap.mappings.DiscreteMapping) NODE_BORDER_PAINT(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_BORDER_PAINT) NODE_BORDER_WIDTH(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_BORDER_WIDTH) Continuous(org.baderlab.csplugins.enrichmentmap.CytoscapeServiceModule.Continuous) NODE_TRANSPARENCY(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_TRANSPARENCY) VisualMappingFunctionFactory(org.cytoscape.view.vizmap.VisualMappingFunctionFactory) CyEventHelper(org.cytoscape.event.CyEventHelper) DiscreteRange(org.cytoscape.view.model.DiscreteRange) NODE_LABEL_TRANSPARENCY(org.cytoscape.view.presentation.property.BasicVisualLexicon.NODE_LABEL_TRANSPARENCY) EDGE_TRANSPARENCY(org.cytoscape.view.presentation.property.BasicVisualLexicon.EDGE_TRANSPARENCY) VisualProperty(org.cytoscape.view.model.VisualProperty) ContinuousMappingPoint(org.cytoscape.view.vizmap.mappings.ContinuousMappingPoint) BoundaryRangeValues(org.cytoscape.view.vizmap.mappings.BoundaryRangeValues) CyNetworkView(org.cytoscape.view.model.CyNetworkView) VisualMappingFunction(org.cytoscape.view.vizmap.VisualMappingFunction) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) CyEdge(org.cytoscape.model.CyEdge) VisualStyleChangeRecord(org.cytoscape.view.vizmap.events.VisualStyleChangeRecord) ContinuousMapping(org.cytoscape.view.vizmap.mappings.ContinuousMapping) EMSignatureDataSet(org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet) DiscreteMapping(org.cytoscape.view.vizmap.mappings.DiscreteMapping) CyNetwork(org.cytoscape.model.CyNetwork) Paint(java.awt.Paint) AbstractDataSet(org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet) BoundaryRangeValues(org.cytoscape.view.vizmap.mappings.BoundaryRangeValues) EMDataSet(org.baderlab.csplugins.enrichmentmap.model.EMDataSet) CyNode(org.cytoscape.model.CyNode) CyNetworkView(org.cytoscape.view.model.CyNetworkView)

Aggregations

EMSignatureDataSet (org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet)6 EMDataSet (org.baderlab.csplugins.enrichmentmap.model.EMDataSet)3 CyNetwork (org.cytoscape.model.CyNetwork)3 Inject (com.google.inject.Inject)2 List (java.util.List)2 AbstractDataSet (org.baderlab.csplugins.enrichmentmap.model.AbstractDataSet)2 EnrichmentMap (org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap)2 CyEdge (org.cytoscape.model.CyEdge)2 CyNode (org.cytoscape.model.CyNode)2 CyNetworkView (org.cytoscape.view.model.CyNetworkView)2 Color (java.awt.Color)1 Paint (java.awt.Paint)1 File (java.io.File)1 InputStream (java.io.InputStream)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Iterator (java.util.Iterator)1 Map (java.util.Map)1 Optional (java.util.Optional)1