public class JIPipeGraph extends Object implements JIPipeValidatable, JIPipeFunctionallyComparable, JIPipeGraphNode.NodeSlotsChangedEventListener, JIPipeParameterCollection.ParameterStructureChangedEventListener
JIPipeGraphNode
instances as graphConstructor and Description |
---|
JIPipeGraph()
Creates a new node type graph
|
JIPipeGraph(JIPipeGraph other)
Creates a deep copy of the other algorithm graph.
|
Modifier and Type | Method and Description |
---|---|
void |
attach(Class<?> klass,
Object attachment)
Attaches an object as the specified type
Warning: Attachments are not serialized
|
void |
attach(Object attachment)
Attaches the object with its class as key.
|
void |
attachAdditionalMetadata(String key,
JIPipeMetadataObject object)
Attaches additional metadata (persistent)
|
boolean |
canConnect(JIPipeDataSlot source,
JIPipeDataSlot target,
boolean user)
Slow implementation of connection checking that tests for graph cycles
|
boolean |
canConnectFast(JIPipeDataSlot source,
JIPipeDataSlot target,
boolean user)
Fast implementation of connection checking without copying the graph
|
boolean |
canUserDelete(JIPipeGraphNode algorithm)
Returns true if the user can delete the algorithm
|
boolean |
canUserDisconnect(JIPipeDataSlot source,
JIPipeDataSlot target)
Returns true if the user can disconnect the slots
|
void |
clear()
Clears this graph
|
void |
connect(JIPipeDataSlot source,
JIPipeDataSlot target)
Connects an output slot to an input slot.
|
void |
connect(JIPipeDataSlot source,
JIPipeDataSlot target,
boolean userCanDisconnect)
Connects an output slot to an input slot.
|
boolean |
containsNode(JIPipeDataSlot slot)
Returns true if the slot is in this graph
|
boolean |
containsNode(JIPipeGraphNode node)
Returns true if this graph contains the algorithm
|
boolean |
containsNode(UUID nodeUUID) |
boolean |
disconnect(JIPipeDataSlot source,
JIPipeDataSlot target,
boolean user)
Disconnects an input and an output slot
|
void |
disconnect(JIPipeGraphConnection connection) |
void |
disconnect(JIPipeGraphConnection connection,
boolean user) |
void |
disconnectAll(JIPipeDataSlot slot,
boolean user)
Completely disconnects a slot
|
JIPipeGraph |
duplicate() |
void |
edgesFromJson(com.fasterxml.jackson.databind.JsonNode jsonNode,
JIPipeValidationReportContext context,
JIPipeValidationReport issues) |
JIPipeGraph |
extract(Collection<JIPipeGraphNode> nodes,
boolean withInternal)
Copies the selected algorithms into a new graph
Connections between the nodes are kept
UUIDs are kept
|
JIPipeGraph |
extract(Collection<JIPipeGraphNode> nodes,
boolean withInternal,
boolean skipLocked)
Copies the selected algorithms into a new graph
Connections between the nodes are kept
UUIDs are kept
|
List<LoopGroup> |
extractLoopGroups(Set<JIPipeGraphNode> additionalLoopEnds,
Set<JIPipeGraphNode> deactivatedNodes)
Converts loop structures into equivalent group nodes
Please note that nested loops will be put into the group; only order 1 loops will be converted.
|
JIPipeGraph |
extractShallow(Collection<JIPipeGraphNode> nodes,
boolean withInternal,
boolean skipLocked)
Copies the selected algorithms into a new graph
Connections between the nodes are kept
UUIDs are kept
Nodes are copied shallow
|
<T extends JIPipeGraphNode> |
findFirstNodeOfType(Class<T> klass) |
JIPipeGraphNode |
findNode(String uuidOrAlias)
Finds a node by its UUID (as string) or alias ID.
|
UUID |
findNodeUUID(String uuidOrAlias)
Finds a node UUID by its UUID (as string) or alias ID.
|
void |
fromJson(com.fasterxml.jackson.databind.JsonNode jsonNode,
JIPipeValidationReportContext context,
JIPipeValidationReport issues,
JIPipeNotificationInbox notifications)
Loads this graph from JSON
|
boolean |
functionallyEquals(Object other) |
String |
generateAliasIdFor(JIPipeGraphNode node)
Generates an alias ID for a node
|
Map<String,JIPipeMetadataObject> |
getAdditionalMetadata() |
<T extends JIPipeMetadataObject> |
getAdditionalMetadata(Class<T> klass,
String key)
Returns additional metadata or null if it does not exist
|
String |
getAliasIdOf(JIPipeGraphNode node)
Gets the alias ID of a node
A unique alias ID is generated if none is assigned yet
|
List<JIPipeGraphNode> |
getAllPredecessorNodes(JIPipeGraphNode target,
List<JIPipeGraphNode> traversed)
Returns ALL predecessor algorithms of an algorithm.
|
<T> T |
getAttachment(Class<T> klass)
Returns an attachment or null if it does not exist
|
Map<Class<?>,Object> |
getAttachments() |
Set<JIPipeDataSlot> |
getAvailableSources(JIPipeDataSlot target,
boolean user,
boolean fast)
Returns all available sources for an input slot.
|
Set<JIPipeDataSlot> |
getAvailableTargets(JIPipeDataSlot source,
boolean user,
boolean fast)
Returns all available target for an output slot
Does not check for cycles.
|
String |
getCompartmentDisplayNameOf(JIPipeGraphNode node)
Returns a human-readable name of the compartment.
|
UUID |
getCompartmentUUIDOf(JIPipeGraphNode node)
Gets the UUID of the compartment
|
JIPipeGraphConnection |
getConnection(JIPipeDataSlot source,
JIPipeDataSlot target) |
Set<JIPipeGraphNode> |
getDeactivatedNodes(boolean cascading)
Gets all algorithms and all dependent algorithms that are missing inputs or are deactivated by the user
|
Set<JIPipeGraphNode> |
getDeactivatedNodes(Set<JIPipeGraphNode> externallySatisfied)
Gets all algorithms and all dependent algorithms that are missing inputs or are deactivated by the user
|
Set<JIPipeDependency> |
getDependencies()
Gets all dependencies of all algorithms
|
List<JIPipeGraphNode> |
getDirectPredecessorNodes(JIPipeGraphNode target)
Returns DIRECT predecessor algorithms of an algorithm
|
Set<Map.Entry<JIPipeDataSlot,JIPipeDataSlot>> |
getEdgesBetween(JIPipeGraphNode source,
JIPipeGraphNode target)
Gets all edges between two algorithm nodes
|
JIPipeGraphNode |
getEquivalentNode(JIPipeGraphNode foreign)
Returns the algorithm that has the same UUID as the foreign algorithm in the foreign graph.
|
JIPipeDataSlot |
getEquivalentSlot(JIPipeDataSlot foreign)
Returns the slot with the same name within the algorithm with the same ID.
|
org.jgrapht.Graph<JIPipeDataSlot,JIPipeGraphEdge> |
getGraph() |
JIPipeGraph.GraphChangedEventEmitter |
getGraphChangedEventEmitter() |
Set<JIPipeGraphNode> |
getGraphNodes()
Returns the set of node instances.
|
Set<UUID> |
getGraphNodeUUIDs()
Returns the set of node UUIDs.
|
Set<JIPipeDataSlot> |
getInputIncomingSourceSlots(JIPipeDataSlot target)
If exists, returns the output slots that provide data for the input slot
Returns and empty list if there are none
|
JIPipeGraph.NodeAddedEventEmitter |
getNodeAddedEventEmitter() |
JIPipeGraphNode |
getNodeByUUID(UUID uuid)
Gets a node by its UUID
|
JIPipeGraph.NodeConnectedEventEmitter |
getNodeConnectedEventEmitter() |
int |
getNodeCount() |
JIPipeGraph.NodeDisconnectedEventEmitter |
getNodeDisconnectedEventEmitter() |
Map<UUID,String> |
getNodeLegacyCompartmentIDs() |
JIPipeGraph.NodeRemovedEventEmitter |
getNodeRemovedEventEmitter() |
JIPipeGraphNode.NodeSlotsChangedEventEmitter |
getNodeSlotsChangedEventEmitter() |
Set<JIPipeGraphNode> |
getNodesWithinCompartment(UUID compartmentId)
Returns the algorithms within the specified compartment ID.
|
Set<JIPipeDataSlot> |
getOutputOutgoingTargetSlots(JIPipeDataSlot source)
Returns the list of input slots that are provided by the source slot
Returns an empty set if the target is an input or no slot exists
|
JIPipeParameterCollection.ParameterStructureChangedEventEmitter |
getParameterStructureChangedEventEmitter() |
JIPipeParameterTree |
getParameterTree(boolean useAliasIds,
Set<UUID> restrictToCompartments)
Extracts all parameters as tree.
|
JIPipeProject |
getProject()
Gets the
JIPipeProject if this is a project or project compartment graph. |
int |
getSlotCount() |
Set<Map.Entry<JIPipeDataSlot,JIPipeDataSlot>> |
getSlotEdges()
Returns all edges as set of edges
|
Set<JIPipeDataSlot> |
getSlotNodes() |
void |
getTextDescription(StringBuilder stringBuilder,
UUID compartment,
Map<UUID,Integer> nodeIndices,
int headingLevel)
Gets a description of the graph as text
|
List<JIPipeDataSlot> |
getUnconnectedSlots() |
UUID |
getUUIDOf(JIPipeGraphNode node)
Gets the UUID of a node
|
Set<UUID> |
getVisibleCompartmentUUIDsOf(JIPipeGraphNode node)
Gets the compartment UUIDs where the node is also visible inside
|
boolean |
hasAttachmentOfType(Class<?> klass)
Returns true if there is an attachment of given type
|
UUID |
insertNode(JIPipeGraphNode node)
Inserts a node into the graph.
|
UUID |
insertNode(JIPipeGraphNode node,
UUID compartment)
Inserts a node into the graph.
|
UUID |
insertNode(UUID uuid,
JIPipeGraphNode node,
UUID compartment)
Inserts an algorithm into the graph
|
boolean |
isEmpty() |
boolean |
isProjectCompartmentGraph() |
boolean |
isProjectGraph() |
Map<UUID,JIPipeGraphNode> |
mergeWith(JIPipeGraph otherGraph)
Merges another graph into this graph
The input is not copied!
|
void |
nodesFromJson(com.fasterxml.jackson.databind.JsonNode jsonNode,
JIPipeValidationReportContext context,
JIPipeValidationReport issues,
JIPipeNotificationInbox notifications) |
void |
onNodeSlotsChanged(JIPipeGraphNode.NodeSlotsChangedEvent event)
Should be triggered when an
JIPipeGraphNode 's slots are changed. |
void |
onParameterStructureChanged(JIPipeParameterCollection.ParameterStructureChangedEvent event)
Should be triggered when an
JIPipeGraphNode 's parameter structure is changed. |
void |
rebuildAliasIds(boolean force)
Recreates the alias Ids based on their name
|
void |
removeAttachment(Class<?> klass)
Removes an attachment
Warning: Attachments are not serialized
|
void |
removeCompartment(UUID compartmentUUID)
Removes a whole compartment from the graph.
|
void |
removeNode(JIPipeGraphNode node,
boolean user)
Removes an algorithm.
|
void |
removeNodes(Set<JIPipeGraphNode> nodes,
boolean user)
Removes multiple nodes at once
|
void |
repairGraph()
Repairs the graph by removing old nodes and adding missing ones
|
void |
replaceNode(JIPipeGraphNode target,
JIPipeGraphNode replacement)
Replaces a node with another.
|
void |
replaceWith(JIPipeGraph other)
Replaces all contents with the ones in the other graph
Does not apply copying!
|
void |
reportValidity(JIPipeValidationReportContext reportContext,
JIPipeValidationReport report)
Generates a validity report
|
void |
reportValidity(JIPipeValidationReportContext context,
JIPipeValidationReport report,
JIPipeGraphNode targetNode)
Reports the validity for the target node and its dependencies
|
void |
reportValidity(JIPipeValidationReportContext context,
JIPipeValidationReport report,
JIPipeGraphNode targetNode,
Set<JIPipeGraphNode> satisfied)
Reports the validity for the target node and its dependencies
|
void |
setAdditionalMetadata(Map<String,JIPipeMetadataObject> additionalMetadata) |
void |
setAttachments(Map<Class<?>,Object> attachments)
Sets the attachments map
Warning: Attachments are not serialized
|
void |
setCompartment(UUID nodeUUID,
UUID compartmentUUID)
Sets the compartment of a node
|
void |
setUUIDOf(JIPipeGraphNode node,
UUID uuid)
Changes the UUID of the node
|
String |
toString() |
List<JIPipeGraphNode> |
traverse()
Traverses the graph in topological order.
|
List<JIPipeDataSlot> |
traverseSlots()
Traverses the graph in topological order.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
generateValidityReport
public JIPipeGraph()
public JIPipeGraph(JIPipeGraph other)
other
- The original graphpublic JIPipeGraph.NodeAddedEventEmitter getNodeAddedEventEmitter()
public JIPipeGraph.NodeRemovedEventEmitter getNodeRemovedEventEmitter()
public JIPipeGraph.GraphChangedEventEmitter getGraphChangedEventEmitter()
public JIPipeGraph.NodeConnectedEventEmitter getNodeConnectedEventEmitter()
public JIPipeGraph.NodeDisconnectedEventEmitter getNodeDisconnectedEventEmitter()
public JIPipeGraphNode.NodeSlotsChangedEventEmitter getNodeSlotsChangedEventEmitter()
public JIPipeParameterCollection.ParameterStructureChangedEventEmitter getParameterStructureChangedEventEmitter()
public String generateAliasIdFor(JIPipeGraphNode node)
node
- the nodepublic String getAliasIdOf(JIPipeGraphNode node)
node
- the nodepublic UUID getUUIDOf(JIPipeGraphNode node)
node
- the nodepublic JIPipeGraphNode getNodeByUUID(UUID uuid)
uuid
- the UUIDpublic void setUUIDOf(JIPipeGraphNode node, UUID uuid)
node
- the nodeuuid
- the uuidpublic UUID getCompartmentUUIDOf(JIPipeGraphNode node)
node
- the nodepublic Set<UUID> getVisibleCompartmentUUIDsOf(JIPipeGraphNode node)
node
- the nodepublic UUID findNodeUUID(String uuidOrAlias)
uuidOrAlias
- the UUID string or alias IDpublic JIPipeGraphNode findNode(String uuidOrAlias)
uuidOrAlias
- the UUID string or alias IDpublic Map<String,JIPipeMetadataObject> getAdditionalMetadata()
public void setAdditionalMetadata(Map<String,JIPipeMetadataObject> additionalMetadata)
public UUID insertNode(UUID uuid, JIPipeGraphNode node, UUID compartment)
uuid
- The unique IDnode
- The nodecompartment
- The compartment where the algorithm will be placed. Can be null.public UUID insertNode(JIPipeGraphNode node)
node
- The nodepublic UUID insertNode(JIPipeGraphNode node, UUID compartment)
node
- The nodecompartment
- The compartment where the algorithm will be placedpublic <T> T getAttachment(Class<T> klass)
T
- the attachment classklass
- the attachment classpublic <T extends JIPipeMetadataObject> T getAdditionalMetadata(Class<T> klass, String key)
T
- returned metadata classklass
- returned metadata classkey
- metadata keypublic void attachAdditionalMetadata(String key, JIPipeMetadataObject object)
key
- the keyobject
- JSON-serializable objectpublic void attach(Class<?> klass, Object attachment)
klass
- the type the attachment is attached asattachment
- the attachmentpublic void attach(Object attachment)
attachment
- the attachmentpublic void removeAttachment(Class<?> klass)
klass
- the classpublic boolean hasAttachmentOfType(Class<?> klass)
klass
- the attachment classpublic boolean canUserDelete(JIPipeGraphNode algorithm)
algorithm
- The algorithmpublic boolean canUserDisconnect(JIPipeDataSlot source, JIPipeDataSlot target)
source
- Source slottarget
- Target slotpublic void setCompartment(UUID nodeUUID, UUID compartmentUUID)
nodeUUID
- the nodecompartmentUUID
- the compartmentpublic void removeCompartment(UUID compartmentUUID)
compartmentUUID
- The compartment IDpublic void removeNode(JIPipeGraphNode node, boolean user)
node
- The node to be removeduser
- if a user triggered the operation. If true, will not remove internal nodespublic boolean canConnect(JIPipeDataSlot source, JIPipeDataSlot target, boolean user)
source
- Source slot. Must be an output.target
- Target slot. Must be an input.user
- If true, the user is generating the connectionpublic boolean canConnectFast(JIPipeDataSlot source, JIPipeDataSlot target, boolean user)
source
- Source slot. Must be an output.target
- Target slot. Must be an input.user
- If triggered by a userpublic void connect(JIPipeDataSlot source, JIPipeDataSlot target)
source
- An output slottarget
- An input slotpublic void connect(JIPipeDataSlot source, JIPipeDataSlot target, boolean userCanDisconnect)
source
- An output slot.target
- An input slot.userCanDisconnect
- If true, users are allowed to disconnect this connection againpublic JIPipeParameterTree getParameterTree(boolean useAliasIds, Set<UUID> restrictToCompartments)
useAliasIds
- if enabled, paths will use alias Ids instead of UUIDsrestrictToCompartments
- if not null or empty, restrict to specific compartmentspublic void repairGraph()
public Set<JIPipeDataSlot> getInputIncomingSourceSlots(JIPipeDataSlot target)
target
- The input slotpublic Set<JIPipeDataSlot> getOutputOutgoingTargetSlots(JIPipeDataSlot source)
source
- An output slotpublic Set<JIPipeDataSlot> getAvailableSources(JIPipeDataSlot target, boolean user, boolean fast)
target
- An input slotuser
- If true, only connections that can be created by a user are shownfast
- If true, use canConnectFast instead of canConnectpublic void disconnectAll(JIPipeDataSlot slot, boolean user)
slot
- An input or output slotuser
- If true, indicates that is disconnect was issued by a userpublic boolean disconnect(JIPipeDataSlot source, JIPipeDataSlot target, boolean user)
source
- An output slottarget
- An input slotuser
- Indicates if the command was issued by a userpublic Set<JIPipeDataSlot> getAvailableTargets(JIPipeDataSlot source, boolean user, boolean fast)
source
- An output slotuser
- Indicates that a user issues the connectionfast
- If true, use canConnectFast instead of canConnectpublic void onNodeSlotsChanged(JIPipeGraphNode.NodeSlotsChangedEvent event)
JIPipeGraphNode
's slots are changed.
Triggers a graph repaironNodeSlotsChanged
in interface JIPipeGraphNode.NodeSlotsChangedEventListener
event
- The generated eventpublic void onParameterStructureChanged(JIPipeParameterCollection.ParameterStructureChangedEvent event)
JIPipeGraphNode
's parameter structure is changed.
This event is re-triggered into getEventBus()onParameterStructureChanged
in interface JIPipeParameterCollection.ParameterStructureChangedEventListener
event
- Generated eventpublic Set<JIPipeDependency> getDependencies()
public Set<UUID> getGraphNodeUUIDs()
public Set<JIPipeGraphNode> getGraphNodes()
public boolean containsNode(JIPipeGraphNode node)
node
- The algorithm instancepublic Set<Map.Entry<JIPipeDataSlot,JIPipeDataSlot>> getSlotEdges()
public void fromJson(com.fasterxml.jackson.databind.JsonNode jsonNode, JIPipeValidationReportContext context, JIPipeValidationReport issues, JIPipeNotificationInbox notifications)
jsonNode
- JSON datacontext
- the context for the issue reportingissues
- issues reported during deserializingnotifications
- notifications for the userpublic void edgesFromJson(com.fasterxml.jackson.databind.JsonNode jsonNode, JIPipeValidationReportContext context, JIPipeValidationReport issues)
public void nodesFromJson(com.fasterxml.jackson.databind.JsonNode jsonNode, JIPipeValidationReportContext context, JIPipeValidationReport issues, JIPipeNotificationInbox notifications)
public Map<UUID,JIPipeGraphNode> mergeWith(JIPipeGraph otherGraph)
otherGraph
- The other graphpublic JIPipeGraph extract(Collection<JIPipeGraphNode> nodes, boolean withInternal)
nodes
- the nodeswithInternal
- also copy internal algorithmspublic JIPipeGraph extract(Collection<JIPipeGraphNode> nodes, boolean withInternal, boolean skipLocked)
nodes
- the nodeswithInternal
- also copy internal algorithmsskipLocked
- skip locked nodespublic JIPipeGraph extractShallow(Collection<JIPipeGraphNode> nodes, boolean withInternal, boolean skipLocked)
nodes
- the nodeswithInternal
- also copy internal algorithmsskipLocked
- skip locked nodespublic int getNodeCount()
public int getSlotCount()
public List<JIPipeDataSlot> traverseSlots()
public JIPipeGraphConnection getConnection(JIPipeDataSlot source, JIPipeDataSlot target)
public List<JIPipeGraphNode> getDirectPredecessorNodes(JIPipeGraphNode target)
target
- the target algorithmpublic List<JIPipeGraphNode> getAllPredecessorNodes(JIPipeGraphNode target, List<JIPipeGraphNode> traversed)
target
- the target algorithmtraversed
- list of algorithms to sort by (usually this is in topological order)public Set<JIPipeGraphNode> getDeactivatedNodes(boolean cascading)
cascading
- if predecessors are also checked.public Set<JIPipeGraphNode> getDeactivatedNodes(Set<JIPipeGraphNode> externallySatisfied)
externallySatisfied
- list of algorithms that have their input set externallypublic List<JIPipeGraphNode> traverse()
public Set<JIPipeDataSlot> getSlotNodes()
public boolean containsNode(JIPipeDataSlot slot)
slot
- A slotpublic JIPipeProject getProject()
JIPipeProject
if this is a project or project compartment graph.
Otherwise will return nullpublic String getCompartmentDisplayNameOf(JIPipeGraphNode node)
node
- the nodepublic void reportValidity(JIPipeValidationReportContext reportContext, JIPipeValidationReport report)
JIPipeValidatable
reportValidity
in interface JIPipeValidatable
reportContext
- the report contextreport
- the report to be added topublic void setAttachments(Map<Class<?>,Object> attachments)
attachments
- attachmentspublic void reportValidity(JIPipeValidationReportContext context, JIPipeValidationReport report, JIPipeGraphNode targetNode)
context
- the contextreport
- the reporttargetNode
- the target nodepublic void reportValidity(JIPipeValidationReportContext context, JIPipeValidationReport report, JIPipeGraphNode targetNode, Set<JIPipeGraphNode> satisfied)
context
- the contextreport
- the reporttargetNode
- the target nodesatisfied
- all algorithms that are considered to have a satisfied inputpublic org.jgrapht.Graph<JIPipeDataSlot,JIPipeGraphEdge> getGraph()
public void clear()
public void replaceNode(JIPipeGraphNode target, JIPipeGraphNode replacement)
target
- the target nodereplacement
- the replacement nodepublic JIPipeGraphNode getEquivalentNode(JIPipeGraphNode foreign)
foreign
- An algorithmpublic JIPipeDataSlot getEquivalentSlot(JIPipeDataSlot foreign)
foreign
- A data slotpublic List<JIPipeDataSlot> getUnconnectedSlots()
public Set<JIPipeGraphNode> getNodesWithinCompartment(UUID compartmentId)
compartmentId
- The compartment IDpublic void removeNodes(Set<JIPipeGraphNode> nodes, boolean user)
nodes
- list of nodesuser
- if the operation is done by a userpublic void replaceWith(JIPipeGraph other)
other
- the other graphpublic Set<Map.Entry<JIPipeDataSlot,JIPipeDataSlot>> getEdgesBetween(JIPipeGraphNode source, JIPipeGraphNode target)
source
- the sourcetarget
- the targetpublic void rebuildAliasIds(boolean force)
force
- force rebuildingpublic boolean isEmpty()
public List<LoopGroup> extractLoopGroups(Set<JIPipeGraphNode> additionalLoopEnds, Set<JIPipeGraphNode> deactivatedNodes)
additionalLoopEnds
- nodes that are marked as loop endspublic boolean containsNode(UUID nodeUUID)
public boolean functionallyEquals(Object other)
functionallyEquals
in interface JIPipeFunctionallyComparable
public void disconnect(JIPipeGraphConnection connection, boolean user)
public void disconnect(JIPipeGraphConnection connection)
public void getTextDescription(StringBuilder stringBuilder, UUID compartment, Map<UUID,Integer> nodeIndices, int headingLevel)
stringBuilder
- the string buildercompartment
- the targeted compartment (null to target all compartments)nodeIndices
- map of node indices. used for sharing node IDs. can be null.headingLevel
- the heading levelpublic <T extends JIPipeGraphNode> T findFirstNodeOfType(Class<T> klass)
public JIPipeGraph duplicate()
public boolean isProjectGraph()
public boolean isProjectCompartmentGraph()
Copyright © 2020–2025 Leibniz Institute for Natural Product Research and Infection Biology - Hans Knöll Institute (HKI). All rights reserved.