Skip to content

Commit a98b105

Browse files
committed
Fix filtering for legacy session files.
1 parent 01c9809 commit a98b105

File tree

9 files changed

+129
-66
lines changed

9 files changed

+129
-66
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/AbstractDataSet.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,34 @@ public abstract class AbstractDataSet implements Comparable<AbstractDataSet> {
1414
/** EnrichmentMap only creates nodes for these genes. */
1515
private SetOfGeneSets geneSetsOfInterest = new SetOfGeneSets();
1616

17+
//TODO: Can a dataset be associated to multiple Enrichment maps?
18+
/** A Dataset is always associated with an Enrichment Map. */
19+
private transient EnrichmentMap map;
20+
1721
private static final Collator collator = Collator.getInstance();
1822
private final Object lock = new Object();
1923

20-
protected AbstractDataSet(String name) {
24+
protected AbstractDataSet(EnrichmentMap map, String name) {
25+
this.map = map;
2126
this.name = name;
2227
}
2328

2429
public String getName() {
2530
return name;
2631
}
2732

33+
/**
34+
* @noreference
35+
* This method is only meant to be called by the ModelSerializer.
36+
*/
37+
public void setParent(EnrichmentMap map) {
38+
this.map = map;
39+
}
40+
41+
public EnrichmentMap getMap() {
42+
return map;
43+
}
44+
2845
public Set<Long> getNodeSuids() {
2946
synchronized (lock) {
3047
return Collections.unmodifiableSet(nodeSuids);

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/EMDataSet.java

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,11 @@ public String getLabel() {
4040
/** The set of genes in the analysis (there might be genes in the gmt file that are not in expression set). */
4141
private Set<Integer> dataSetGenes = new HashSet<>();
4242

43-
//TODO: Can a dataset be associated to multiple Enrichment maps?
44-
/** A Dataset is always associated with an Enrichment Map. */
45-
private transient EnrichmentMap map;
46-
4743
/** The list of files associated with this Dataset. */
4844
private DataSetFiles dataSetFiles;
4945

5046
protected EMDataSet(EnrichmentMap map, String name, Method method, DataSetFiles files) {
51-
super(name);
52-
this.map = map;
47+
super(map, name);
5348
this.method = method;
5449

5550
//get the file name parameters for this map
@@ -92,18 +87,6 @@ public void setExpressionSets(GeneExpressionMatrix expressionSets) {
9287
this.expressionSets = expressionSets;
9388
}
9489

95-
/**
96-
* @noreference
97-
* This method is only meant to be called by the ModelSerializer.
98-
*/
99-
public void setParent(EnrichmentMap map) {
100-
this.map = map;
101-
}
102-
103-
public EnrichmentMap getMap() {
104-
return map;
105-
}
106-
10790
public SetOfGeneSets getSetOfGeneSets() {
10891
return setOfGeneSets;
10992
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/EMSignatureDataSet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
public class EMSignatureDataSet extends AbstractDataSet {
44

5-
public EMSignatureDataSet(String name) {
6-
super(name);
5+
public EMSignatureDataSet(EnrichmentMap map, String name) {
6+
super(map, name);
77
}
88

99
@Override

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/EnrichmentMapParameters.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,8 @@
7474
* parsed files used to create it, all genes in the network, all enrichment
7575
* results, cuts-offs, expression files, and ranks
7676
*
77-
* @deprecated Use EMCreationParameters instead.
77+
* Use EMCreationParameters instead.
7878
*/
79-
@Deprecated
8079
public class EnrichmentMapParameters {
8180

8281
@Inject private StreamUtil streamUtil;

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/io/LegacySessionLoader.java

Lines changed: 88 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import org.baderlab.csplugins.enrichmentmap.CyActivator;
1515
import org.baderlab.csplugins.enrichmentmap.model.DataSetFiles;
16+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
1617
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
1718
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
1819
import org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet;
@@ -28,18 +29,22 @@
2829
import org.baderlab.csplugins.enrichmentmap.model.SetOfGeneSets;
2930
import org.baderlab.csplugins.enrichmentmap.parsers.ExpressionFileReaderTask;
3031
import org.baderlab.csplugins.enrichmentmap.task.InitializeGenesetsOfInterestTask;
31-
import org.baderlab.csplugins.enrichmentmap.util.NamingUtil;
3232
import org.cytoscape.application.CyApplicationManager;
3333
import org.cytoscape.io.util.StreamUtil;
34+
import org.cytoscape.model.CyEdge;
3435
import org.cytoscape.model.CyNetwork;
3536
import org.cytoscape.model.CyNetworkManager;
37+
import org.cytoscape.model.CyNode;
38+
import org.cytoscape.model.CyRow;
3639
import org.cytoscape.service.util.CyServiceRegistrar;
3740
import org.cytoscape.session.CySession;
3841

3942
import com.google.inject.Inject;
4043

4144
public class LegacySessionLoader {
4245

46+
private static final String SIG_DATA_SET_NAME = "Signature Gene Sets";
47+
4348
@Inject private CyServiceRegistrar serviceRegistrar;
4449
@Inject private CyNetworkManager cyNetworkManager;
4550
@Inject private CyApplicationManager cyApplicationManager;
@@ -60,13 +65,76 @@ public static boolean isLegacy(CySession session) {
6065
return true;
6166
}
6267

68+
69+
public void loadSession(CySession session) {
70+
createModelFromSessionFiles(session);
71+
migrate();
72+
}
73+
74+
6375
/**
64-
* Restore Enrichment maps
65-
*
66-
* @param pStateFileList - list of files associated with thie session
76+
* Reconstruct important model data using EM2 conventions.
6777
*/
78+
private void migrate() {
79+
for(EnrichmentMap map : emManager.getAllEnrichmentMaps().values()) {
80+
if(map.isLegacy()) { // Is this check necessary?
81+
EMDataSet ds1 = map.getDataSet(LegacySupport.DATASET1);
82+
EMDataSet ds2 = map.getDataSet(LegacySupport.DATASET2);
83+
EMSignatureDataSet dsSig = map.getSignatureDataSet(SIG_DATA_SET_NAME);
84+
85+
EMCreationParameters params = map.getParams();
86+
String prefix = params.getAttributePrefix();
87+
88+
// Restore column names for filtering
89+
params.addPValueColumnName(prefix + "pvalue_dataset1");
90+
params.addQValueColumnName(prefix + "fdr_qvalue_dataset1");
91+
params.addSimilarityCutoffColumnName(prefix + "similarity_coefficient");
92+
if(ds2 != null) {
93+
params.addPValueColumnName(prefix + "pvalue_dataset2");
94+
params.addQValueColumnName(prefix + "fdr_qvalue_dataset2");
95+
}
96+
97+
// Restore node SUIDs
98+
CyNetwork network = cyNetworkManager.getNetwork(map.getNetworkID());
99+
for(CyNode node : network.getNodeList()) {
100+
CyRow row = network.getRow(node);
101+
if(ds1 != null) {
102+
Integer gsSize = row.get(prefix + "gs_size_dataset1", Integer.class);
103+
if(gsSize != null && gsSize > 0)
104+
ds1.addNodeSuid(node.getSUID());
105+
}
106+
if(ds2 != null) {
107+
Integer gsSize = row.get(prefix + "gs_size_dataset2", Integer.class);
108+
if(gsSize != null && gsSize > 0)
109+
ds2.addNodeSuid(node.getSUID());
110+
}
111+
if(dsSig != null) {
112+
Integer gsSize = row.get(prefix + "gs_size_signature", Integer.class);
113+
if(gsSize != null && gsSize > 0)
114+
dsSig.addNodeSuid(node.getSUID());
115+
}
116+
}
117+
118+
// Restore edge SUIDs
119+
for(CyEdge edge : network.getEdgeList()) {
120+
CyRow row = network.getRow(edge);
121+
Integer emSet = row.get(prefix + "ENRICHMENT_SET", Integer.class);
122+
if(emSet != null) {
123+
if(emSet == 0 || emSet == 1)
124+
ds1.addEdgeSuid(edge.getSUID());
125+
else if(emSet == 2)
126+
ds2.addEdgeSuid(edge.getSUID());
127+
else if(emSet == 4)
128+
dsSig.addEdgeSuid(edge.getSUID());
129+
}
130+
}
131+
}
132+
}
133+
}
134+
135+
68136
@SuppressWarnings("unchecked")
69-
public void loadSession(CySession session) {
137+
private void createModelFromSessionFiles(CySession session) {
70138
Map<Long, EnrichmentMapParameters> paramsMap = new HashMap<>();
71139
Map<Long, EnrichmentMap> enrichmentMapMap = new HashMap<>();
72140

@@ -80,8 +148,9 @@ public void loadSession(CySession session) {
80148
String fullText = new Scanner(reader, "UTF-8").useDelimiter("\\A").next();
81149

82150
//Given the file with all the parameters create a new parameter
83-
EnrichmentMapParameters params = enrichmentMapParametersFactory.create(fullText);
84-
EnrichmentMap em = new EnrichmentMap(params.getCreationParameters(), serviceRegistrar);
151+
EnrichmentMapParameters legacyParams = enrichmentMapParametersFactory.create(fullText);
152+
EMCreationParameters newParams = legacyParams.getCreationParameters();
153+
EnrichmentMap em = new EnrichmentMap(newParams, serviceRegistrar);
85154

86155
//get the network name
87156
String param_name = em.getName();
@@ -99,18 +168,18 @@ public void loadSession(CySession session) {
99168

100169
//after associated the properties with the network
101170
//initialized each Dataset that we have files for
102-
HashMap<String, DataSetFiles> files = params.getFiles();
171+
HashMap<String, DataSetFiles> files = legacyParams.getFiles();
103172

104-
for (Iterator<String> j = params.getFiles().keySet().iterator(); j.hasNext();) {
173+
for (Iterator<String> j = legacyParams.getFiles().keySet().iterator(); j.hasNext();) {
105174
String current_dataset = j.next();
106-
Method method = EnrichmentMapParameters.stringToMethod(params.getMethod());
175+
Method method = EnrichmentMapParameters.stringToMethod(legacyParams.getMethod());
107176
em.createDataSet(current_dataset, method, files.get(current_dataset));
108177
}
109178

110179
CyNetwork network = getNetworkByName(networkName);
111180
Long suid = network.getSUID();
112181
em.setNetworkID(suid);
113-
paramsMap.put(suid, params);
182+
paramsMap.put(suid, legacyParams);
114183
enrichmentMapMap.put(suid, em);
115184
}
116185
}
@@ -151,9 +220,9 @@ public void loadSession(CySession session) {
151220

152221
if (propFile.getName().contains(".signature.gmt")) {
153222
// TODO Find a better way to serialize EMSignatureDataSet
154-
String sdsName = propFile.getName().replace(".signature.gmt", "");
155-
sdsName = NamingUtil.getUniqueName(sdsName, em.getSignatureDataSets().keySet());
156-
EMSignatureDataSet sigDataSet = new EMSignatureDataSet(sdsName);
223+
// String sdsName = propFile.getName().replace(".signature.gmt", "");
224+
// sdsName = NamingUtil.getUniqueName(sdsName, em.getSignatureDataSets().keySet());
225+
EMSignatureDataSet sigDataSet = new EMSignatureDataSet(em, SIG_DATA_SET_NAME);
157226
em.addSignatureDataSet(sigDataSet);
158227
SetOfGeneSets sigGeneSets = sigDataSet.getGeneSetsOfInterest();
159228

@@ -254,8 +323,7 @@ public void loadSession(CySession session) {
254323

255324
//this is an extra rank file for backwards compatability. Ignore it.
256325
else if ((file_name_tokens.length == 4)
257-
&& (file_name_tokens[1].equals("Dataset 1")
258-
|| file_name_tokens[1].equals("Dataset 2"))
326+
&& (file_name_tokens[1].equals("Dataset 1") || file_name_tokens[1].equals("Dataset 2"))
259327
&& file_name_tokens[2].equals("RANKS"))
260328
continue;
261329
else //file name is not structured properly --> default to file name
@@ -268,8 +336,7 @@ else if ((file_name_tokens.length == 4)
268336
if (parts.dataset != null)
269337
em.getDataSet(parts.dataset).getExpressionSets().addRanks(parts.ranks_name, new_ranking);
270338
else
271-
em.getDataSet(LegacySupport.DATASET1).getExpressionSets().addRanks(parts.ranks_name,
272-
new_ranking);
339+
em.getDataSet(LegacySupport.DATASET1).getExpressionSets().addRanks(parts.ranks_name, new_ranking);
273340
}
274341

275342
//Deal with legacy issues
@@ -303,14 +370,11 @@ else if ((file_name_tokens.length == 4)
303370
Ranking new_ranking;
304371

305372
// Check to see if there is already GSEARanking
306-
if (em.getDataSet(LegacySupport.DATASET2).getExpressionSets().getAllRanksNames()
307-
.contains(Ranking.GSEARanking)) {
308-
new_ranking = em.getDataSet(LegacySupport.DATASET2).getExpressionSets()
309-
.getRanksByName(Ranking.GSEARanking);
373+
if (em.getDataSet(LegacySupport.DATASET2).getExpressionSets().getAllRanksNames().contains(Ranking.GSEARanking)) {
374+
new_ranking = em.getDataSet(LegacySupport.DATASET2).getExpressionSets().getRanksByName(Ranking.GSEARanking);
310375
} else {
311376
new_ranking = new Ranking();
312-
em.getDataSet(LegacySupport.DATASET2).getExpressionSets().addRanks(Ranking.GSEARanking,
313-
new_ranking);
377+
em.getDataSet(LegacySupport.DATASET2).getExpressionSets().addRanks(Ranking.GSEARanking, new_ranking);
314378
}
315379

316380
if (propFile.getName().contains(".RANKS2.txt")) {
@@ -323,19 +387,6 @@ else if ((file_name_tokens.length == 4)
323387
}
324388

325389

326-
327-
328-
329-
330-
331-
332-
333-
334-
335-
336-
337-
338-
339390
//load the expression files. Load them last because they require
340391
//info from the parameters
341392
for (int i = 0; i < fileList.size(); i++){
@@ -491,7 +542,6 @@ private FileNameParts ParseFileName(File filename){
491542
public CyNetwork getNetworkByName(String name){
492543
Set<CyNetwork> networks = cyNetworkManager.getNetworkSet();
493544
for(CyNetwork network:networks){
494-
495545
String currentName = network.getRow(network).get(CyNetwork.NAME,String.class);
496546
if(currentName.equals(name))
497547
return network;

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/io/ModelSerializer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Map;
77

88
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
9+
import org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet;
910
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
1011
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResult;
1112
import org.baderlab.csplugins.enrichmentmap.model.GSEAResult;
@@ -61,6 +62,9 @@ public static EnrichmentMap deserialize(String json) {
6162
for(EMDataSet dataset : map.getDataSetList()) {
6263
dataset.setParent(map);
6364
}
65+
for(EMSignatureDataSet dataset : map.getSignatureSetList()) {
66+
dataset.setParent(map);
67+
}
6468
return map;
6569
} catch(JsonParseException e) {
6670
logger.error(e.getMessage(), e);

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/postanalysis/CreateDiseaseSignatureNetworkTask.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private EMSignatureDataSet createSignatureDataSet() {
150150
String name = params.getName();
151151
if(name == null || name.trim().isEmpty())
152152
name = NamingUtil.getUniqueName(params.getLoadedGMTGeneSets().getName(), map.getSignatureDataSets().keySet());
153-
return new EMSignatureDataSet(name);
153+
return new EMSignatureDataSet(map, name);
154154
}
155155

156156

@@ -267,7 +267,6 @@ private void createEdge(SimilarityKey similarityKey, CyNetwork network, CyNetwor
267267
return;
268268

269269
edge = network.addEdge(hubNode, geneSet, false);
270-
// We actually add the edges to the EM data sets, not the signature data set
271270
sigDataSet.addEdgeSuid(edge.getSUID());
272271
// map.getDataSet(similarityKey.getName()).addEdgeSuid(edge.getSUID());
273272
taskResult.addNewEdge(edge);

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/control/ControlPanelMediator.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.baderlab.csplugins.enrichmentmap.model.EMSignatureDataSet;
4242
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
4343
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
44+
import org.baderlab.csplugins.enrichmentmap.model.LegacySupport;
4445
import org.baderlab.csplugins.enrichmentmap.style.ChartData;
4546
import org.baderlab.csplugins.enrichmentmap.style.ChartFactoryManager;
4647
import org.baderlab.csplugins.enrichmentmap.style.ChartOptions;
@@ -1045,7 +1046,16 @@ private Set<String> getFilteredColumnNames(Set<String> columnNames, Collection<A
10451046

10461047
for (String name : columnNames) {
10471048
for (AbstractDataSet ds : dataSets) {
1048-
// TODO What about 2.x columns?
1049+
if (ds.getMap().isLegacy()) {
1050+
if(LegacySupport.DATASET1.equals(ds.getName()) && name.endsWith("dataset1")) {
1051+
filteredNames.add(name);
1052+
break;
1053+
}
1054+
if(LegacySupport.DATASET2.equals(ds.getName()) && name.endsWith("dataset2")) {
1055+
filteredNames.add(name);
1056+
break;
1057+
}
1058+
}
10491059
if (name.endsWith(" (" + ds.getName() + ")")) {
10501060
filteredNames.add(name);
10511061
break;

EnrichmentMapPlugin/src/test/java/org/baderlab/csplugins/enrichmentmap/model/ModelSerializerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,12 @@ public void setUp(EnrichmentMapManager emManager) {
5656
maps = emManager.getAllEnrichmentMaps();
5757
assertEquals(1, maps.size());
5858

59-
EMSignatureDataSet sigDataSet = new EMSignatureDataSet("gene_sets");
59+
EnrichmentMap expectedEM = emManager.getAllEnrichmentMaps().values().iterator().next();
60+
61+
EMSignatureDataSet sigDataSet = new EMSignatureDataSet(expectedEM, "gene_sets");
6062
sigDataSet.getGeneSetsOfInterest().addGeneSet("Sig1", new GeneSet("SG1", "desc1", ImmutableSet.of(1,2,3,4)));
6163
sigDataSet.getGeneSetsOfInterest().addGeneSet("Sig2", new GeneSet("SG2", "desc2", ImmutableSet.of(1,2,3,4,5,6)));
6264

63-
EnrichmentMap expectedEM = emManager.getAllEnrichmentMaps().values().iterator().next();
6465
expectedEM.addSignatureDataSet(sigDataSet);
6566
}
6667

0 commit comments

Comments
 (0)