XD blog

blog page

2014-08


2014-08-27 Manipulate Data Cubes in Python

I used to work on Lotus Improv to compute predictions based on retirement systems. The mortality table was modelled as a data cube. The software was quite intuitive and easy to use. It was just a cube, a way to visualize data aggregations and formulas to populate cells beyond the current date (= the prediction). When I looked for a replacement for this software, I was surprised to discover many dead initiatives included Improv itself. I guess not so many people need that kind of functionalities even though some people find it very useful. One possible replacement (and still alive) is Quantrix. But to avoid the same end of many other softwares, the tool provides many more functionalities other than just being able to visualize the data. I was curious to see if somebody started something with Python. I found cubes and cubesviewer. I did not try yet but I'll keep that in mind.

2014-08-26 string.format

It is just a trick about reducing the number of parameters to send to function format. Let's assume we have a class like the following:

class Entity:
    def __init__(self, name, city):
        self.name = name
        self.city = city
school = Entity("ENSAE", "Paris")

And we want to build a string like the following:

message = "school:{0} city:{1}".format(school.name, school.city)
# two parameters

But it could be rewritten as:

# one parameter
message = "school:{0.name} city:{0.city}".format(school)

2014-08-24 Graphiques avec Python, R

R reste la référence en matière de statistiques mais pour tout un tas de raisons, je choisis Python dès que je peux. Je travaille beaucoup avec les notebooks que je trouve très agréables, plutôt robustes et simples à partager. Je me suis penché sur les graphiques en Python, matplotlib, des cartes et des graphiques interactifs qui s'intègrent particulièrement bien avec les notebooks : visualisation des données. Et si Python ne suffit pas, il est facile de revenir à R dans les notebooks avec rmagic que je trouve plus faciles à utiliser que shiny ou knitr - les notebooks sous R. Voici un notebook mêlant R et Python : Rmagic Functions Extension.

2014-08-20 Python, Annotation, Type Checking, mypy

Python is interpreted at runtime. Variables types are discovered during the execution. That is also why it is so slow. It is difficult to anticipate what the type of variable will be even though projects such as pypy or nuitka aims at compiling a python script by doing so. They must do type infering. Python 3 has introduced a nice feature which helps doing that: function annotations. It specifies a static type to the parameters and/or the returned result. By doing this, it is easier to check types at runtime (with module typecheck-decorator):


more...

2014-08-19 Diversité et optimisation

J'ai passé quelques jours au bord de la mer et j'ai inévitablement mangé des huîtres. Il y a quelques années, ces huîtres d'été étaient laiteuses. Je devais être un des rares à les apprécier car elles ne le sont plus depuis 10 ans. Bien que je les aime moins, il y a 10 ans, il était plus avantageux économiquement de les remplacer par des huîtres non laiteuses : Huîtres en voie d'extinction, La surmortalité des coquillages inquiète les producteurs, Les éleveurs d'huîtres et de moules crient leur désarroi. La nouvelle huître grandit également en deux ans au lieu de quatre pour la diploïde. Mais si son taux de mortalité dépasse les 50% par rapport à celui de l'autre espèce, cet avantage disparaît et c'est bien ce qui est en train de se produire. La nouvelle huître est triploïde et ne peut plus se reproduire seul. La reproduction en écloserie a sans aucun doute réduit la diversité génétique des huîtres et leur capacité à trouver une parade à toute nouvelle agression. Tout s'est passé en dix ans, de quoi garder le souvenir de l'ancienne façon de faire et de retrouver la cause.

Inventer une nouvelle huître n'était sans doute pas la seule façon de contourner le problème de l'huître laiteuse. On aurait peut-être pu réinventer la façon de les manger. Il n'y a finalement qu'une idée qui est restée. C'est peut-être aussi notre façon de fonctionner que nous devrions ajuster : ne pas jeter toutes nos idées pour ne garder que la meilleure. C'est peut-être l'appauvrissement de notre imagination que nous aurions à subir.

2014-08-09 L'informatique et Wikipedia

Je référence souvent Wikipedia dans mes cours, le plus souvent possible la page française quand elle existe mais force est de constater qu'elle n'existe pas toujours. C'est le cas de celui-ci Longest increasing subsequence qui est un problème classique mais pas si évident que cela (voir plus grande séquence croissante). Il faudrait que je regarde de façon statistique quels sont les domaines les mieux représentés selon les différentes langues. De mémoire, il existe toujours une version anglaise, sans doute parce que cette langue est devenue la langue scientifique. En ce qui concerne les algorithmes, les pages françaises sont souvent moins fournies, et on voit plus souvent des versions russes ou polonaises : Reservoir Sampling, Johnson's algorithm. Travaillant pour une multinationale, je constate que les ingénieurs des pays de l'Est découvrent beaucoup plus tôt l'informatique et sont plus cultivés dans ce domaine. Les deux faits sont-ils liés ?

2014-08-05 Custom completion for IPython

Autocompletion is a nice feature quite useful when typing very long names. It is implemented by modules such as IPython, bpython or DreamPie. I'm quite a big fan of a the first one, the notebooks to be precise. However, it did not seem quite easy to add my custom autocompletion. I tried some search queries but I was only able to find Integrating your objects with IPython or IPEP 11: Tab Completion System Refactor.


more...

2014-08-03 Customize IPython notebooks

If you want to customize your notebooks and finds a style which suits you better, you can look into these links and try one of these options:

2014-08-01 Un livre sur Javascript

Je suis tombé là-dessus aujourd'hui : Eloquent JavaScript. Pas mal du tout.


Xavier Dupré