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
ImageStimulusandVideoStimulusobjects (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
ImageStimulusandVideoStimulusobjects (PR #434) ElectrodeGridcan now have different spacings in x and y direction (PR #430)- Add new plotting styles for a grid’s
plotmethod (PR #426, PR #433, PR #446) - Additional options for
scatter_correlation(PR #422)
API changes¶
Backward-incompatible changes¶
RetinalCoordTransformhas been renamed toVisualFieldMap(PR #432)plot_axon_mapwas removed: Usepulse2percept.models.AxonMapModel.plotplot_implant_on_axon_mapwas removed: Usepulse2percept.implants.ProsthesisSystem.ploton 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_phosphenesnow works for sliced subsets of data (PR #415)- Fix plot window for the
AxonMapModelplotmethod (PR #414) - Keep metadata intact when stimuli are created from other stimuli (PR #396)
- Be able to run
AxonMapModelon a single pixel (PR #395) - Mirror-flip the
BVT24implant (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_mathsubmodule (PR #382) - Further speed up the
AxonMapModelbuild process (PR #369) - Improve documentation and usability of various
AxonMapModelmethods (PR #370) - Disallow lambda<10 for
AxonMapModel(PR #370) - Show a warning when
ScoreboardModelorAxonMapModelis used with a nonzero electrode-retina distance (PR #368)
Bug fixes¶
- Fix naming convention for
BVT24electrodes (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.plotfor 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:
ImageStimulusandVideoStimulus(PR #196, PR #220, PR #221, PR #356),BarStimulusandGratingStimulus(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¶
Stimulusobjects now store stimulus parameters in their metadata (PR #346)Stimulusobjects can now be manipulated with arithmetic operators (PR #301)- Image processing methods can be directly applied to
ImageStimulusandVideoStimulusobjects (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)
TimeSerieshas been removed. Please useStimulusinsteadLegacyMonophasicPulse,LegacyBiphasicPulseandLegacyPulseTrainhave been removed. Use their equivalents without the “Legacy” prefix.
Deprecations¶
plot_axon_map: Usepulse2percept.models.AxonMapModel.plotplot_implant_on_axon_map: Usepulse2percept.implants.ProsthesisSystem.ploton 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) AxonMapModelhave 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 usesSquareElectrodeobjects 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
perceptssubpackage (PR #174) - New
datasetssubpackage (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
ProsthesisSystemconsisting of anElectrodeArrayand optionally aStimulus(PR #96). - A
Modelcan be built by mix-and-matching spatial and temporal models from different publications (PR #174). - A
Stimuluscan 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). ElectrodeArraynow stores electrodes in a dictionary (issue #74).ElectrodeGridcan 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
Simulationobject has been removed. Please directly instantiate a model instead. pulse2percept.retina: usemodelsinsteadpulse2percept.files: useioinstead
v0.5.1 (2020-02-05)¶
Bug fixes¶
pulse2percept.retina.Nanduri2012: allow switch between FFT/Cythonpulse2percept.retina.Horsager2009: respectuse_jitoptionpulse2percept.utils.center_vector: “cannot determine Numba type”
v0.5.0 (2019-11-29)¶
Highlights¶
- New
pulse2percept.vizmodule (PR #84) - Support for the
AlphaIMSimplant (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_fundusfor 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.savemoviefilespulse2percept.files.npy2moviepulse2percept.files.scalepulse2percept.stimuli.Movie2Pulsetrainpulse2percept.stimuli.retinalmovie2electrodtimeseriespulse2percept.utils.Parameterspulse2percept.utils.mov2npy