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