Skip to content

Commit c424c79

Browse files
committed
Show in genemania/string, add option to select genes in expression file
Refs #438
1 parent 9026ed9 commit c424c79

File tree

10 files changed

+79
-70
lines changed

10 files changed

+79
-70
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/genemania/GeneManiaTaskFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import org.baderlab.csplugins.enrichmentmap.model.AssociatedApp;
1616
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
1717
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
18+
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
1819
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
19-
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
2020
import org.baderlab.csplugins.enrichmentmap.view.util.OpenBrowser;
2121
import org.cytoscape.command.AvailableCommands;
2222
import org.cytoscape.command.CommandExecutorTaskFactory;
@@ -47,7 +47,7 @@ public class GeneManiaTaskFactory {
4747
@Inject private OpenBrowser openBrowser;
4848

4949

50-
public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, List<String> selectedGenes, List<GSEALeadingEdgeRankingOption> leadingEdgeRanks) {
50+
public TaskIterator createTaskIterator(GeneListTunable geneListTaskParams) {
5151
// Show message to user if genemania not installed
5252
List<String> commands = availableCommands.getCommands(GENEMANIA_NAMESPACE);
5353

@@ -67,7 +67,7 @@ public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, Li
6767

6868

6969

70-
QueryGeneManiaTask queryTask = queryGeneManiaTaskFactory.create(map, genes, selectedGenes, leadingEdgeRanks);
70+
QueryGeneManiaTask queryTask = queryGeneManiaTaskFactory.create(geneListTaskParams);
7171

7272
// Get list of organisms from GeneMANIA
7373
TaskIterator ti = commandExecutorTaskFactory.createTaskIterator(
@@ -95,7 +95,7 @@ public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, Li
9595
ti.append(new AbstractTask() {
9696
@Override
9797
public void run(TaskMonitor taskMonitor) throws Exception {
98-
onGeneManiaQueryFinished(queryTask.getResult(), map);
98+
onGeneManiaQueryFinished(queryTask.getResult(), geneListTaskParams.getEnrichmentMap());
9999
}
100100
});
101101

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/genemania/QueryGeneManiaNodeViewTaskFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
66
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
77
import org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns;
8+
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
89
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
910
import org.baderlab.csplugins.enrichmentmap.view.heatmap.RankingOptionFactory;
1011
import org.cytoscape.model.CyNetwork;
@@ -34,7 +35,9 @@ public TaskIterator createTaskIterator(View<CyNode> nodeView, CyNetworkView netw
3435

3536
List<GSEALeadingEdgeRankingOption> rankOptions = rankingOptionFactory.getGSEADataSetSetRankOptions(map);
3637

37-
TaskIterator tasks = geneManiaTaskFactory.createTaskIterator(map, genes, null, rankOptions);
38+
39+
GeneListTunable geneListTunable = new GeneListTunable(map, genes, null, rankOptions);
40+
TaskIterator tasks = geneManiaTaskFactory.createTaskIterator(geneListTunable);
3841
return tasks;
3942
}
4043

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/genemania/QueryGeneManiaTask.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import java.util.List;
66
import java.util.Map;
77

8-
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
98
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
109
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
11-
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
1210
import org.cytoscape.command.CommandExecutorTaskFactory;
1311
import org.cytoscape.work.AbstractTask;
1412
import org.cytoscape.work.ProvidesTitle;
@@ -55,21 +53,12 @@ public class QueryGeneManiaTask extends AbstractTask {
5553
@Inject private SynchronousTaskManager<?> syncTaskManager;
5654

5755
public static interface Factory {
58-
QueryGeneManiaTask create(
59-
EnrichmentMap map,
60-
@Assisted("geneList") List<String> geneList,
61-
@Assisted("selectedGenes") List<String> selectedGenes,
62-
List<GSEALeadingEdgeRankingOption> leadingEdgeRanks);
56+
QueryGeneManiaTask create(GeneListTunable geneListTaskParams);
6357
}
6458

6559
@AssistedInject
66-
public QueryGeneManiaTask(
67-
@Assisted EnrichmentMap map,
68-
@Assisted("geneList") List<String> geneList,
69-
@Assisted("selectedGenes") List<String> selectedGenes,
70-
@Assisted List<GSEALeadingEdgeRankingOption> leadingEdgeRanks)
71-
{
72-
this.geneList = new GeneListTunable(map, geneList, selectedGenes, leadingEdgeRanks);
60+
public QueryGeneManiaTask(@Assisted GeneListTunable geneListTaskParams) {
61+
this.geneList = geneListTaskParams;
7362
this.organisms = new ListSingleSelection<>();
7463
this.weightingMethods = new ListSingleSelection<>(GMWeightingMethod.values());
7564
this.weightingMethods.setSelectedValue(weightingMethods.getPossibleValues().get(0));

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/string/QueryStringNodeViewTaskFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
66
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
77
import org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder.Columns;
8+
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
89
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
910
import org.baderlab.csplugins.enrichmentmap.view.heatmap.RankingOptionFactory;
1011
import org.cytoscape.model.CyNetwork;
@@ -34,7 +35,8 @@ public TaskIterator createTaskIterator(View<CyNode> nodeView, CyNetworkView netw
3435

3536
List<GSEALeadingEdgeRankingOption> rankOptions = rankingOptionFactory.getGSEADataSetSetRankOptions(map);
3637

37-
return stringAppFactory.createTaskIterator(map, genes, null, rankOptions);
38+
GeneListTunable geneListTunable = new GeneListTunable(map, genes, null, rankOptions);
39+
return stringAppFactory.createTaskIterator(geneListTunable);
3840
}
3941

4042
@Override

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/string/QueryStringTask.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66

7-
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
87
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
98
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
10-
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
119
import org.cytoscape.command.CommandExecutorTaskFactory;
1210
import org.cytoscape.model.CyNetwork;
1311
import org.cytoscape.work.AbstractTask;
@@ -51,21 +49,12 @@ public class QueryStringTask extends AbstractTask {
5149
@Inject private CommandExecutorTaskFactory commandExecutorTaskFactory;
5250

5351
public static interface Factory {
54-
QueryStringTask create(
55-
EnrichmentMap map,
56-
@Assisted("geneList") List<String> geneList,
57-
@Assisted("selectedGenes") List<String> selectedGenes,
58-
List<GSEALeadingEdgeRankingOption> leadingEdgeRanks);
52+
QueryStringTask create(GeneListTunable geneListTunable);
5953
}
6054

6155
@AssistedInject
62-
public QueryStringTask(
63-
@Assisted EnrichmentMap map,
64-
@Assisted("geneList") List<String> geneList,
65-
@Assisted("selectedGenes") List<String> selectedGenes,
66-
@Assisted List<GSEALeadingEdgeRankingOption> leadingEdgeRanks)
67-
{
68-
this.geneList = new GeneListTunable(map, geneList, selectedGenes, leadingEdgeRanks);
56+
public QueryStringTask(@Assisted GeneListTunable geneListTunable) {
57+
this.geneList = geneListTunable;
6958
this.organisms = new ListSingleSelection<>();
7059
}
7160

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/string/StringAppTaskFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import org.baderlab.csplugins.enrichmentmap.model.AssociatedApp;
1616
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
1717
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
18+
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
1819
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
19-
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
2020
import org.baderlab.csplugins.enrichmentmap.view.util.OpenBrowser;
2121
import org.cytoscape.command.AvailableCommands;
2222
import org.cytoscape.command.CommandExecutorTaskFactory;
@@ -44,7 +44,7 @@ public class StringAppTaskFactory {
4444
@Inject private OpenBrowser openBrowser;
4545

4646

47-
public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, List<String> selectedGenes, List<GSEALeadingEdgeRankingOption> leadingEdgeRanks) {
47+
public TaskIterator createTaskIterator(GeneListTunable geneListTunable) {
4848
// Show message to user if STRING App not installed
4949
List<String> commands = availableCommands.getCommands(STRING_NAMESPACE);
5050

@@ -62,7 +62,7 @@ public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, Li
6262
return null;
6363
}
6464

65-
QueryStringTask queryTask = queryStringTaskFactory.create(map, genes, selectedGenes, leadingEdgeRanks);
65+
QueryStringTask queryTask = queryStringTaskFactory.create(geneListTunable);
6666

6767
// Get list of organisms from STRING App
6868
TaskIterator ti = commandExecutorTaskFactory.createTaskIterator(
@@ -89,7 +89,7 @@ public TaskIterator createTaskIterator(EnrichmentMap map, List<String> genes, Li
8989
ti.append(new AbstractTask() {
9090
@Override
9191
public void run(TaskMonitor taskMonitor) throws Exception {
92-
onStringQueryFinished(queryTask.getResult(), map);
92+
onStringQueryFinished(queryTask.getResult(), geneListTunable.getEnrichmentMap());
9393
}
9494
});
9595

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/tunables/GeneListGUITunableHandler.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
import javax.swing.JLabel;
99
import javax.swing.JPanel;
1010

11-
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
12-
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
1311
import org.cytoscape.util.swing.LookAndFeelUtil;
1412
import org.cytoscape.work.Tunable;
1513
import org.cytoscape.work.swing.AbstractGUITunableHandler;
@@ -45,12 +43,7 @@ private JPanel createGeneListPanel() {
4543
JLabel title = new JLabel(getDescription());
4644

4745
GeneListTunable geneListTunable = getGeneListTunable();
48-
EnrichmentMap map = geneListTunable.getEnrichmentMap();
49-
List<String> genes = geneListTunable.getGenes();
50-
List<String> selectedGenes = geneListTunable.getSelectedGenes();
51-
List<GSEALeadingEdgeRankingOption> leadingEdgeRanks = geneListTunable.getLeadingEdgeRanks();
52-
53-
checkboxPanel = new GeneListPanel(map, genes, selectedGenes, leadingEdgeRanks);
46+
checkboxPanel = new GeneListPanel(geneListTunable);
5447

5548
JPanel panel = new JPanel();
5649

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/tunables/GeneListPanel.java

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.awt.event.ActionEvent;
88
import java.awt.event.ActionListener;
99
import java.util.ArrayList;
10-
import java.util.Collections;
1110
import java.util.HashSet;
1211
import java.util.List;
1312
import java.util.Map;
@@ -44,17 +43,14 @@ public class GeneListPanel extends JPanel {
4443
private JButton selectAllButton;
4544
private JButton selectNoneButton;
4645
private JButton selectEdgeButton;
46+
private JButton selectExprButton;
4747

48-
public GeneListPanel(
49-
EnrichmentMap map,
50-
List<String> genes,
51-
List<String> selectedGenes,
52-
List<GSEALeadingEdgeRankingOption> leadingEdgeRanks)
53-
{
54-
this.map = map;
55-
56-
57-
Set<String> selected = selectedGenes == null ? Collections.emptySet() : new HashSet<>(selectedGenes);
48+
public GeneListPanel(GeneListTunable geneListTunable) {
49+
this.map = geneListTunable.getEnrichmentMap();
50+
List<String> genes = geneListTunable.getGenes();
51+
List<String> selected = geneListTunable.getSelectedGenes();
52+
List<String> expressionGenes = geneListTunable.getExpressionGenes();
53+
List<GSEALeadingEdgeRankingOption> leadingEdgeRanks = geneListTunable.getLeadingEdgeRanks();
5854

5955
checkboxListModel = new CheckboxListModel<>();
6056
genes.stream().sorted().forEach(gene -> {
@@ -70,15 +66,18 @@ public GeneListPanel(
7066
selectAllButton = new JButton("Select All");
7167
selectNoneButton = new JButton("Select None");
7268
selectEdgeButton = new JButton("Select Leading Edge");
69+
selectExprButton = new JButton("Select Genes With Expressions");
7370

7471
selectAllButton .addActionListener(selectionListener(cb -> cb.setSelected(true)));
7572
selectNoneButton.addActionListener(selectionListener(cb -> cb.setSelected(false)));
7673
selectEdgeButton.addActionListener(e -> selectLeadingEdge(genes, leadingEdgeRanks));
74+
selectExprButton.addActionListener(e -> selectGenesWithExpressions(expressionGenes));
7775

7876
selectAllButton.setEnabled(false);
7977
selectNoneButton.setEnabled(false);
8078
selectEdgeButton.setEnabled(true);
8179
selectEdgeButton.setVisible(!leadingEdgeRanks.isEmpty());
80+
selectExprButton.setVisible(!expressionGenes.isEmpty());
8281

8382
checkboxListModel.addListDataListener(new ListDataListener() {
8483
@Override
@@ -102,8 +101,8 @@ public void contentsChanged(ListDataEvent e) {
102101
}
103102
});
104103

105-
SwingUtil.makeSmall(selectAllButton, selectEdgeButton, selectNoneButton);
106-
LookAndFeelUtil.equalizeSize(selectAllButton, selectNoneButton, selectEdgeButton);
104+
SwingUtil.makeSmall(selectAllButton, selectEdgeButton, selectNoneButton, selectExprButton);
105+
LookAndFeelUtil.equalizeSize(selectAllButton, selectNoneButton, selectEdgeButton, selectExprButton);
107106

108107
final GroupLayout layout = new GroupLayout(this);
109108
setLayout(layout);
@@ -116,6 +115,7 @@ public void contentsChanged(ListDataEvent e) {
116115
.addComponent(selectAllButton, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
117116
.addComponent(selectNoneButton, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
118117
.addComponent(selectEdgeButton, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
118+
.addComponent(selectExprButton, PREFERRED_SIZE, DEFAULT_SIZE, PREFERRED_SIZE)
119119
)
120120
);
121121
layout.setVerticalGroup(layout.createParallelGroup()
@@ -125,6 +125,7 @@ public void contentsChanged(ListDataEvent e) {
125125
.addComponent(selectNoneButton)
126126
.addGap(20)
127127
.addComponent(selectEdgeButton)
128+
.addComponent(selectExprButton)
128129
)
129130
);
130131

@@ -155,7 +156,6 @@ public void actionPerformed(ActionEvent e) {
155156
}
156157
}
157158

158-
159159
private void selectLeadingEdge(List<String> genes, GSEALeadingEdgeRankingOption ranks) {
160160
List<CheckboxData<String>> oldValue = getSelectedData();
161161
List<Integer> geneKeys = genes.stream().map(map::getHashFromGene).collect(Collectors.toList());
@@ -172,7 +172,19 @@ private void selectLeadingEdge(List<String> genes, GSEALeadingEdgeRankingOption
172172
fireCheckboxListUpdated(oldValue);
173173
}
174174

175-
175+
private void selectGenesWithExpressions(List<String> expressionGenes) {
176+
Set<String> exgSet = new HashSet<>(expressionGenes);
177+
List<CheckboxData<String>> oldValue = getSelectedData();
178+
179+
checkboxListModel.forEach(checkBox -> {
180+
String geneName = checkBox.getData();
181+
boolean selected = exgSet.contains(geneName);
182+
checkBox.setSelected(selected);
183+
});
184+
185+
fireCheckboxListUpdated(oldValue);
186+
}
187+
176188
private ActionListener selectionListener(Consumer<CheckboxData<String>> action) {
177189
return e -> {
178190
List<CheckboxData<String>> oldValue = getSelectedData();

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/tunables/GeneListTunable.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import java.util.Collections;
44
import java.util.List;
55
import java.util.Objects;
6+
import java.util.stream.Collectors;
67

8+
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
79
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
810
import org.baderlab.csplugins.enrichmentmap.view.heatmap.GSEALeadingEdgeRankingOption;
911

@@ -14,6 +16,8 @@ public class GeneListTunable {
1416
private List<String> selectedGenes;
1517
private List<GSEALeadingEdgeRankingOption> leadingEdgeRanks;
1618

19+
private List<String> expressionGenes;
20+
1721

1822
public GeneListTunable(
1923
EnrichmentMap map,
@@ -47,4 +51,20 @@ public EnrichmentMap getEnrichmentMap() {
4751
return map;
4852
}
4953

54+
public List<String> getExpressionGenes() {
55+
if(expressionGenes == null) {
56+
expressionGenes = genes.stream().filter(gene -> hasExpressions(map, gene)).collect(Collectors.toList());
57+
}
58+
return expressionGenes;
59+
}
60+
61+
private static boolean hasExpressions(EnrichmentMap map, String gene) {
62+
int geneId = map.getHashFromGene(gene);
63+
for(EMDataSet ds : map.getDataSetList()) {
64+
if(ds.getExpressionGenes().contains(geneId)) {
65+
return true;
66+
}
67+
}
68+
return false;
69+
}
5070
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/heatmap/HeatMapMediator.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.baderlab.csplugins.enrichmentmap.task.ApplyEMStyleTask;
3232
import org.baderlab.csplugins.enrichmentmap.task.genemania.GeneManiaTaskFactory;
3333
import org.baderlab.csplugins.enrichmentmap.task.string.StringAppTaskFactory;
34+
import org.baderlab.csplugins.enrichmentmap.task.tunables.GeneListTunable;
3435
import org.baderlab.csplugins.enrichmentmap.util.CoalesceTimer;
3536
import org.baderlab.csplugins.enrichmentmap.util.NetworkUtil;
3637
import org.baderlab.csplugins.enrichmentmap.view.control.ControlPanelMediator;
@@ -543,26 +544,26 @@ public static Collection<Integer> getGenes(EnrichmentMap map, Map<String,Set<Int
543544
}
544545
}
545546

546-
547-
private void runGeneMANIA() {
547+
private GeneListTunable createGeneListTaskParams() {
548548
EnrichmentMap map = getContentPanel().getEnrichmentMap();
549549
List<String> genes = getContentPanel().getGenes();
550550
List<String> selectedGenes = getContentPanel().getSelectedGenes();
551551
List<GSEALeadingEdgeRankingOption> gseaOptions = rankingOptionFactory.getGSEADataSetSetRankOptions(map);
552-
TaskIterator tasks = geneManiaTaskFactory.createTaskIterator(map, genes, selectedGenes, gseaOptions);
552+
return new GeneListTunable(map, genes, selectedGenes, gseaOptions);
553+
}
554+
555+
private void runGeneMANIA() {
556+
GeneListTunable geneListTaskParams = createGeneListTaskParams();
557+
TaskIterator tasks = geneManiaTaskFactory.createTaskIterator(geneListTaskParams);
553558
taskManager.execute(tasks);
554559
}
555560

556561
private void runString() {
557-
EnrichmentMap map = getContentPanel().getEnrichmentMap();
558-
List<String> genes = getContentPanel().getGenes();
559-
List<String> selectedGenes = getContentPanel().getSelectedGenes();
560-
List<GSEALeadingEdgeRankingOption> gseaOptions = rankingOptionFactory.getGSEADataSetSetRankOptions(map);
561-
TaskIterator tasks = stringAppTaskFactoy.createTaskIterator(map, genes, selectedGenes, gseaOptions);
562+
GeneListTunable geneListTaskParams = createGeneListTaskParams();
563+
TaskIterator tasks = stringAppTaskFactoy.createTaskIterator(geneListTaskParams);
562564
taskManager.execute(tasks);
563565
}
564566

565-
566567
private void runPathwayCommons() {
567568
long uuid = getEnrichmentMap().getNetworkID();
568569
CyNetwork network = networkManager.getNetwork(uuid);

0 commit comments

Comments
 (0)