Skip to content

Commit 78bbbb0

Browse files
committed
Read STRING and Genemania column names from CyProperty. Refs #377
1 parent b4a8cec commit 78bbbb0

File tree

10 files changed

+129
-50
lines changed

10 files changed

+129
-50
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.baderlab.csplugins.enrichmentmap.commands.DatasetShowCommandTask;
1010
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
1111
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapParameters;
12+
import org.baderlab.csplugins.enrichmentmap.parsers.LoadEnrichmentsFromGenemaniaTask;
1213
import org.baderlab.csplugins.enrichmentmap.task.ApplyEMStyleTask;
1314
import org.baderlab.csplugins.enrichmentmap.task.CreateEMNetworkTask;
1415
import org.baderlab.csplugins.enrichmentmap.task.CreateEMViewTask;
@@ -112,6 +113,7 @@ protected void configure() {
112113
installFactory(QueryStringTask.Factory.class);
113114
installFactory(DatasetShowCommandTask.Factory.class);
114115
installFactory(DataSetColorSelectorDialog.Factory.class);
116+
installFactory(LoadEnrichmentsFromGenemaniaTask.Factory.class);
115117
}
116118

117119
private void installFactory(Class<?> factoryInterface) {

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

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.function.Function;
1212

1313
import org.baderlab.csplugins.enrichmentmap.actions.OpenPathwayCommonsTask;
14+
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.GenemaniaDialogParameters;
15+
import org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogParameters;
1416
import org.baderlab.csplugins.enrichmentmap.view.heatmap.HeatMapParams.Distance;
1517
import org.cytoscape.property.CyProperty;
1618

@@ -31,34 +33,36 @@ public interface PropertyListener<T> {
3133
private final Map<Property<?>,List<PropertyListener<?>>> listeners = new HashMap<>();
3234

3335

34-
public static class Property<T> {
35-
private final String key;
36-
public final T def;
37-
private final Function<String,T> converter;
38-
39-
private Property(String key, T defaultValue, Function<String,T> converter) {
40-
this.key = key;
41-
this.def = defaultValue;
42-
this.converter = converter;
43-
}
44-
}
36+
public static final Property<Boolean> HEATMAP_AUTOFOCUS = Property.of("heatmapAutofocus", false);
37+
public static final Property<Boolean> HEATMAP_DATASET_SYNC = Property.of("heatmapDatasetSync", true);
38+
public static final Property<Boolean> HEATMAP_AUTO_SORT = Property.of("heatmapAutoSort", true);
39+
public static final Property<Double> P_VALUE = Property.of("default.pvalue", 1.0);
40+
public static final Property<Double> Q_VALUE = Property.of("default.qvalue", 0.1);
41+
public static final Property<Boolean> CREATE_WARN = Property.of("create.warn", true);
42+
public static final Property<Distance> DISTANCE_METRIC = Property.of("default.distanceMetric", Distance.PEARSON, Distance::valueOf);
43+
public static final Property<String> PATHWAY_COMMONS_URL = Property.of("pathway.commons.url", OpenPathwayCommonsTask.DEFAULT_BASE_URL);
44+
45+
public static final Property<String> STRING_COLUMN_NAME = Property.of("string.column.name", StringDialogParameters.NAME_COLUMN_DEF);
46+
public static final Property<String> STRING_COLUMN_FDR = Property.of("string.column.fdr", StringDialogParameters.FDR_COLUMN_DEF);
47+
public static final Property<String> STRING_COLUMN_GENES = Property.of("string.column.genes", StringDialogParameters.GENES_COLUMN_DEF);
48+
public static final Property<String> STRING_COLUMN_DESC = Property.of("string.column.descr", StringDialogParameters.DESC_COLUMN_DEF);
49+
public static final Property<String> STRING_COLUMN_SUID = Property.of("string.column.suid", StringDialogParameters.SUID_COLUMN_DEF);
50+
51+
public static final Property<String> GENEMANIA_COLUMN_ANNOTATIONS = Property.of("genemania.column.annotations", GenemaniaDialogParameters.ANNOTATIONS_COLUMN_DEF);
52+
public static final Property<String> GENEMANIA_COLUMN_GENE_NAME = Property.of("genemania.column.genename", GenemaniaDialogParameters.GENE_NAME_COLUMN_DEF);
53+
public static final Property<String> GENEMANIA_COLUMN_ORGANISM = Property.of("genemania.column.organism", GenemaniaDialogParameters.ORGANISM_COLUMN_DEF);
54+
public static final Property<String> GENEMANIA_COLUMN_ANN_NAME = Property.of("genemania.column.annname", GenemaniaDialogParameters.ANNOTATION_NAME_COLUMN_DEF);
55+
4556

46-
public static final Property<Boolean> HEATMAP_AUTOFOCUS = new Property<>("heatmapAutofocus", false, Boolean::valueOf);
47-
public static final Property<Boolean> HEATMAP_DATASET_SYNC = new Property<>("heatmapDatasetSync", true, Boolean::valueOf);
48-
public static final Property<Boolean> HEATMAP_AUTO_SORT = new Property<>("heatmapAutoSort", true, Boolean::valueOf);
49-
public static final Property<Double> P_VALUE = new Property<>("default.pvalue", 1.0, Double::valueOf);
50-
public static final Property<Double> Q_VALUE = new Property<>("default.qvalue", 0.1, Double::valueOf);
51-
public static final Property<Boolean> CREATE_WARN = new Property<>("create.warn", true, Boolean::valueOf);
52-
public static final Property<Distance> DISTANCE_METRIC = new Property<>("default.distanceMetric", Distance.PEARSON, Distance::valueOf);
53-
public static final Property<String> PATHWAY_COMMONS_URL = new Property<>("pathway.commons.url", OpenPathwayCommonsTask.DEFAULT_BASE_URL, String::valueOf);
5457

5558
@Inject private CyProperty<Properties> cyProps;
5659

5760
@AfterInjection
5861
private void initializeProperties() {
59-
getAllProperties().stream()
60-
.filter(prop -> !cyProps.getProperties().containsKey(prop.key))
61-
.forEach(this::setDefault);
62+
getAllProperties()
63+
.stream()
64+
.filter(prop -> !cyProps.getProperties().containsKey(prop.key))
65+
.forEach(this::setDefault);
6266
}
6367

6468
public <T> void addListener(Property<T> property, PropertyListener<T> listener) {
@@ -109,4 +113,29 @@ public static List<Property<?>> getAllProperties() {
109113
return properties;
110114
}
111115

116+
117+
public static class Property<T> {
118+
private final String key;
119+
public final T def;
120+
private final Function<String,T> converter;
121+
122+
private Property(String key, T defaultValue, Function<String,T> converter) {
123+
this.key = key;
124+
this.def = defaultValue;
125+
this.converter = converter;
126+
}
127+
128+
public static <T> Property<T> of(String key, T defaultValue, Function<String,T> converter) {
129+
return new Property<>(key, defaultValue, converter);
130+
}
131+
public static Property<Boolean> of(String key, boolean defaultValue) {
132+
return new Property<>(key, defaultValue, Boolean::valueOf);
133+
}
134+
public static Property<String> of(String key, String defaultValue) {
135+
return new Property<>(key, defaultValue, String::valueOf);
136+
}
137+
public static Property<Double> of(String key, double defaultValue) {
138+
return new Property<>(key, defaultValue, Double::valueOf);
139+
}
140+
}
112141
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/parsers/LoadEnrichmentsFromGenemaniaTask.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Map;
99
import java.util.Set;
1010

11+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
1112
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
1213
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
1314
import org.baderlab.csplugins.enrichmentmap.model.GeneSet;
@@ -26,17 +27,28 @@
2627
import com.google.gson.GsonBuilder;
2728
import com.google.gson.JsonParseException;
2829
import com.google.gson.reflect.TypeToken;
30+
import com.google.inject.Inject;
31+
import com.google.inject.assistedinject.Assisted;
2932

3033
public class LoadEnrichmentsFromGenemaniaTask extends AbstractTask {
3134

35+
@Inject private PropertyManager propertyManager;
36+
3237
private final GenemaniaParameters genemaniaParams;
3338
private final EMDataSet dataset;
3439

35-
public LoadEnrichmentsFromGenemaniaTask(GenemaniaParameters genemaniaParams, EMDataSet dataset) {
40+
41+
public static interface Factory {
42+
LoadEnrichmentsFromGenemaniaTask create(GenemaniaParameters genemaniaParams, EMDataSet dataset);
43+
}
44+
45+
@Inject
46+
public LoadEnrichmentsFromGenemaniaTask(@Assisted GenemaniaParameters genemaniaParams, @Assisted EMDataSet dataset) {
3647
this.genemaniaParams = genemaniaParams;
3748
this.dataset = dataset;
3849
}
3950

51+
4052
@Override
4153
public void run(TaskMonitor tm) {
4254
tm.setStatusMessage("Loading enrichment data from Genemania network.");
@@ -97,12 +109,15 @@ private void createDataSet(CyNetwork genemaniaNetwork, Map<String,Set<String>> g
97109

98110

99111
private Map<String,Set<String>> computeGeneSets(CyNetwork genemaniaNetwork) {
112+
final String GENE_NAME_COLUMN = propertyManager.getValue(PropertyManager.GENEMANIA_COLUMN_GENE_NAME);
113+
final String ANN_NAME_COLUMN = propertyManager.getValue(PropertyManager.GENEMANIA_COLUMN_ANN_NAME);
114+
100115
CyTable nodeTable = genemaniaNetwork.getDefaultNodeTable();
101116
Map<String,Set<String>> geneSets = new HashMap<>();
102117

103118
for(CyRow row : nodeTable.getAllRows()) {
104-
String gene = row.get("gene name", String.class);
105-
List<String> annotations = row.getList("annotation name", String.class);
119+
String gene = row.get(GENE_NAME_COLUMN, String.class);
120+
List<String> annotations = row.getList(ANN_NAME_COLUMN, String.class);
106121

107122
if(gene != null && annotations != null && !annotations.isEmpty()) {
108123
for(String annotation : annotations) {
@@ -116,13 +131,15 @@ private Map<String,Set<String>> computeGeneSets(CyNetwork genemaniaNetwork) {
116131

117132

118133
private Map<String,GenemaniaAnnotation> parseAnnotationJson(CyNetwork genemaniaNetwork) {
134+
final String ANNOTATIONS_COLUMN = propertyManager.getValue(PropertyManager.GENEMANIA_COLUMN_ANNOTATIONS);
135+
119136
CyTable table = genemaniaNetwork.getDefaultNetworkTable();
120137

121138
CyRow row = table.getRow(genemaniaNetwork.getSUID());
122139
if(row == null)
123140
return null;
124141

125-
String jsonString = row.get("annotations", String.class);
142+
String jsonString = row.get(ANNOTATIONS_COLUMN, String.class);
126143
if(jsonString == null)
127144
return null;
128145

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class CreateEnrichmentMapTaskFactory {
4848

4949
@Inject private CreateEMNetworkTask.Factory createEMNetworkTaskFactory;
5050
@Inject private CreateEMViewTask.Factory createEMViewTaskFactory;
51+
@Inject private LoadEnrichmentsFromGenemaniaTask.Factory genemanaiaTaskFactory;
5152

5253
private final EMCreationParameters params;
5354
private final List<DataSetParameters> dataSets;
@@ -100,7 +101,7 @@ private void createTasks(EnrichmentMap map, TaskIterator tasks, MissingGenesetSt
100101
tasks.append(new LoadEnrichmentsFromTableTask(tableParams, dataset));
101102
} else if(dataSetParameters.getGenemaniaParams().isPresent()) {
102103
GenemaniaParameters genemaniaParams = dataSetParameters.getGenemaniaParams().get();
103-
tasks.append(new LoadEnrichmentsFromGenemaniaTask(genemaniaParams, dataset));
104+
tasks.append(genemanaiaTaskFactory.create(genemaniaParams, dataset));
104105
} else {
105106
tasks.append(getEnrichmentParserTasks(dataset));
106107
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/genemania/GenemaniaDialogPage.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.swing.JPanel;
44

5+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
56
import org.baderlab.csplugins.enrichmentmap.model.DataSetParameters;
67
import org.baderlab.csplugins.enrichmentmap.model.GenemaniaParameters;
78
import org.baderlab.csplugins.enrichmentmap.view.util.dialog.CardDialogCallback;
@@ -13,22 +14,28 @@
1314
public class GenemaniaDialogPage extends NetworkLoadDialogPage {
1415

1516
@Inject private CyApplicationManager applicationManager;
17+
@Inject private PropertyManager propertyManager;
1618

1719
private CyNetwork genemaniaNetwork;
1820

1921

2022
private String getOrganismName() {
21-
return genemaniaNetwork.getRow(genemaniaNetwork).get("organism", String.class);
23+
final String ORGANISM_COLUMN = propertyManager.getValue(PropertyManager.GENEMANIA_COLUMN_ORGANISM);
24+
return genemaniaNetwork.getRow(genemaniaNetwork).get(ORGANISM_COLUMN, String.class);
2225
}
2326

2427
@Override
2528
public JPanel createBodyPanel(CardDialogCallback callback) {
2629
JPanel panel = super.createBodyPanel(callback);
27-
networkNamePanel.setAutomaticName(getOrganismName());
28-
// Assume GenemaniaDialogShowAction did its job of validating the current network.
29-
genemaniaNetwork = applicationManager.getCurrentNetwork();
30+
opened();
3031
return panel;
3132
}
33+
34+
@Override
35+
public void opened() {
36+
genemaniaNetwork = applicationManager.getCurrentNetwork();
37+
networkNamePanel.setAutomaticName(getOrganismName());
38+
}
3239

3340
@Override
3441
public DataSetParameters getDataSetParameters() {

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/genemania/GenemaniaDialogParameters.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515

1616
public class GenemaniaDialogParameters implements CardDialogParameters {
1717

18+
public static final String ORGANISM_COLUMN_DEF ="organism";
19+
public static final String ANNOTATIONS_COLUMN_DEF = "annotations";
20+
public static final String GENE_NAME_COLUMN_DEF = "gene name";
21+
public static final String ANNOTATION_NAME_COLUMN_DEF = "annotation name";
22+
1823
@Inject private Provider<GenemaniaDialogPage> genemaniaDialogPage;
1924

2025
@Override

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/genemania/GenemaniaDialogShowAction.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.swing.JFrame;
88
import javax.swing.JOptionPane;
99

10+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
1011
import org.baderlab.csplugins.enrichmentmap.view.util.dialog.CardDialogShowAction;
1112
import org.cytoscape.application.CyApplicationManager;
1213
import org.cytoscape.model.CyColumn;
@@ -28,6 +29,7 @@ public class GenemaniaDialogShowAction extends CardDialogShowAction {
2829

2930
@Inject private CyApplicationManager applicationManager;
3031
@Inject private Provider<JFrame> jframeProvider;
32+
@Inject private PropertyManager propertyManager;
3133

3234
public GenemaniaDialogShowAction() {
3335
super(GenemaniaDialogParameters.class, "Create from Genemania...");
@@ -61,17 +63,19 @@ private void showNotGenemaniaNetworkError() {
6163
}
6264

6365
private boolean hasRequiredData(CyNetwork network) {
66+
final String ANNOTATIONS_COLUMN = propertyManager.getValue(PropertyManager.GENEMANIA_COLUMN_ANNOTATIONS);
67+
6468
CyTable table = network.getDefaultNetworkTable();
6569

66-
CyColumn column = table.getColumn("annotations");
70+
CyColumn column = table.getColumn(ANNOTATIONS_COLUMN);
6771
if(column == null)
6872
return false;
6973

7074
CyRow row = table.getRow(network.getSUID());
7175
if(row == null)
7276
return false;
7377

74-
String jsonString = row.get("annotations", String.class);
78+
String jsonString = row.get(ANNOTATIONS_COLUMN, String.class);
7579
if(jsonString == null)
7680
return false;
7781

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/genemania/StringDialogPage.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package org.baderlab.csplugins.enrichmentmap.view.creation.genemania;
22

3-
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.DESC_COLUMN;
4-
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.FDR_COLUMN;
5-
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.GENES_COLUMN;
6-
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.NAME_COLUMN;
7-
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.SUID_COLUMN;
83
import static org.baderlab.csplugins.enrichmentmap.view.creation.genemania.StringDialogShowAction.getStringTable;
94

105
import java.util.function.Predicate;
116

127
import javax.swing.JPanel;
138

9+
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
1410
import org.baderlab.csplugins.enrichmentmap.model.DataSetParameters;
1511
import org.baderlab.csplugins.enrichmentmap.model.TableParameters;
1612
import org.baderlab.csplugins.enrichmentmap.view.util.dialog.CardDialogCallback;
@@ -26,6 +22,7 @@ public class StringDialogPage extends NetworkLoadDialogPage {
2622

2723
@Inject private CyApplicationManager applicationManager;
2824
@Inject private CyTableManager tableManager;
25+
@Inject private PropertyManager propertyManager;
2926

3027
private CyNetwork stringNetwork;
3128

@@ -34,14 +31,23 @@ public class StringDialogPage extends NetworkLoadDialogPage {
3431
public JPanel createBodyPanel(CardDialogCallback callback) {
3532
JPanel panel = super.createBodyPanel(callback);
3633
networkNamePanel.setAutomaticName("EnrichmentMap from STRING");
37-
// Assume StringDialogShowAction did its job of validating the current network.
38-
stringNetwork = applicationManager.getCurrentNetwork();
34+
opened();
3935
return panel;
4036
}
4137

38+
@Override
39+
public void opened() {
40+
stringNetwork = applicationManager.getCurrentNetwork();
41+
}
4242

4343
@Override
4444
public DataSetParameters getDataSetParameters() {
45+
final String FDR_COLUMN = propertyManager.getValue(PropertyManager.STRING_COLUMN_FDR);
46+
final String NAME_COLUMN = propertyManager.getValue(PropertyManager.STRING_COLUMN_NAME);
47+
final String GENES_COLUMN = propertyManager.getValue(PropertyManager.STRING_COLUMN_GENES);
48+
final String SUID_COLUMN = propertyManager.getValue(PropertyManager.STRING_COLUMN_SUID);
49+
final String DESC_COLUMN = propertyManager.getValue(PropertyManager.STRING_COLUMN_DESC);
50+
4551
String dataSetName = "STRING enrichment";
4652

4753
Predicate<CyRow> filter = row -> {
@@ -51,7 +57,9 @@ public DataSetParameters getDataSetParameters() {
5157

5258
CyTable table = getStringTable(tableManager);
5359

54-
TableParameters tableParams = new TableParameters(table, NAME_COLUMN, GENES_COLUMN, FDR_COLUMN, DESC_COLUMN, filter);
60+
TableParameters tableParams =
61+
new TableParameters(table, NAME_COLUMN, GENES_COLUMN, FDR_COLUMN, DESC_COLUMN, filter);
62+
5563
return new DataSetParameters(dataSetName, tableParams);
5664
}
5765

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/genemania/StringDialogParameters.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515

1616
public class StringDialogParameters implements CardDialogParameters {
1717

18+
public static final String NAME_COLUMN_DEF = "term name";
19+
public static final String FDR_COLUMN_DEF = "FDR value";
20+
public static final String GENES_COLUMN_DEF = "genes";
21+
public static final String DESC_COLUMN_DEF = "description";
22+
public static final String SUID_COLUMN_DEF = "network.SUID";
23+
1824
@Inject private Provider<StringDialogPage> stringDialogPage;
1925

2026
@Override

0 commit comments

Comments
 (0)