canns.task.tracking

Classes

PopulationCoding1D

Population coding task for 1D continuous attractor networks.

PopulationCoding2D

Population coding task for 2D continuous attractor networks.

SmoothTracking1D

Smooth tracking task for 1D continuous attractor networks.

SmoothTracking2D

Smooth tracking task for 2D continuous attractor networks.

TemplateMatching1D

Template matching task for 1D continuous attractor networks.

TemplateMatching2D

Template matching task for 2D continuous attractor networks.

Module Contents

class canns.task.tracking.PopulationCoding1D(cann_instance, before_duration, after_duration, Iext, duration, time_step=0.1)[source]

Bases: PopulationCoding

Population coding task for 1D continuous attractor networks.

A stimulus is presented for a specific duration, preceded and followed by periods of no stimulation.

Workflow:

Setup -> Create a 1D CANN and the task. Execute -> Call get_data(). Result -> Use task.data as the input sequence.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN1D
>>> from canns.task.tracking import PopulationCoding1D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN1D(num=64)
>>> task = PopulationCoding1D(
...     cann_instance=model,
...     before_duration=1.0,
...     after_duration=1.0,
...     Iext=0.0,
...     duration=2.0,
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[0] == task.total_steps
True

Initializes the Population Coding task.

Parameters:
  • cann_instance (BaseCANN1D) – An instance of the 1D CANN model.

  • before_duration (float | Quantity) – Duration of the initial period with no stimulus.

  • after_duration (float | Quantity) – Duration of the final period with no stimulus.

  • Iext (float | Quantity) – The position of the external input during the stimulation period.

  • duration (float | Quantity) – The duration of the stimulation period.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.

after_duration[source]
before_duration[source]
class canns.task.tracking.PopulationCoding2D(cann_instance, before_duration, after_duration, Iext, duration, time_step=0.1)[source]

Bases: PopulationCoding

Population coding task for 2D continuous attractor networks.

A 2D stimulus is presented for a duration with pre- and post-silence.

Workflow:

Setup -> Create a 2D CANN and the task. Execute -> Call get_data(). Result -> Use task.data as the input sequence.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN2D
>>> from canns.task.tracking import PopulationCoding2D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN2D(length=8)
>>> task = PopulationCoding2D(
...     cann_instance=model,
...     before_duration=1.0,
...     after_duration=1.0,
...     Iext=(0.0, 0.0),
...     duration=1.0,
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[1:] == model.shape
True

Initializes the Population Coding task.

Parameters:
  • cann_instance (BaseCANN2D) – An instance of the 2D CANN model.

  • before_duration (float | Quantity) – Duration of the initial period with no stimulus.

  • after_duration (float | Quantity) – Duration of the final period with no stimulus.

  • Iext (float | Quantity) – The position of the external input during the stimulation period.

  • duration (float | Quantity) – The duration of the stimulation period.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.

after_duration[source]
before_duration[source]
class canns.task.tracking.SmoothTracking1D(cann_instance, Iext, duration, time_step=0.1)[source]

Bases: SmoothTracking

Smooth tracking task for 1D continuous attractor networks.

The external input moves smoothly between key positions.

Workflow:

Setup -> Create a 1D CANN and the task. Execute -> Call get_data(). Result -> task.data contains the smoothly varying stimulus.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN1D
>>> from canns.task.tracking import SmoothTracking1D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN1D(num=64)
>>> task = SmoothTracking1D(
...     cann_instance=model,
...     Iext=(0.0, 1.0, 0.5),
...     duration=(0.5, 0.5),
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[0] == task.total_steps
True

Initializes the Smooth Tracking task.

Parameters:
  • cann_instance (BaseCANN1D) – An instance of the 1D CANN model.

  • Iext (Sequence[float | Quantity]) – A sequence of keypoint positions for the input.

  • duration (Sequence[float | Quantity]) – The duration of each segment of smooth movement.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.

class canns.task.tracking.SmoothTracking2D(cann_instance, Iext, duration, time_step=0.1)[source]

Bases: SmoothTracking

Smooth tracking task for 2D continuous attractor networks.

The external 2D input moves smoothly between key positions.

Workflow:

Setup -> Create a 2D CANN and the task. Execute -> Call get_data(). Result -> task.data contains smoothly varying 2D inputs.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN2D
>>> from canns.task.tracking import SmoothTracking2D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN2D(length=8)
>>> task = SmoothTracking2D(
...     cann_instance=model,
...     Iext=((0.0, 0.0), (1.0, 1.0), (0.5, 0.5)),
...     duration=(0.5, 0.5),
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[1:] == model.shape
True

Initializes the Smooth Tracking task.

Parameters:
  • cann_instance (BaseCANN2D) – An instance of the 2D CANN model.

  • Iext (Sequence[tuple[float, float] | Quantity]) – A sequence of 2D keypoint positions for the input.

  • duration (Sequence[float | Quantity]) – The duration of each segment of smooth movement.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.

class canns.task.tracking.TemplateMatching1D(cann_instance, Iext, duration, time_step=0.1)[source]

Bases: TemplateMatching

Template matching task for 1D continuous attractor networks.

A fixed stimulus template is presented with noise at each step, testing the network’s denoising dynamics.

Workflow:

Setup -> Create a 1D CANN and the task. Execute -> Call get_data(). Result -> Use task.data as the noisy input sequence.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN1D
>>> from canns.task.tracking import TemplateMatching1D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN1D(num=64)
>>> task = TemplateMatching1D(
...     cann_instance=model,
...     Iext=0.0,
...     duration=1.0,
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[1] == model.shape[0]
True

Initializes the Template Matching task.

Parameters:
  • cann_instance (BaseCANN1D) – An instance of the 1D CANN model.

  • Iext (float | Quantity) – The position of the external input.

  • duration (float | Quantity) – The duration for which the noisy stimulus is presented.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.

class canns.task.tracking.TemplateMatching2D(cann_instance, Iext, duration, time_step=0.1)[source]

Bases: TemplateMatching

Template matching task for 2D continuous attractor networks.

A 2D template is presented with noise at each step.

Workflow:

Setup -> Create a 2D CANN and the task. Execute -> Call get_data(). Result -> task.data contains noisy 2D inputs.

Examples

>>> import brainpy.math as bm
>>> from canns.models.basic import CANN2D
>>> from canns.task.tracking import TemplateMatching2D
>>>
>>> bm.set_dt(0.1)
>>> model = CANN2D(length=8)
>>> task = TemplateMatching2D(
...     cann_instance=model,
...     Iext=(0.0, 0.0),
...     duration=1.0,
...     time_step=bm.get_dt(),
... )
>>> task.get_data()
>>> task.data.shape[1:] == model.shape
True

Initializes the Template Matching task.

Parameters:
  • cann_instance (BaseCANN2D) – An instance of the 2D CANN model.

  • Iext (tuple[float, float] | Quantity) – The 2D position of the external input.

  • duration (float | Quantity) – The duration for which the noisy stimulus is presented.

  • time_step (float | Quantity, optional) – The simulation time step. Defaults to 0.1.