biblio. informatique
BioPerl est une bibliothèque comportant un ensemble de modules Perl facilement utilisables dans des programmes ou scripts pour la manipulation et le traitement de données biologiques, plus particulièrement celles issues de la génomique, la génétique ou de l'analyse du transcriptome. Bioperl fournit des outils pour l'indexation, l'interrogation et l'extraction de banques de données publiques ou locales, des filtres pour un très grand nombre de sorties de programmes usuels en bioinformatique (blast, clustalw, hmmer, est2genome, ...) permettant ainsi de réaliser simplement des enchaînements de programmes (pipelines).
Dans le cadre du développement d'un projet d'envergure plus importante qu'un simple pipeline, bioperl offre une modélisation objet détaillée et extensible de nombreux concepts de biologie moléculaires. Il est souvent judicieux d'utiliser ou d'hériter de ces classes pour modéliser un problème, car il est souvent préférable d'utiliser des méthodes efficaces et souvent largement testées plutôt que de les réécrire.
L'utilisation de Bioperl permet une très haute intéropérabilité, car la bibliothèque propose un modèle de données standardisé permettant de stocker des données hétérogènes provenant de nombreuses sources. A l'aide de bioperl, il est par exemple possible de modéliser de manière identique des gènes prédits à partir de différents prédicteurs, ou extraits de différentes bases de données. L'utilisation de cette couche métier standardisée est très pratique pour lire des données provenant de différentes sources et les récrire dans d'autres formats spécifiques afin de les soumettre à de nouveaux programmes.
Le contexte d'utilisation de BioPerl est très large. On peut utiliser Bioperl dans des simples scripts pour extraire de l'information de banques de données ou analyser des résultats d'un programme, d'enchaînement de programmes (pipeline) ou pour des projets plus complexes nécessitant de la modélisation de données biologiques.
Voici un exemple qui en illustre quelques fonctionnalités :
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
# 1. Extraction directe des données de genbank grâce au serveur Entrez et formattage au format fasta
# Recuperation des donnees au NCBI
my $gb = Bio::DB::GenBank->new() ;
# la requete Entrez (voir http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=help... ) pour plus details
# Ici on recherche les proteines d'un organisme, on a par exemple la requete suivante : CIONA[ORGN] pour recuperer les sequences de ciona*
my $querystr = $org.'[ORGN]';
# On recherche parmi la banque protein
my $query = Bio::DB::Query::GenBank->new
( -query => $querystr,
-db => 'protein'
) ;
# On recupere un objet Bio::SeqIO
my $seqio = $gb->get_Stream_by_query($query) ;
# Création d'un objet Bio::SeqIO de type fasta
my $fasta=Bio::SeqIO(-file => 'ciona.fa', -format => 'fasta');
# Ecriture du fichier fasta et stockage des séquences dans un tableau
my @prots=(); # tableau contenant un ensemble de sequences proteiques
while (my $seq = $seqio->next_seq()){
$fasta->write_seq($seq);
push @prots, $seq;
}
# 2. Lecture et filtre d'un fichier de blast, on utilise ici un blast installé localement et des banques formatées et installées localement
my $blastrun = Bio::Tools::Run::StandAloneBlast->new(program =>"blastp", database =>"uniprot", e => "1e-05");
my $blast_report = $blastrun->blastall (\@prots);
# $blast_report est un Bio::SearchIO il peut être facilement parcouru
while ( my $result = $blast_report->next_result() ) {
while( my $hit = $result->next_hit ) {
while( my $hsp = $hit->next_hsp ) {
if ($hsp->frac_identical > 0.75) {
print join "\t", $result->query_name(), $hit->name() "\n";
}
}
}
}
Bien que bioperl offre quelques scripts pour réaliser des tâches courantes, son intérêt réside surtout dans son utilisation pour réaliser des scripts, pipelines ou projets spécifiques et sophistiqués. Dans ce dernier cas, l'utilisation de bioperl s'adressera plus particulièrement à des développeurs familiers de la programmation objet en perl. En raison de la relative tolérance en programmation du langage Perl, la réutilisation de "recettes" bioperl sans une compréhension parfaite de leur fonctionnement peut engendrer des effets de bord incontrôlés fort gênants et pas forcément flagrants.
D'autre part, il arrive que les modules “parser” permettant d'analyser les sorties de programmes (par exemple certains Bio::Tools::*) ne soient pas à jour pour les versions courantes des programmes en question.
Pxxo est un ensemble de classes écrites en langage PHP. Elles servent à créer des composants graphiques (ou widgets) qui permettent de construire une page HTML comme une hiérarchie de composants plus simples. Chaque composant est une micro-application web pouvant être facilement imbriquée dans une application tierce ou même dans un autre composant.
La création de composants graphiques impose un cadre de programmation simple et efficace pour séparer la présentation et les traitements.
Pxxo propose également au travers d'un Channel PEAR des composants graphiques génériques prêts à l'emploi. On y trouve notamment un ensemble de composants graphiques permettant de construire des formulaires complexes (DatePicker, ColorPixer, Wysiwyg, Livesearch, etc...).
Pxxo est non intrusif, il peut être utilisé avec n'importe quelle application ou framework PHP.
Pxxo est utilisé à l'INIST-CNRS pour les développements WEB utilisant PHP. Il a également été utilisé au Ministère de la Culture , en complément à SPIP, pour réaliser un site sur les Corpus Oraux ( http://corpusdelaparole.culture.fr ).
Bibliothèque logicielle de simulation moléculaire :
- manipulation d'objets chimiques
- calcul d'énergies d'interaction
- dynamique moléculaire
- modes normaux
- minimisation d'énergie
- solvatation
- gestion de trajectoires
- interface à la visualisation
- parallélisme (BSP, MPI)
- interface netCDF
- géométrie (vecteurs, tenseurs, transformations, champs vectoriels et tensoriels, quaternions)
- dérivées automatiques
- interpolation linéaire en plusieurs dimensions
- polynomes et fonctions rationnelles
- statistique
- histogrammes
- conversion d'unités
- entrée/sortie en quelques formats populaires
- visualisation 3D par VRML
- widgets Tk et Qt
Les langages utilisés pour ce développement sont Python, Pyrex et C.
Le cadre des noyaux critiques constitue une base solide pour l'étude des opérateurs qui retirent un sous-ensemble d'un objet discret (et pas seulement un point simple) tout en préservant ses caractéristiques topologiques.
À partir de cette notion nous avons étudié plusieurs algorithmes de squelettisation en 2D et 3D d'un objet qui sont implantés en C et décrits dans les articles [BC06a,BC06b,BC06c] référencés au paragraphe Publications.
Nous avons également démontré que les noyaux critiques généralisent de manière non triviale toutes les notions proposées auparavant dans le même but, en particulier les notions d'ensemble non-simple minimal et de point P-simple.
La ligne de partage des eaux est l'outil fondamental de la morphologie mathématique pour la segmentation d'images. Les auteurs de ce logiciel ont proposé une définition formelle de cette notion dans les espaces discrets, qui devient dans ce contexte une transformation qui préserve une partie des caractéristiques topologiques d'une image ce qui conduit à toute une série de propriétés fondamentales qui n'avaient jamais été établies.
Afin de permettre son utilisation effective dans la pratique, on propose des algorithmes quasi-linéaires pour la ligne de partage des eaux topologique et qui sont implantés dans ce logiciel.
Lucene est un moteur de recherche libre écrit en Java qui permet d'indexer et de rechercher du texte. Ce logiciel libre de la fondation Apache permet la recherche plein texte (avec des analyseurs linguistiques) et documentaire (avec des champs adaptés à chaque type de document). Ses fonctionnalités sont nativement accessibles en java, il existe des APIs pour d'autres langages, dont : PHP, Perl, Python, Ruby... Plusieurs portages ont été fait, officiellement (C, .NET), ou pas (C++, Perl...). Lucene incluait récemment différents sous-projets tels Lucene.Net, Mahout, Solr et Nutch. Solr a été récemment fusionné avec Lucene, alors que Mahout, Nutch, et Tika sont devenus des projets indépendants.
Lucene intéresse les développeurs d'applications des bibliothèques, des archives, du secteur de l'édition numérique, de la linguistique, de l'histoire, ainsi que les bio-informaticiens qui doivent manipuler des banques de séquences biologiques.
Logiciel libre actif depuis plusieurs années, Lucene est extensible, tout en conservant une architecture simple et cohérente. On trouvera du code, de la documentation, ou des listes de diffusion, pour des concepts de la recherche plein texte généralement réservés aux spécialistes.
- Tri de pertinence selon différents algorithmes ;
- Listes de mots vides pour différentes langues ;
- Recherche floue adaptée à une langue, un type de documents ;
- Elargissement de requêtes par synonymes ;
- ...
Des projets comme Nutch ou Mahout illustrent comment exploiter différents formats de fichiers (bureautiques, pdf).
Le format des index est documenté, indépendant de l'implémentation qui les écrit et les lit. Par contre, le format d'index peut changer d'une version à l'autre, la compatibilité ascendante est toujours conservée.
Lucene se prête à l'exploitation de corpus structurés, aussi bien textes que données: par exemple (mais pas seulement) fichiers XML. Il peut être employé en application client (java : swing, eclipse...), ou web.
Au LIPM :
Lucene est utilisé pour analyser et indexer principalement des fichiers XML, contenant des données de biologie.
- Implémentation C++ (Clucene) et interface perl Lucene.pm.
- Une paire de scripts et un fichier de configuration permettent d'analyser les documents XML via des requêtes Xpath et de requêter et générer des formulaires de recherche automatiquement.
Les limitations de Lucene sont celles de ses utilisateurs (développement java, analyse documentaire, traitements linguistiques), ou celles de son modèle théorique : ni relationnel, ni hiérarchique. Ainsi, il peut souvent remplacer avec avantage une base de donnée relationnelles (SQL), du moins, tant que les relations sont surtout 1-n. Les requêtes de type numérique (tri, intervalles) ont été notablement améliorées ces deux dernières années. Pour des données fortement hiérarchisées (annuaires, thèses, inventaires d'archives), des simulations sont possibles, des outils comme LDAP, ou XQuery peuvent être plus commodes.
Getfem++ est à la base une bibliothèque d'éléments finis générique en C++ dont l'objectif est d'offrir la gamme d'éléments la plus large possible et un calcul de matrices élémentaires également le plus large possible pour l'approximation de problèmes linéaires ou non-linéaires, éventuellement en formulation mixte et éventuellement couplés. La dimension du problème est arbitraire et peut être un paramètre du problème. Getfem++ propose une description de modèles sous la forme de briques dont l'objectif est de permettre une réutilisabilité maximale des approximations réalisées. Le système de briques, maintenant arrivé à maturité, permet d'assembler des composantes telles que modèles standards (élasticité en petites et grandes déformations, problème de Helmholtz, problème elliptique scalaire ...) à des composantes représentant des conditions aux limites (Neumann, Dirichlet, Fourier-Robin, contact avec frottement ...), des composantes représentant des contraintes (incompressibilité, annulation de mouvements rigides ...) et des composantes de couplage de modèles.
Les deux points forts de Getfem++ sont la mécanique des structures (en particulier la mécanique du contact) et la prise en compte des discontinuités par des méthodes de domaines fictifs de type Xfem (fissuration par exemple).
Il est proposé trois interfaces (avec Scilab, Python et Matlab) qui permettent d'utiliser la quasi totalité des fonctionnalités du logiciel sans recourir à la programmation en c++ et qui permettent le post-traitement graphique.
Getfem++ offre une séparation complète entre les méthodes d'intégration (exactes ou approchées), les transformations géométriques (linéaires ou non) et les méthodes d'éléments finis de degré arbitraire. La bibliothèque peut faciliter l'écriture de codes éléments finis plus intégrés en la soulageant de la technicité des calculs élémentaires.
Des exemples de familles d'éléments finis disponibles sont : Pk sur des simplexes de degré et dimension arbitraire, Qk sur des parallélépipèdes, P1, P2 avec fonctions bulles, éléments d'Hermite, élément d'Argyris, HCT et FVS, les éléments avec base hiérarchique (pour méthodes multigrilles par exemple), Pk ou Qk discontinues, méthodes XFem, éléments vectoriels (RT0, Nédélec) ...
L'ajout d'une nouvelle méthode d'éléments finis est relativement facile. Une description sur l'élément de référence doit être fournie (dans la plupart des cas, il s'agit de la description des fonctions de base, et rien de plus). Des extensions sont prévues pour la description des éléments d'Hermite, polynomiaux par morceaux, non polynomiaux, les éléments vectoriels et XFem.
La bibliothèque comprend également les outils habituels pour les éléments finis tels que des procédures d'assemblage pour les équations aux dérivées partielles classiques, des méthodes d'interpolation, le calcul de normes, des opérations de maillage (y compris le raffinement automatique), gestion des conditions aux limites, le post-traitement avec des outils permettant de faire des coupes arbitraires ...
Getfem++ peut être utilisé pour construire des codes éléments finis très génériques, où les méthodes d'éléments finis, les méthodes d'intégration, la dimension du problème ne sont que des paramètres qui peuvent être modifiés très facilement, ce qui permet un large éventail d'expérimentations. De nombreux exemples sont fournis.
Getfem++ n'a qu'un mailleur expérimental intégré (maillages structurés et maillages de formes géométriques décrites à l'aide de primitives pré-définies). Il est donc souvent nécessaire d'importer des maillages. Les formats actuellement acceptés par getfem sont GID, GmSH et emc2.
Imports de maillages aux formats GID, GmSH et emc2.
Exports graphiques aux formats vtk et OpenDx.
Interfaces Python, Scilab et Matlab.
Getfem++ est tout d'abord un laboratoire de méthodes d'éléments finis qui permet de construire très rapidement de nouvelles méthodes et permet de les tester sur un champ vaste d'applications et de type d'éléments de base.
La génération de maillage pourrait être améliorée.
Très utile à l'étudiant et au chercheur, cet outil permet de collecter des références bibliographiques (par saisie manuelle ou par importation) et de pouvoir en extraire tout ou partie des références enregistrées à fin de citation ou de création de bibliographie. Il n'est plus nécessaire, alors, de mémoriser les règles d'écriture des références bibliographiques. Utilisant le format BibTeX, on retrouve dans JabRef les mêmes fonctionnalités que celles décrites par Alain Coulais dans son article sur le format BibTeX : http://www.projet-plume.org/fiche/bibtex mais JabRef offre d'autres fonctionnalités comme :
- Rechercher dans l'ensemble des données collectées avec la possibilité d'utiliser des opérateurs logiques (ET OU SAUF) ou des expressions régulières
- Mettre en place des regroupements des références selon des mots-clés ou selon d'autres champs facilitant ainsi la préparation de synthèses documentaires par exemple ou le parcours de la liste de références. Ces regroupements se matérialisent par une table des matières sur le coté gauche de l'écran
- Le document numérique peut être "attaché" à sa fiche bibliographique quel que soit son format (.doc, .pdf, .ps...)
- L'importation de références bibliographiques se fait selon différents formats disponibles (voir le paragraphe interopérabilité). Il est également possible de créer ses propres formats d'importation (dans ce cas il faut connaître un peu la programmation JAVA)
- L'exportation des références est réalisable dans différents formats : RDF, HTML, Docbook, BibTeXML, MODS, RTF, Refer/Endnote et OpenOffice.org et depuis la version 2.4.1 au format MySqL. Cela offre la possibilité de dialoguer avec d'autres outils bibliographiques comme Endnote ou Reference manager, des bases de données MySqL mais aussi d'utiliser différents traitements de texte comme Word Microsoft, Writer OpenOffice.org, LaTeX... La mise en oeuvre de format d'exports personnalisés est simple.
- Une version en ligne existe maintenant. Il est possible d'utiliser JabRef de cette manière à condition d'avoir la version "Java web Start" installée.
L'outil se personnalise :
- en ajoutant des champs qui ne sont pas des champs BibTeX (mais attention dans ce cas il faudra adapter tous les formats d'imports ou exports standards de manière à prendre en compte ces nouveaux champs). De nouveaux champs comme Patent, Standard, Electronic... ont été ajoutés dans les dernières versions de JabRef.
- en créant un vocabulaire contrôlé (par exemple pour les mots clés, ou pour les noms de revues)
- en modifiant l'interface : polices, couleurs, affichage par défaut de champs...
- en paramétrant l'ouverture d'applications externes (navigateur, traitement de texte, logiciel de lecture des fichiers pdf...)
- en créant des greffons, ce qui permet d'ajouter au logiciel des fonctions personnalisées. Un nouveau greffon (septembre 2008) permet d'utiliser Jabref avec Open Office pour insérer des citations et produire la liste des références en fin de document. Ce greffon permet de contourner la difficulté que présentait Open Office dans la création de styles bibliographiques.L'usage de la dernière version de ce greffon (v0.71) est très bien expliqué sur le site de lunatic.
- de nombreux autres greffons ont été réalisés et permettent aux développeurs qui le désirent d'ajouter différentes fonctionnalités comme de nouveaux accès à des bases de données (Science Direct est maintenant accessible), de nouveaux formats d'import, des "formateurs" pour améliorer la mise en forme des données exportées...
Les grandes bases de données comme Medline, Citeseer, IeeXplore, arXiv. JSTOR, Science-Direct.(depuis peu).. peuvent être interrogées via JabRef.
On peut partager un fichier bibliographique sur un réseau d'ordinateurs. Plusieurs utilisateurs peuvent ainsi gérer une base bibliographique commune. De nombreux correctifs à ce sujet ont été apportés.
Programmé en Java, JabRef peut tourner sur de nombreux systèmes d'exploitation
Les fichiers sont des fichiers au format BibTeX. Les informations bibliographiques sont donc en ASCII, modifiables par tout éditeur de texte disponible. Ce format est commun à bon nombre de logiciels bibliographiques. L'échange d'informations avec d'autres outils bibliographiques comme End-Note, Reference Manager, Biblioscape... s'effectue à l'aide des fonctions d'import ou d'export. Il est possible de développer ses propres formats d'imports ou d'exports mais la connaissance de la programmation JAVA est nécessaire.
En import, JabRef peut lire les formats RIS, BibTeXML, Biblioscape, Biomail, CSA, Copac, Inspec, ISI, JSTOR (tabulé), Refer/Endnote, Scifinder, Silverplatter, Medline... Un greffon permet aux développeurs d'intégrer plus facilement des formats d'import.
JabRef accompagne tous les travaux qui nécessitent l'usage des recherches documentaires et des travaux bibliographiques. Compte tenu de la simplicité d'installation et d'utilisation, de son interopérabilité, de la possibilité d'avoir une interface en différentes langues ( à ce jour anglais, français, allemand, italien, hollandais, norvégien, polonais, danois, turc, chinois simplifié), cet outil joue un rôle très important dans un laboratoire de recherche.
Les bibliographies constituées par chaque étudiant, chaque chercheur, peuvent être capitalisées, échangées, enrichies, retravaillées de multiples façons. En particulier la fonctionnalité de regroupement selon des mots clés ou autres champs prend tout son sens lorsque l'on travaille sur un corpus bibliographique sur une longue période avec différents chercheurs.
Enfin, JabRef est l'outil idéal pour gérer l'ensemble des documents numériques se trouvant sur le disque dur de l'utilisateur et transforme ainsi tout disque dur en bibliothèque numérique personnelle.
JabRef a été utilisé pour produire la bibliographie générale du rapport quadriennal demandé par notre tutelle (CNRS). Nous avons utilisé en mot-clés les catégories de documents selon les préconisations de l'AERES. Nous avons ensuite modifié notre export au format rtf (pour travailler avec le logiciel Word) en utilisant la possibilité de grouper les exports en fonction de chaque mot-clé.