Python

Factoriel et log factoriel

Factoriel: Quand vous avez besoin de calculer n!, il existe plusieurs solutions:  La solution "rapide": qui utilise une boucle ou une fonction récursive:  def factorial_for(n): r = 1 for i in range(2, n + 1): r *= i return(r) def factorial_rec(n): if n > 1: return(n * factorial_rec(n - 1)) else: return(1) Ici, la multiplication séquentielle de chaque nombre va générer un nombre très grand très rapidement, ce qui n'est pas optimum. En effet, les ordinateurs sont plus rapides quand ils multiplient [...]

By |2017-04-29T17:06:29+00:0019 février 2016|Categories: Performance, Python|Tags: |0 Commentaires

Création de données génomiques synthétiques

L'application de méthodes statistiques forme une grande partie de la bio-informatique. En plus de méthodes classiques, certaines techniques d'apprentissage machine (notamment, des techniques de clustering telles k-means) sont aussi régulièrement appliquées sur des données cliniques et biologiques. Quelques-unes de ces techniques telles les réseaux de neurones ont récemment connu un grand succès en reconnaissance d'images et traitement du langage naturel. Malheureusement, ces techniques performent mal sur de petits jeux de données ayant un grand nombre de dimensions, un type de jeux de données fréquemment rencontré à la plateforme. L'introduction [...]

By |2017-04-29T23:02:12+00:007 janvier 2016|Categories: Bioinformatique, Python|Tags: , |0 Commentaires

[python] itérateur vs générateur

En python, nous retrouvons les concepts d'itérateurs et de générateurs. Vous utilisez sûrement déjà les itérateurs couramment sans même savoir comment les nommer. C'est important de savoir que ces deux concepts existent, car ils ont des répercussions différentes au niveau de la mémoire. Pour les petits programmes qui traitent de petits jeux de données, pas de problème. Mais pour les gros jeux de données, c'est autre chose. Que sont-ils au juste? Les itérateurs Quand vous parcourez les éléments d'une liste un [...]

By |2017-04-29T17:11:30+00:0018 septembre 2015|Categories: Performance, Python|0 Commentaires

Paramètres mutables par défaut en Python

Récemment, tout en débogant un morceau de code Python à la plateforme, nous sommes tombés sur une particularité du langage Python. Prenons cette fonction comme exemple : def foo(bar=[]):     bar.append('a') return bar Intuitivement, ce morceau de code peut sembler retourner la liste ['a'] à chaque appel de la fonction foo(). Mais ce n'est pas le cas: >>>foo() ['a'] >>>foo() ['a','a'] >>>foo() ['a','a','a'] Comme nous pouvons le constater, la liste n'est pas réinitialisée mais conserve plutôt ses valeurs auxquelles on ajoute un [...]

By |2017-05-01T09:55:20+00:007 août 2015|Categories: Python|0 Commentaires

Faites travailler vos CPUs !

Si vous êtes comme moi, vous avez sûrement réalisé que, par défaut, les scripts python que l'on écrit n'utilisent qu'une portion de la puissance computationnelle à notre disposition.. Vous vous êtes sûrement dit: J'ai pourtant payé une somme rondelette pour un CPU à 4 coeurs ! Mais qu'est-ce qui se passe ? Bien que la plupart des CPUs modernes comportent plusieurs coeurs, le code que l'on écrit doit aussi être formatté adéquatement afin d'en tirer pleinement avantage. Alors explorons ensemble [...]

By |2017-04-12T12:00:21+00:0012 juillet 2015|Categories: Performance, Python|Tags: |0 Commentaires
Go to Top