Source code for conex.nn.priority

from typing import Dict, List

from pymonntorch import Behavior

"""
This file specifies the priorities for different behaviors.
"""

# TODO add priority as class property

NETWORK_PRIORITIES = {
    "TimeResolution": 1,
    "Payoff": 100,
    "Dopamine": 120,
}

NEURON_PRIORITIES = {
    "SimpleDendriteStructure": 220,
    "SimpleDendriteComputation": 240,
    "NeuronDynamic": 260,
    "LIF": 260,
    "ELIF": 260,
    "AELIF": 260,
    "InherentNoise": 280,
    "KWTA": 300,
    "Fire": 340,
    "LocationSetter": 340,
    "SensorySetter": 340,
    "NeuronAxon": 380,
    "ActivityBaseHomeostasis": 341,
    "VoltageBaseHomeostasis": 301,
}

LAYER_PRIORITIES = {"SpikeNdDataset": 320}

SYNAPSE_PRIORITIES = {
    "SynapseInit": 2,
    "WeightInitializer": 3,
    "DelayInitializer": 4,
    "AveragePool2D": 180,
    "BaseDendriticInput": 180,
    "Conv2dDendriticInput": 180,
    "LateralDendriticInput": 180,
    "Local2dDendriticInput": 180,
    "One2OneDendriticInput": 180,
    "SimpleDendriticInput": 180,
    "SparseDendriticInput": 180,
    "CurrentNormalization": 200,
    "PreSpikeCatcher": 420,
    "PostSpikeCatcher": 440,
    "PreTrace": 460,
    "PostTrace": 480,
    "BaseLearning": 500,
    "Conv2dRSTDP": 500,
    "Conv2dSTDP": 500,
    "Local2dRSTDP": 500,
    "Local2dSTDP": 500,
    "One2OneRSTDP": 500,
    "One2OneSTDP": 500,
    "One2OneiSTDP": 500,
    "SimpleRSTDP": 500,
    "SimpleSTDP": 500,
    "SimpleiSTDP": 500,
    "SparseRSTDP": 500,
    "SparseSTDP": 500,
    "SparseiSTDP": 500,
    "LearningRule": 500,
    "WeightNormalization": 520,
    "WeightClip": 540,
}

ALL_PRIORITIES = {
    **NETWORK_PRIORITIES,
    **NEURON_PRIORITIES,
    **LAYER_PRIORITIES,
    **SYNAPSE_PRIORITIES,
}


[docs]def prioritize_behaviors(behavior: List[Behavior]) -> Dict[int, Behavior]: result = {ALL_PRIORITIES[x.__class__.__name__]: x for x in behavior} return result