RSSAmplifier

Blog

Cyrille Rossant

cyrille.rossant.netRSS feed ↗49 posts

Latest posts

PyKidos, Teach Your Kid Python In The Browser

PyKidos is a minimal web application I built in a few days to teach my 8-year-old basic programming concepts using Python.

New book on the scientific controversy surrounding Shaken Baby Syndrome

I'm delighted to present the book I've been working on for the past few years with several colleagues, which is just being published by Cambridge University Press : Shaken Baby Syndrome: Investigating the Abusive Head Trauma Controversy .

New paper on the scientific reliability of confessions of SBS/AHT

Chris Brook and I have just published an article in Forensic Science International: Synergy presenting the results of a survey of parents and caretakers who claim to have been wrongly accused of child abuse after a medical determination of shaken baby syndrome/abusive head trauma (SBS/AHT).

An Introduction to the Scientific Controversy over Shaken Baby Syndrome

The scientific controversy over the so-called Shaken Baby Syndrome (SBS) (also known, with a few key differences indicated later, as Abusive Head Trauma, AHT ) is a rich and highly complex multifaceted topic. It involves a wide range of academic disciplines: pediatrics, neonatology, obstetrics, neurology, neuropathology, radiology, hematology, evidence-based medicine, biomechanics, statistics,…

Datoviz: ultra-fast GPU scientific visualization with Vulkan

I'm excited to present the project I've been working on at the International Brain Laboratory (IBL) . Datoviz is an early-stage open-source high-performance GPU scientific visualization library based on Vulkan , the Khronos cross-platform low-level graphics API, which is 5 years old today! Datoviz aims at providing a unified, language-agnostic platform for interactive visualization in both 2D and…

Joining the International Brain Laboratory

I have joined the International Brain Laboratory , a virtual laboratory gathering 21 neuroscience teams around the world. Half of the researchers are experimentalists, collecting data in the same experimental conditions, while the other half are theoreticians, analyzing the data. I'm working on the data architecture group allowing experimenters to organize and store their data, and theoreticians…

Writing the IPython Cookbook, Second Edition

I'm pleased to announce the release of the IPython Cookbook, Second Edition , more than three years after the first edition. All 100+ recipes have been updated to the latest versions of Python, IPython, Jupyter, and all of the scientific packages. There are a few new recipes introducing recent libraries such as Dask , Altair , and JupyterLab . As usual, all of the code is available on GitHub as…

New paper in Nature

We've just published Fully integrated silicon probes for high-density recording of neural activity in Nature. The paper (signed by 35 authors) describes the results of a large research project involving the Allen Institute, University College London, HHMI's Janelia Research Campus, and imec, a nanoelectronics research center in Belgium.

Hiring a scientific developer

Update : the position has been filled. We're looking for an outstanding Python programmer to help us develop data sharing platforms and software for neuroscience data. This is a large collaboration between ~50 neuroscientists from 20 labs around the world.

New paper in Nature Neuroscience

We published a new paper in Nature Neuroscience about our spike sorting method. This paper is accompanied by an open source software suite named klusta , which includes automatic and manual programs for extracting spikes from large multielectrode recordings.

Setting up a blog with Pelican and GitHub Pages

I describe how I set up my static blog/website in Python with Pelican , pandoc , Docker , Dockerhub , GitHub pages , and Travis CI .

Should you use HDF5?

This is a follow-up on my post Moving away from HDF5 (see also Konrad Hinsen's post , and discussions on Twitter and Hacker News ). Here are some further thoughts, in no particular order.

Moving away from HDF5

Update [2016-01-30]: I wrote a follow-up here In the research lab where I work, we've been developing a data processing pipeline for several years. This includes not only a program but also a new file format based on HDF5 for a specific type of data. While the choice of HDF5 was looking compelling on paper, we found many issues with it. Recently, despite the high costs, we decided to abandon this…

New year

I didn't write a lot lately: only 2 posts in 2015! I'll try to do better this year: more and shorter posts about programming, technology, and science. There's no shortage of topics to discuss. Happy New Year.

A compiler infrastructure for data visualization

There are many data visualization tools out there. Yet, I believe we're still lacking a robust, scalable, and cross-platform visualization toolkit that can handle today's massive datasets. Most existing tools target simple plots with a few hundreds or thousands of points: bar plots, scatter plots, histograms and the like. Typically, these figures represent aggregated statistical quantities. Maps…

NumPy in the browser: proof of concept with Numba, LLVM, and emscripten

It's been a while since I wanted to try to bring some of NumPy to the browser. I've already discussed the motivations for this in a previous post last year . As far as I'm concerned, the main use case would be to enable interactive data visualization in offline notebooks (including nbviewer), which often require client-based array operations for interactivity. In this post, I'll describe a…

Big Data visualization with WebGL, part 2: VisPy

In this post series, I'm describing the big data visualization platform I'm currently developing with WebGL. I'll detail in this second post the VisPy library which is the basis of the project.

Writing the IPython Cookbook

My latest book was released a few weeks ago. This project has been one of the most challenging projects I've ever done, and not necessarily for the reasons I would have originally thought. Here is a little story of those fifteen months writing the IPython cookbook.

Big Data visualization with WebGL, part 1: Overview

In this post series, I'll talk about the big data visualization platform I'm currently developing with WebGL. I'll give in this first post the main motivations for this project. The next posts will contain the technical details.

IPython Cookbook released

My new book, IPython Interactive Computing and Visualization Cookbook , has just been released! A sequel to my previous beginner-level book on Python for data analysis , this new 500-page book is a complete advanced-level guide to Python for data science . The 100+ recipes cover not only interactive and high-performance computing topics, but also data science methods in statistics, data mining,…

New blog

I finally took the time to update my Wordpress blog and make it static. Having a PHP-based website in 2014 felt archaic. The new site is generated with Pelican , a great Python-based static blog generator.

Why you should move to Python 3 – now

I started to learn Python in 2008. The same year, Python 3 was released. Yet, almost six years later, I'm still using Python 2. Like the vast majority of scientific Python programmers, apparently . But now is the time for me to move to Python 3. You should too. Here's why.

Open Data Hackathon: road accidents

I've participated at an Open Data hackathon organized by the French Minister of the Interior and several open data institutions. Together with Rue89 journalists and an OCTO Web developer, we created in two days an interactive map of all 62,000 road accidents in France in 2012 . We used a very rich dataset released by the Minister of the Interior and Etalab.

Scientific Python in the Browser: it's coming!

There is currently a manifest trend in the scientific Python ecosystem: Python is slowly but surely coming to the browser. It's a real challenge, but we're getting there. In this post, I want to give an overview of where we are, and where we're headed.

Back from our first Vispy code camp at ESRF

We had our first official Vispy Code Camp this week. I and the other core developers of Vispy were kindly invited by the European Synchrotron Radiation Facility . We presented our young library to software engineers from the ESRF and other European synchrotron facilities. It was also the occasion for us to make a gentle introduction to modern OpenGL, as many attendees didn't have experience in…

What's wrong with scientific Python?

tl;dr: Although not perfect, Python is today one of the best platforms for scientific computing. It's getting even better everyday thanks to the amazing work of a vibrant and growing community. I reviewed Python's strengths in a previous post . Here, I cover the more sensitive issue of its weaknesses.

Why use Python for scientific computing?

Why use Python for scientific computing? This is a legitimate question. For us, regular Python users, using Python is so natural that we sometimes forget that this choice is not obvious for everyone. Matlab is very widely used in some communities (e.g. experimental biologists) and choosing a different platform requires extensive proselytism. We need to find the right words to convince people that…

Start an IPython notebook server in Windows Explorer

When one starts using the IPython notebook seriously, there is often the need to open a server in the current directory to open or create a new notebook. Whereas this is straightforward on Unix systems (e.g. ipython notebook --pylab inline ) since users typically use mainly the command-line, it is a bit more cumbersome from the graphical Windows Explorer. One needs to open a console, go in the…

Create a standalone Windows installer for your Python application

I am developing a scientific application in Python with a graphical user interface in Qt . Some end-users use OS X or Linux, but most of them are Windows users who are not familiar with Python or with a command-line interface. It is notoriously difficult to distribute Python applications to end-users who are not programmers, and it's a common criticism that is made against Python.

Vélib' Open Data

Vélib' , the public bicycle sharing system in Paris. I've written a short IPython notebook to play with some of the data, and to illustrate how easy it is to use Python for browsing and analyzing public data sets. Here is an image representing the stations in Paris, with the marker size proportional to the number of bike stands in each station, and the color indicating how many available stands…

IPython mini-book: Learning IPython for Interactive Computing and Data Visualization

I'm glad to present my new book, Learning IPython for Interactive Computing and Data Visualization , Packt Publishing. This book is a beginner-level introduction to IPython for interactive Python programming, high-performance numerical computing, and data visualization. It assumes nothing more than familiarity with Python. It targets developers, students, teachers, hobbyists who know Python a bit,…

The BRAIN initiative

The Brain Research through Advancing Innovative Neurotechnologies initiative has been officially unveiled on April 2, 2013 by the President Obama . There had been quite excitement and interrogations in the few weeks before as the President had mentioned a large-scale research project about the brain in his State of the Union . Very few details were given before the official announcement, and it…

Hardware-accelerated interactive data visualization in Python

There have been several interesting discussions recently about the future of visualization in Python. Jake Vanderplas wrote a detailled post about the current state-of-the-art of visualization software in Python . Michael Droettboom , one of the Matplotlib's core developers, consequently wrote about the future challenges Matplotlib will need to tackle . Matplotlib has been designed more than ten…

Playing with Ruzzle in Python

Ruzzle is becoming a popular game on smartphones and tablets. Inspired by Boggle, it consists in finding as many words as possible in a grid of 4x4 letters. Here I'll show how one can easily generate and resolve grids automatically in Python.

NumPy performance tricks

I've been using NumPy for nearly five years, but I'm still learning performance tricks. The reason is that I currently need to deal with very large arrays (hundreds of millions of elements) and the performance of my code started to be disappointing. Then, through extensive line-by-line profiling, I discovered some subtleties that explain why some seemingly harmless lines of code can actually lead…

Twelve Tips about Starting a New Open-Source Project

Here are some tips targeting developers who want to create an open-source project. They reflect my personal opinion and may not be all adapted to every situation.

Galry's Story, or the quest of multi-million plots

About a month ago, I announced here the availability of a new experimental high performance visualization package in Python that I'm developing as part of my current research project. It has significantly evolved since then, but it is still experimental. Moreover, the interface is still not ready for a 0.1 release. I also need to do much more tests on various systems and graphics cards. In this…

The Power of Shaders in Real-Time Graphics Programming

I've been programming in OpenGL for a few months. Like a lot of programmers, I learnt the language by myself, thanks to various tutorials, books or e-books on the subject. One couldn't say there's a lack of resources on this 20-years old language since it's so widely used throughout the world. Yet, I was surprised to discover a few weeks ago that the vast majority of what I learnt has been…

Introducing Galry, a high-performance interactive 2D visualization Python package

I'm releasing today the code of a first experimental version of Galry, a high-performance interactive 2D visualization Python package that I'm creating as part of my current research project.

Profiling and optimizing Python code

Premature optimization is the root of all evil. Donald Knuth There are two opposite directions a programmer can take when writing a piece of software: coming up with an elegant software design or with an heavily optimized code. A good design leads to better readability and maintenance, often at the expense of pure performance. Conversely, highly optimized code tends to be more difficult to read,…

Making PyQt4, PySide and IPython work together

PyQt and PySide are two independent Python libraries allowing access to the Qt framework . PyQt is maintained by the British firm Riverbank Computing , whereas PySide is developed by Qt developers from Nokia . PySide was created by Nokia in 2009 after they "failed to reach an agreement with PyQt developers to change its licensing terms to include LGPL as an alternative license" ( quoting Wikipedia…

A tutorial on OpenGL/OpenCL interoperability in Python

In the last two posts, I've shown how to use OpenCL for GPGPU , and OpenGL for graphics rendering , with Python. Here I'll show how both OpenCL and OpenGL can be used at the same time with Python. It's called OpenCL-OpenGL interoperability. What is it about?

2D graphics rendering tutorial with PyOpenGL

UPDATE : you may be interested in the Vispy library, which provides easier and more Pythonic access to OpenGL. OpenGL is a widely used open and cross-platform library for real-time 3D graphics, developed more than twenty years ago. It provides a low-level API that allows the developer to access the graphics hardware in an uniform way. It is the platform of choice when developing complex 2D or 3D…

A PyOpenCL tutorial on Windows with or without a GPU

I've been using CUDA and PyCUDA as GPGPU platforms for a few years now. They enable access to the incredible computational power of graphics cards through a simple C-like language. A recent Nvidia graphics card is nevertheless required in order to execute CUDA code. Some computers may not include a Nvidia GPU, but rather an AMD/ATI card or even an integrated graphics processor. Those computers…

A mathematical proof that our world is in three dimensions

Everyone knows that our world is three-dimensional. It seems indeed obvious that there are three independent spatial directions, no less, no more. But can we really be sure? After all, everything we know about our world comes from our senses and from what our brains interprete. Does the fact that we see in 3D really proves that the world is in 3D? Can we have a mathematical proof, based on…

Fréquence des prénoms des candidats au bac 2012

Je poursuis mon analyse des prénoms des candidats au bac cette année (voir billet précédent ) en m'intéressant cette fois à la fréquence des différents prénoms portés par les candidats, indépendamment de leurs résultats. Les 346 581 candidats portent 18 473 prénoms différents. Le prénom le plus porté est Camille avec 4 848 candidats. Voici les quelques prénoms les plus utilisés, représentatifs des…

Prénoms et réussite au bac

Le sociologue Baptiste Coulmont, auteur de Sociologie des prénoms , s'est intéressé aux corrélations entre le prénom des candidats au baccalauréat 2012 et leur réussite à cet examen ( voir ici pour l'étude originale sur le blog de l'auteur ). Ce travail a été largement relayé par les médias , car les résultats sont particulièrement intéressants. Il s'avère que certains prénoms réussissent mieux…

Introduction to Bayesian thinking

An updated version of this post can be found in the IPython Cookbook .

Build a Python IDE for Windows with Notepad++ and IPython

I've been looking for a good and free Python IDE for Windows for a long time. I first used Eclipse and Pydev , but Eclipse is a bit of a "usine à gaz" . I tried Spyder but it crashed too often and it was not flexible enough. I ended up using Notepad++ , a really fast and powerful text editor, with the great command-line interpreter IPython . Notepad++ is extremely light to use, opens within a…