Why does using a different IDE affect my raw.plot()?

Iā€™m using MNE .22 with Python 3.9.2 on a Mac running OS 10.15.4. I switched from Matlab to Python a couple years ago and have been using Idle as my IDE up to now, but have to decided to transition to PyCharm. Iā€™ve discovered something peculiar when creating a plot of my raw data:

import mne as mn
import matplotlib.pyplot as plt
plt.switch_backend('TkAgg')
plt.ion()
raw = mn.io.read_raw_edf("my_file.edf", preload=True)
raw.plot()

It couldnā€™t be any simpler. :grinning:This works fine when I run it from the shell in Idle and Iā€™m able to scroll through my data. In PyCharm, I get the data plot, but it closes immediately. No chance to scroll, remove bad channels, or annotate.

Python 3.9 (ProjectName) -/PyCharmProjects/ProjectName/venv/bin/python

is the listed interpreter, although I understand little about venv and virtual environments.

I should mention that many plot tools Iā€™ve created using Matplotlib, which utilize MNE for loading data, extracting raw.info, etc. work fine. when I run them from PyCharm.

I apologize if this question isnā€™t really appropriate for this forum. Also, if any MNE users have a preferred IDE, Iā€™d enjoy hearing suggestions.

Hello,

The Python interpreter closes immediately after opening the plot window, because the end of your script is reached. You have two ways to work around this:

  • Ensure execution is halted after plotting by passing block=True, i.e. raw.plot(block=True)
  • Or edit your PyCharm run configuration such that your script is run in interactive mode (which might be something you want when working with data interactively anyway!) by ticking the ā€œRun with Python Consoleā€ box. See Create and edit run/debug configurationsā€”PyCharm for more info on run configurations in PyCharm
3 Likes

To answer your question about IDEs, we have a brief discussion here that tries not to be too opinionated: Installing MNE-Python ā€” MNE 0.23.dev0 documentation

Personally I started out on Spyder, then switched to Atom after a couple years, and a couple years later switched to VSCode. Several other MNE-Python devs also use VSCode, some use PyCharm, at least one was using emacs (as of 2019 at least). A lot of the folks in my research institute (MNE-Python users, not devs) prefer Spyder (which is much better nowadays than it was when I stopped using it).

3 Likes

4 posts were split to a new topic: Problems running mne.viz.plot_alignment() from within Spyder

A post was split to a new topic: MNE objects not shown in Spyder variable explorer