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 <noreply@anthropic.com>
This commit is contained in:
@ -3,7 +3,7 @@ from .workspaceStructure import WorkspaceStructure
|
|||||||
|
|
||||||
class Bond(WorkspaceStructure):
|
class Bond(WorkspaceStructure):
|
||||||
# pylint: disable=too-many-arguments
|
# 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):
|
sourceDescriptor, destinationDescriptor):
|
||||||
WorkspaceStructure.__init__(self, ctx)
|
WorkspaceStructure.__init__(self, ctx)
|
||||||
slipnet = self.ctx.slipnet
|
slipnet = self.ctx.slipnet
|
||||||
@ -17,7 +17,7 @@ class Bond(WorkspaceStructure):
|
|||||||
self.leftObject = self.destination
|
self.leftObject = self.destination
|
||||||
self.rightObject = self.source
|
self.rightObject = self.source
|
||||||
self.directionCategory = slipnet.left
|
self.directionCategory = slipnet.left
|
||||||
self.facet = bondFacet
|
self.facet = bond_edge_type
|
||||||
self.sourceDescriptor = sourceDescriptor
|
self.sourceDescriptor = sourceDescriptor
|
||||||
self.destinationDescriptor = destinationDescriptor
|
self.destinationDescriptor = destinationDescriptor
|
||||||
self.category = bondCategory
|
self.category = bondCategory
|
||||||
|
|||||||
@ -136,12 +136,12 @@ def __getScoutSource(ctx, slipnode, relevanceMethod, typeName):
|
|||||||
return source
|
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.
|
Extract descriptors from source and destination objects for a given bond facet.
|
||||||
|
|
||||||
Args:
|
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
|
source: The source workspace object
|
||||||
destination: The destination workspace object
|
destination: The destination workspace object
|
||||||
|
|
||||||
@ -151,8 +151,8 @@ def __getDescriptors(bondFacet, source, destination):
|
|||||||
Raises:
|
Raises:
|
||||||
AssertionError: If either object lacks the required descriptor type
|
AssertionError: If either object lacks the required descriptor type
|
||||||
"""
|
"""
|
||||||
sourceDescriptor = source.getDescriptor(bondFacet)
|
sourceDescriptor = source.getDescriptor(bond_edge_type)
|
||||||
destinationDescriptor = destination.getDescriptor(bondFacet)
|
destinationDescriptor = destination.getDescriptor(bond_edge_type)
|
||||||
assert sourceDescriptor and destinationDescriptor
|
assert sourceDescriptor and destinationDescriptor
|
||||||
return sourceDescriptor, 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]
|
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]
|
bond_edge_types = [d.descriptionType for d in destination.descriptions if d.descriptionType in sourceFacets]
|
||||||
supports = [__supportForDescriptionType(ctx, f, source.string) for f in bondFacets]
|
supports = [__supportForDescriptionType(ctx, f, source.string) for f in bond_edge_types]
|
||||||
return random.weighted_choice(bondFacets, supports)
|
return random.weighted_choice(bond_edge_types, supports)
|
||||||
|
|
||||||
|
|
||||||
@codelet('bottom-up-bond-scout')
|
@codelet('bottom-up-bond-scout')
|
||||||
@ -661,11 +661,11 @@ def bottom_up_bond_scout(ctx, codelet):
|
|||||||
destination = chooseNeighbor(ctx, source)
|
destination = chooseNeighbor(ctx, source)
|
||||||
assert destination
|
assert destination
|
||||||
logging.info('destination: %s', destination)
|
logging.info('destination: %s', destination)
|
||||||
bondFacet = __chooseBondFacet(ctx, source, destination)
|
bond_edge_type = __chooseBondFacet(ctx, source, destination)
|
||||||
assert bondFacet
|
assert bond_edge_type
|
||||||
logging.info('chosen bond facet: %s', bondFacet.get_name())
|
logging.info('chosen bond facet: %s', bond_edge_type.get_name())
|
||||||
logging.info('Source: %s, destination: %s', source, destination)
|
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
|
sourceDescriptor, destinationDescriptor = bond_descriptors
|
||||||
logging.info("source descriptor: %s", sourceDescriptor.name.upper())
|
logging.info("source descriptor: %s", sourceDescriptor.name.upper())
|
||||||
logging.info("destination descriptor: %s",
|
logging.info("destination descriptor: %s",
|
||||||
@ -675,7 +675,7 @@ def bottom_up_bond_scout(ctx, codelet):
|
|||||||
if category == slipnet.identity:
|
if category == slipnet.identity:
|
||||||
category = slipnet.sameness
|
category = slipnet.sameness
|
||||||
logging.info('proposing %s bond ', category.name)
|
logging.info('proposing %s bond ', category.name)
|
||||||
coderack.proposeBond(source, destination, category, bondFacet,
|
coderack.proposeBond(source, destination, category, bond_edge_type,
|
||||||
sourceDescriptor, destinationDescriptor)
|
sourceDescriptor, destinationDescriptor)
|
||||||
|
|
||||||
|
|
||||||
@ -913,10 +913,10 @@ def top_down_bond_scout__category(ctx, codelet):
|
|||||||
destination = chooseNeighbor(ctx, source)
|
destination = chooseNeighbor(ctx, source)
|
||||||
logging.info('source: %s, destination: %s', source, destination)
|
logging.info('source: %s, destination: %s', source, destination)
|
||||||
assert destination
|
assert destination
|
||||||
bondFacet = __chooseBondFacet(ctx, source, destination)
|
bond_edge_type = __chooseBondFacet(ctx, source, destination)
|
||||||
assert bondFacet
|
assert bond_edge_type
|
||||||
sourceDescriptor, destinationDescriptor = __getDescriptors(
|
sourceDescriptor, destinationDescriptor = __getDescriptors(
|
||||||
bondFacet, source, destination)
|
bond_edge_type, source, destination)
|
||||||
forwardBond = sourceDescriptor.getBondCategory(destinationDescriptor)
|
forwardBond = sourceDescriptor.getBondCategory(destinationDescriptor)
|
||||||
if forwardBond == slipnet.identity:
|
if forwardBond == slipnet.identity:
|
||||||
forwardBond = slipnet.sameness
|
forwardBond = slipnet.sameness
|
||||||
@ -926,11 +926,11 @@ def top_down_bond_scout__category(ctx, codelet):
|
|||||||
assert category == forwardBond or category == backwardBond
|
assert category == forwardBond or category == backwardBond
|
||||||
if category == forwardBond:
|
if category == forwardBond:
|
||||||
coderack.proposeBond(source, destination, category,
|
coderack.proposeBond(source, destination, category,
|
||||||
bondFacet, sourceDescriptor,
|
bond_edge_type, sourceDescriptor,
|
||||||
destinationDescriptor)
|
destinationDescriptor)
|
||||||
else:
|
else:
|
||||||
coderack.proposeBond(destination, source, category,
|
coderack.proposeBond(destination, source, category,
|
||||||
bondFacet, destinationDescriptor,
|
bond_edge_type, destinationDescriptor,
|
||||||
sourceDescriptor)
|
sourceDescriptor)
|
||||||
|
|
||||||
|
|
||||||
@ -972,15 +972,15 @@ def top_down_bond_scout__direction(ctx, codelet):
|
|||||||
destination = chooseDirectedNeighbor(ctx, source, direction)
|
destination = chooseDirectedNeighbor(ctx, source, direction)
|
||||||
assert destination
|
assert destination
|
||||||
logging.info('to object: %s', destination)
|
logging.info('to object: %s', destination)
|
||||||
bondFacet = __chooseBondFacet(ctx, source, destination)
|
bond_edge_type = __chooseBondFacet(ctx, source, destination)
|
||||||
assert bondFacet
|
assert bond_edge_type
|
||||||
sourceDescriptor, destinationDescriptor = __getDescriptors(
|
sourceDescriptor, destinationDescriptor = __getDescriptors(
|
||||||
bondFacet, source, destination)
|
bond_edge_type, source, destination)
|
||||||
category = sourceDescriptor.getBondCategory(destinationDescriptor)
|
category = sourceDescriptor.getBondCategory(destinationDescriptor)
|
||||||
assert category
|
assert category
|
||||||
if category == slipnet.identity:
|
if category == slipnet.identity:
|
||||||
category = slipnet.sameness
|
category = slipnet.sameness
|
||||||
coderack.proposeBond(source, destination, category, bondFacet,
|
coderack.proposeBond(source, destination, category, bond_edge_type,
|
||||||
sourceDescriptor, destinationDescriptor)
|
sourceDescriptor, destinationDescriptor)
|
||||||
|
|
||||||
|
|
||||||
@ -1171,7 +1171,7 @@ def top_down_group_scout__category(ctx, codelet):
|
|||||||
return
|
return
|
||||||
direction = firstBond.directionCategory
|
direction = firstBond.directionCategory
|
||||||
search = True
|
search = True
|
||||||
bondFacet = None
|
bond_edge_type = None
|
||||||
# find leftmost object in group with these bonds
|
# find leftmost object in group with these bonds
|
||||||
while search:
|
while search:
|
||||||
search = False
|
search = False
|
||||||
@ -1182,8 +1182,8 @@ def top_down_group_scout__category(ctx, codelet):
|
|||||||
if source.leftBond.directionCategory != direction:
|
if source.leftBond.directionCategory != direction:
|
||||||
if source.leftBond.directionCategory:
|
if source.leftBond.directionCategory:
|
||||||
continue
|
continue
|
||||||
if not bondFacet or bondFacet == source.leftBond.facet:
|
if not bond_edge_type or bond_edge_type == source.leftBond.facet:
|
||||||
bondFacet = source.leftBond.facet
|
bond_edge_type = source.leftBond.facet
|
||||||
direction = source.leftBond.directionCategory
|
direction = source.leftBond.directionCategory
|
||||||
source = source.leftBond.leftObject
|
source = source.leftBond.leftObject
|
||||||
search = True
|
search = True
|
||||||
@ -1199,8 +1199,8 @@ def top_down_group_scout__category(ctx, codelet):
|
|||||||
if destination.rightBond.directionCategory != direction:
|
if destination.rightBond.directionCategory != direction:
|
||||||
if destination.rightBond.directionCategory:
|
if destination.rightBond.directionCategory:
|
||||||
continue
|
continue
|
||||||
if not bondFacet or bondFacet == destination.rightBond.facet:
|
if not bond_edge_type or bond_edge_type == destination.rightBond.facet:
|
||||||
bondFacet = destination.rightBond.facet
|
bond_edge_type = destination.rightBond.facet
|
||||||
direction = source.rightBond.directionCategory
|
direction = source.rightBond.directionCategory
|
||||||
destination = destination.rightBond.rightObject
|
destination = destination.rightBond.rightObject
|
||||||
search = True
|
search = True
|
||||||
@ -1212,7 +1212,7 @@ def top_down_group_scout__category(ctx, codelet):
|
|||||||
objects += [source.rightBond.rightObject]
|
objects += [source.rightBond.rightObject]
|
||||||
source = source.rightBond.rightObject
|
source = source.rightBond.rightObject
|
||||||
coderack.proposeGroup(objects, bonds, groupCategory,
|
coderack.proposeGroup(objects, bonds, groupCategory,
|
||||||
direction, bondFacet)
|
direction, bond_edge_type)
|
||||||
|
|
||||||
|
|
||||||
@codelet('top-down-group-scout--direction')
|
@codelet('top-down-group-scout--direction')
|
||||||
@ -1291,7 +1291,7 @@ def top_down_group_scout__direction(ctx, codelet):
|
|||||||
assert category
|
assert category
|
||||||
groupCategory = category.getRelatedNode(slipnet.groupCategory)
|
groupCategory = category.getRelatedNode(slipnet.groupCategory)
|
||||||
logging.info('trying from %s to %s', source, category.name)
|
logging.info('trying from %s to %s', source, category.name)
|
||||||
bondFacet = None
|
bond_edge_type = None
|
||||||
# find leftmost object in group with these bonds
|
# find leftmost object in group with these bonds
|
||||||
search = True
|
search = True
|
||||||
while search:
|
while search:
|
||||||
@ -1303,8 +1303,8 @@ def top_down_group_scout__direction(ctx, codelet):
|
|||||||
if source.leftBond.directionCategory != direction:
|
if source.leftBond.directionCategory != direction:
|
||||||
if source.leftBond.directionCategory:
|
if source.leftBond.directionCategory:
|
||||||
continue
|
continue
|
||||||
if not bondFacet or bondFacet == source.leftBond.facet:
|
if not bond_edge_type or bond_edge_type == source.leftBond.facet:
|
||||||
bondFacet = source.leftBond.facet
|
bond_edge_type = source.leftBond.facet
|
||||||
direction = source.leftBond.directionCategory
|
direction = source.leftBond.directionCategory
|
||||||
source = source.leftBond.leftObject
|
source = source.leftBond.leftObject
|
||||||
search = True
|
search = True
|
||||||
@ -1319,8 +1319,8 @@ def top_down_group_scout__direction(ctx, codelet):
|
|||||||
if destination.rightBond.directionCategory != direction:
|
if destination.rightBond.directionCategory != direction:
|
||||||
if destination.rightBond.directionCategory:
|
if destination.rightBond.directionCategory:
|
||||||
continue
|
continue
|
||||||
if not bondFacet or bondFacet == destination.rightBond.facet:
|
if not bond_edge_type or bond_edge_type == destination.rightBond.facet:
|
||||||
bondFacet = destination.rightBond.facet
|
bond_edge_type = destination.rightBond.facet
|
||||||
direction = source.rightBond.directionCategory
|
direction = source.rightBond.directionCategory
|
||||||
destination = destination.rightBond.rightObject
|
destination = destination.rightBond.rightObject
|
||||||
search = True
|
search = True
|
||||||
@ -1333,7 +1333,7 @@ def top_down_group_scout__direction(ctx, codelet):
|
|||||||
objects += [source.rightBond.rightObject]
|
objects += [source.rightBond.rightObject]
|
||||||
source = source.rightBond.rightObject
|
source = source.rightBond.rightObject
|
||||||
coderack.proposeGroup(objects, bonds, groupCategory,
|
coderack.proposeGroup(objects, bonds, groupCategory,
|
||||||
direction, bondFacet)
|
direction, bond_edge_type)
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyStringFormat
|
# noinspection PyStringFormat
|
||||||
@ -1402,8 +1402,8 @@ def group_scout__whole_string(ctx, codelet):
|
|||||||
category = chosenBond.category
|
category = chosenBond.category
|
||||||
groupCategory = category.getRelatedNode(slipnet.groupCategory)
|
groupCategory = category.getRelatedNode(slipnet.groupCategory)
|
||||||
directionCategory = chosenBond.directionCategory
|
directionCategory = chosenBond.directionCategory
|
||||||
bondFacet = chosenBond.facet
|
bond_edge_type = chosenBond.facet
|
||||||
coderack.proposeGroup(objects, bonds, groupCategory, directionCategory, bondFacet)
|
coderack.proposeGroup(objects, bonds, groupCategory, directionCategory, bond_edge_type)
|
||||||
|
|
||||||
|
|
||||||
@codelet('group-strength-tester')
|
@codelet('group-strength-tester')
|
||||||
@ -1742,7 +1742,7 @@ def bottom_up_correspondence_scout(ctx, codelet):
|
|||||||
# string description needs to be flipped
|
# string description needs to be flipped
|
||||||
opposites = [m for m in distinguishingMappings
|
opposites = [m for m in distinguishingMappings
|
||||||
if m.initialDescriptionType == slipnet.stringPositionCategory
|
if m.initialDescriptionType == slipnet.stringPositionCategory
|
||||||
and m.initialDescriptionType != slipnet.bondFacet]
|
and m.initialDescriptionType != slipnet.bond_edge_type]
|
||||||
initialDescriptionTypes = [m.initialDescriptionType for m in opposites]
|
initialDescriptionTypes = [m.initialDescriptionType for m in opposites]
|
||||||
flipTargetObject = False
|
flipTargetObject = False
|
||||||
if (objectFromInitial.spansString() and
|
if (objectFromInitial.spansString() and
|
||||||
@ -1835,7 +1835,7 @@ def important_object_correspondence_scout(ctx, codelet):
|
|||||||
# string description needs to be flipped
|
# string description needs to be flipped
|
||||||
opposites = [m for m in distinguishingMappings
|
opposites = [m for m in distinguishingMappings
|
||||||
if m.initialDescriptionType == slipnet.stringPositionCategory
|
if m.initialDescriptionType == slipnet.stringPositionCategory
|
||||||
and m.initialDescriptionType != slipnet.bondFacet]
|
and m.initialDescriptionType != slipnet.bond_edge_type]
|
||||||
initialDescriptionTypes = [m.initialDescriptionType for m in opposites]
|
initialDescriptionTypes = [m.initialDescriptionType for m in opposites]
|
||||||
flipTargetObject = False
|
flipTargetObject = False
|
||||||
if (objectFromInitial.spansString()
|
if (objectFromInitial.spansString()
|
||||||
|
|||||||
@ -230,23 +230,23 @@ class Coderack(object):
|
|||||||
slipnet.letterCategory)
|
slipnet.letterCategory)
|
||||||
|
|
||||||
def proposeGroup(self, objects, bondList, groupCategory, directionCategory,
|
def proposeGroup(self, objects, bondList, groupCategory, directionCategory,
|
||||||
bondFacet):
|
bond_edge_type):
|
||||||
slipnet = self.ctx.slipnet
|
slipnet = self.ctx.slipnet
|
||||||
bondCategory = groupCategory.getRelatedNode(slipnet.bondCategory)
|
bondCategory = groupCategory.getRelatedNode(slipnet.bondCategory)
|
||||||
bondCategory.buffer = 100.0
|
bondCategory.buffer = 100.0
|
||||||
if directionCategory:
|
if directionCategory:
|
||||||
directionCategory.buffer = 100.0
|
directionCategory.buffer = 100.0
|
||||||
group = Group(objects[0].string, groupCategory, directionCategory,
|
group = Group(objects[0].string, groupCategory, directionCategory,
|
||||||
bondFacet, objects, bondList)
|
bond_edge_type, objects, bondList)
|
||||||
urgency = bondCategory.bondDegreeOfAssociation()
|
urgency = bondCategory.bondDegreeOfAssociation()
|
||||||
self.newCodelet('group-strength-tester', urgency, [group])
|
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):
|
sourceDescriptor, destinationDescriptor):
|
||||||
bondFacet.buffer = 100.0
|
bond_edge_type.buffer = 100.0
|
||||||
sourceDescriptor.buffer = 100.0
|
sourceDescriptor.buffer = 100.0
|
||||||
destinationDescriptor.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)
|
sourceDescriptor, destinationDescriptor)
|
||||||
urgency = bondCategory.bondDegreeOfAssociation()
|
urgency = bondCategory.bondDegreeOfAssociation()
|
||||||
self.newCodelet('bond-strength-tester', urgency, [bond])
|
self.newCodelet('bond-strength-tester', urgency, [bond])
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class Group(WorkspaceObject):
|
|||||||
if self.bondList and len(self.bondList):
|
if self.bondList and len(self.bondList):
|
||||||
firstFacet = self.bondList[0].facet
|
firstFacet = self.bondList[0].facet
|
||||||
self.addBondDescription(
|
self.addBondDescription(
|
||||||
Description(self, slipnet.bondFacet, firstFacet))
|
Description(self, slipnet.bond_edge_type, firstFacet))
|
||||||
self.addBondDescription(
|
self.addBondDescription(
|
||||||
Description(self, slipnet.bondCategory, self.bondCategory))
|
Description(self, slipnet.bondCategory, self.bondCategory))
|
||||||
|
|
||||||
|
|||||||
@ -106,7 +106,7 @@ class Slipnet(object):
|
|||||||
self.groupCategory = self.__addNode('groupCategory', 80.0)
|
self.groupCategory = self.__addNode('groupCategory', 80.0)
|
||||||
self.length = self.__addNode('length', 60.0)
|
self.length = self.__addNode('length', 60.0)
|
||||||
self.objectCategory = self.__addNode('objectCategory', 90.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
|
# some factors are considered "very relevant" a priori
|
||||||
self.initiallyClampedSlipnodes = [
|
self.initiallyClampedSlipnodes = [
|
||||||
@ -164,9 +164,9 @@ class Slipnet(object):
|
|||||||
(self.groupCategory, self.predecessorGroup),
|
(self.groupCategory, self.predecessorGroup),
|
||||||
(self.groupCategory, self.successorGroup),
|
(self.groupCategory, self.successorGroup),
|
||||||
(self.groupCategory, self.samenessGroup),
|
(self.groupCategory, self.samenessGroup),
|
||||||
# bond facets
|
# bond edge types
|
||||||
(self.bondFacet, self.letterCategory),
|
(self.bond_edge_type, self.letterCategory),
|
||||||
(self.bondFacet, self.length),
|
(self.bond_edge_type, self.length),
|
||||||
]
|
]
|
||||||
for a, b in links:
|
for a, b in links:
|
||||||
self.__addInstanceLink(a, b)
|
self.__addInstanceLink(a, b)
|
||||||
|
|||||||
@ -160,7 +160,7 @@ class SlipnetExporter:
|
|||||||
self.groupCategory = self._addNode('groupCategory', 80.0)
|
self.groupCategory = self._addNode('groupCategory', 80.0)
|
||||||
self.length = self._addNode('length', 60.0)
|
self.length = self._addNode('length', 60.0)
|
||||||
self.objectCategory = self._addNode('objectCategory', 90.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.initiallyClampedSlipnodes = [
|
||||||
self.letterCategory,
|
self.letterCategory,
|
||||||
@ -222,9 +222,9 @@ class SlipnetExporter:
|
|||||||
(self.groupCategory, self.predecessorGroup),
|
(self.groupCategory, self.predecessorGroup),
|
||||||
(self.groupCategory, self.successorGroup),
|
(self.groupCategory, self.successorGroup),
|
||||||
(self.groupCategory, self.samenessGroup),
|
(self.groupCategory, self.samenessGroup),
|
||||||
# bond facets
|
# bond edge types
|
||||||
(self.bondFacet, self.letterCategory),
|
(self.bond_edge_type, self.letterCategory),
|
||||||
(self.bondFacet, self.length),
|
(self.bond_edge_type, self.length),
|
||||||
]
|
]
|
||||||
for a, b in links:
|
for a, b in links:
|
||||||
self._addInstanceLink(a, b)
|
self._addInstanceLink(a, b)
|
||||||
|
|||||||
@ -11,528 +11,229 @@
|
|||||||
"name": "a",
|
"name": "a",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"a"
|
|
||||||
],
|
|
||||||
"nearestLetter": "a"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "b",
|
"name": "b",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"b"
|
|
||||||
],
|
|
||||||
"nearestLetter": "b"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "c",
|
"name": "c",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"c"
|
|
||||||
],
|
|
||||||
"nearestLetter": "c"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "d",
|
"name": "d",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"d"
|
|
||||||
],
|
|
||||||
"nearestLetter": "d"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "e",
|
"name": "e",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"e"
|
|
||||||
],
|
|
||||||
"nearestLetter": "e"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "f",
|
"name": "f",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"f"
|
|
||||||
],
|
|
||||||
"nearestLetter": "f"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "g",
|
"name": "g",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"g"
|
|
||||||
],
|
|
||||||
"nearestLetter": "g"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "h",
|
"name": "h",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"h"
|
|
||||||
],
|
|
||||||
"nearestLetter": "h"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "i",
|
"name": "i",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"i"
|
|
||||||
],
|
|
||||||
"nearestLetter": "i"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "j",
|
"name": "j",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "k",
|
"name": "k",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"k"
|
|
||||||
],
|
|
||||||
"nearestLetter": "k"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "l",
|
"name": "l",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"l"
|
|
||||||
],
|
|
||||||
"nearestLetter": "l"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "m",
|
"name": "m",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"m"
|
|
||||||
],
|
|
||||||
"nearestLetter": "m"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "n",
|
"name": "n",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"n"
|
|
||||||
],
|
|
||||||
"nearestLetter": "n"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "o",
|
"name": "o",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"o"
|
|
||||||
],
|
|
||||||
"nearestLetter": "o"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "p",
|
"name": "p",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"p"
|
|
||||||
],
|
|
||||||
"nearestLetter": "p"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "q",
|
"name": "q",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"q"
|
|
||||||
],
|
|
||||||
"nearestLetter": "q"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "r",
|
"name": "r",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"r"
|
|
||||||
],
|
|
||||||
"nearestLetter": "r"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "s",
|
"name": "s",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"s"
|
|
||||||
],
|
|
||||||
"nearestLetter": "s"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "t",
|
"name": "t",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"t"
|
|
||||||
],
|
|
||||||
"nearestLetter": "t"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "u",
|
"name": "u",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"u"
|
|
||||||
],
|
|
||||||
"nearestLetter": "u"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "v",
|
"name": "v",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"v"
|
|
||||||
],
|
|
||||||
"nearestLetter": "v"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "w",
|
"name": "w",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"w"
|
|
||||||
],
|
|
||||||
"nearestLetter": "w"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "x",
|
"name": "x",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"x"
|
|
||||||
],
|
|
||||||
"nearestLetter": "x"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "y",
|
"name": "y",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"y"
|
|
||||||
],
|
|
||||||
"nearestLetter": "y"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "z",
|
"name": "z",
|
||||||
"conceptualDepth": 10.0,
|
"conceptualDepth": 10.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 0,
|
|
||||||
"path": [
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "1",
|
"name": "1",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"1",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "2",
|
"name": "2",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"2",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "3",
|
"name": "3",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"3",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "4",
|
"name": "4",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"4",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "5",
|
"name": "5",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"5",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "leftmost",
|
"name": "leftmost",
|
||||||
"conceptualDepth": 40.0,
|
"conceptualDepth": 40.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "rightmost",
|
"name": "rightmost",
|
||||||
"conceptualDepth": 40.0,
|
"conceptualDepth": 40.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"rightmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "middle",
|
"name": "middle",
|
||||||
"conceptualDepth": 40.0,
|
"conceptualDepth": 40.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"middle",
|
|
||||||
"stringPositionCategory",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "single",
|
"name": "single",
|
||||||
"conceptualDepth": 40.0,
|
"conceptualDepth": 40.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"single",
|
|
||||||
"stringPositionCategory",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "whole",
|
"name": "whole",
|
||||||
"conceptualDepth": 40.0,
|
"conceptualDepth": 40.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"whole",
|
|
||||||
"stringPositionCategory",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "first",
|
"name": "first",
|
||||||
"conceptualDepth": 60.0,
|
"conceptualDepth": 60.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 1,
|
|
||||||
"path": [
|
|
||||||
"first",
|
|
||||||
"a"
|
|
||||||
],
|
|
||||||
"nearestLetter": "a"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "last",
|
"name": "last",
|
||||||
"conceptualDepth": 60.0,
|
"conceptualDepth": 60.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 1,
|
|
||||||
"path": [
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "left",
|
"name": "left",
|
||||||
@ -542,17 +243,7 @@
|
|||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-bond-scout--direction",
|
"top-down-bond-scout--direction",
|
||||||
"top-down-group-scout--direction"
|
"top-down-group-scout--direction"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"left",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "right",
|
"name": "right",
|
||||||
@ -562,17 +253,7 @@
|
|||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-bond-scout--direction",
|
"top-down-bond-scout--direction",
|
||||||
"top-down-group-scout--direction"
|
"top-down-group-scout--direction"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"right",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "predecessor",
|
"name": "predecessor",
|
||||||
@ -581,18 +262,7 @@
|
|||||||
"shrunkLinkLength": 24.0,
|
"shrunkLinkLength": 24.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-bond-scout--category"
|
"top-down-bond-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"predecessor",
|
|
||||||
"predecessorGroup",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "successor",
|
"name": "successor",
|
||||||
@ -601,18 +271,7 @@
|
|||||||
"shrunkLinkLength": 24.0,
|
"shrunkLinkLength": 24.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-bond-scout--category"
|
"top-down-bond-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"successor",
|
|
||||||
"successorGroup",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sameness",
|
"name": "sameness",
|
||||||
@ -621,17 +280,7 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-bond-scout--category"
|
"top-down-bond-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"sameness",
|
|
||||||
"samenessGroup",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "predecessorGroup",
|
"name": "predecessorGroup",
|
||||||
@ -640,17 +289,7 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-group-scout--category"
|
"top-down-group-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"predecessorGroup",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "successorGroup",
|
"name": "successorGroup",
|
||||||
@ -659,17 +298,7 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-group-scout--category"
|
"top-down-group-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"successorGroup",
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "samenessGroup",
|
"name": "samenessGroup",
|
||||||
@ -678,74 +307,37 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-group-scout--category"
|
"top-down-group-scout--category"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"samenessGroup",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "identity",
|
"name": "identity",
|
||||||
"conceptualDepth": 90.0,
|
"conceptualDepth": 90.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 8,
|
|
||||||
"path": null,
|
|
||||||
"nearestLetter": null
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "opposite",
|
"name": "opposite",
|
||||||
"conceptualDepth": 90.0,
|
"conceptualDepth": 90.0,
|
||||||
"intrinsicLinkLength": 80.0,
|
"intrinsicLinkLength": 80.0,
|
||||||
"shrunkLinkLength": 32.0,
|
"shrunkLinkLength": 32.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 8,
|
|
||||||
"path": null,
|
|
||||||
"nearestLetter": null
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "letter",
|
"name": "letter",
|
||||||
"conceptualDepth": 20.0,
|
"conceptualDepth": 20.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 8,
|
|
||||||
"path": null,
|
|
||||||
"nearestLetter": null
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "group",
|
"name": "group",
|
||||||
"conceptualDepth": 80.0,
|
"conceptualDepth": 80.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 8,
|
|
||||||
"path": null,
|
|
||||||
"nearestLetter": null
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "letterCategory",
|
"name": "letterCategory",
|
||||||
"conceptualDepth": 30.0,
|
"conceptualDepth": 30.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 1,
|
|
||||||
"path": [
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "stringPositionCategory",
|
"name": "stringPositionCategory",
|
||||||
@ -754,17 +346,7 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-description-scout"
|
"top-down-description-scout"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"stringPositionCategory",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "alphabeticPositionCategory",
|
"name": "alphabeticPositionCategory",
|
||||||
@ -773,107 +355,43 @@
|
|||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0,
|
||||||
"codelets": [
|
"codelets": [
|
||||||
"top-down-description-scout"
|
"top-down-description-scout"
|
||||||
],
|
]
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"alphabeticPositionCategory",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "directionCategory",
|
"name": "directionCategory",
|
||||||
"conceptualDepth": 70.0,
|
"conceptualDepth": 70.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"directionCategory",
|
|
||||||
"left",
|
|
||||||
"leftmost",
|
|
||||||
"last",
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
"nearestLetter": "z"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "bondCategory",
|
"name": "bondCategory",
|
||||||
"conceptualDepth": 80.0,
|
"conceptualDepth": 80.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 4,
|
|
||||||
"path": [
|
|
||||||
"bondCategory",
|
|
||||||
"sameness",
|
|
||||||
"samenessGroup",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "groupCategory",
|
"name": "groupCategory",
|
||||||
"conceptualDepth": 80.0,
|
"conceptualDepth": 80.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 3,
|
|
||||||
"path": [
|
|
||||||
"groupCategory",
|
|
||||||
"samenessGroup",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "length",
|
"name": "length",
|
||||||
"conceptualDepth": 60.0,
|
"conceptualDepth": 60.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"length",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "objectCategory",
|
"name": "objectCategory",
|
||||||
"conceptualDepth": 90.0,
|
"conceptualDepth": 90.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 8,
|
|
||||||
"path": null,
|
|
||||||
"nearestLetter": null
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "bondFacet",
|
"name": "bond_edge_type",
|
||||||
"conceptualDepth": 90.0,
|
"conceptualDepth": 90.0,
|
||||||
"intrinsicLinkLength": 0,
|
"intrinsicLinkLength": 0,
|
||||||
"shrunkLinkLength": 0.0,
|
"shrunkLinkLength": 0.0
|
||||||
"minPathToLetter": {
|
|
||||||
"hops": 2,
|
|
||||||
"path": [
|
|
||||||
"bondFacet",
|
|
||||||
"letterCategory",
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
"nearestLetter": "j"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
@ -1967,24 +1485,24 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "letterCategory",
|
"source": "letterCategory",
|
||||||
"destination": "bondFacet",
|
"destination": "bond_edge_type",
|
||||||
"fixedLength": 60.0,
|
"fixedLength": 60.0,
|
||||||
"type": "category"
|
"type": "category"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "bondFacet",
|
"source": "bond_edge_type",
|
||||||
"destination": "letterCategory",
|
"destination": "letterCategory",
|
||||||
"fixedLength": 100.0,
|
"fixedLength": 100.0,
|
||||||
"type": "instance"
|
"type": "instance"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "length",
|
"source": "length",
|
||||||
"destination": "bondFacet",
|
"destination": "bond_edge_type",
|
||||||
"fixedLength": 30.0,
|
"fixedLength": 30.0,
|
||||||
"type": "category"
|
"type": "category"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "bondFacet",
|
"source": "bond_edge_type",
|
||||||
"destination": "length",
|
"destination": "length",
|
||||||
"fixedLength": 100.0,
|
"fixedLength": 100.0,
|
||||||
"type": "instance"
|
"type": "instance"
|
||||||
|
|||||||
@ -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.
|
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}
|
\subsection{Eccentricity: The Significant Finding}
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ Node & Depth & Eccentricity \\
|
|||||||
\midrule
|
\midrule
|
||||||
letterCategory & 30 & 4 \\
|
letterCategory & 30 & 4 \\
|
||||||
length & 60 & 5 \\
|
length & 60 & 5 \\
|
||||||
bondFacet & 90 & 5 \\
|
bond\_edge\_type & 90 & 5 \\
|
||||||
\midrule
|
\midrule
|
||||||
middle & 40 & 7 \\
|
middle & 40 & 7 \\
|
||||||
identity & 90 & 3 (isolated) \\
|
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.
|
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}
|
\subsection{Local vs Global Structure}
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ Node & Depth & Deg & Btw & Ecc \\
|
|||||||
\midrule
|
\midrule
|
||||||
letterCategory & 30 & 0.50 & 0.68 & 4 \\
|
letterCategory & 30 & 0.50 & 0.68 & 4 \\
|
||||||
length & 60 & 0.17 & 0.25 & 5 \\
|
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 \\
|
middle & 40 & 0.02 & 0.00 & 7 \\
|
||||||
identity & 90 & 0.00 & 0.00 & 3 \\
|
identity & 90 & 0.00 & 0.00 & 3 \\
|
||||||
opposite & 90 & 0.00 & 0.00 & 3 \\
|
opposite & 90 & 0.00 & 0.00 & 3 \\
|
||||||
|
|||||||
Reference in New Issue
Block a user