/** * Query all edges of worm regulatory network. * * @param model the Model * @param executor to run the query * @return interactionEdgeSet */ private static void queryWormRegulatoryEdges(Model model, PathQueryExecutor executor) { interactionEdgeSetWorm = new LinkedHashSet<CytoscapeNetworkEdgeData>(); PathQuery query = new PathQuery(model); query.addViews( "Regulation.type", // interaction type, e.g. TF-TF "Regulation.source.primaryIdentifier", "Regulation.source.symbol", "Regulation.source.id", "Regulation.target.primaryIdentifier", "Regulation.target.symbol", "Regulation.target.id"); query.addConstraint(Constraints.eq("Regulation.source.organism.shortName", "C. elegans")); ExportResultsIterator result; try { result = executor.execute(query); } catch (ObjectStoreException e) { throw new RuntimeException("Error retrieving results.", e); } while (result.hasNext()) { List<ResultElement> row = result.next(); String interactionType = (String) row.get(0).getField(); String sourcePId = (String) row.get(1).getField(); String sourceSymbol = (String) row.get(2).getField(); Integer sourceId = (Integer) row.get(3).getField(); String targetPId = (String) row.get(4).getField(); String targetSymbol = (String) row.get(5).getField(); Integer targetId = (Integer) row.get(6).getField(); // TODO Hack for a database issue // if ("blmp-1".equals(targetSymbol)) { // targetId = 1644007904; // } // // if ("unc-130".equals(targetSymbol)) { // targetId = 1644015202; // } // // if ("mab-5".equals(targetSymbol)) { // targetId = 1644006300; // } // // if ("mdl-1".equals(targetSymbol)) { // targetId = 1644006399; // } // // if ("elt-3".equals(targetSymbol)) { // targetId = 1644003204; // } // // if ("lin-11".equals(targetSymbol)) { // targetId = 1644006039; // } // // if ("skn-1".equals(targetSymbol)) { // targetId = 1644009973; // } // // if ("egl-27".equals(targetSymbol)) { // targetId = 1644003074; // } CytoscapeNetworkEdgeData aEdge = new RegulatoryNetworkEdgeData(); aEdge.setSourceId(String.valueOf(sourceId)); if (sourceSymbol == null || sourceSymbol.length() < 1) { aEdge.setSourceLabel(sourcePId); } else { aEdge.setSourceLabel(sourceSymbol); } aEdge.setTargetId(String.valueOf(targetId)); if (targetSymbol == null || targetSymbol.length() < 1) { aEdge.setTargetLabel(targetPId); } else { aEdge.setTargetLabel(targetSymbol); } aEdge.setInteractionType(interactionType); interactionEdgeSetWorm.add(aEdge); } }
/** * Query all edges of fly regulatory network. * * @param model the Model * @param executor to run the query * @return interactionEdgeSet */ private static void queryFlyRegulatoryEdges(Model model, PathQueryExecutor executor) { interactionEdgeSetFly = new LinkedHashSet<CytoscapeNetworkEdgeData>(); // TODO fly doesn't use IM Object id PathQuery query = new PathQuery(model); query.addViews( "Regulation.type", // interaction type, e.g. TF-TF "Regulation.source.primaryIdentifier", "Regulation.source.symbol", "Regulation.target.primaryIdentifier", "Regulation.target.symbol"); query.addConstraint(Constraints.eq("Regulation.source.primaryIdentifier", "FBgn*"), "A"); query.addConstraint(Constraints.eq("Regulation.target.primaryIdentifier", "FBgn*"), "B"); query.setConstraintLogic("A and B"); ExportResultsIterator result; try { result = executor.execute(query); } catch (ObjectStoreException e) { throw new RuntimeException("Error retrieving results.", e); } while (result.hasNext()) { List<ResultElement> row = result.next(); String interactionType = (String) row.get(0).getField(); String sourceNodePId = (String) row.get(1).getField(); String sourceNodeSymbol = (String) row.get(2).getField(); String targetNodePId = (String) row.get(3).getField(); String targetNodeSymbol = (String) row.get(4).getField(); CytoscapeNetworkEdgeData aEdge = new CytoscapeNetworkEdgeData(); // Handle bidirectional edges if (interactionEdgeSetFly.isEmpty()) { aEdge.setSourceId(sourceNodePId); if (sourceNodeSymbol == null || sourceNodeSymbol.length() < 1) { aEdge.setSourceLabel(sourceNodePId); } else { aEdge.setSourceLabel(sourceNodeSymbol); } aEdge.setTargetId(targetNodePId); if (targetNodeSymbol == null || targetNodeSymbol.length() < 1) { aEdge.setTargetLabel(targetNodePId); } else { aEdge.setTargetLabel(targetNodeSymbol); } aEdge.setInteractionType(interactionType); aEdge.setDirection("one"); interactionEdgeSetFly.add(aEdge); } else { aEdge.setSourceId(sourceNodePId); if (sourceNodeSymbol == null || sourceNodeSymbol.length() < 1) { aEdge.setSourceLabel(sourceNodePId); } else { aEdge.setSourceLabel(sourceNodeSymbol); } aEdge.setTargetId(targetNodePId); if (targetNodeSymbol == null || targetNodeSymbol.length() < 1) { aEdge.setTargetLabel(targetNodePId); } else { aEdge.setTargetLabel(targetNodeSymbol); } // miRNA-TF and TF-miRNA are the same interaction type if ("TF-miRNA".equals(interactionType) || "miRNA-TF".equals(interactionType)) { String uniType = "miRNA-TF"; aEdge.setInteractionType(uniType); } else { aEdge.setInteractionType(interactionType); } String interactingString = aEdge.generateInteractionString(); String interactingStringRev = aEdge.generateReverseInteractionString(); // Get a list of interactionString from interactionSet LinkedHashSet<String> intcStrSet = new LinkedHashSet<String>(); for (CytoscapeNetworkEdgeData edgedata : interactionEdgeSetFly) { intcStrSet.add(edgedata.generateInteractionString()); } // A none dulipcated edge if (!(intcStrSet.contains(interactingString) || intcStrSet.contains(interactingStringRev))) { aEdge.setDirection("one"); interactionEdgeSetFly.add(aEdge); } else { // duplicated edge // Pull out the CytoscapeNetworkEdgeData which contains the current // interactionString for (CytoscapeNetworkEdgeData edgedata : interactionEdgeSetFly) { if (edgedata.generateInteractionString().equals(interactingString) || edgedata.generateInteractionString().equals(interactingStringRev)) { edgedata.setDirection("both"); aEdge.setInteractionType(interactionType); } } } } } }