full graph with collapsed clusters

This commit is contained in:
Pascal Serrarens 2026-04-21 14:25:25 +02:00
parent 1a1919fb8e
commit befb69d00c

View File

@ -282,11 +282,16 @@ namespace NanoBrain {
private void DescendGraph(Dag.Node receiver, ref int ix, Dag dag) { private void DescendGraph(Dag.Node receiver, ref int ix, Dag dag) {
foreach (Synapse synapse in receiver.nucleus.synapses) { foreach (Synapse synapse in receiver.nucleus.synapses) {
Dag.Node synapseNode = dag.FindNode(synapse.neuron.name); Nucleus nucleus = synapse.neuron;
if (nucleus.parent != null && nucleus.parent != currentNucleus.parent) {
nucleus = nucleus.parent;
}
string nucleusName = nucleus.name;
Dag.Node synapseNode = dag.FindNode(nucleusName);
if (synapseNode == null) { if (synapseNode == null) {
synapseNode = new() { synapseNode = new() {
id = ix, id = ix,
nucleus = synapse.neuron nucleus = nucleus
}; };
dag.nodes.Add(synapseNode); dag.nodes.Add(synapseNode);
} }
@ -744,9 +749,20 @@ namespace NanoBrain {
public List<Node> nodes = new(); public List<Node> nodes = new();
public List<Edge> edges = new(); public List<Edge> edges = new();
public Node FindNode(string name) { public Node FindNode(string name, bool justBaseName = true) {
if (justBaseName) {
int colonPos = name.IndexOf(":");
if (colonPos > 0)
name = name[..colonPos];
}
foreach (Node node in this.nodes) { foreach (Node node in this.nodes) {
if (node.nucleus.name == name) string nodeName = node.nucleus.name;
if (justBaseName) {
int colonPos = nodeName.IndexOf(":");
if (colonPos > 0)
nodeName = nodeName[..colonPos];
}
if (nodeName == name)
return node; return node;
} }
return null; return null;