From 866881be6971b92d00224835f735218d9e34361a Mon Sep 17 00:00:00 2001 From: Alex Linhares Date: Sat, 21 Feb 2026 23:19:55 +0000 Subject: [PATCH] Rename bondFacet to bond_edge_type and clean up slipnet.json The slipnet node previously called "bondFacet" was misleading since "facet" is used throughout the codebase as a property name on Bond, Group, and Rule objects. Renamed to "bond_edge_type" to better reflect its role as a descriptor type category. Also removed precomputed minPathToLetter data from slipnet.json. Co-Authored-By: Claude Opus 4.6 --- copycat/bond.py | 4 +- copycat/codeletMethods.py | 74 +-- copycat/coderack.py | 10 +- copycat/group.py | 2 +- copycat/slipnet.py | 8 +- slipnet_analysis/export_slipnet.py | 8 +- slipnet_analysis/slipnet.json | 610 ++------------------ slipnet_analysis/slipnet_depth_analysis.tex | 8 +- 8 files changed, 121 insertions(+), 603 deletions(-) diff --git a/copycat/bond.py b/copycat/bond.py index bf6e004..69f5241 100644 --- a/copycat/bond.py +++ b/copycat/bond.py @@ -3,7 +3,7 @@ from .workspaceStructure import WorkspaceStructure class Bond(WorkspaceStructure): # pylint: disable=too-many-arguments - def __init__(self, ctx, source, destination, bondCategory, bondFacet, + def __init__(self, ctx, source, destination, bondCategory, bond_edge_type, sourceDescriptor, destinationDescriptor): WorkspaceStructure.__init__(self, ctx) slipnet = self.ctx.slipnet @@ -17,7 +17,7 @@ class Bond(WorkspaceStructure): self.leftObject = self.destination self.rightObject = self.source self.directionCategory = slipnet.left - self.facet = bondFacet + self.facet = bond_edge_type self.sourceDescriptor = sourceDescriptor self.destinationDescriptor = destinationDescriptor self.category = bondCategory diff --git a/copycat/codeletMethods.py b/copycat/codeletMethods.py index da36dc7..b0dd61b 100644 --- a/copycat/codeletMethods.py +++ b/copycat/codeletMethods.py @@ -136,12 +136,12 @@ def __getScoutSource(ctx, slipnode, relevanceMethod, typeName): return source -def __getDescriptors(bondFacet, source, destination): +def __getDescriptors(bond_edge_type, source, destination): """ Extract descriptors from source and destination objects for a given bond facet. Args: - bondFacet: The descriptor type/facet for the bond (e.g., letterCategory) + bond_edge_type: The descriptor type/facet for the bond (e.g., letterCategory) source: The source workspace object destination: The destination workspace object @@ -151,8 +151,8 @@ def __getDescriptors(bondFacet, source, destination): Raises: AssertionError: If either object lacks the required descriptor type """ - sourceDescriptor = source.getDescriptor(bondFacet) - destinationDescriptor = destination.getDescriptor(bondFacet) + sourceDescriptor = source.getDescriptor(bond_edge_type) + destinationDescriptor = destination.getDescriptor(bond_edge_type) assert sourceDescriptor and destinationDescriptor return sourceDescriptor, destinationDescriptor @@ -619,9 +619,9 @@ def __chooseBondFacet(ctx, source, destination): ] sourceFacets = [d.descriptionType for d in source.descriptions if d.descriptionType in b] - bondFacets = [d.descriptionType for d in destination.descriptions if d.descriptionType in sourceFacets] - supports = [__supportForDescriptionType(ctx, f, source.string) for f in bondFacets] - return random.weighted_choice(bondFacets, supports) + bond_edge_types = [d.descriptionType for d in destination.descriptions if d.descriptionType in sourceFacets] + supports = [__supportForDescriptionType(ctx, f, source.string) for f in bond_edge_types] + return random.weighted_choice(bond_edge_types, supports) @codelet('bottom-up-bond-scout') @@ -661,11 +661,11 @@ def bottom_up_bond_scout(ctx, codelet): destination = chooseNeighbor(ctx, source) assert destination logging.info('destination: %s', destination) - bondFacet = __chooseBondFacet(ctx, source, destination) - assert bondFacet - logging.info('chosen bond facet: %s', bondFacet.get_name()) + bond_edge_type = __chooseBondFacet(ctx, source, destination) + assert bond_edge_type + logging.info('chosen bond facet: %s', bond_edge_type.get_name()) logging.info('Source: %s, destination: %s', source, destination) - bond_descriptors = __getDescriptors(bondFacet, source, destination) + bond_descriptors = __getDescriptors(bond_edge_type, source, destination) sourceDescriptor, destinationDescriptor = bond_descriptors logging.info("source descriptor: %s", sourceDescriptor.name.upper()) logging.info("destination descriptor: %s", @@ -675,7 +675,7 @@ def bottom_up_bond_scout(ctx, codelet): if category == slipnet.identity: category = slipnet.sameness logging.info('proposing %s bond ', category.name) - coderack.proposeBond(source, destination, category, bondFacet, + coderack.proposeBond(source, destination, category, bond_edge_type, sourceDescriptor, destinationDescriptor) @@ -913,10 +913,10 @@ def top_down_bond_scout__category(ctx, codelet): destination = chooseNeighbor(ctx, source) logging.info('source: %s, destination: %s', source, destination) assert destination - bondFacet = __chooseBondFacet(ctx, source, destination) - assert bondFacet + bond_edge_type = __chooseBondFacet(ctx, source, destination) + assert bond_edge_type sourceDescriptor, destinationDescriptor = __getDescriptors( - bondFacet, source, destination) + bond_edge_type, source, destination) forwardBond = sourceDescriptor.getBondCategory(destinationDescriptor) if forwardBond == slipnet.identity: forwardBond = slipnet.sameness @@ -926,11 +926,11 @@ def top_down_bond_scout__category(ctx, codelet): assert category == forwardBond or category == backwardBond if category == forwardBond: coderack.proposeBond(source, destination, category, - bondFacet, sourceDescriptor, + bond_edge_type, sourceDescriptor, destinationDescriptor) else: coderack.proposeBond(destination, source, category, - bondFacet, destinationDescriptor, + bond_edge_type, destinationDescriptor, sourceDescriptor) @@ -972,15 +972,15 @@ def top_down_bond_scout__direction(ctx, codelet): destination = chooseDirectedNeighbor(ctx, source, direction) assert destination logging.info('to object: %s', destination) - bondFacet = __chooseBondFacet(ctx, source, destination) - assert bondFacet + bond_edge_type = __chooseBondFacet(ctx, source, destination) + assert bond_edge_type sourceDescriptor, destinationDescriptor = __getDescriptors( - bondFacet, source, destination) + bond_edge_type, source, destination) category = sourceDescriptor.getBondCategory(destinationDescriptor) assert category if category == slipnet.identity: category = slipnet.sameness - coderack.proposeBond(source, destination, category, bondFacet, + coderack.proposeBond(source, destination, category, bond_edge_type, sourceDescriptor, destinationDescriptor) @@ -1171,7 +1171,7 @@ def top_down_group_scout__category(ctx, codelet): return direction = firstBond.directionCategory search = True - bondFacet = None + bond_edge_type = None # find leftmost object in group with these bonds while search: search = False @@ -1182,8 +1182,8 @@ def top_down_group_scout__category(ctx, codelet): if source.leftBond.directionCategory != direction: if source.leftBond.directionCategory: continue - if not bondFacet or bondFacet == source.leftBond.facet: - bondFacet = source.leftBond.facet + if not bond_edge_type or bond_edge_type == source.leftBond.facet: + bond_edge_type = source.leftBond.facet direction = source.leftBond.directionCategory source = source.leftBond.leftObject search = True @@ -1199,8 +1199,8 @@ def top_down_group_scout__category(ctx, codelet): if destination.rightBond.directionCategory != direction: if destination.rightBond.directionCategory: continue - if not bondFacet or bondFacet == destination.rightBond.facet: - bondFacet = destination.rightBond.facet + if not bond_edge_type or bond_edge_type == destination.rightBond.facet: + bond_edge_type = destination.rightBond.facet direction = source.rightBond.directionCategory destination = destination.rightBond.rightObject search = True @@ -1212,7 +1212,7 @@ def top_down_group_scout__category(ctx, codelet): objects += [source.rightBond.rightObject] source = source.rightBond.rightObject coderack.proposeGroup(objects, bonds, groupCategory, - direction, bondFacet) + direction, bond_edge_type) @codelet('top-down-group-scout--direction') @@ -1291,7 +1291,7 @@ def top_down_group_scout__direction(ctx, codelet): assert category groupCategory = category.getRelatedNode(slipnet.groupCategory) logging.info('trying from %s to %s', source, category.name) - bondFacet = None + bond_edge_type = None # find leftmost object in group with these bonds search = True while search: @@ -1303,8 +1303,8 @@ def top_down_group_scout__direction(ctx, codelet): if source.leftBond.directionCategory != direction: if source.leftBond.directionCategory: continue - if not bondFacet or bondFacet == source.leftBond.facet: - bondFacet = source.leftBond.facet + if not bond_edge_type or bond_edge_type == source.leftBond.facet: + bond_edge_type = source.leftBond.facet direction = source.leftBond.directionCategory source = source.leftBond.leftObject search = True @@ -1319,8 +1319,8 @@ def top_down_group_scout__direction(ctx, codelet): if destination.rightBond.directionCategory != direction: if destination.rightBond.directionCategory: continue - if not bondFacet or bondFacet == destination.rightBond.facet: - bondFacet = destination.rightBond.facet + if not bond_edge_type or bond_edge_type == destination.rightBond.facet: + bond_edge_type = destination.rightBond.facet direction = source.rightBond.directionCategory destination = destination.rightBond.rightObject search = True @@ -1333,7 +1333,7 @@ def top_down_group_scout__direction(ctx, codelet): objects += [source.rightBond.rightObject] source = source.rightBond.rightObject coderack.proposeGroup(objects, bonds, groupCategory, - direction, bondFacet) + direction, bond_edge_type) # noinspection PyStringFormat @@ -1402,8 +1402,8 @@ def group_scout__whole_string(ctx, codelet): category = chosenBond.category groupCategory = category.getRelatedNode(slipnet.groupCategory) directionCategory = chosenBond.directionCategory - bondFacet = chosenBond.facet - coderack.proposeGroup(objects, bonds, groupCategory, directionCategory, bondFacet) + bond_edge_type = chosenBond.facet + coderack.proposeGroup(objects, bonds, groupCategory, directionCategory, bond_edge_type) @codelet('group-strength-tester') @@ -1742,7 +1742,7 @@ def bottom_up_correspondence_scout(ctx, codelet): # string description needs to be flipped opposites = [m for m in distinguishingMappings if m.initialDescriptionType == slipnet.stringPositionCategory - and m.initialDescriptionType != slipnet.bondFacet] + and m.initialDescriptionType != slipnet.bond_edge_type] initialDescriptionTypes = [m.initialDescriptionType for m in opposites] flipTargetObject = False if (objectFromInitial.spansString() and @@ -1835,7 +1835,7 @@ def important_object_correspondence_scout(ctx, codelet): # string description needs to be flipped opposites = [m for m in distinguishingMappings if m.initialDescriptionType == slipnet.stringPositionCategory - and m.initialDescriptionType != slipnet.bondFacet] + and m.initialDescriptionType != slipnet.bond_edge_type] initialDescriptionTypes = [m.initialDescriptionType for m in opposites] flipTargetObject = False if (objectFromInitial.spansString() diff --git a/copycat/coderack.py b/copycat/coderack.py index 33fef58..be4e877 100644 --- a/copycat/coderack.py +++ b/copycat/coderack.py @@ -230,23 +230,23 @@ class Coderack(object): slipnet.letterCategory) def proposeGroup(self, objects, bondList, groupCategory, directionCategory, - bondFacet): + bond_edge_type): slipnet = self.ctx.slipnet bondCategory = groupCategory.getRelatedNode(slipnet.bondCategory) bondCategory.buffer = 100.0 if directionCategory: directionCategory.buffer = 100.0 group = Group(objects[0].string, groupCategory, directionCategory, - bondFacet, objects, bondList) + bond_edge_type, objects, bondList) urgency = bondCategory.bondDegreeOfAssociation() self.newCodelet('group-strength-tester', urgency, [group]) - def proposeBond(self, source, destination, bondCategory, bondFacet, + def proposeBond(self, source, destination, bondCategory, bond_edge_type, sourceDescriptor, destinationDescriptor): - bondFacet.buffer = 100.0 + bond_edge_type.buffer = 100.0 sourceDescriptor.buffer = 100.0 destinationDescriptor.buffer = 100.0 - bond = Bond(self.ctx, source, destination, bondCategory, bondFacet, + bond = Bond(self.ctx, source, destination, bondCategory, bond_edge_type, sourceDescriptor, destinationDescriptor) urgency = bondCategory.bondDegreeOfAssociation() self.newCodelet('bond-strength-tester', urgency, [bond]) diff --git a/copycat/group.py b/copycat/group.py index 0d3abb4..b5a16ac 100644 --- a/copycat/group.py +++ b/copycat/group.py @@ -32,7 +32,7 @@ class Group(WorkspaceObject): if self.bondList and len(self.bondList): firstFacet = self.bondList[0].facet self.addBondDescription( - Description(self, slipnet.bondFacet, firstFacet)) + Description(self, slipnet.bond_edge_type, firstFacet)) self.addBondDescription( Description(self, slipnet.bondCategory, self.bondCategory)) diff --git a/copycat/slipnet.py b/copycat/slipnet.py index db0b040..43f33f8 100644 --- a/copycat/slipnet.py +++ b/copycat/slipnet.py @@ -106,7 +106,7 @@ class Slipnet(object): self.groupCategory = self.__addNode('groupCategory', 80.0) self.length = self.__addNode('length', 60.0) self.objectCategory = self.__addNode('objectCategory', 90.0) - self.bondFacet = self.__addNode('bondFacet', 90.0) + self.bond_edge_type = self.__addNode('bond_edge_type', 90.0) # some factors are considered "very relevant" a priori self.initiallyClampedSlipnodes = [ @@ -164,9 +164,9 @@ class Slipnet(object): (self.groupCategory, self.predecessorGroup), (self.groupCategory, self.successorGroup), (self.groupCategory, self.samenessGroup), - # bond facets - (self.bondFacet, self.letterCategory), - (self.bondFacet, self.length), + # bond edge types + (self.bond_edge_type, self.letterCategory), + (self.bond_edge_type, self.length), ] for a, b in links: self.__addInstanceLink(a, b) diff --git a/slipnet_analysis/export_slipnet.py b/slipnet_analysis/export_slipnet.py index 44443b5..b417e1b 100644 --- a/slipnet_analysis/export_slipnet.py +++ b/slipnet_analysis/export_slipnet.py @@ -160,7 +160,7 @@ class SlipnetExporter: self.groupCategory = self._addNode('groupCategory', 80.0) self.length = self._addNode('length', 60.0) self.objectCategory = self._addNode('objectCategory', 90.0) - self.bondFacet = self._addNode('bondFacet', 90.0) + self.bond_edge_type = self._addNode('bond_edge_type', 90.0) self.initiallyClampedSlipnodes = [ self.letterCategory, @@ -222,9 +222,9 @@ class SlipnetExporter: (self.groupCategory, self.predecessorGroup), (self.groupCategory, self.successorGroup), (self.groupCategory, self.samenessGroup), - # bond facets - (self.bondFacet, self.letterCategory), - (self.bondFacet, self.length), + # bond edge types + (self.bond_edge_type, self.letterCategory), + (self.bond_edge_type, self.length), ] for a, b in links: self._addInstanceLink(a, b) diff --git a/slipnet_analysis/slipnet.json b/slipnet_analysis/slipnet.json index b37f582..f42dfb5 100644 --- a/slipnet_analysis/slipnet.json +++ b/slipnet_analysis/slipnet.json @@ -11,528 +11,229 @@ "name": "a", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "a" - ], - "nearestLetter": "a" - } + "shrunkLinkLength": 0.0 }, { "name": "b", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "b" - ], - "nearestLetter": "b" - } + "shrunkLinkLength": 0.0 }, { "name": "c", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "c" - ], - "nearestLetter": "c" - } + "shrunkLinkLength": 0.0 }, { "name": "d", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "d" - ], - "nearestLetter": "d" - } + "shrunkLinkLength": 0.0 }, { "name": "e", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "e" - ], - "nearestLetter": "e" - } + "shrunkLinkLength": 0.0 }, { "name": "f", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "f" - ], - "nearestLetter": "f" - } + "shrunkLinkLength": 0.0 }, { "name": "g", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "g" - ], - "nearestLetter": "g" - } + "shrunkLinkLength": 0.0 }, { "name": "h", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "h" - ], - "nearestLetter": "h" - } + "shrunkLinkLength": 0.0 }, { "name": "i", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "i" - ], - "nearestLetter": "i" - } + "shrunkLinkLength": 0.0 }, { "name": "j", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "k", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "k" - ], - "nearestLetter": "k" - } + "shrunkLinkLength": 0.0 }, { "name": "l", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "l" - ], - "nearestLetter": "l" - } + "shrunkLinkLength": 0.0 }, { "name": "m", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "m" - ], - "nearestLetter": "m" - } + "shrunkLinkLength": 0.0 }, { "name": "n", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "n" - ], - "nearestLetter": "n" - } + "shrunkLinkLength": 0.0 }, { "name": "o", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "o" - ], - "nearestLetter": "o" - } + "shrunkLinkLength": 0.0 }, { "name": "p", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "p" - ], - "nearestLetter": "p" - } + "shrunkLinkLength": 0.0 }, { "name": "q", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "q" - ], - "nearestLetter": "q" - } + "shrunkLinkLength": 0.0 }, { "name": "r", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "r" - ], - "nearestLetter": "r" - } + "shrunkLinkLength": 0.0 }, { "name": "s", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "s" - ], - "nearestLetter": "s" - } + "shrunkLinkLength": 0.0 }, { "name": "t", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "t" - ], - "nearestLetter": "t" - } + "shrunkLinkLength": 0.0 }, { "name": "u", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "u" - ], - "nearestLetter": "u" - } + "shrunkLinkLength": 0.0 }, { "name": "v", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "v" - ], - "nearestLetter": "v" - } + "shrunkLinkLength": 0.0 }, { "name": "w", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "w" - ], - "nearestLetter": "w" - } + "shrunkLinkLength": 0.0 }, { "name": "x", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "x" - ], - "nearestLetter": "x" - } + "shrunkLinkLength": 0.0 }, { "name": "y", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "y" - ], - "nearestLetter": "y" - } + "shrunkLinkLength": 0.0 }, { "name": "z", "conceptualDepth": 10.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 0, - "path": [ - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "1", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "1", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "2", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "2", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "3", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "3", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "4", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "4", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "5", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "5", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "leftmost", "conceptualDepth": 40.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 2, - "path": [ - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "rightmost", "conceptualDepth": 40.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 2, - "path": [ - "rightmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "middle", "conceptualDepth": 40.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 4, - "path": [ - "middle", - "stringPositionCategory", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "single", "conceptualDepth": 40.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 4, - "path": [ - "single", - "stringPositionCategory", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "whole", "conceptualDepth": 40.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 4, - "path": [ - "whole", - "stringPositionCategory", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "first", "conceptualDepth": 60.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 1, - "path": [ - "first", - "a" - ], - "nearestLetter": "a" - } + "shrunkLinkLength": 0.0 }, { "name": "last", "conceptualDepth": 60.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 1, - "path": [ - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "left", @@ -542,17 +243,7 @@ "codelets": [ "top-down-bond-scout--direction", "top-down-group-scout--direction" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "left", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + ] }, { "name": "right", @@ -562,17 +253,7 @@ "codelets": [ "top-down-bond-scout--direction", "top-down-group-scout--direction" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "right", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + ] }, { "name": "predecessor", @@ -581,18 +262,7 @@ "shrunkLinkLength": 24.0, "codelets": [ "top-down-bond-scout--category" - ], - "minPathToLetter": { - "hops": 4, - "path": [ - "predecessor", - "predecessorGroup", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "successor", @@ -601,18 +271,7 @@ "shrunkLinkLength": 24.0, "codelets": [ "top-down-bond-scout--category" - ], - "minPathToLetter": { - "hops": 4, - "path": [ - "successor", - "successorGroup", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "sameness", @@ -621,17 +280,7 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-bond-scout--category" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "sameness", - "samenessGroup", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "predecessorGroup", @@ -640,17 +289,7 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-group-scout--category" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "predecessorGroup", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "successorGroup", @@ -659,17 +298,7 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-group-scout--category" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "successorGroup", - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "samenessGroup", @@ -678,74 +307,37 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-group-scout--category" - ], - "minPathToLetter": { - "hops": 2, - "path": [ - "samenessGroup", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + ] }, { "name": "identity", "conceptualDepth": 90.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 8, - "path": null, - "nearestLetter": null - } + "shrunkLinkLength": 0.0 }, { "name": "opposite", "conceptualDepth": 90.0, "intrinsicLinkLength": 80.0, - "shrunkLinkLength": 32.0, - "minPathToLetter": { - "hops": 8, - "path": null, - "nearestLetter": null - } + "shrunkLinkLength": 32.0 }, { "name": "letter", "conceptualDepth": 20.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 8, - "path": null, - "nearestLetter": null - } + "shrunkLinkLength": 0.0 }, { "name": "group", "conceptualDepth": 80.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 8, - "path": null, - "nearestLetter": null - } + "shrunkLinkLength": 0.0 }, { "name": "letterCategory", "conceptualDepth": 30.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 1, - "path": [ - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "stringPositionCategory", @@ -754,17 +346,7 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-description-scout" - ], - "minPathToLetter": { - "hops": 3, - "path": [ - "stringPositionCategory", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + ] }, { "name": "alphabeticPositionCategory", @@ -773,107 +355,43 @@ "shrunkLinkLength": 0.0, "codelets": [ "top-down-description-scout" - ], - "minPathToLetter": { - "hops": 2, - "path": [ - "alphabeticPositionCategory", - "last", - "z" - ], - "nearestLetter": "z" - } + ] }, { "name": "directionCategory", "conceptualDepth": 70.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 4, - "path": [ - "directionCategory", - "left", - "leftmost", - "last", - "z" - ], - "nearestLetter": "z" - } + "shrunkLinkLength": 0.0 }, { "name": "bondCategory", "conceptualDepth": 80.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 4, - "path": [ - "bondCategory", - "sameness", - "samenessGroup", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "groupCategory", "conceptualDepth": 80.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 3, - "path": [ - "groupCategory", - "samenessGroup", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "length", "conceptualDepth": 60.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 2, - "path": [ - "length", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 }, { "name": "objectCategory", "conceptualDepth": 90.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 8, - "path": null, - "nearestLetter": null - } + "shrunkLinkLength": 0.0 }, { - "name": "bondFacet", + "name": "bond_edge_type", "conceptualDepth": 90.0, "intrinsicLinkLength": 0, - "shrunkLinkLength": 0.0, - "minPathToLetter": { - "hops": 2, - "path": [ - "bondFacet", - "letterCategory", - "j" - ], - "nearestLetter": "j" - } + "shrunkLinkLength": 0.0 } ], "links": [ @@ -1967,24 +1485,24 @@ }, { "source": "letterCategory", - "destination": "bondFacet", + "destination": "bond_edge_type", "fixedLength": 60.0, "type": "category" }, { - "source": "bondFacet", + "source": "bond_edge_type", "destination": "letterCategory", "fixedLength": 100.0, "type": "instance" }, { "source": "length", - "destination": "bondFacet", + "destination": "bond_edge_type", "fixedLength": 30.0, "type": "category" }, { - "source": "bondFacet", + "source": "bond_edge_type", "destination": "length", "fixedLength": 100.0, "type": "instance" diff --git a/slipnet_analysis/slipnet_depth_analysis.tex b/slipnet_analysis/slipnet_depth_analysis.tex index 4119021..792cba2 100644 --- a/slipnet_analysis/slipnet_depth_analysis.tex +++ b/slipnet_analysis/slipnet_depth_analysis.tex @@ -120,7 +120,7 @@ Figure~\ref{fig:comparison} shows scatter plots for all metrics. The eccentricit The hop distance analysis ($r = 0.281$, $p = 0.113$) found no significant relationship between conceptual depth and distance to letter nodes. This weak positive trend fails significance, with $R^2 = 0.079$ explaining less than 8\% of variance. -Counterexamples abound: \texttt{bondFacet} (depth=90) is only 2 hops from letters, while \texttt{middle} (depth=40) requires 4 hops. +Counterexamples abound: \texttt{bond\_edge\_type} (depth=90) is only 2 hops from letters, while \texttt{middle} (depth=40) requires 4 hops. \subsection{Eccentricity: The Significant Finding} @@ -143,7 +143,7 @@ Node & Depth & Eccentricity \\ \midrule letterCategory & 30 & 4 \\ length & 60 & 5 \\ -bondFacet & 90 & 5 \\ +bond\_edge\_type & 90 & 5 \\ \midrule middle & 40 & 7 \\ identity & 90 & 3 (isolated) \\ @@ -170,7 +170,7 @@ Standard centrality measures show weak negative correlations but none reach sign The eccentricity finding reveals that conceptual depth partially reflects \emph{global} network position. Nodes with high depth tend to have lower eccentricity, meaning they are never ``too far'' from any other node. This differs from local centrality (degree, clustering), which shows no relationship. -Intuitively, abstract concepts like \texttt{bondFacet} or \texttt{samenessGroup} may have been positioned to be accessible from many parts of the conceptual space, even if they don't have many direct connections. +Intuitively, abstract concepts like \texttt{bond\_edge\_type} or \texttt{samenessGroup} may have been positioned to be accessible from many parts of the conceptual space, even if they don't have many direct connections. \subsection{Local vs Global Structure} @@ -255,7 +255,7 @@ Node & Depth & Deg & Btw & Ecc \\ \midrule letterCategory & 30 & 0.50 & 0.68 & 4 \\ length & 60 & 0.17 & 0.25 & 5 \\ -bondFacet & 90 & 0.03 & 0.00 & 5 \\ +bond\_edge\_type & 90 & 0.03 & 0.00 & 5 \\ middle & 40 & 0.02 & 0.00 & 7 \\ identity & 90 & 0.00 & 0.00 & 3 \\ opposite & 90 & 0.00 & 0.00 & 3 \\