Projet Dyndoc
Transcription
Projet Dyndoc
Projet Dyndoc R. Drouilhet Cqls Team R. Drouilhet (Cqls Team) Projet Dyndoc 1/1 Plan R. Drouilhet (Cqls Team) Projet Dyndoc 2/1 S L Q C Projet dyndoc Origine Enseignement : économie de temps lors de la rédaction des sujets d’examens. Consulting statistique : idée de proposer des outils de génération automatique de rapports en intégrant les résultats extraits de traitements R . Programmation : mariage de plusieurs langages de natures complémentaires : 1 2 en R , le plus est la manipulation et le traitement de données en R , un des moins est la manipulation de chaı̂nes de caractères qui n’est pas syntaxiquement très aisée (via la fonction paste()) ⇒ pourquoi ne pas utiliser un langage syntaxiquement plus adapté ? R. Drouilhet (Cqls Team) Projet Dyndoc 3/1 S L Q C Projet dyndoc Origine Enseignement : économie de temps lors de la rédaction des sujets d’examens. Consulting statistique : idée de proposer des outils de génération automatique de rapports en intégrant les résultats extraits de traitements R . Programmation : mariage de plusieurs langages de natures complémentaires : 1 2 en R , le plus est la manipulation et le traitement de données en R , un des moins est la manipulation de chaı̂nes de caractères qui n’est pas syntaxiquement très aisée (via la fonction paste()) ⇒ pourquoi ne pas utiliser un langage syntaxiquement plus adapté ? R. Drouilhet (Cqls Team) Projet Dyndoc 3/1 S L Q C Projet dyndoc Origine Enseignement : économie de temps lors de la rédaction des sujets d’examens. Consulting statistique : idée de proposer des outils de génération automatique de rapports en intégrant les résultats extraits de traitements R . Programmation : mariage de plusieurs langages de natures complémentaires : 1 2 en R , le plus est la manipulation et le traitement de données en R , un des moins est la manipulation de chaı̂nes de caractères qui n’est pas syntaxiquement très aisée (via la fonction paste()) ⇒ pourquoi ne pas utiliser un langage syntaxiquement plus adapté ? R. Drouilhet (Cqls Team) Projet Dyndoc 3/1 S L Q C Projet dyndoc Origine Enseignement : économie de temps lors de la rédaction des sujets d’examens. Consulting statistique : idée de proposer des outils de génération automatique de rapports en intégrant les résultats extraits de traitements R . Programmation : mariage de plusieurs langages de natures complémentaires : 1 2 en R , le plus est la manipulation et le traitement de données en R , un des moins est la manipulation de chaı̂nes de caractères qui n’est pas syntaxiquement très aisée (via la fonction paste()) ⇒ pourquoi ne pas utiliser un langage syntaxiquement plus adapté ? R. Drouilhet (Cqls Team) Projet Dyndoc 3/1 S L Q C Projet dyndoc Origine Enseignement : économie de temps lors de la rédaction des sujets d’examens. Consulting statistique : idée de proposer des outils de génération automatique de rapports en intégrant les résultats extraits de traitements R . Programmation : mariage de plusieurs langages de natures complémentaires : 1 2 en R , le plus est la manipulation et le traitement de données en R , un des moins est la manipulation de chaı̂nes de caractères qui n’est pas syntaxiquement très aisée (via la fonction paste()) ⇒ pourquoi ne pas utiliser un langage syntaxiquement plus adapté ? R. Drouilhet (Cqls Team) Projet Dyndoc 3/1 Projet dyndoc S L Q C Puis, ... Découverte de langages de programmation comme python et ruby (mon préféré). Parmi les avantages : maintenance des codes, facilité de création d’exécutable, syntaxe simple pour la manipulation de chaı̂nes de caractères.... Découverte de Sweave (et son langage noweb) permettant d’intégrer des résultats issus du R dans du code latex. Initiation au développement web où les langages de templating sont très courants (ex: en ruby, le langage eruby permet de dynamiser les pages html). Création d’une librairie ruby intégrant le R dans un programme ruby et permettant d’échanger très facilement les contenus de tableaux (Array) en ruby avec les vecteurs (vector) en R . R. Drouilhet (Cqls Team) Projet Dyndoc 4/1 Projet dyndoc S L Q C Puis, ... Découverte de langages de programmation comme python et ruby (mon préféré). Parmi les avantages : maintenance des codes, facilité de création d’exécutable, syntaxe simple pour la manipulation de chaı̂nes de caractères.... Découverte de Sweave (et son langage noweb) permettant d’intégrer des résultats issus du R dans du code latex. Initiation au développement web où les langages de templating sont très courants (ex: en ruby, le langage eruby permet de dynamiser les pages html). Création d’une librairie ruby intégrant le R dans un programme ruby et permettant d’échanger très facilement les contenus de tableaux (Array) en ruby avec les vecteurs (vector) en R . R. Drouilhet (Cqls Team) Projet Dyndoc 4/1 Projet dyndoc S L Q C Puis, ... Découverte de langages de programmation comme python et ruby (mon préféré). Parmi les avantages : maintenance des codes, facilité de création d’exécutable, syntaxe simple pour la manipulation de chaı̂nes de caractères.... Découverte de Sweave (et son langage noweb) permettant d’intégrer des résultats issus du R dans du code latex. Initiation au développement web où les langages de templating sont très courants (ex: en ruby, le langage eruby permet de dynamiser les pages html). Création d’une librairie ruby intégrant le R dans un programme ruby et permettant d’échanger très facilement les contenus de tableaux (Array) en ruby avec les vecteurs (vector) en R . R. Drouilhet (Cqls Team) Projet Dyndoc 4/1 Projet dyndoc S L Q C Puis, ... Découverte de langages de programmation comme python et ruby (mon préféré). Parmi les avantages : maintenance des codes, facilité de création d’exécutable, syntaxe simple pour la manipulation de chaı̂nes de caractères.... Découverte de Sweave (et son langage noweb) permettant d’intégrer des résultats issus du R dans du code latex. Initiation au développement web où les langages de templating sont très courants (ex: en ruby, le langage eruby permet de dynamiser les pages html). Création d’une librairie ruby intégrant le R dans un programme ruby et permettant d’échanger très facilement les contenus de tableaux (Array) en ruby avec les vecteurs (vector) en R . R. Drouilhet (Cqls Team) Projet Dyndoc 4/1 S L Q C Projet dyndoc Et maintenant, dyndoc c’est un : système de modèles (“templating system”) : basé sur un langage de balise (de type “domino”) comparable au langage xml, s’intègrant dans un document au format “human readable” tel que latex, html, ... mais aussi tout fichier source d’un langage de programmation tel le R , ruby, C, ... langage (de script) : permettant aussi d’intégrer les langages ruby et R (avec possibilité d’intégration de python et tout autre langage étant interfaçable en C). R. Drouilhet (Cqls Team) Projet Dyndoc 5/1 S L Q C Projet dyndoc Et maintenant, dyndoc c’est un : système de modèles (“templating system”) : basé sur un langage de balise (de type “domino”) comparable au langage xml, s’intègrant dans un document au format “human readable” tel que latex, html, ... mais aussi tout fichier source d’un langage de programmation tel le R , ruby, C, ... langage (de script) : permettant aussi d’intégrer les langages ruby et R (avec possibilité d’intégration de python et tout autre langage étant interfaçable en C). R. Drouilhet (Cqls Team) Projet Dyndoc 5/1 Plan R. Drouilhet (Cqls Team) Projet Dyndoc 6/1 L’habituel “Hello code” : 1 2 3 4 5 6 7 8 9 10 11 Result: from from from from [#r<] mister <- ”misteR” #R code [#rb<] mister = ”mister” #ruby code [#<] This is not output! {#def]hello[#,]name[Miss][#>] [Hello #{name}] [#} [#>] [from Dyn, {#hello#} |from Dyn, {#hello]Mister[#} |from ruby, hello :{mister} |from R, hello :r{mister}] S L Q C Dyn, Hello Miss Dyn, Hello Mister ruby, hello mister R, hello misteR R. Drouilhet (Cqls Team) Projet Dyndoc 7/1 Instruction case : 1 2 3 4 5 6 Result: Partie~II Partie~III Partie~I S L Q C [#=] docs [part2,part3,part1] [#>]{#case]#{docs} [#when]part1[#>]Partie~ I [#when]part2[#>][Partie~ II<\n>] [#when]part3[#>]Partie~ III [#} R. Drouilhet (Cqls Team) Projet Dyndoc 8/1 Boucles directement en ruby ou R : 1 2 3 4 5 6 7 8 Result: [#>]In ruby first! [#rb>] for cpt in 1..4 do {#>]item:{cpt} [#>}; end [#>]<\n>but also, [#rb>] (5..8).each do |cpt| {#>]item#rb{cpt} [#>}; end [#\n][#>]In R then! [#R>] for(cpt in 1:4) { {#>]item:r{cpt} [#>} } [#>]<\n>but also, [#R>] sapply(5:8,function(cpt) {#>]item#r{cpt} [#>}) S L Q C In ruby first! item1 item2 item3 but also, item5 item6 item7 In R then! item1 item2 item3 but also, item5 item6 item7 R. Drouilhet (Cqls Team) item4 item8 item4 item8 Projet Dyndoc 9/1 Utilisation variable dyndoc en ruby ou R : 1 2 3 4 5 6 7 8 9 10 11 12 Result: [#=]toto[TOTO] [#>] [#{toto}|] [#>]toto+[ and TITI] [#>] [#{toto}|] [#=]toto[TOTO2][#>] [#{toto} AND ] [#=]toto@[[1,3,2]] [#>] [#{toto@} AND ] [#=]toto$[c(1,3,2)] [#>]#{toto$} [#\n][#rb<] <toto@>[0]= <toto@>.inject(0) { |s,v| s += v } <toto:> = <toto:>.downcase <toto[1]$> = <toto$>.inject(0) { |s,v| s += v } [#>]After ruby: #{toto} AND #{toto@} AND #{toto$} [#R<]<toto@>[1]= 1L <toto:> = toupper(<toto:>);<toto$>[1] = 1 [#>]After R: #{toto} AND #{toto@} AND #{toto$} S L Q C TOTO|TOTO and TITI|TOTO2 AND 1,3,2 AND 1.0,3.0,2.0 After ruby: toto2 AND 6,3,2 AND 6.0,3.0,2.0 After R: TOTO2 AND 1,3,2 AND 1.0,3.0,2.0 R. Drouilhet (Cqls Team) Projet Dyndoc 10 / 1 Le code dyndoc suivant : 1 2 3 4 5 6 7 8 9 10 L Q C {#VerbFrame] [#>]\noindent \textbf{Session \texttt{R}}~ : {#beameR] y<-rnorm(10) y plot(1:10,y,col=1:10) ##fig | img=test | opt=width=7cm rexp(10) [#beameR} [#VerbFrame} permet à un simple utilisateur de générer la page beamer suivante (modulo la définition des fonctions VerbFrame et beameR en mode développeur dyndoc) : R. Drouilhet (Cqls Team) Projet Dyndoc 11 / 1 Session R : > y<-rnorm(10) > y [1] 0.32370298 0.35120557 [6] -2.08809196 2.50270888 > plot(1:10,y,col=1:10) S L Q C 0.01707509 1.79292299 0.48819698 -0.65214944 0.03978577 1.32606871 2 ● ● ● ● ● ● ● 0 y 1 ● −2 −1 ● ● 2 4 6 8 10 > rexp(10) 1:10 [1] 1.24276124 1.89258786 0.24719930 0.72003385 1.05743873 0.82080758 [7] 0.95281052 4.37619956 0.08600411 0.08985112 R. Drouilhet (Cqls Team) Projet Dyndoc 12 / 1 Exemple (de base) Sweave 1 2 3 4 5 6 7 8 \documentclass{article} \begin{document} S L Q C «»= a<-c(1,3,2) a @ La moyenne est \Sexpr{mean(a)}. \end{document} et son équivalent dyndoc : 1 2 3 4 5 R. Drouilhet (Cqls Team) {#rverb] a<-c(1,3,2) a [#} La moyenne est :r{mean(a)}. Projet Dyndoc 13 / 1 Plan R. Drouilhet (Cqls Team) Projet Dyndoc 14 / 1 Modes d’utilisation Comment l’utiliser ? Ligne de commande (version autonome) : pour usage personnel privilégié (utilisateur-développeur confirmé ayant pour volonté de maintenir son installation personnellement). S L Q C Ligne de commande (version client-serveur) : pour usage personnel où l’utilisateur n’a à installer qu’un petit programme client (léger) qui délègue le traitement du document dyndoc sur un serveur dyndoc administré par un utilisateur plus avancé ayant la charge de l’installation complète du système dyndoc. Interface web : zéro install, utilisation à partir d’un site. Définir plusieurs modes d’utilisateurs: développeurs, utilisateurs et client. ⇒ ce système est très adapté à la création instantanée (et en ligne) de pages web (ou documents pdf) avec la possibilité de proposer directement des traitements (statistiques) sous une forme souvent moins primaire qu’un logiciel (de statistiques). R. Drouilhet (Cqls Team) Projet Dyndoc 15 / 1 Modes d’utilisation Comment l’utiliser ? Ligne de commande (version autonome) : pour usage personnel privilégié (utilisateur-développeur confirmé ayant pour volonté de maintenir son installation personnellement). S L Q C Ligne de commande (version client-serveur) : pour usage personnel où l’utilisateur n’a à installer qu’un petit programme client (léger) qui délègue le traitement du document dyndoc sur un serveur dyndoc administré par un utilisateur plus avancé ayant la charge de l’installation complète du système dyndoc. Interface web : zéro install, utilisation à partir d’un site. Définir plusieurs modes d’utilisateurs: développeurs, utilisateurs et client. ⇒ ce système est très adapté à la création instantanée (et en ligne) de pages web (ou documents pdf) avec la possibilité de proposer directement des traitements (statistiques) sous une forme souvent moins primaire qu’un logiciel (de statistiques). R. Drouilhet (Cqls Team) Projet Dyndoc 15 / 1 Modes d’utilisation Comment l’utiliser ? Ligne de commande (version autonome) : pour usage personnel privilégié (utilisateur-développeur confirmé ayant pour volonté de maintenir son installation personnellement). S L Q C Ligne de commande (version client-serveur) : pour usage personnel où l’utilisateur n’a à installer qu’un petit programme client (léger) qui délègue le traitement du document dyndoc sur un serveur dyndoc administré par un utilisateur plus avancé ayant la charge de l’installation complète du système dyndoc. Interface web : zéro install, utilisation à partir d’un site. Définir plusieurs modes d’utilisateurs: développeurs, utilisateurs et client. ⇒ ce système est très adapté à la création instantanée (et en ligne) de pages web (ou documents pdf) avec la possibilité de proposer directement des traitements (statistiques) sous une forme souvent moins primaire qu’un logiciel (de statistiques). R. Drouilhet (Cqls Team) Projet Dyndoc 15 / 1