Release Notes¶
Important
pulse2percept 0.6 was the last version to support Python <= 3.5. pulse2percept 0.7+ requires Python 3.6+.
v0.7.0 (2021, planned)¶
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
: Use :py:meth`pulse2percept.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