From 6165f77d3ced93c1e7199a4746b73a309c954b34 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Mon, 17 Apr 2017 20:46:26 -0700 Subject: [PATCH] Move a couple single-use helpers from formulas to codeletMethods. NFC. --- copycat/codeletMethods.py | 26 +++++++++++++++++++++++--- copycat/formulas.py | 22 ---------------------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/copycat/codeletMethods.py b/copycat/codeletMethods.py index 750e084..91ae140 100644 --- a/copycat/codeletMethods.py +++ b/copycat/codeletMethods.py @@ -152,17 +152,28 @@ def breaker(ctx, codelet): structure.break_the_structure() +def similarPropertyLinks(slip_node, temperature): + result = [] + for slip_link in slip_node.propertyLinks: + association = slip_link.degreeOfAssociation() / 100.0 + probability = temperature.getAdjustedProbability(association) + if formulas.coinFlip(probability): + result += [slip_link] + return result + + @codelet('bottom-up-description-scout') def bottom_up_description_scout(ctx, codelet): coderack = ctx.coderack + temperature = ctx.temperature workspace = ctx.workspace chosenObject = chooseUnmodifiedObject('totalSalience', workspace.objects) assert chosenObject __showWhichStringObjectIsFrom(chosenObject) description = formulas.chooseRelevantDescriptionByActivation(chosenObject) assert description - sliplinks = formulas.similarPropertyLinks(description.descriptor) - assert sliplinks and len(sliplinks) + sliplinks = similarPropertyLinks(description.descriptor, temperature) + assert sliplinks values = [sliplink.degreeOfAssociation() * sliplink.destination.activation for sliplink in sliplinks] i = formulas.selectListPosition(values) @@ -894,15 +905,24 @@ def bottom_up_correspondence_scout(ctx, codelet): conceptMappings, flipTargetObject, codelet) +def chooseSlipnodeByConceptualDepth(slip_nodes, temperature): + if not slip_nodes: + return None + depths = [temperature.getAdjustedValue(n.conceptualDepth) for n in slip_nodes] + i = formulas.selectListPosition(depths) + return slip_nodes[i] + + @codelet('important-object-correspondence-scout') def important_object_correspondence_scout(ctx, codelet): coderack = ctx.coderack slipnet = ctx.slipnet + temperature = ctx.temperature workspace = ctx.workspace objectFromInitial = chooseUnmodifiedObject('relativeImportance', workspace.initial.objects) descriptors = objectFromInitial.relevantDistinguishingDescriptors() - slipnode = formulas.chooseSlipnodeByConceptualDepth(descriptors) + slipnode = chooseSlipnodeByConceptualDepth(descriptors, temperature) assert slipnode initialDescriptor = slipnode for mapping in workspace.slippages(): diff --git a/copycat/formulas.py b/copycat/formulas.py index 48c4147..37bd7a3 100644 --- a/copycat/formulas.py +++ b/copycat/formulas.py @@ -70,28 +70,6 @@ def chooseRelevantDescriptionByActivation(workspaceObject): return descriptions[i] -def similarPropertyLinks(slip_node): - from context import context as ctx - temperature = ctx.temperature - result = [] - for slip_link in slip_node.propertyLinks: - association = slip_link.degreeOfAssociation() / 100.0 - probability = temperature.getAdjustedProbability(association) - if coinFlip(probability): - result += [slip_link] - return result - - -def chooseSlipnodeByConceptualDepth(slip_nodes): - from context import context as ctx - temperature = ctx.temperature - if not slip_nodes: - return None - depths = [temperature.getAdjustedValue(n.conceptualDepth) for n in slip_nodes] - i = selectListPosition(depths) - return slip_nodes[i] - - def __relevantCategory(objekt, slipnode): return objekt.rightBond and objekt.rightBond.category == slipnode