UNIX-like
Timesquare est un solver de contraintes écrites en CCSL, un langage permettant de manipuler le temps logique polychrone. La résolution des contraintes fournit une trace sur laquelle il est possible de brancher des "back-end". Les "back-end" permettent de s'abonner aux différents événements de la spécification dans le but de faire un traitement spécifique. Timesquare fournit un ensemble de back-ends existants dont :
- création d'un timing-diagram (VCD)
- animation d'un diagramme UML Papyrus
- exécution de code java
- analyse de power
- ...
Interopérabilité
Le format d'entrée est spécifique (CCSL). Il y a de fortes corrélations avec le profil MARTE et en particulier le modèle de temps (CCSL ayant été introduit en annexe de la spécification officielle de MARTE). Le format de la trace de sortie a été utilisé dans le projet RT-Simex. Il permet de générer une trace en VCD (IEEE Standard 1364-1995). Il existe également des travaux qui décrivent la traduction d'une spécification CCSL en logique temporelle et vers le langage polychrone Signal.
Environnement du logiciel
Le logiciel tourne dans le RCP Eclipse (version Indigo).
Autres logiciels aux fonctionnalités équivalentes
Il existe des liens avec signal polychrony.
Documentation utilisateur
Voir sur http://timesquare.inria.fr
Contributions
Un projet existe sur gforge.inria.fr mais il n'est pour l'instant pas public et les contributions se font sur demande.
Les chercheurs passent un temps considérable à réaliser des figures pour leurs communications scientifiques (présentations orales, publications dans des revues scientifiques, ...). Pour réaliser cette tâche, ils utilisent le plus souvent des logiciels conçus pour des graphistes qui ne sont pas adaptés à la création de figures "scientifiques".
ScientiFig, au contraire, est dédié spécifiquement à la production de figures formatées pour la recherche. C'est un plugin de FIJI/ImageJ et/ou un standalone, les trois utilisations sont possibles. Il permet d'assembler de manière cohérente des panneaux d'images de même tailles ou de tailles différentes, de leur associer une barre d'échelle et des annotations dont la position est préservée même lorsque l'utilisateur change la taille de la figure. ScientiFig peut exporter les figures générées au format png avec un fond transparent pour une meilleure intégration dans les documents bureautique ou au format vectoriel (pour être finalisé dans un éditeur d'images vectorielles). ScientiFig permet enfin de formater des figures pour différents journaux (il est aussi possible de créer, avec l'éditeur intégré, un nouveau style si le journal qui vous intéresse est absent), il suggère une taille de figure compatible avec le journal, le remplacement des polices non conformes, ...
On peut citer à titre de comparaison ces logiciels alternatifs :
Talend Open Studio for Data Integration est une solution d’intégration de données open source flexible et puissante. C'est un ETL (Extract Transform Load) open source basé sur Eclipse.
Il permet d'interagir avec les données de votre Système d'Information, les intégrer, les mettre en forme, les transformer, ...
L'interface générale vous permet de créer des "jobs" qui contiendront le workflow voulu, un workflow étant un ensemble d'activités qui s’enchaînent via l'utilisation de "composants". Comme dans un système standard d'entrée / sortie, vous avez des composants en entrée (input) et en sortie (output) qui vous permettent d'obtenir le résultat voulu (export CSV, envoi d'email pour indiquer les erreurs le cas échéant, etc). Ces composants s'interfacent entre eux via un ensemble d'"interactions" (linéaire, en cas d'erreur, en parallèle).
Un exemple typique est le fait de vouloir alimenter une base de données à partir d'autres bases tout en adaptant les données à votre convenance. Pour ce faire, vous créez un ou plusieurs "jobs", puis des composants d'entrée de base de données (tMysqlInput
par exemple), puis vous récupérez le contenu de la table désirée pour laquelle vous transformez vos données (par exemple, passer d'un champ texte vers un champ date) via un composant de type tMap
dont le résultat en sortie alimentera une autre base de données (tPostgresqlOutput
par exemple).
Une fois terminé, il ne vous reste plus qu'à exécuter le job soit en mode débogage soit en mode normal, ce dernier étant évidemment plus rapide, avec les variables d'entrée voulues (nom de la base, nom du serveur, autres paramètres) en utilisant des variables de "contextes". En effet, vos "jobs" peuvent être paramétrés, et vous pouvez également avoir différents types de "contextes" (par exemple dév, pré-prod, prod).
Une des fonctionnalités les plus intéressantes est le fait de pouvoir générer des scripts en Perl ou Java pour exécuter vos "jobs" directement sur vos serveurs. Ainsi vous pouvez les exporter et les planifier pour s'exécuter aux heures voulues. Vous pouvez même créer un "job" qui sera en écoute d'une modification (par exemple modification d'un fichier) et qui sera alors exécuté lorsque cet événement surviendra.
Talend Open Studio vous permet de créer et de générer toute la documentation de votre projet. Il utilise, pour cela, le formalisme UML. Vous pouvez indiquer des commentaires, des informations sur chaque composant de votre projet.
Etant basé sur Eclipse, vous pouvez aussi intégrer votre propre code à votre projet. Vous pouvez également y intégrer des classes ou objets ce qui vous permet de les utiliser sur plusieurs jobs différents.
Talend Open Studio permet également de traiter des problématiques proches de l'intégration des données, comme des projets de MDM (Master Data Management) et de qualité de données.
Compatible avec quasiment tous les standards du marché, une liste est visible sur :
http://www.talendforge.org/components/
Si, toutefois, un composant n'existait pas, vous pouvez le créer vous-même et le proposer à la communauté (http://www.talendforge.org).
- Nous l'utilisons comme un générateur de script. Le grand atout de Talend Open Studio est de pouvoir générer des scripts très facilement, son interface est intuitive et vous permet d'effectuer très rapidement ce que vous auriez mis des semaines à coder.
- Exemple typique : alimentation d'une base de données à partir de plusieurs bases de données différentes, création de Web Services, export LDIF paramétré du LDAP, enchaînement de tâches, création d'une IHM Java pour alimenter une base depuis un fichier CSV, ...
-
En cas de difficultés, il y a pléthore d'informations sur le Web :
http://www.talendforge.org
https://help.talend.com -
Talend étant une entreprise française, vous n'aurez donc pas de difficultés à trouver des informations dans la langue de Molière.
NDPITools est un logiciel permettant de convertir des fichiers NDPI (Nanozoomer Digital Pathology Image) au format TIFF ou JPEG et ce, en consommant peu de mémoire vive. NDPITools se situe dans la tradition des logiciels UNIX qui ne font qu'une chose mais de façon efficiente.
Le format NDPI est un format propriétaire d'Hamamatsu qui stocke des images issues de scanners de lame à différentes résolutions, pour différents niveaux de profondeurs et éventuellement sur plusieurs canaux d'acquisition. Les fichiers obtenus sont très souvent extrêmement volumineux (plusieurs Go), contiennent des images de très haute résolution (par exemple 180000 x 70000 pixels) et difficile à manipuler, voire impossible à ouvrir avec des outils standards comme ImageJ ou GIMP. NDPITools permet d'extraire de façon très rapide des tuiles contenues dans les fichiers NDPI, en précisant un niveau de zoom, un z-index, les coordonnées et la taille de la région à extraire.
NDPITools propose un greffon pour ImageJ afin de rendre possible la manipulation de ses images dans ce logiciel.
NDPITools permet également de spécifier la quantité de mémoire maximale à utiliser pour l'extraction et donc de transformer la consommation de mémoire en temps processeur.
NDPITools prend place dans une suite logicielle autour du format NDPI d'une part et de la gestion de gros fichiers TIFF d'autre part. L'idée générale étant qu'un fichier NDPI peut se traiter in fine comme un gros fichier TIFF.
On peut noter entre autres :
-
ndpi2tiff qui permet de convertir le fichier NDPI en un fichier TIFF contenant toutes les images.
-
tiffmakemosaic qui permet de créer une mosaïque au format TIFF ou JPEG à partir d'un fichier TIFF. Il permet également de spécifier la quantité de mémoire maximum à utiliser pour cette opération.
-
tiffastcrop qui permet d'extraire une région rectangulaire d'un fichier TIFF sans charger toute l'image en mémoire.
Formats NDPI (propriétaire), TIFF et JPEG.
NDPITools intervient dans le cadre d'une application web de base de données d'images. Il permet un visionnage des images NDPI via le web et dans de très bonnes conditions. L'application web affiche les images à l'aide d'un tuilage de petites images à la manière des logiciels en ligne de cartographie. NDPITools agit en arrière plan et permet de créer les tuiles à la demande en utilisant l'option "e". La vitesse d'extraction des tuiles est suffisamment élevée pour reconstruire une image dans un contexte web.
Cette possibilité offerte par NDPITools est très appréciée par les utilisateurs de la base de données d'images et constitue pour une plate-forme d'imagerie une économie substantielle en termes de stockage, puisque les tuiles n'ont pas besoin d'être préparées à l'avance et gardées dans la base de données.
Ce logiciel se limite à la manipulation des formats NDPI, très spécifiques. Néanmoins, l'auteur propose également un équivalent pour manipuler les fichiers TIFF.
Plade est une plate-forme de recherche de correspondances de code source similaire développée en Java et Python. La recherche de similarité a des applications variées telles que la réorganisation du code au sein d'un projet par factorisation de redondances ou la mise en évidence d'opérations de copie légitime ou non entre différents projets. Dans l'hypothèse d'une copie non légitime, des opérations d'édition entre le code original et sa copie peuvent être présentes. Plade cherche à identifier les portions de code présentant une similarité exacte ou approchée suite à des opérations d'édition.
Trois axes sont actuellement développés par Plade :
-
L'usage de représentations abstraites et transformées pour le code source. Il s'agit par cette première étape de gommer certaines opérations d'édition (modification de formatage, renommage d'identificateurs...). Plade propose des représentations par séquences de lexèmes ou arbres de syntaxe (avec intégration de graphe d'appel), ces représentations pouvant être caractérisées par des niveaux d'abstraction variables. Elles sont obtenues à partir d'analyseurs lexicaux et syntaxiques externes (Plade gère actuellement les langages C++ et Java).
-
L'utilisation de méthodes algorithmiques pour localiser et caractériser des similarités sur ces représentations. Plade ne s'oriente pas vers des méthodes de comparaison extensive de paires déterminant des chemins d'édition entre séquences ou arbres. L'approche privilégiée s'oriente vers une technique d'indexation d'empreintes de séquences ou sous-arbres avec différents profils d'abstraction pour ensuite réaliser des requêtes sur ces bases constituées. Les éléments locaux quasi-similaires retrouvés peuvent ensuite être consolidés pour former des macro-similarités. Une approche permettant la recherche de facteurs similaires sur des séquences de lexèmes par indexation de suffixe est notamment employée : elle permet de lier des groupes de correspondances avec prise en compte des relations de chevauchement. Une application pratique est la factorisation de graphes d'appel d'un jeu de projets en un graphe d'appel commun ; ce graphe peut comprendre des fonctions factorisées issues de plusieurs projets ce qui révèle la copie de code.
-
La présentation des résultats de similarité trouvés à destination d'un utilisateur humain. Plade permet d'évaluer et filtrer les correspondances trouvées selon différents critères structurels, contextuels et statistiques. Une interface graphique basique de visualisation est proposée permettant de replacer dans leur contexte les similarités. Un service web (Tartan) permet de transmettre des projets, soumettre des travaux d'indexation et de recherche de similarité et récupérer leur résultat.
Plade est architecturé autour des modules suivants :
- Complade (companion for Plade) qui propose une bibliothèque Java implantant les structures et algorithmes afférents couramment utilisés par Plade (graphes génériques et plus spécifiquement graphes de facteurs répétés, tables d'indexation, etc.).
- Plade-core qui implante les primitives de définition et manipulation des représentations issues du code source et de modélisation et d'évaluation des correspondances.
- Plade-parsers proposant des exemples de représentations concrètes de code source sous la forme d'arbres de syntaxe (augmentés par des graphes d'appel de fonctions) et de séquences de lexèmes pour les langages Java et C++. Ce module peut être étendu afin de supporter facilement de nouveaux langages.
- Plade-fact qui s'emploie à fusionner des graphes d'appel de projets en graphe commun avec factorisation des portions de code en fonctions partagées (outlining permissif).
- Plade-fingertree qui se préoccupe des problématiques d'indexation adaptative et parcimonieuse des représentations (séquences et arbres) à plusieurs échelles et à l'aide de plusieurs niveaux d'abstraction.
- Plade-cons qui s'intéresse à la consolidation de correspondances locales en macro-similarités.
- Plade-gui qui propose une interface graphique Swing de visualisation et évaluation de jeux de correspondances.
Ces différents modules principalement développés en Java sont organisés autour de modules d'interfaçage en Python (Pyplade) permettant la réalisation rapide de scripts afin d'assurer l'indexation de code et la recherche de similarité en combinant les différentes approches proposées. Une implantation de service web (Tartan) reposant sur la plate-forme Plade est également en cours de développement.
Plade est encore actuellement en phase de développement interne ; une version sous licence libre Affero GPL sera prochainement accessible en ligne.
Gestionnaire de paquetages pour OCaml par compilation à partir du code source.
Ce système rend la fabrication et l'utilisation de logiciels ou bibliothèques écrits en OCaml plus facile.
Gestion de plusieurs versions de compilateurs OCaml.
-
Opam est censé coopérer avec les systèmes de paquetages antérieurs, les différents systèmes de résolution de dépendances, d'autres outils développés par OCamlPro.
-
Opam lance des scripts shell, ce qui assure suffisamment de souplesse.
-
Opam est testé sous différents systèmes d'exploitations et différentes architectures de processeurs.
La version 0.4 de la bibliothèque ocamlmath existera sous forme de paquetage Opam.
Trinity est un programme pour réaliser l’assemblage de-novo de données NGS de type RNAseq.
Trinity regroupe 3 modules indépendants (Inchworm, Chrysalis et Butterfly) qui sont utilisés séquentiellement pour le traitement de données de type RNAseq. Trinity utilise une approche basée sur des graphes de 'de Bruijn'. Chaque graphe individuel est représentatif de la complexité transcriptionnelle pour un locus ou gène donné. Le traitement de chaque graphe permet d’extraire les différentes isoformes d’épissage et de séparer les transcrits provenant de gènes paralogues. La séquence de traitement est la suivante :
- Inchworm assemble les données RNAseq en séquences de transcrits, générant le plus souvent un transcrit majoritaire correspondant à l’isoforme dominante. Les portions spécifiques des transcrits d’épissages alternatifs sont également assemblées.
- Chrysalis clusterise les contigs assemblés par Inchworm et construit un graphe de 'de Bruijn' pour chaque cluster. Ce graphe représente la complexité transcriptionnelle d’un gène donné (ou set de gènes qui partagent des séquences communes). Chrysalis répartit le jeu de lectures donné en entrée sur ces graphes disjoints.
- Butterfly traite les graphes individuellement. Il réconcilie les données de graphes obtenues par Chrysalis avec les lectures (pairées et non pairées) correspondant à ces graphes afin de reconstruire une séquence linéaire pour chaque isoforme de transcrit ou gènes paralogues.
Usage :
Trinity est lancé en utilisant le script Trinity.pl qui se trouve dans le répertoire d’installation.
Trinity accepte des données de type « paired-end », « mate-pair » ou « single-end », orientés ou non orientés, bien que les performances soient meilleures sur des reads orientés.
Les données doivent être au format fastq ou fasta.
Exemples de ligne de commande :
Trinity.pl --seqType fq --JM 10G --left reads_1.fq --right reads_2.fq --CPU 6
L’assemblage Trinity peut également se faire par étape si nécessaire, en exécutant indépendamment Inchworm, Chrysalis et Butterfly avec des options spécifiques de Trinity.pl
Sorties de Trinity :
L’expérience montre que l’exécution de Trinity demande ~1/2 heure à 1 heure par million de paires de reads.
Après complétion, Trinity a créé un fichier de sortie Trinity.fasta dans le répertoire de sortie spécifié (trinity_out_dir par défaut) , contenant les différents transcrits assemblés.
Données test :
Trinity est distribué avec un jeu de données test « sample_data/test_Trinity_Assembly/ ».
Lancer le script shell « runMe.sh » exécutera le processus d’assemblage avec Trinity sur ces données.
Lancer le script shell « runMe.sh 1 » exécutera l’analyse postérieure de l’assemblage incluant l’alignement des lectures sur l’assemblage avec Bowtie ainsi que l’analyse d’abondance avec RSEM.
Les analyses suivantes, en aval de l’assemblage, font partie de la suite Trinity :
- Alignement des lectures RNAseq sur les transcrits assemblés par Trinity pour visualiser dans IGV et estimer l’abondance utilisant RSEM.
- Utilisation de edgeR et Bioconductor pour l’analyse d’expression différentielle des transcrits.
- Extraction des régions potentiellement codantes pour des protéines à partir des transcrits.
Trinity est essentiellement utilisé pour l’assemblage de-novo de données RNAseq :
- pour lesquelles il n’y a pas de génome disponible,
- pour lesquelles le génome est fragmenté ou non annoté,
- pour des applications où un assemblage de-novo est nécessaire (par exemple RNAseq d'individus mâles avec un génome de référence femelle...).
La bibliothèque ocamlmath contient des programmes de calculs en mathématiques générales pour le langage OCaml, avec l'objectif de fabriquer des exemples de calculs à l'aide d'un automate.
Jaseto est une librairie Java qui permet la description d'objets Java en XML, et en sens inverse, de la création d'objets Java à partir de leur représentation XML. Ce processus est communément appelé (de)sérialisation. Il est généralement utilisé pour la persistance des données, en stockant le code XML sur le disque ou dans une base de données XML.
D'autre librairies telles XStream, Castor, et JAXB ont été développées dans cette même optique. Jaseto a à son avantage un code source plus clair et plus court, de meilleures performances (il s'avère 10 fois plus rapide que Castor et XStream), et proposes des solutions à certaines de leurs limitations. En particulier, il ne nécessite pas de savoir le type concret de l’objet de retour (Castor), il n'impose pas d'avoir recours aux annotations, de respecter la spécification JavaBean, etc.
Le système GramLab étend Unitex pour offrir aux équipes des outils facilitant le travail collaboratif (partage de ressources, suivi de versions, etc.) dans les traitements linguistiques. Ces outils reposent sur des technologies de type « automates à états finis » et incorporent des ressources linguistiques à large couverture, disponibles dans de nombreuses langues.
Les packages qui composent Gramlab sont disponibles sur la forge Google :
- GramLab IDE Ling : http://code.google.com/p/gramlab-ideling/, avec sa documentation https://sites.google.com/site/gramlabdocumentation...
- GramLab Corpus Manager : http://code.google.com/p/gramlab-corpus-manager/, avec sa documentation https://sites.google.com/site/gramlabdocumentation...
- GramLab Generic Annotator https://code.google.com/p/gramlab-unitex-cpp-uima-...
Les sources d'Unitex sont disponibles sur le site à l'Université de Marne-la-Vallée : http://igm.univ-mlv.fr/~unitex/, voir aussi la fiche PLUME sur Unitex.
Outils et fonctionnalités
- Intégrabilité dans une chaîne UIMA (Unstructured Information Management Architecture)
- Gestion de versions des ressources linguistiques
- Outils de maintenance des grammaires
- Outils de partage de ressources linguistiques
- Gestion de projets
- Auto-graph : création automatique de graphes de grammaires
- Plate-forme multilingue