use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.
the class NodeInteractionFilter method isHit.
private boolean isHit(CyNode pNode, List<CyEdge> edges) {
// Get the list of relevant edges for this node
List<CyEdge> adjacentEdges = null;
if (nodeType == NODE_SOURCE) {
adjacentEdges = network.getAdjacentEdgeList(pNode, Type.OUTGOING);
} else if (nodeType == NODE_TARGET) {
adjacentEdges = network.getAdjacentEdgeList(pNode, Type.INCOMING);
} else if (nodeType == NODE_SOURCE_TARGET) {
adjacentEdges = network.getAdjacentEdgeList(pNode, Type.ANY);
} else {
// nodeType == NODE_UNDEFINED --Neither source or target is selected
return false;
}
if (adjacentEdges == null || adjacentEdges.size() == 0) {
return false;
}
BitSet passFilter_edgeBits = passFilter.getEdgeBits();
if (passFilter_edgeBits == null)
return false;
int edgeIndex = -1;
for (int i = 0; i < adjacentEdges.size(); i++) {
edgeIndex = edges.indexOf(adjacentEdges.get(i));
if (passFilter_edgeBits.get(edgeIndex) == true) {
return true;
}
}
return false;
}
use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.
the class NodeInteractionFilter method apply.
public void apply() {
if (!childChanged)
return;
if (network == null) {
setNetwork(applicationManager.getCurrentNetwork());
}
if (network == null) {
return;
}
// Make sure the pass filter is current
if (passFilter == null) {
passFilter = new CompositeFilter("None");
}
if (!passFilter.getName().equalsIgnoreCase("None")) {
passFilter.setNetwork(network);
passFilter.apply();
}
List<CyNode> nodes_list = network.getNodeList();
List<CyEdge> edges = network.getEdgeList();
// NodeInteractionFilter will select node only
int objectCount = nodes_list.size();
// all the bits are false at very beginning
nodeBits = new BitSet(objectCount);
if ((nodeType != NODE_UNDEFINED) && (!passFilter.getName().equalsIgnoreCase("None"))) {
for (int i = 0; i < objectCount; i++) {
if (isHit(nodes_list.get(i), edges)) {
nodeBits.set(i);
}
}
}
if (negation) {
nodeBits.flip(0, objectCount);
}
childChanged = false;
}
use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.
the class EdgeInteractionFilter method apply.
public void apply() {
if (!childChanged)
return;
if (network == null) {
setNetwork(applicationManager.getCurrentNetwork());
}
if (network == null) {
return;
}
// Make sure the pass filter is current
if (passFilter == null) {
passFilter = new CompositeFilter("None");
}
if (!passFilter.getName().equalsIgnoreCase("None")) {
passFilter.setNetwork(network);
passFilter.apply();
}
BitSet passFilter_nodeBits = passFilter.getNodeBits();
List<CyEdge> edges_list = network.getEdgeList();
List<CyNode> nodes = network.getNodeList();
// EdgeInteractionFilter will select edge only
int objectCount = edges_list.size();
// all the bits are false at very beginning
edgeBits = new BitSet(objectCount);
if (nodeType != NODE_UNDEFINED) {
for (int i = 0; i < objectCount; i++) {
if (isHit(edges_list.get(i), passFilter_nodeBits, nodes)) {
edgeBits.set(i);
}
}
}
if (negation) {
edgeBits.flip(0, objectCount);
}
childChanged = false;
}
use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.
the class EnhancedSearchIndex method BuildIndex.
private void BuildIndex(RAMDirectory idx, CyNetwork network) {
try {
// Make a writer to create the index, empty set of stop words (redmine #3808)
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_30, Collections.emptySet());
analyzer.setMaxTokenLength(1024 * 10);
IndexWriter writer = new IndexWriter(idx, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
// Add a document for each graph object - node and edge
List<CyNode> nodeList = network.getNodeList();
this.taskMonitor.setProgress(0.1);
for (CyNode cyNode : nodeList) {
writer.addDocument(createDocument(network, cyNode, EnhancedSearch.NODE_TYPE, cyNode.getSUID()));
}
this.taskMonitor.setProgress(0.6);
List<CyEdge> edgeList = network.getEdgeList();
for (CyEdge cyEdge : edgeList) {
writer.addDocument(createDocument(network, cyEdge, EnhancedSearch.EDGE_TYPE, cyEdge.getSUID()));
}
// Optimize and close the writer to finish building the index
writer.optimize();
writer.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
this.taskMonitor.setProgress(0.95);
}
use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.
the class SelectTask method getResults.
public Object getResults(Class type) {
List<CyIdentifiable> identifiables = new ArrayList();
if (selectedNodes != null)
identifiables.addAll(selectedNodes);
if (selectedEdges != null)
identifiables.addAll(selectedEdges);
if (type.equals(List.class)) {
return identifiables;
} else if (type.equals(String.class)) {
if (identifiables.size() == 0)
return "<none>";
String ret = "";
if (selectedNodes != null && selectedNodes.size() > 0) {
ret += "Nodes selected: \n";
for (CyNode node : selectedNodes) {
ret += " " + network.getRow(node).get(CyNetwork.NAME, String.class) + "\n";
}
}
if (selectedEdges != null && selectedEdges.size() > 0) {
ret += "Edges selected: \n";
for (CyEdge edge : selectedEdges) {
ret += " " + network.getRow(edge).get(CyNetwork.NAME, String.class) + "\n";
}
}
return ret;
} else if (type.equals(JSONResult.class)) {
JSONResult res = () -> {
if (identifiables == null || identifiables.size() == 0)
return "{}";
else {
CyJSONUtil cyJSONUtil = registrar.getService(CyJSONUtil.class);
String result = "{\"nodes\":";
if (selectedNodes == null || selectedNodes.size() == 0)
result += "[]";
else
result += cyJSONUtil.cyIdentifiablesToJson(selectedNodes);
result += ", \"edges\":";
if (selectedEdges == null || selectedEdges.size() == 0)
result += "[]";
else
result += cyJSONUtil.cyIdentifiablesToJson(selectedEdges);
return result + "}";
}
};
return res;
}
return identifiables;
}
Aggregations