canns.task.tracking¶
Classes¶
Population coding task for 1D continuous attractor networks. |
|
Population coding task for 2D continuous attractor networks. |
|
Smooth tracking task for 1D continuous attractor networks. |
|
Smooth tracking task for 2D continuous attractor networks. |
|
Template matching task for 1D continuous attractor networks. |
|
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:
PopulationCodingPopulation 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 -> Usetask.dataas 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.
- class canns.task.tracking.PopulationCoding2D(cann_instance, before_duration, after_duration, Iext, duration, time_step=0.1)[source]¶
Bases:
PopulationCodingPopulation 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 -> Usetask.dataas 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.
- class canns.task.tracking.SmoothTracking1D(cann_instance, Iext, duration, time_step=0.1)[source]¶
Bases:
SmoothTrackingSmooth 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.datacontains 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:
SmoothTrackingSmooth 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.datacontains 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:
TemplateMatchingTemplate 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 -> Usetask.dataas 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:
TemplateMatchingTemplate 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.datacontains 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.