Skip to content

Commit 6d84bca

Browse files
committed
Post analysis runs on one dataset at a time. Fixes #113.
1 parent 94edca3 commit 6d84bca

File tree

4 files changed

+98
-64
lines changed

4 files changed

+98
-64
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/FilterParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public enum FilterType {
1818
MANN_WHIT("Mann-Whitney", 0.05),
1919
NUMBER("Overlap has at least X genes", 5),
2020
PERCENT("Overlap is X percent of EM gs", 25),
21-
SPECIFIC("Overlap is X percent of Signature gs", 25);
21+
SPECIFIC("Overlap is X percent of Sig gs", 25);
2222

2323
public final String display;
2424
public final double defaultValue;

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/BuildDiseaseSignatureTask.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,19 @@ public BuildDiseaseSignatureTask(EnrichmentMap map, PostAnalysisParameters paPar
118118
this.applicationManager = applicationManager;
119119
this.eventHelper = eventHelper;
120120

121-
HashMap<String, DataSet> data_sets = this.map.getDatasets();
122-
DataSet dataset = data_sets.get(paParams.getSignature_dataSet());
123-
ranks = new Ranking();
124-
if (dataset != null) {
125-
ranks = dataset.getExpressionSets().getRanks().get(paParams.getSignature_rankFile());
126-
}
121+
DataSet dataset = map.getDataset(paParams.getSignature_dataSet());
122+
this.ranks = dataset.getExpressionSets().getRanks().get(paParams.getSignature_rankFile());
127123

128124
//create a new instance of the parameters and copy the version received from the input window into this new instance.
129125
this.paParams = new PostAnalysisParameters(paParams); // copy constructor
130126

131-
this.EnrichmentGenesets = map.getEnrichmentGenesets();
127+
// we want genesets of interest that are not signature genesets put there by previous runs of post-analysis
128+
this.EnrichmentGenesets = new HashMap<>();
129+
for(Map.Entry<String, GeneSet> gs : dataset.getGenesetsOfInterest().getGenesets().entrySet()) {
130+
if(map.getEnrichmentGenesets().containsKey(gs.getKey())) {
131+
this.EnrichmentGenesets.put(gs.getKey(), gs.getValue());
132+
}
133+
}
132134
this.SignatureGenesets = this.paParams.getSignatureGenesets().getGenesets();
133135

134136
if (map.getGenesetSimilarity() == null)
@@ -447,11 +449,9 @@ private boolean createHubNode(String hub_name, CyNetwork current_network, CyNetw
447449

448450
// add the geneset of the signature node to the GenesetsOfInterest,
449451
// as the Heatmap will grep it's data from there.
450-
//TODO: Currently only supports one dataset
451-
//TODO:Enable signature dataset with multiple dataset
452-
453-
sigGeneSet.getGenes().retainAll(map.getDataset(EnrichmentMap.DATASET1).getDatasetGenes());
454-
map.getDataset(EnrichmentMap.DATASET1).getGenesetsOfInterest().getGenesets().put(hub_name, sigGeneSet);
452+
DataSet dataset = map.getDataset(paParams.getSignature_dataSet());
453+
sigGeneSet.getGenes().retainAll(dataset.getDatasetGenes());
454+
dataset.getGenesetsOfInterest().getGenesets().put(hub_name, sigGeneSet);
455455

456456
return created;
457457
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/PostAnalysisWeightPanel.java

Lines changed: 82 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Arrays;
1818
import java.util.Map;
1919

20+
import javax.swing.Box;
2021
import javax.swing.BoxLayout;
2122
import javax.swing.ButtonGroup;
2223
import javax.swing.DefaultComboBoxModel;
@@ -39,6 +40,10 @@
3940
@SuppressWarnings("serial")
4041
public class PostAnalysisWeightPanel extends CollapsiblePanel {
4142

43+
private static final String LABEL_TEST = "Test:";
44+
private static final String LABEL_DATASET = "Data Set:";
45+
private static final String LABEL_RANKS = "Ranks:";
46+
4247
private final CySwingApplication application;
4348

4449
private PostAnalysisParameters paParams;
@@ -67,7 +72,7 @@ public class PostAnalysisWeightPanel extends CollapsiblePanel {
6772
private JPanel cardPanel;
6873

6974
public PostAnalysisWeightPanel(CySwingApplication application) {
70-
super("Edge Weight Calculation Parameters");
75+
super("Edge Weight Parameters");
7176
this.application = application;
7277
createPanel();
7378
}
@@ -124,6 +129,10 @@ private JPanel createRankTestSelectPanel() {
124129
JPanel panel = new JPanel();
125130
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
126131

132+
JPanel cutoffLabel = new JPanel();
133+
cutoffLabel.add(new JLabel("Select Cutoff:"));
134+
panel.add(cutoffLabel);
135+
127136
DecimalFormat decFormat = new DecimalFormat();
128137
decFormat.setParseIntegerOnly(false);
129138
rankTestTextField = new JFormattedTextField(decFormat);
@@ -154,19 +163,24 @@ public void actionPerformed(ActionEvent e) {
154163
}
155164
});
156165

157-
panel.add(rankTestCombo);
166+
167+
panel.add(create3CellGridPanel(LABEL_TEST, rankTestCombo, rankTestTextField));
158168

159-
JPanel cutoffLabel = new JPanel();
160-
cutoffLabel.add(new JLabel("Select Cutoff:"));
161-
panel.add(cutoffLabel);
169+
datasetCombo = new JComboBox<>();
170+
// Dataset model is already initialized
171+
datasetModel = new DefaultComboBoxModel<>();
172+
datasetCombo.setModel(datasetModel);
173+
datasetCombo.addActionListener(new ActionListener() {
174+
public void actionPerformed(ActionEvent e) {
175+
String dataset = (String)datasetCombo.getSelectedItem();
176+
if(dataset == null)
177+
return;
178+
paParams.setSignature_dataSet(dataset);
179+
updateUniverseSize(dataset);
180+
}
181+
});
162182

163-
JPanel cutoffPanel = new JPanel();
164-
cutoffPanel.setLayout(new BoxLayout(cutoffPanel, BoxLayout.X_AXIS));
165-
166-
cutoffPanel.add(rankTestCombo);
167-
cutoffPanel.add(rankTestTextField);
168-
169-
panel.add(cutoffPanel);
183+
panel.add(create3CellGridPanel(LABEL_DATASET, datasetCombo, null));
170184

171185
return panel;
172186
}
@@ -249,22 +263,6 @@ private JPanel createHypergeomPanel() {
249263

250264

251265
private JPanel createMannWhittPanel() {
252-
JPanel panel = new JPanel(new GridBagLayout());
253-
254-
datasetCombo = new JComboBox<>();
255-
// Dataset model is already initialized
256-
datasetModel = new DefaultComboBoxModel<>();
257-
datasetCombo.setModel(datasetModel);
258-
datasetCombo.addActionListener(new ActionListener() {
259-
public void actionPerformed( ActionEvent e ) {
260-
String dataset = (String)datasetCombo.getSelectedItem();
261-
if(dataset == null)
262-
return;
263-
paParams.setSignature_dataSet(dataset);
264-
updateUniverseSize();
265-
}
266-
});
267-
268266
rankingModel = new DefaultComboBoxModel<>();
269267
rankingCombo = new JComboBox<>();
270268
rankingCombo.setModel(rankingModel);
@@ -274,23 +272,8 @@ public void actionPerformed( ActionEvent e ) {
274272
}
275273
});
276274

277-
278-
GridBagConstraints c = new GridBagConstraints();
279-
c.insets = new Insets(0,0,0,0);
280-
c.fill = GridBagConstraints.HORIZONTAL;
281-
c.anchor = GridBagConstraints.WEST;
282-
c.gridx = 0;
283-
c.gridy = 0;
284-
panel.add(datasetCombo, c);
285-
286-
c.gridy = 1;
287-
panel.add(rankingCombo, c);
288-
289-
c.gridy = 2;
290-
c.weighty = 1.0;
291-
c.weightx = 1.0;
292-
panel.add(new JLabel(""), c);
293-
275+
JPanel panel = new JPanel(new BorderLayout());
276+
panel.add(create3CellGridPanel(LABEL_RANKS, rankingCombo, null), BorderLayout.NORTH);
294277
return panel;
295278
}
296279

@@ -342,6 +325,49 @@ else if (source == universeSelectionTextField) {
342325
}
343326
}
344327

328+
/*
329+
* This is a hackey way of getting the three comboboxes to line up properly without putting them in the
330+
* same grid panel. I didn't want to put them in the same panel because I would have had to rewrite
331+
* a big chunk of this file.
332+
*/
333+
private static JPanel create3CellGridPanel(String label, JComboBox<?> combo, JFormattedTextField textField) {
334+
int labelWidth = (int) new JLabel(LABEL_DATASET).getPreferredSize().getWidth(); // use the widest one
335+
336+
JPanel panel = new JPanel(new GridBagLayout());
337+
338+
GridBagConstraints c = new GridBagConstraints();
339+
c.insets = new Insets(0,0,0,0);
340+
c.fill = GridBagConstraints.HORIZONTAL;
341+
c.anchor = GridBagConstraints.WEST;
342+
343+
c.gridy = 0;
344+
345+
c.gridx = 0;
346+
panel.add(Box.createHorizontalStrut(labelWidth), c);
347+
c.gridx = 1;
348+
panel.add(Box.createHorizontalStrut(1), c);
349+
c.gridx = 2;
350+
c.weightx = 1.0;
351+
panel.add(Box.createHorizontalStrut(1), c);
352+
353+
c.weightx = 0.0;
354+
c.gridy = 1;
355+
356+
c.gridx = 0;
357+
panel.add(new JLabel(label), c);
358+
c.gridx = 1;
359+
if(textField == null)
360+
c.gridwidth = 2;
361+
panel.add(combo, c);
362+
if(textField == null)
363+
return panel;
364+
c.gridx = 2;
365+
panel.add(textField,c);
366+
367+
return panel;
368+
}
369+
370+
345371

346372
void resetPanel() {
347373
gmtRadioButton.setSelected(true);
@@ -361,6 +387,10 @@ void initialize(EnrichmentMap currentMap, PostAnalysisParameters paParams) {
361387
for (String dataset : datasetArray) {
362388
datasetModel.addElement(dataset);
363389
}
390+
datasetCombo.setEnabled(datasetModel.getSize() > 1);
391+
if(datasetModel.getSize() > 0) {
392+
datasetCombo.setSelectedIndex(0);
393+
}
364394

365395
Map<String,Ranking> rankingMap = map.getAllRanks();
366396
String[] rankingArray = rankingMap.keySet().toArray(new String[rankingMap.size()]);
@@ -369,8 +399,10 @@ void initialize(EnrichmentMap currentMap, PostAnalysisParameters paParams) {
369399
for (String ranking : rankingArray) {
370400
rankingModel.addElement(ranking);
371401
}
372-
373-
updateUniverseSize();
402+
rankingCombo.setEnabled(rankingModel.getSize() > 1);
403+
if(rankingModel.getSize() > 0) {
404+
rankingCombo.setSelectedIndex(0);
405+
}
374406

375407
FilterParameters filterParams = paParams.getRankTestParameters();
376408
if(filterParams.getType() == FilterType.NO_FILTER) {
@@ -385,13 +417,13 @@ void initialize(EnrichmentMap currentMap, PostAnalysisParameters paParams) {
385417
rankTestTextField.setValue(value);
386418

387419
rankingEnablementRenderer.enableIndex(0);
388-
if(rankingArray.length == 0)
420+
if(rankingArray.length == 0) {
389421
rankingEnablementRenderer.disableIndex(0);
422+
}
390423
}
391424

392425

393-
private void updateUniverseSize() {
394-
String signature_dataSet = paParams.getSignature_dataSet();
426+
private void updateUniverseSize(String signature_dataSet) {
395427
GeneExpressionMatrix expressionSets = map.getDataset(signature_dataSet).getExpressionSets();
396428

397429
universeGmt = map.getNumberOfGenes();

EnrichmentMapPlugin/src/test/java/org/baderlab/csplugins/enrichmentmap/AllTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@
4949
import org.baderlab.csplugins.enrichmentmap.model.GeneSetTest;
5050
import org.baderlab.csplugins.enrichmentmap.model.SetOfGenesetsTest;
5151
import org.baderlab.csplugins.enrichmentmap.parsers.FileReaderTest;
52-
import org.baderlab.csplugins.enrichmentmap.task.PostAnalysisTaskTest;
5352
import org.baderlab.csplugins.enrichmentmap.task.LoadBingoResultsTest;
5453
import org.baderlab.csplugins.enrichmentmap.task.LoadDatasetTaskTest;
5554
import org.baderlab.csplugins.enrichmentmap.task.LoadDavidResultTest;
5655
import org.baderlab.csplugins.enrichmentmap.task.LoadEdbDatasetTest;
5756
import org.baderlab.csplugins.enrichmentmap.task.LoadGMTFileOnlyTest;
57+
import org.baderlab.csplugins.enrichmentmap.task.PostAnalysisCutoffTest;
58+
import org.baderlab.csplugins.enrichmentmap.task.PostAnalysisTaskTest;
5859
import org.baderlab.csplugins.enrichmentmap.util.LinearNumberInterpolatorTest;
5960
import org.junit.runner.RunWith;
6061
import org.junit.runners.Suite;
@@ -78,6 +79,7 @@
7879
LoadDavidResultTest.class,
7980
LoadEdbDatasetTest.class,
8081
LoadGMTFileOnlyTest.class,
82+
PostAnalysisCutoffTest.class,
8183
PostAnalysisTaskTest.class,
8284

8385
LinearNumberInterpolatorTest.class,

0 commit comments

Comments
 (0)