Python for scientific computing

My impression was that so far Pycharm largely focused on web development, but the sizeable (and growing) community of scientists, researchers, quants etc. who use python for their research were largely ignored. Is there a chance that there would be some effort directed toward us as well? Pycharm is a much more refined and powerful IDE than Spyder for example, but there are just a few (yet important) features that make it difficult to justify switching at the moment..

  • Execute selected text in python console. Sending code to a python console with a quick shortcut (I believe it is ctrl-shift-enter in Pydev) makes executing snippets very easy. At the moment, one has to do a three step process (copy, switch to console, paste).
  • A variable browser that would show currently defined variables in the interactive console similarly to the debug view. Again, this is very important for interactive research work.
  • Quick plotting of arrays/lists/dataframes in the variable browser.
  • Integrating IPython qtconsole mode. This is somewhat secondary but would be awsome. The qtconsole mode of ipython allows multiline editing, inline plots and generally a nicer experience than the pure terminal flavor.
Comment actions Permalink

It's true that PyCharm is currently targeted primarily for Web development and regular "pure Python" development. Our understanding is that the scientific community is primarily interested in open-source tools and is not particularly willing to pay for commercial software; because of that, support of scientific computing has not been a priority for us.

Having said that, the first of your requests is already possible in PyCharn: the "Execute selection in console" option is available in the context menu on a block of code, and a keyboard shortcut is available too. Displaying of variables in the console should be fairly easy to add, so it's likely that this feature will appear in a future versions. Implementing our plotting engine is not a priority at all for us, and embedding ipython's qtconsole doesn't seem to be possible because PyCharm is written in Java, and there is no built-in support for embedding Qt widgets into a Java application.

Comment actions Permalink

Dmitry, thanks a lot for your reply, and thanks a lot for the tip! I never realized this feature is available in Pycharm (it only appears in the context menu if something is selected - makes sense). This feature is very important to me so it was why I was on the borderline of buying Pycharm. I'll definitely get it now!

Regarding the scientifc community and open source, I feel that the situation might be changing. None of the open source tools have the polish of Pycharm, they all have bizarre quirks and odd things that do not work. In the end, if one has to waste half a day on a tool that has intermittent problems, a pycharm license would've paid for itself many times over. Obviously I'm biased here, but the community is growing fast and there is an absolute lack of good, polished tools. I think with a little effort Pycharm could fill this niche as well and people would pay for it. IPython qtconsole and notebook are making progress here, but I don't think they'll ever replace an IDE. That doesn't mean that they could not complement one. Perhaps it would be possible to hook up Pycharm to IPython kernels via zmq? AFAIK that is what happens in Spyder, since one can easily execute commands in any IPython kernel by sending it simple messages.

All in all, I'm finding Pycharm excellent, and I'm hoping more and more people from scientific computing will turn up as your customers!

Comment actions Permalink

Hi Dmitry,

I agree with Tom that none of the open source tools are rugged enough to sustain heavy use yet.

There is now a growing scientific community who is using python and features such as these will be widely popular.

I pretty much use the pycharm console for most things nowadays.

For e.g. I've also filed a feature request for viewing variables when you run Pycharm console without the debug mode.



Please sign in to leave a comment.