Release Notes¶
v0.8.0 (2022-05-05)¶
Highlights¶
- New implants:
BVT44
[Petoe2021] (PR #465) - New models:
BiphasicAxonMapModel
[Granley2021] (PR #398) andThompson2003Model
[Thompson2003] (PR #448) - New datasets:
load_greenwald2009
[Greenwald2009] (PR #459) andload_perezfornos2012
[PerezFornos2012] (PR #457) - New stimuli:
BarStimulus
,GratingStimulus
(PR #310) - Python 3.10 support (PR #479)
New features¶
- New gallery examples for visual field maps (PR #432), Nanduri
dataset (PR #452), psychophysics stimuli (PR #480), and
BiphasicAxonMapModel
(PR #484) - Crop method for
ImageStimulus
andVideoStimulus
objects (PR #455) - Specify number of OpenMP threads (PR #453)
- Ignore stimuli of deactivated electrodes (PR #444)
- Percepts can now have a limited number of gray levels (PR #443)
- Automatic stimulus reshaping for
ImageStimulus
andVideoStimulus
objects (PR #434) ElectrodeGrid
can now have different spacings in x and y direction (PR #430)- Add new plotting styles for a grid’s
plot
method (PR #426, PR #433, PR #446) - Additional options for
scatter_correlation
(PR #422)
API changes¶
Backward-incompatible changes¶
RetinalCoordTransform
has been renamed toVisualFieldMap
(PR #432)plot_axon_map
was removed: Usepulse2percept.models.AxonMapModel.plot
plot_implant_on_axon_map
was removed: Usepulse2percept.implants.ProsthesisSystem.plot
on top of :py:meth`pulse2percept.models.AxonMapModel.plot`
Deprecations¶
None.
Bug fixes¶
- Fix handling of multi-channel images for scikit-image >= 0.19 (PR #473)
- Fix corrupted stimuli when created from multiple stimuli (PR #469)
plot_argus_phosphenes
now works for sliced subsets of data (PR #415)- Fix plot window for the
AxonMapModel
plot
method (PR #414) - Keep metadata intact when stimuli are created from other stimuli (PR #396)
- Be able to run
AxonMapModel
on a single pixel (PR #395) - Mirror-flip the
BVT24
implant (PR #393)
v0.7.1 (2021-06-21)¶
New features¶
- Add
FadingTemporal
, a generic phosphene fading model (PR #378)
Maintenance¶
- Various implant usability and speed upgrades (PR #375, PR #382, PR #383, PR #386)
- Various stimulus usability and speed upgrades (PR #382, PR #383, PR #384, PR #385)
- Refactor common Cython functions and move them into a
utils._fast_math
submodule (PR #382) - Further speed up the
AxonMapModel
build process (PR #369) - Improve documentation and usability of various
AxonMapModel
methods (PR #370) - Disallow lambda<10 for
AxonMapModel
(PR #370) - Show a warning when
ScoreboardModel
orAxonMapModel
is used with a nonzero electrode-retina distance (PR #368)
Bug fixes¶
- Fix naming convention for
BVT24
electrodes (PR #380) - Fix issues with plotting and animating
Percept
(PR #379) - Fix inconsistencies and missing parameters in the [Nanduri2012] dataset (PR #376)
- Fix
pulse2percept.models.AxonMapModel.plot
for left eyes (PR #367) - Fix axon map visualization in
plot_argus_phosphenes
(PR #366)
v0.7.0 (2021-04-04)¶
Highlights¶
- New implants:
PRIMA
,PRIMA75
,PRIMA55
,PRIMA40
(PR #188) - New electrodes:
SquareElectrode
,HexElectrode
,PhotovoltaicPixel
(PR #188, PR #193) - New stimuli:
ImageStimulus
andVideoStimulus
(PR #196, PR #220, PR #221, PR #356),BarStimulus
andGratingStimulus
(PR #323) - New datasets:
load_nanduri2012
(PR #250) - New model selection subpackage (PR #311)
- 100x speedup of building
AxonMapModel
(PR #331) - OpenMP support (PR #260)
- Python 3.9 support (PR #348)
New features¶
Stimulus
objects now store stimulus parameters in their metadata (PR #346)Stimulus
objects can now be manipulated with arithmetic operators (PR #301)- Image processing methods can be directly applied to
ImageStimulus
andVideoStimulus
objects (PR #241, PR #253) - Feature matrix and phosphene visualizations (PR #232)
- Percepts can be animated directly in IPython / Jupyter Notebook, and saved as a movie file (PR #196, PR #226, PR #358)
- Electrodes, electrode arrays, and prosthesis systems now have their own plot method (PR #188, PR #195, PR #222)
API changes¶
Backward-incompatible changes¶
- Implants rotation angles are now speicified in degrees, not radians (PR #357)
- pulse2percept now requires Matplotlib 3.0.2 or newer (PR #223)
- FFMPEG and scikit-video dependencies have been removed (PR #196)
TimeSeries
has been removed. Please useStimulus
insteadLegacyMonophasicPulse
,LegacyBiphasicPulse
andLegacyPulseTrain
have been removed. Use their equivalents without the “Legacy” prefix.
Deprecations¶
plot_axon_map
: Usepulse2percept.models.AxonMapModel.plot
plot_implant_on_axon_map
: Usepulse2percept.implants.ProsthesisSystem.plot
on top of :py:meth`pulse2percept.models.AxonMapModel.plot`
Bug fixes¶
- Fix metadata and plotting of Beyeler et al. (2019) dataset (PR #353)
- Fix data boundaries in
plot
(PR #244) AxonMapModel
have been drastically reduced (PR #215)Grid2D
: Grid now produces correct step size even when range is not divisible by step (PR #201)AlphaIMS
: Implant now usesSquareElectrode
objects and has exactly 1500 electrodes (PR #193)ElectrodeGrid
: Alphabetic names now follow A-Z, AA-AZ, BA-BZ, etc. (PR #192)BVA24
: Setting a stimulus in the constructor now has the desired effect (PR #186)- Computational cost and memory usage of
v0.6.0 (2020-05-05)¶
Highlights¶
- New API (PR #96, PR #174, PR #178)
- New implants:
BVA24
(PR #161) - New models:
ScoreboardModel
(PR #96),AxonMapModel
(PR #96),Nanduri2012Model
(PR #168),Horsager2009Model
(PR #180) - New stimuli:
BiphasicPulseTrain
,AsymmetricBiphasicPulse
,AsymmetricBiphasicPulseTrain
(PR #178) - New
percepts
subpackage (PR #174) - New
datasets
subpackage (PR #167) - New build process: Compile code and run tests via
Makefile
(PR #96) - Documentation now includes a tutorial, user guide, developer’s guide, and a gallery
- Python 2.7 and 3.4 are no longer supported (PR #96)
New features¶
- A visual prosthesis is now considered a
ProsthesisSystem
consisting of anElectrodeArray
and optionally aStimulus
(PR #96). - A
Model
can be built by mix-and-matching spatial and temporal models from different publications (PR #174). - A
Stimulus
can be created from various source types, such as scalars, NumPy arrays, lists, and dictionaries. There are also a variety of built-in pulses and pulse trains (e.g.,BiphasicPulseTrain
). ElectrodeArray
now stores electrodes in a dictionary (issue #74).ElectrodeGrid
can be used to create electrodes on a rectangular (PR #150) or hexagonal grid (PR #160).
API changes¶
Backward-incompatible changes¶
- Times are now specified in milliseconds.
- The
Simulation
object has been removed. Please directly instantiate a model instead. pulse2percept.retina
: usemodels
insteadpulse2percept.files
: useio
instead
v0.5.1 (2020-02-05)¶
Bug fixes¶
pulse2percept.retina.Nanduri2012
: allow switch between FFT/Cythonpulse2percept.retina.Horsager2009
: respectuse_jit
optionpulse2percept.utils.center_vector
: “cannot determine Numba type”
v0.5.0 (2019-11-29)¶
Highlights¶
- New
pulse2percept.viz
module (PR #84) - Support for the
AlphaIMS
implant (PR #87) - Automated wheelhouse build (PR #130)
- New contribution guidelines (PR #92)
- New issue templates (PR #93)
- New code of conduct (PR #95)
- Host documentation on pulse2percept.readthedocs.io.
Bug fixes¶
- Fix nasal/temporal labeling for left eyes (commit 9c3bddc)
- Fix
plot_fundus
for left eyes (commit a6ffdbc) - Fix
scipy.special.factorial
(commit c9631ae)
v0.4.3 (2018-05-21)¶
Highlights¶
- Cython integration:
- The model described in Nanduri et al. (2012) now uses a finite difference method implemented in Cython as opposed to FFT-based convolutions (PR #83)
- Single-core benchmarks show a 200x speedup over a pure-Python implementation.
Bug fixes¶
- Python 2.7 unpacking error in
plot_fundus
(commit 3dd9d1e)
Deprecation removals¶
pulse2percept.files.savemoviefiles
pulse2percept.files.npy2movie
pulse2percept.files.scale
pulse2percept.stimuli.Movie2Pulsetrain
pulse2percept.stimuli.retinalmovie2electrodtimeseries
pulse2percept.utils.Parameters
pulse2percept.utils.mov2npy