XD blog

blog page


2015-01-20 Download a file from Dropbox with Python

It is tempting to do everything from a IPython notebook such as downloading a file from DropBox. On the web interface, when a user click on a file, a button Download shows up. A second click on this button and the file will be downloaded it. To retrieve the file from a notebook, the url of the page which contains the button but it is close from the good one. This leads to the following example:

url = "https://www.dropbox.com/[something]/[filename]?dl=1"  # dl=1 is important
import urllib.request
u = urllib.request.urlopen(url)
data = u.read()
u.close()

with open([filename], "wb") as f :
    f.write(data)

It first downloads the data as bytes and then stores everything into a file.

2015-01-19 Install a Python module with Wheel

Wheel is going to be the new way to install modules with Python. According to pythonwheels.com, many packages are already available and the site Unofficial Windows Binaries for Python Extension Packages already proposes modules in wheel format.

Windows and Linux works the same way now. It requires to install wheel first:

pip install wheel

The next step consists in downloading a wheel file .whl. An example with pandas:

pip install pandas-0.15.2-cp27-none-win_amd64.whl

2015-01-15 Projets informatiques, ENSAE 1A

Liste des sujets suggérés. Le hors piste est encouragé.

2015-01-14 Grève des médecins, logiciels et économie

La grève des médecins fut assez singulière. D'après ce que j'en ai compris, les arguments ne portaient pas sur le bien-fondé de la loi mais sur son application. Gérer la complexité du système de remboursement a un coût principalement informatique. Les pharmaciens ont investi dans des ordinateurs, des logiciels. Mais ce qui envisageable à leur niveau ne l'est plus pour un médecin qui devrait dans le pire des cas gérer manuellement les interactions entre les différents acteurs pour être rétribué. A priori, les transferts d'argent ne devraient pas changer pour les différents acteurs. Malgré tout, les délais changent, le patient n'est plus celui qui avance l'argent, celui qui prend à sa charge les défauts du système ou ses bugs n'est plus le même, le travail d'intendance comme le fait de contacter la mutuelle change de main. Je suppose que le législateur a jugé ces coûts (prêt d'argent, intendance) suffisamment élevés pour justifier une redistribution plus juste de ceux-ci.

Et si une mutuelle était astreinte à rembourser un peu plus si son remboursement se faisait attendre, et s'il en était de même pour la sécurité sociale... est-ce que les délais de remboursements deviendraient suffisamment courts pour que les deux systèmes (avant et après la loi) soient plus ou moins équivalents ?

Il est probable que des sociétés proposent de faciliter la tâche des médecins afin de gérer plus efficacement le traitement des remboursements. Maintenant que celui-ci sera concentré chez les médecins et non plus dispersé chez les patients, ce marché sera plus accessible.

2015-01-01 Les temps changent

Cette photo est extraite de Bradley Cooper se prend pour Sean Connery dans Vanity Fair.

Il y a tout de même quelques différences : Bradley Cooper regarde la caméra alors que Sean Connery regarde la boule de billard. Il ne porte pas de montre et regarde probablement l'heure sur son portable. Il a une barbe de trois jours alors que Sean Connery est rasé de près. La photo est en couleur et n'a pas d'ombre. La photo a l'air légèrement retouchée. La couleur des boules est différente.

Et dans 40 ans ? Le billard sera sans doute virtuel, comme tout la scène qui sera entièrement reconstituée en 3D et qu'on aura l'impression d'avoir devant soi. L'acteur aura l'air plus jeune au même âge, la chemise sera réfrigérante car il fera plus chaud et que les vêtements seront des objets connectés s'adaptant à la situation du moment. L'acteur sera rasé de près par un robot qui le fera pour lui dans sa salle de bain. Il aura l'oeil à la fois sur les boules et la caméro grâce à des yeux légèrement modifiés pour une réalité augmentée.

2014-12-31 Précisions statistiques

On entend partout que la Terre se réchauffe et pour appuyer cette affirmation, les journalistes emploient souvent la phrase : il y aura de plus en plus d'événements dit extrêmes (canicule, pluie, tempêtes, ...) Cette phrase en soi est assez difficile à interpréter. On peut facilement affirmer que la température va dépasser 40 degrés plus souvent qu'auparavant. Mais disant cela, on dit aussi que cet événement, autrefois rare, ne le sera plus. Autrement dit, cet événement extrême au sens statistique ne le sera plus non plus bien que cette températeur soit difficile à supporter, et qu'elle soit sans doute extrême dans un sens biologique ou physique. On peut néanmoins affirmer qu'il y aura de plus en plus d'événements extrêmes au sens statistique mais cela voudrait dire un changement de distribution de ces événements (voir queues épaisses)). ce que n'indique pas la simple hausse de la température moyenne.

Après les derniers crashs aériens, on rappelle que l'avion est le moyen de transport le plus sûr. Mais comment peut on mesurer cela ? Certes, le nombre de morts par accidents de la route en France est supérieur au nombre de morts causés par les accidents d'avions. Mais le nombre de morts est-il un bon moyen de comparer les moyens de transports ? Tout le monde n'a pas pris l'avion mais presque tout le monde est monté dans une voiture. Il serait plus juste de calculer le nombre de morts pour une certaine distance parcourue : Accidentologie des transports, INFOGRAPHIE. Train, avion, voiture : quel est le transport le plus sûr ?. D'après ces chiffres, on aurait 20 fois plus de chance de mourir en voiture pour la même distance par rapport à l'avion. Toutefois, on peut considérer que la probabilité d'avoir un accident en avion est indépendante de l'âge, de l'état d'ébriété du passager (à supposer que le pilote ne boit pas). Dans une voiture, ces variables ont beaucoup plus d'importance : Les bilans annuels de la sécurité routière en France). 20% des morts en voiture sont dues à l'alcool et on peut supposer que la grande majorité des trajets sont effectués par des personnes sobres. Par quel facteur cela diminue-t-il la probabilité de mourir en voiture ? Est-ce comparable avec l'avion ?

2014-12-29 Coding goûter sans ordinateur

A partir de 7 ans :

2014-12-28 Garder un peu d'anonymat

Big Data est devenu un terme plutôt populaire ces temps-ci. Il est évoqué dans la dernière émission de Soft Power du 28 décembre. Un des thèmes abordés est l'incroyable masses de données accumulées pour une seule personne. Tout est numérisé ou en passe d'être numérisé, les passages sur les sites internet, des données de santé avec des gadgets du type jawbone, la conduite, ... On y évoque les bienfaits et les dangers que cela représente. On peut faire beaucoup de choses avec les données et certaines sont à la frontière de l'éthique. Un des moyens de prévenir les excès serait d'Ouvrir les algorithmes pour comprendre et améliorer les traitements dont nous sommes l'objet. On y découre un nouveau terme : l'obfuscation qui consiste à noyer ses vraies données dans une masse de fausses.

2014-12-21 Unit test a Flask application

It is usually quite annoying to develop a web application and to test the code by just running it and checking it produces what you expect for a given request. It would be more simple to write a function which launches the web application on a local machine and retrieves the content of a given page. That describes what a unit test could be used for.

I used Flask to do it. I hesitated to choose bottle but I needed to be able to shutdown the application by some means. I found a way for Flask faster than for Bottle. That's why I used the first one.


more...

2014-12-20 Fréquentation d'un site internet...

Google Analytics est un service qui permet d'avoir rapidement des chiffres sur la fréquentation d'un site internet. On détecte sa présence par un petit code javascript inséré à la fin du code source d'une page. J'avoue que je l'ajoute à la plupart des pages. Ca me permet de dire que l'article le plus lu de ce blog est celui qui permet de compter les couleurs d'une cellule Excel. Lu n'est probablement pas le bon terme puisque beaucoup de gens atterrissent sur cette page et repartent. Combien... difficile à dire. Et puis, le site est aspiré par des robots... Que fait Google de ces données ? Difficile à dire. Même le site de l'Elysee l'utilise.

2014-12-19 Example in C# and unions of enumerables

I often how to compute the concatenation of several lists in C# using Linq.

var iterator = new List<List<string>> () ... ;
var union = iterator.Aggregate( (a,b) => a.Concat(b) ) ;  // enumerate on strings

And if you are looking to a page easy which gives you many examples, that should be this one: 101 LINQ Samples.

2014-12-15 Convert a notebook into HTML from a notebook and others tricks

The notebook Convert a notebook into a document explains how to convert a notebook into a HTML page from the notebook itself. It also gives two others tricks: how to get the notebook filename and how to create a link to a local file. The second trick is quite interesting for those who use a remote notebook. It is easy to write code to download data from the notebook. The data will be placed on the remote machine. Once you've played with it, you usually get results or others data. But if the only access to this machine is through a notebook, you can add a link to this local data instead of upload this data somewhere on the cloud or a website. See also FileLink.

Some others unrelated tricks. I tried in the following notebook the new version of matplotlib which allows zoomable graphs in a notebook: Graphe zoomable avec Matplotlib (French). I still prefer mpl3d.

2014-12-13 On fait la même chose pour des sciences abstraites ?

Méfiez-vous, quand on commence, on ne s'arrête plus : ExperimentBoy. Un peu moins drôle mais tout aussi prenant : La malédiction de la tartine beurrée. Et en math : Aux sources du zéro.

2014-12-07 A few tricks with matplotlib

On Windows, matplotlib crashes sometimes. I found this explanation and it worked for me. matplotlib crashing Python

plt.close('all')

The latest version 1.4.2 enables zooming in notebook: The nbagg backend. See also ipython notebook on linux VM running matplotlib interactive with nbagg.

Last trick: ggplot style with matplotlib.

import matplotlib.pyplot as plt
plt.style.use('ggplot')

2014-12-06 Build automation with Jenkins

For the past two months, I updated many times my website. I automated many things but it still takes a while. And my laptop needs to remain opens until it completes. I finally took the decision to spend some time on Jenkins. I use it to compile the documentation of my python modules, to run the unit tests, and maybe publish it to my website. Basically, you can run a command line batch by just clicking and receive an email when it is over or if it has failed. One interesting feature is the possibility to chain the commands. If the commands n succeeds, go to command n+1. You can connect it to GitHub or any source repository. It will update your clone just before building.

It takes less than an hour to install Jenkins, install the necessary plugins and creates the first job. I had difficulties because I was running my python script from a batch command file. The script was not stopping even after Python raised an exception. To do that, the following line must be inserted:

%pythonexe% -u setup.py unittests
if %errorlevel% neq 0 exit /b %errorlevel%

Jenkins is more than a scheduler, it handles security, it can run a script on a different machine.


<-- -->

Xavier Dupré