pulse2percept

First steps

  • Overview
  • Installation
  • Example Gallery
    • Implants
    • Stimuli
    • Models
    • Datasets
    • For developers
      • Implants
        • Creating a grid of electrodes
        • Simulating Argus II
        • Retinal implant gallery
        • Cortical implant gallery
        • Creating your own electrode array
      • Stimuli
      • Models
      • Datasets
      • For developers

Basic concepts

  • Visual Prostheses
  • Cortical Visual Prostheses
  • Electrical Stimuli
  • Computational Models
  • Datasets

User Guide

  • API Reference
  • Frequently Asked Questions
  • In the News
  • Release Notes
  • References

Developer Guide

  • Contributing to pulse2percept
  • Coding Style Guide
  • Preparing a New Release
pulse2percept
  • Example Gallery
  • Implants
  • Cortical implant gallery
  • View page source

Note

Go to the end to download the full example code.

Cortical implant gallery

pulse2percept supports the following cortical implants:

Orion Prosthesis System (Cortigent Inc.)

Orion contains 60 electrodes in a hex shaped grid inspired by Argus II.

import matplotlib.pyplot as plt
from pulse2percept.implants.cortex import *
import pulse2percept as p2p
import warnings
warnings.filterwarnings("ignore") # ignore matplotlib warnings

orion = Orion()
orion.plot(annotate=True)
plt.show()
plot implants cortical

Cortivis Prosthesis System (Biomedical Technologies)

Cortivis is an implant with 96 electrodes in a square shaped grid.

cortivis = Cortivis()
cortivis.plot(annotate=True)
plt.show()
plot implants cortical

ICVP Prosthesis System (Sigenics Inc.)

ICVP is an implant with 16 primary electrodes in a hex shaped grid, along with 2 additional “reference” and “counter” electrodes.

icvp = ICVP()
icvp.plot(annotate=True)
plt.show()
plot implants cortical

Neuralink Threads (Neuralink)

Neuralink is an implant consisting of one or more LinearEdgeThread, consisting of 32 electrodes.

These threads are designed to be 3D, and can be plotted in both 3D and 2D space, which will show the x-y projection of the points. Here are some examples showing the 1) a close up of the thread, 2) a 3D plot of two threads, and 3) the 2D projection of the two threads.

fig = plt.figure(figsize=(10, 4))
thread1 = LinearEdgeThread()
thread2 = LinearEdgeThread(500, 500, orient=[1, 1, 1])
ax0 = fig.add_subplot(131, projection='3d')
thread1.plot3D(ax=ax0)
ax0.set_xlim(-100, 100)
ax0.set_ylim(-100, 100)
ax0.set_zlim(10, 200)
ax1 = fig.add_subplot(132, projection='3d')
thread1.plot3D(ax=ax1)
thread2.plot3D(ax=ax1)
ax2 = fig.add_subplot(133)
thread1.plot(ax=ax2)
thread2.plot(ax=ax2)
plt.axis('equal')
plt.show()
plot implants cortical

Neuralink implants can be easily created from a NeuropythyMap enabling easy placement of implants across the cortical surface. See the neuropythy example for more details.

nmap = p2p.topography.NeuropythyMap(subject='fsaverage', regions=['v1'])
model = p2p.models.cortex.ScoreboardModel(rho=500, xrange=(-6, 0), yrange=(-5, 5), xystep=.25, vfmap=nmap).build()
nlink = Neuralink.from_neuropythy(nmap, xrange=model.xrange, yrange=model.yrange,
                                                      xystep=2, rand_insertion_angle=0)
print(len(nlink.implants), " total threads")
fig = plt.figure(figsize=(10, 4))
ax1 = fig.add_subplot(121, projection='3d')
model.plot3D(ax=ax1, style='cell')
nlink.plot3D(ax=ax1)
ax2 = fig.add_subplot(122)
model.plot(style='cell', ax=ax2)
nlink.plot(ax=ax2)
plot implants cortical
18  total threads
Warning: Plotting 2D projection of 3D data. You might want plot3D() instead

<Axes: xlabel='x (mm)', ylabel='y (mm)'>

Total running time of the script: (3 minutes 50.069 seconds)

Download Jupyter notebook: plot_implants_cortical.ipynb

Download Python source code: plot_implants_cortical.py

Download zipped: plot_implants_cortical.zip

Gallery generated by Sphinx-Gallery

Previous Next

© Copyright 2016 - 2025, pulse2percept developers (BSD License). Last updated on Jun 11, 2025.

Built with Sphinx using a theme provided by Read the Docs.