diff --git a/activity.in.mgs.tex b/activity.in.mgs.tex new file mode 100644 index 0000000..028fde3 --- /dev/null +++ b/activity.in.mgs.tex @@ -0,0 +1,43 @@ +\newcounter{savedenum} +\newcommand*{\saveenum}{\setcounter{savedenum}{\theenumi}} +\newcommand*{\resume}{\setcounter{enumi}{\thesavedenum}} + +\begin{frame} + \frametitle{L'activité dans \mgs} + \framesubtitle{Quelles sont les dynamiques de mon système ?} + + \begin{itemize} + \small + \item Occurences d'état (quel état de la simulation est actif?) + \item Occurences de temps (quand la simultaion est-elle active?) + \item Occurences d'espace + \begin{itemize} + \item Général: l'\alert{activité} est localisée où les évènements ont lieu + \item Modèle basé sur les interactions: l'\alert{activité} est localisée + où les interactions ont lieu + \end{itemize} + \end{itemize} + \begin{columns}[t] + \column{.5\textwidth} + \begin{enumerate} + \item Comment comprendre l'activité dans le contexte du formalisme \mgs ? + \begin{itemize} + \item L'activité est localisée où \structure{un motif d'une transformation + match} + \end{itemize} + \saveenum + \end{enumerate} + + \column{.5\textwidth} + \begin{enumerate} + \resume + \item Comment suivre l'activité une fois qu'une règle d'une transformation a été + appliquée? + \begin{itemize} + \item L'activité progresse \structure{de proche en proche} (comme une vague) + \item On peut restreindre le filtrage de motif à la \structure{partie active} du + modèle + \end{itemize} + \end{enumerate} +\end{columns} +\end{frame} diff --git a/activity.motivation.tex b/activity.motivation.tex new file mode 100644 index 0000000..9b7aa17 --- /dev/null +++ b/activity.motivation.tex @@ -0,0 +1,66 @@ +\begin{frame}{Activité spatiale d'un feu de forêt} + + \begin{columns} + \column{.9\textwidth} + \begin{block}{Définition} + \begin{quote} + […] activity is considered as a \structure{measure of the number of events} + occuring during in a simulation. + \end{quote} + \centering + \mkCitation{Muzy et al.: “Activity Regions for the Specication of + Discrete Event Systems”, 2010} + \end{block} + \end{columns} + +\begin{columns} + \column{.5\textwidth} + \begin{center} + \begin{tikzpicture} + \node[anchor=south west,inner sep=0pt,gridded] (img) at (0,0) { + \includegraphics[width=\textwidth]{raster/forest-fire} + }; + \uncover<2>{ + \clip (img.south west) rectangle (img.north east); + \fill[forest,opacity=.7] + (25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north) + -- (img.north east) + -- (img.south east) + -- cycle; + \fill[ashes,opacity=.7] + (0,0) + -- (25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north) + -- (img.north west) + -- cycle; + \draw[fire,line width=2mm,cap=round] + (25mm,0) .. controls (43mm,22mm) and (35mm,35mm) .. (1cm,4cm |- img.north); + } + \end{tikzpicture}\\ + \mkCitation{National Park Service, Alaska Region - Currant Creek Fire, + Lake Clark NP, 6-26, NPS PhotoUploaded by AlbertHerring, Public Domain, + \url{https://commons.wikimedia.org/w/index.php?curid=29598171}} + \end{center} + + \column{.5\textwidth} + \begin{itemize} + \item \structure{Système}: Feu de forêt + \item \structure{Formalisme}: MGS + \item \structure{Modèles}: + \begin{enumerate} + \item un automate à 3 états + \item \structure{[Karafyllidis et Thanailakis, 1997]} + \end{enumerate} + \end{itemize} + + \medskip + \begin{itemize} + \item Observation: + \begin{itemize} + \item \textcolor{ashes}{cendres} (à gauche) + \item \textcolor{fire}{feu} (au milieu) + \item \textcolor{forest}{forêt} (à droite) + \end{itemize} + \end{itemize} +\end{columns} + +\end{frame} diff --git a/chemical.model.tex b/chemical.model.tex new file mode 100644 index 0000000..a5b8065 --- /dev/null +++ b/chemical.model.tex @@ -0,0 +1,187 @@ +\begin{frame}{Moteur chimique} + + \begin{columns} + \column{.7\textwidth}\centering + \begin{itemize} + \item \structure{Modèle} + \begin{itemize} + \item Réaction-Diffusion-Évaporation à la Turing + \medskip + \item EDP couplées + \begin{equation*} + \frac{\partial\orr\varphi}{\partial t} = + \orr{\text{X}}(\orr\varphi) + + \orr{\text{D}} \cdot + \nabla^2\orr\varphi + - \orr{\text{E}} \cdot \orr\varphi + \end{equation*} + \end{itemize} + \item \structure{Simulation} + \begin{itemize} + \item Discrétisation de type différences finies sur un automate + cellulaire 2D + \medskip + \item Algorithme Propagation Parallèle à la Margolus (PPM) + \begin{itemize} + \item Simuler un automate cellulaire sur un support SIMD + \item Faire correspondre la segmentation de l'espace aux processus + \item Éviter les accès concurrents à la même zone mémoire + \end{itemize} + \end{itemize} + \end{itemize} + + \column{.2\textwidth} + \moteurs[structure!30] + \end{columns} + +% Animation du «calque» de démonstration de PPM + \uncover<2->{ + \tikz[overlay,opacity=.95,transform canvas={scale around=.8:(current page.center)}] + \draw[black,fill=white,rounded corners,ultra thick] + (current page.south west) rectangle (current page.north east); + \only<2-7>{ + \tikz[overlay] \node[anchor=center] at (current page.center) { + \begin{tikzpicture}[ + cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\TINY}, + neighbor cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\small}, + center cell/.style={cell,white,fill=black}, + spy using outlines={circle,red,size=58mm,magnification=4,connect spies}] + \begin{scope}[scale=.5] + \clip (-27mm,-27mm) rectangle (27mm,27mm); + + % Background + \only<2,4-6>{% + \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + } + \only<3,6->{% + \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + } + + \only<4-7>{ + \begin{scope} + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + } + \only<4-6>{ + \begin{scope}[shift={(-1cm,0)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + \begin{scope}[shift={(-1cm,-1cm)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + \begin{scope}[shift={(0cm,-1cm)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + } + \only<2,3>{ + \node[center cell,font=\small] at ( -0mm, -0mm) {$A$}; + \node[cell,font=\small] at (-10mm, -0mm) {$B$}; + \node[cell,font=\small] at (-10mm,-10mm) {$C$}; + \node[cell,font=\small] at ( -0mm,-10mm) {$D$}; + } + \only<2,3,4>{ + % Voisins + \node[neighbor cell] at ( 1cm, 0cm) {$v_{A,1}$}; + \node[neighbor cell] at ( 1cm, 1cm) {$v_{A,2}$}; + \node[neighbor cell] at ( 0cm, 1cm) {$v_{A,3}$}; + \node[neighbor cell] at (-1cm, 1cm) {$v_{B,1}$}; + \node[neighbor cell] at (-2cm, 1cm) {$v_{B,2}$}; + \node[neighbor cell] at (-2cm, 0cm) {$v_{B,3}$}; + \node[neighbor cell] at (-2cm,-1cm) {$v_{C,1}$}; + \node[neighbor cell] at (-2cm,-2cm) {$v_{C,2}$}; + \node[neighbor cell] at (-1cm,-2cm) {$v_{C,3}$}; + \node[neighbor cell] at ( 0cm,-2cm) {$v_{D,1}$}; + \node[neighbor cell] at ( 1cm,-2cm) {$v_{D,2}$}; + \node[neighbor cell] at ( 1cm,-1cm) {$v_{D,3}$}; + } + \only<4>{ + \begin{scope}[scale=0.5,shift={(-5mm,-5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A$}; + \node[cell] at (-10mm, -0mm) {$B$}; + \node[cell] at (-10mm,-10mm) {$C$}; + \node[cell] at ( -0mm,-10mm) {$D$}; + + \node[cell] at ( 1cm, 0cm) {$v_{A,1}$}; + \node[cell] at ( 1cm, 1cm) {$v_{A,2}$}; + \node[cell] at ( 0cm, 1cm) {$v_{A,3}$}; + \node[cell] at (-1cm, 1cm) {$v_{B,1}$}; + \node[cell] at (-2cm, 1cm) {$v_{B,2}$}; + \node[cell] at (-2cm, 0cm) {$v_{B,3}$}; + \node[cell] at (-2cm,-1cm) {$v_{C,1}$}; + \node[cell] at (-2cm,-2cm) {$v_{C,2}$}; + \node[cell] at (-1cm,-2cm) {$v_{C,3}$}; + \node[cell] at ( 0cm,-2cm) {$v_{D,1}$}; + \node[cell] at ( 1cm,-2cm) {$v_{D,2}$}; + \node[cell] at ( 1cm,-1cm) {$v_{D,3}$}; + \end{scope} + } + \only<5>{ + \begin{scope}[scale=0.5,shift={(-5mm,-5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + \only<6>{ + \begin{scope}[scale=0.5,shift={(5mm,5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(-15mm,5mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(-15mm,-15mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(5mm,-15mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + \only<7>{ + \begin{scope}[scale=0.5,shift={(5mm,5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + + % Grilles: + \draw[xshift=5mm,yshift=5mm,thin] ( -5cm, -5cm) grid ( 5cm, 5cm); + \only<2,4-6>{\draw[xshift=5mm,yshift=5mm, step=2cm, thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + \only<3,7>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + + \only<2,4-6>{ + \coordinate (spyhook) at (-5mm,-5mm); + } + \only<3,7>{ + \coordinate (spyhook) at (5mm,5mm); + } + \end{scope} + + \spy on (spyhook) in node (zoom) at (5cm,0); + \end{tikzpicture} + }; + } + } +\end{frame} diff --git a/closing.tex b/closing.tex new file mode 100644 index 0000000..3fb5945 --- /dev/null +++ b/closing.tex @@ -0,0 +1,17 @@ +\begin{frame}[plain,noframenumbering]{} + \Huge\centering + \includegraphics[width=.6\textwidth]{vector/discussion.pdf} + + \bigskip + Questions! +\end{frame} + +\bgroup +\setbeamercolor{background canvas}{bg=black} + +\begin{frame}[plain,noframenumbering]{} + \centering + \Huge\color{base03} + Lumière! +\end{frame} +\egroup diff --git a/decision.model.tex b/decision.model.tex new file mode 100644 index 0000000..884d7e3 --- /dev/null +++ b/decision.model.tex @@ -0,0 +1,24 @@ +\begin{frame} + \frametitle{Moteur comportemental} + + \begin{columns} + \column{.7\textwidth}\centering + \begin{itemize} + \item \structure{Couplage} entre le moteur chimique et le moteur + physique + \begin{itemize} + \item Déclencher des actions individuelles ($R, T, G, D, A$) + \item Consommer ($C$) ou synthétiser ($S$) des morphogènes + \end{itemize} + \medskip + \item \structure{Exemples} + \begin{enumerate} + \item Sectorisation + \item Cercles concentriques + \end{enumerate} + \end{itemize} + + \column{.2\textwidth}\moteurs[transparent][transparent][structure!30] + \end{columns} + +\end{frame} diff --git a/ecoli.model.tex b/ecoli.model.tex new file mode 100644 index 0000000..8679722 --- /dev/null +++ b/ecoli.model.tex @@ -0,0 +1,144 @@ +\tikzset{ + bacillus/.style={draw,fill=white,shape=rounded rectangle,minimum width=2cm, + minimum height=5mm,inner sep=0,anchor=center}, + backshape/.style={densely dotted}, + arrowz/.style={line cap=round,ultra thick,-Stealth,black!50}, + tumbler/.style={transform canvas={rotate around=38:(tumble.center)}, + shorten <=2pt} +} + +\begin{frame} + \frametitle{Moteur physique: spécification} + \begin{columns} + \column{.7\textwidth}\centering + \begin{itemize} + \item \structure{Dynamique individuelle}: + + \begin{center} + \begin{tikzpicture}[node distance=7mm] + \node (outrun) { + \begin{tikzpicture}[rotate=90,baseline] + \node[bacillus,backshape,rotate=90] (run) {}; + \node[bacillus,yshift=4mm,rotate=90] {}; + \draw[arrowz] (run.center) -- +(1cm,0); + \end{tikzpicture} + }; + \node[right=of outrun] (outumble) { + \begin{tikzpicture}[rotate=90,baseline] + \node[bacillus,backshape,rotate=90] (tumble) {}; + \node[bacillus,rotate around=128:(tumble.center)] {}; + \draw[arrowz,tumbler] + (tumble.north east) to ($(tumble.north east) + (0,5mm)$); + \draw[arrowz,tumbler] + (tumble.south west) to ($(tumble.south west) + (0,-5mm)$); + \end{tikzpicture} + }; + \node[right=of outumble] (outgrow) { + \begin{tikzpicture}[rotate=90,baseline] + \node[bacillus,minimum width=2.2cm,minimum height=6mm,rotate=90] (grow) {}; + \node[bacillus,backshape,rotate=90,anchor=center] at (grow.center) {}; + \end{tikzpicture} + }; + \node[right=of outgrow] (outdivide) { + \begin{tikzpicture}[rotate=90,baseline] + \node[bacillus,backshape,rotate=90] (divide) {}; + \node[bacillus,minimum width=1cm,anchor=west,rotate=90] at (divide.west) {}; + \node[bacillus,minimum width=1cm,anchor=east,rotate=90] at (divide.east) {}; + \end{tikzpicture} + }; + \node[right=of outdivide] (outdie) { + \begin{tikzpicture}[rotate=90,baseline] + \node[bacillus,backshape,rotate=90] {}; + \end{tikzpicture} + }; + + \node[below=12mm of outrun.center] {$R$}; + \node[below=12mm of outumble.center] {$T$}; + \node[below=12mm of outgrow.center] {$G$}; + \node[below=12mm of outdivide.center] {$D$}; + \node[below=12mm of outdie.center] {$A$}; + \end{tikzpicture} + \end{center} + + \medskip + \item \structure{Dynamique collective}: + \begin{itemize} + \item \structure{Entrer} en collision avec ses voisines + \item \structure{Inhiber} sa croissance (densité des bactéries) + \end{itemize} + \end{itemize} + + \column{.2\textwidth}\moteurs[transparent][structure!30] + \end{columns} +\end{frame} + +\begin{frame}{Moteur physique: modèle} + \begin{columns} + \column{.75\textwidth}\centering + \begin{columns} + \column{.6\textwidth} + \begin{itemize} + \item \structure{Bactérie virtuelle} + \begin{itemize} + \item Centre de masse, angle, \\longueur ($l$), rayon ($r$) + \item Inertie ($I$), masse ($m$) + \item Vitesse linéaire, vitesse angulaire, vitesse de croissance + \item Âge de la membrane \\ + {\small\structure{[Stewart 2005]}} + \end{itemize} + \end{itemize} + \column{.4\textwidth} + \begin{center} + \includegraphics[page=1,width=\textwidth]{vector/bacteria} + \end{center} + \end{columns} + \begin{columns} + \column{.4\textwidth} + \begin{center} + \includegraphics[page=3,width=\textwidth]{vector/collision-these} + \end{center} + \column{.6\textwidth} + \begin{itemize} + \item \structure{Collision} + \begin{itemize} + \item Conservation des moments + \item Conservation des quantités de mouvement + \item Théorie de l'impulsion + \end{itemize} + \medskip\footnotesize + \begin{equation*} + j = \displaystyle\frac{-(1 + Cr)\ \orr{v}_{ac12} \cdot{} \orr{n}} { 1/m_1 + + 1/m_2 + (\orr{r}_1 \wedge \orr{n})^2 / I_1 + (\orr{r}_2 \wedge \orr{n})^2 + / I_2} + \end{equation*} + \end{itemize} + \end{columns} + \column{.2\textwidth}\moteurs[transparent][structure!30] + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Moteur physique: réalisation} + \begin{columns} + \column{.7\textwidth}\centering + \begin{itemize} + \item \structure{Implémentation} sur automate cellulaire 2D du modèle agent + \bigskip + \item \structure{Utilisation de PPM} + \begin{itemize} + \item $N$ bactéries par cellule + \item Traitement par bloc de $2 \times 2$ + \item Tri des bactéries « voyageuses » + \end{itemize} + \end{itemize} + \begin{center} + \begin{tikzpicture} + \node[anchor=south west,inner sep=0] (img) at (0,0) {\includegraphics[width=5cm]{raster/ecoli-ca}}; + \draw (img.south west) grid (img.north east); + \draw[very thick,step=2cm] (img.south west) grid (img.north east); + \end{tikzpicture} + \end{center} + + \column{.2\textwidth}\moteurs[transparent][structure!30] + \end{columns} +\end{frame} diff --git a/example.dla.tex b/example.dla.tex new file mode 100644 index 0000000..27b5700 --- /dev/null +++ b/example.dla.tex @@ -0,0 +1,26 @@ +\begin{frame}%[label=this one] +\frametitle{Résultats préliminaires (DLA)} +\framesubtitle{Filtrage sur zone active} +\begin{columns} +\column{.55\textwidth} +\begin{block}{Exemple: diffusion limitée par aggrégation} +\begin{itemize} +\item Mise en évidence de la \structure{population des cellules mobiles} +\item Speedup \structure{moins important} (bien que toujours linéaire en la +quantité de cellules actives) +\end{itemize} +\end{block} +\column{.4\textwidth}\centering +\animate<2-10>% Doesn't work with zathura +\animatevalue<1-10>{\currentimg}{0}{773} +\includegraphics[width=.45\textwidth]{animation/dla-normal-frame-\the\currentimg.png} +\hspace{1mm} +\includegraphics[width=.45\textwidth]{animation/dla-active-frame-\the\currentimg.png} +\end{columns} +\bigskip +\hspace{5mm} +\includegraphics[height=3.5cm]{raster/shots-dla.png} +\hfill +\includegraphics[height=3.55cm]{raster/graph-dla.png} +\hspace{5mm} +\end{frame} diff --git a/example.forest.fire.tex b/example.forest.fire.tex new file mode 100644 index 0000000..fc5a7df --- /dev/null +++ b/example.forest.fire.tex @@ -0,0 +1,26 @@ +\begin{frame} +\frametitle{Résultats préliminaires (feu de forêt)} +\framesubtitle{Filtrage sur zone active} +\begin{columns} +\column{.55\textwidth} +\begin{block}{Exemple: application au feu de forêt} +\begin{itemize} +\item Mise en évidence du \structure{front de propagation} +\item Speedup \structure{important} (linéaire en la quantité de cellules actives) +\end{itemize} +\end{block} +\column{.4\textwidth}\centering +\animate<2-10>% Doesn't work with zathura +\animatevalue<1-10>{\currentimg}{0}{138} +\includegraphics[width=.45\textwidth]{animation/ffire-active-frame-\the\currentimg.png} +\hspace{1mm} +\includegraphics[width=.45\textwidth]{animation/ffire-normal-frame-\the\currentimg.png} +\end{columns} +\bigskip +\hspace{5mm} +\includegraphics[height=3.5cm]{raster/shots-ffire.png} +\hfill +\includegraphics[height=3.55cm]{raster/graph-ffire.png} +\hspace{5mm} +\end{frame} + diff --git a/experimental.model.tex b/experimental.model.tex new file mode 100644 index 0000000..0eb49ea --- /dev/null +++ b/experimental.model.tex @@ -0,0 +1,35 @@ +\begin{frame}{Différents types de modèles (formalismes)} + + \begin{itemize} + \item Cadre minimal commun: la \alert{théorie des ensembles} + {\Large \[ \model \leadsto \ensm \]} + + \pause + \item Exemples + \end{itemize} + + \centering + \rowcolors[]{1}{}{black!5} + \begin{tabular}{lll} + \textbf{Type} & \textbf{Modèle \model} & \textbf{Ensemble support \ensm} \\\hline + Expérimental & $\ensm$ & Donné par extension + \\ + À observables & $\langle \sigm,\bhvm \rangle$ + & $\bhvm \subseteq \sigm$ + \\ + %monoïde + fonction de transition + Dynamique & $\langle \bhvm,\timm,\phim \rangle$ + & + $\{ (x,\delta,\Phi_{\model}(x,\delta)) \mid x\in\bhvm, \delta \in \timm \}$ + \\ + %deux espaces topo + une fonction continue + À base de champs & $\langle \chsm,\chvm,\funm \rangle$ + & $\{ (x,f_{\model}(x)) \mid x \in \chsm \}$ + \\ + %un espace mesurable et une probabilité sur cet espace + Probabiliste & $\langle \mesm,\prom \rangle$ + & $\{ (A,\prom(A)) \mid A\in\trim \}$ + \end{tabular} + +\end{frame} + diff --git a/formalism.model.system.tex b/formalism.model.system.tex new file mode 100644 index 0000000..e862514 --- /dev/null +++ b/formalism.model.system.tex @@ -0,0 +1,87 @@ +\begin{frame}{Système, Modèle, Formalisme} + \framesubtitle{Définitions} + + \begin{center} + %\includegraphics[height=3cm]{vector/stub-formlism-model-system} + \begin{tikzpicture}[ + %font=\small + node distance=1cm and 3cm] + \node[draw] (model) {Modèle}; + \node[draw,below right=2cm of model] (system) {Système}; + \node[draw,right=of model] (formalism) {Formalisme}; + + \draw[shorten <=3pt,shorten >=3pt,-Stealth] (formalism) to + node[auto,swap,font=\small] {description} (model); + \draw[shorten <=3pt,shorten >=3pt,very thick,line cap=round,<->, + out=170,in=-70] (system) to node[auto,font=\small] {sémantique} (model); + %node[auto,font=\small] {explique} + + \coordinate (absconc) at ($(barycentric cs:model=1,system=1) + (5cm,0)$); + \draw [dashed] (barycentric cs:model=1,system=1) -- +(6cm,0) -- +(-3cm,0); + \node[label=above:Abstrait,label=below:Concret] at (absconc) {}; + \end{tikzpicture} + \end{center} +% + \begin{itemize} + \item \structure{Système}\\ + \small objet d'étude décomposé en parties + \medskip + \item \structure{Modèle}\\ + \small vue simplifiée du système (abstraction) dont l'existence est + dépendante du système + \medskip + \item \structure{Formalisme}\\ + \small langage, support d'expression du modèle + \end{itemize} + + +\end{frame} + + +\begin{frame}{Système, Modèle, Formalisme} + \framesubtitle{Points de vue sur les systèmes de Lindenmayer, $(\Sigma,w_0,P)$} + + \begin{itemize} + \item \emph{L-System} comme \structure{formalisme} \\ + {\small support de la description de la croissance des plantes} + \item \emph{L-System} comme \structure{modèle} \\ + {\small modèle de calcul comme $\lambda$-calcul, machines de Turing, + grammaires de Chomsky, …} + \item \emph{L-System} comme \structure{système} \\ + {\small objet d'étude formel dont un modèle pourrait être les fonctions de + croissance} + \end{itemize} + + \medskip + \begin{columns} + \column{.33\textwidth} + \includegraphics[height=.4\textheight]{raster/lsystem-formalism} + \column{.33\textwidth} + \includegraphics[height=.4\textheight]{vector/lsystem-model} + \column{.33\textwidth} + %\includegraphics[width=\textwidth]{raster/lsystem-system} + \begin{tikzpicture} + \node[draw, text width=.9\textwidth] {\small + $$f(n) = | w_n |$$ + + $ \left\{\begin{array}{l} + a \rightarrow ab\\ + b \rightarrow b + \end{array}\right. \qquad f(n) = n+1$ + + \medskip + $ \left\{\begin{array}{l} + a \rightarrow b\\ + b \rightarrow ab + \end{array}\right. \qquad f(n) = \text{fib}(n)$ + }; + \end{tikzpicture}\\ + \end{columns} + \begin{columns}[t] + \column{.4\textwidth}\centering + \mkCitation{P. Prusinkiewicz, A. Lindenmayer: “The algorithmic beauty of plants (the virtual laboratory)”, 1990} + \column{.6\textwidth}\centering + \mkCitation{G. Rozenberg, A. Salomaa: “The mathematical theory of L-Systems”, DAIMI Report Series, 3(33), 1974} + \end{columns} + +\end{frame} diff --git a/handout.tex b/handout.tex new file mode 100644 index 0000000..e3efa0d --- /dev/null +++ b/handout.tex @@ -0,0 +1,174 @@ +\documentclass{article} + +\newcommand{\action}[1]{\emph{(#1)}} + +\begin{document} + + +\input{title} +Mesdames, Messieurs, bienvenue à ma soutenance de thèse de doctorat en +informatique. +Je souhaiterai commencer cette présentation en remerciant les membres de mon +jury, ici présents, d'avoir accepté notre invitation à participer à cette +soutenance. + +Entrons, si vous le voulez bien, dans le vif du sujet. + +\input{synbiotic.presentation} +Comme vous le savez peut-être, ma thèse a été en partie financée sur le +projet ANR blanc SYNBIOTIC, et mon sujet de thèse est directement issue des +problématiques abordées par ce projet. SYNBIOTIC s'est étalé sur 3 ans, de +2011 à 2014, et a mobilisé une quinzaine de chercheurs, principalement en +informatique. Comme l'annonce la présentation officielle du projet: +\begin{citation} + La motivation finale est de permettre l'exploitation des propriétés + collectives d'une population bactérienne pour créer des biosystèmes + artificiels répondant à divers besoins dans le domaine de la santé, des + nanotechnologies, de l'énergie et de la chimie. +\end{citation} +Il s'agit ici de suivre le principe même de la biologie synthétique: monter +en abstraction et oublier les détails de fonctionnement, car l'objectif est +de \emph{spécifier} un comportement de la population. Par exemple, omettre +le détail du fonctionnement d'un réseau de régulation génétique au profit de +l'ingénierie directe des formes. + +\action{montrer la flèche vers le haut sur le schéma} + +L'approche empruntée est issue d'un domaine ayant fait ses preuves en ce qui +concerne la gestion de la complexité: l'informatique. L'idée est d'utiliser +le principe de la \emph{compilation}, qui permet de transformer un programme, +décrivant un comportement abstrait, vers une série de chiffres binaires exécutés +par le processeur. + +Nous utilisons ce procédé pour constituer le chemin du retour, de la +spécification d'une forme à l'échelle de la population vers le réseau de +régulation génétique de chaque individu. Le projet décrit ainsi une tour de +langages (informatique) permettant de compiler successivement la spécification +des formes vers un langage de programmation spatiale (L1), de L1 vers un langage +de programmation orienté entitée (L2) et enfin de L2 vers un langage orienté +réseau de régulation génétique (L3). + +Au cours de mon travail de thèse, je suis intervenu à différents étages de cette +tour: dans la deuxième partie de cette présentation nous parlerons de l'activité +dans MGS, le langage L1 et dans la troisième nous parlerons de OTB un simulateur +dont le langage d'entrée est L2. + +\input{problem.statement} +Comme je viens de vous le décrire, il suffit de trouver un compilateur pour +passer d'un étage à l'étage inférieur de cette tour. Malheureusement, ça n'est +pas aussi simple. + +Je souhaiterai attirer votre attention sur deux points essentiels qui me +permettront de poser la problématique. Le premier porte sur la sémantique. + +(en pointant le schéma compilation) +I. En informatique. + +Soit une fonction f, dans un certain langage de programmation bien connu, +disons C. Après compilation, nous obtenons cette suite d'instructions en +assembleur intel x86. Ces instructions peuvent être exécutées par le processeur +de votre ordinateur et le comportement que vous pouvez observer correspond bien, +par construction, à la fonction f. + +Imaginons que vous n'aviez pas connaissance de cette fonction, et que vous +disposiez uniquement des instructions en assembleur. Avec beaucoup de travail, +vous pourriez deviner quel était la fonction f. Cette activité a d'ailleurs un +nom, c'est le reverse-engineering. + +C'est mon premier point: la fonction f \emph{n'existe pas} en tant qu'objet +de première classe dans les instructions en assembleur. Cette fonction +disparaît à la compilation. Le vocabulaire des deux niveaux est distinct, mais +néammoins suffisamment proche pour pouvoir les lier (c'est bien là le rôle du +compilateur). + +II. En biologie. + +La difficulté est d'un cran supérieur: cette fonction f est issue d'un +support partiellement connu, pas des effets d'émergence. Les interactions au +niveau local sont complexes (1+1=3) et dûrement prédictibles. Notre but est +d'ingénierer l'émergence (WP1). + +Problématique : le niveau local et le niveau global décrivent deux mondes, deux +univers différents que nous chercherons à lier. + +Comment parler en même temps du niveau local et du niveau global dans une seule +et même description ? Nous apportons des pistes de réflexion dans la première +partie de cette présentation. + +\input{plan} +C'est le plan + +\mkPart{Multi-niveau} +\input{multimodel} +Nous l'avons vu en introduction, notre problématique est de décrire le lien +qu'il existe entre deux mondes: le niveau global et le niveau local. Ce sont +potentiellement deux modèles décrivant le \emph{même système} de deux points +de vues différents. + +Nous nous sommes d'abord interessés à ce que l'on trouve dans la littérature en +ce qui concerne la modélisation multimodèle. Voici trois exemples emblématiques +de trois manières d'envisager la question: + +(figure) + +1) Couplage de modèles +Nous prenons l'exemple d'un multimodèle d'une cellule entière (image de la +publication). 28 modèles tirés d'études antérieures sont rassemblés et mettent à +jour un ensemble de 16 variables propres à la cellule. Ces modèles sont exécutés +en isolation et en parallèle. Une partie du travail de cette équipe de recherche +a été d'arbitrer la mise à jour des valeurs de chacune des variables de la +cellule. En effet ces variables sont lues et écrites par chacun des modèles. +Elles constituent de plus le lien entre chacun de ces modèles. + +Cette construction est adhoc car elle dépend explicitement des spécificités de +chacun des modèles. Elle nécessite d'ajouter des programmes pour effectuer +la traduction en entrée et en sortie de chaque modèle importé. C'est un +fonctionnement en boîte noire où on ne connaît que les entrées et sorties des +modèles. + +2) Transformation de modèles +Nous prenons l'exemple de l'ingénierie des modèles en informatique, dont le but +est de travailler \emph{directement} sur les modèles, et de les faire évoluer au +moyen de transformations de modèles. Par exemple, il est possible de spécifier +l'ajout d'une fonctionnalité à un programme en conservant certaines propriétés, +directement au niveau du modèle. Un exemple emblématique de l'ingénierie des +modèles est le langage UML (pour Unified Model Language). Dans ce langage de +spécification graphique, un modèle est constitué d'un ensemble diagrammes +décrivant son fonctionnement. Cette description opère à un niveau plus abstrait +que celui de l'implémentation. + +3) Complexification +Nous prenons cette fois sur la méthodologie MENS (Memory Evolutive Neural +Systems) dont une des applications proposée porte sur la modélisation des +interactions neuronales. + + + +\input{formalism.model.system} +\input{experimental.model} +\input{predator.prey} +\input{model.category} +%\input{representing.space} +%\input{representing.time} +%\input{representing.space.time.interaction} +\mkPart{Activité spatiale} +\input{mgs.topological.collections} +\input{mgs.topological.transformations} +\input{simple.ff.example} +\input{activity.in.mgs} +\input{where.is.activity} +\input{wave.algorithm} +\input{example.forest.fire} +\input{example.dla} +\mkPart{OTB} +\input{otb.general} +\input{otb.architecture} +\input{sbgp} +\input{ecoli.model} +\input{chemical.model} +\input{decision.model} +\input{otb.sectorisation} +\input{otb.stable.pop} +\input{otb.ppm} +\input{closing} +\end{document} diff --git a/introduction.tex b/introduction.tex new file mode 100644 index 0000000..c34de91 --- /dev/null +++ b/introduction.tex @@ -0,0 +1,140 @@ +\begin{frame}{Le projet ANR SynBioTIC (2011—2015)} + \framesubtitle{Biologie synthétique} + + \begin{columns} + \column{.6\textwidth} + \begin{itemize} + % Abstraction, Découplage, Composition (ingénierie) + \item \structure{Biologie synthétique} + \begin{itemize} + \item Génie génétique \\ + Production d'insuline par \structure{une} bactérie\\ + \structure{[Riggs et Itakura, 1978]} + \item \structure{Abstraction}, standardisation, découplage + \end{itemize} + \medskip + \item Projet exploratoire: + « permettre l'exploitation des \structure{propriétés collectives} d'une + population bactérienne pour créer des biosystèmes artificiels.»\\ + \medskip + \end{itemize} + + \column{.3\textwidth} + \centering + \tourdelangages[white][white][white] + \tikz[overlay,abs/.style={ultra thick,-Stealth,thick,transform canvas={xshift=2mm}}] + \draw[abs] (genotype.east) to node[anchor=base,rotate=-90,yshift=1mm] {abstraction} (population.east); + \end{columns} +\end{frame} + +%\newsavebox{\haskellfib} +%\begin{lrbox}{\haskellfib} +%\end{lrbox} +%\usebox{\haskellfib} + +\begin{frame}[fragile]{Problématique} + \framesubtitle{compilation et multi-niveau} + + \centering + \begin{tikzpicture}[% + node distance=15mm, + wp/.style={draw},% + compilation/.style={compilcol,line width=5mm,-Triangle Cap}, + emergence/.style={alert,thick,-Stealth,decorate,decoration={snake, + amplitude=.5mm,segment length=2mm,post length=2mm}}] + \uncover<2-> { + \node[wp] (ibn) {% + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center,yshift=-9mm] at (15mm,1cm) {% + \includegraphics[width=3cm]{vector/binary}}; + \end{tikzpicture} + }; + } + \begin{onlyenv}<2-> + \node[wp,above=of ibn] (ihn) {% + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center,text width=3cm] at (15mm,1cm) {% + \small + \lstset{style=haskell} + \begin{lstlisting} +fib 0 = 0 +fib 1 = 1 +fib n = fib (n-1) + + fib (n-2) + \end{lstlisting} + }; + \node[anchor=center,minimum width=3cm, minimum height=2cm,fill=white, + opacity=0.9] at (15mm,1cm){\fontsize{55pt}{0}$f$}; + \end{tikzpicture}% + }; + \draw[compilation] (ihn) to node[auto] {Compilation} (ibn); + \end{onlyenv} + \node[wp,right=3cm of ibn,label=below:{\small Niveau local}] (bbn) {% + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center,yshift=9mm] at (15mm,1cm) {% + \includegraphics[height=37mm]{vector/ecolihelix}}; + \end{tikzpicture} + }; + \node[wp,above=of bbn,label=above:{\small Niveau global}] (bhn) {% + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center] at (15mm,1cm) {% + \includegraphics[width=3cm]{vector/petri}}; + \end{tikzpicture} + }; + \draw[emergence,transform canvas={xshift=-1cm}] (bbn) to (bhn);% + \draw[emergence,transform canvas={xshift=1cm}] (bbn) to (bhn);% + \visible<1-2>{ + \draw[emergence] (bbn) to node[black,fill=white,opacity=.8] + {émergence} (bhn); + }% + \visible<3>{ + \draw[compilation] (bhn) to (bbn); + } + \uncover<2->{ + \node[right=4mm of ihn,text width=2cm, align=center] + {\small Haut niveau\\ de description}; + \node[right=4mm of ibn,text width=2cm, align=center] + {\small Bas niveau\\ de description}; + } + \end{tikzpicture} + +\end{frame} + +\begin{frame}%[label=this one] + \frametitle{Le projet ANR \textsc{SynBioTIC} (2011—2015)} + + \begin{columns} + \column{.8\textwidth} + \begin{itemize} + \item Découpe en work-package + \begin{itemize} + \item \textcolor{black!40}{WP1: Études des formes, fourni des exemples} + \item \structure<2>{WP2: Programmation spatiale (L1)} + \item \structure<2>{WP3: Programmation orienté entité (L2)} + \item WP4: Réseau de régulation génétique (L3) + \item \textcolor{black!40}{WP5: Calculabilité} + \item \textcolor{black!40}{WP6: Sûreté, sécurité} + \end{itemize} + \end{itemize} + + \column{.2\textwidth} + \centering + \tourdelangages[white][white][white][compilcol] + \begin{tikzpicture}[overlay, + wp/.style={draw,text width=2cm,font=\footnotesize,align=center, + minimum width=22mm, minimum height=12mm}, + ] + %\path (population) to node[auto,xshift=-2mm,swap] {Compilation} (phenotype); + %\path (phenotype) to node[auto,xshift=-2mm,swap] {Compilation} (genotype); + \uncover<2>{ + \node[structure,left=1mm of population] {L1}; + \node[structure,left=1mm of phenotype] {L2}; + \node[left=1mm of genotype] {L3}; + } + \end{tikzpicture} + \end{columns} +\end{frame} diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..3fcbcd3 --- /dev/null +++ b/main.tex @@ -0,0 +1,317 @@ +\documentclass[10pt,table]{beamer} + +\usepackage{pgfpages} +%\includeonlyframes{this one} +%[,label=this one] + +\usepackage{polyglossia} +\setmainlanguage{french} +\setotherlanguage{english} + +% Do this BEFORE unicode-math +\usepackage{amsfonts} +\usepackage{amsmath} +\usepackage{mathrsfs} +\usepackage{amssymb} +\usepackage{siunitx} + +\usefonttheme{professionalfonts} +\usepackage{unicode-math} +% Do this AFTER any math font package (see fontspec doc) +\usepackage{fontspec} +\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} +\setromanfont{Fontin}[ + Path = fonts/ , + Extension = .ttf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = *-Italic , + SmallCapsFont = *-SmallCaps ] +\setsansfont{Fontin-Sans}[ + Path = fonts/ , + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = *-Italic , + BoldItalicFont = *-BoldItalic , + SmallCapsFont = *-SmallCaps ] +%\setmonofont[Scale=0.8]{Hack} +\setmonofont{FantasqueSansMono}[ + Path = fonts/ , + Extension = .ttf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = *-Italic , + BoldItalicFont = *-BoldItalic ] + +\setmathfont[mathbf=sym] {Asana-Math}[ + Path = fonts/ , + Extension = .otf ] + +\usepackage{xspace} +\usepackage{xltxtra} +\usepackage{tikz} +\usepackage{tabularx} +\usepackage{pdfpages} +%\usetikzlibrary{shadows} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{backgrounds} +\usetikzlibrary{bending} +\usetikzlibrary{calc} +\usetikzlibrary{decorations.pathmorphing} +\usetikzlibrary{decorations.text} +\usetikzlibrary{fit} +\usetikzlibrary{positioning} +\usetikzlibrary{shapes} +\usetikzlibrary{spy} + + +\usepackage{listings} +\lstdefinestyle{haskell}{% +language=Haskell} + +\usepackage{xparse} % LaTeX3 command declaration + +\usetheme{Pittsburgh} +\usecolortheme{orchid} + +%Titre + sous-titre c'est mieux. +\title{Modélisation multi-niveau} +\subtitle{Un cadre théorique pour l'intégration des niveaux d'organisation dans +les modèles. Applications à l'activité spatiale et à la simulation de grandes +populations de bactéries.} + +\author{Martin \textsc{Potier}} +\institute[UPE]{Université Paris-Est} +\date{6 juillet 2017} + +\tikzstyle{every picture}+=[remember picture] +\tikzset{ + diagonal fill/.style 2 args={fill=#2, path picture={ + \fill[#1, sharp corners] (path picture bounding box.south west) -| + (path picture bounding box.north east) -- cycle;}}, + reversed diagonal fill/.style 2 args={fill=#2, path picture={ + \fill[#1, sharp corners] (path picture bounding box.north west) |- + (path picture bounding box.south east) -- cycle;}} +} +\setbeamersize{text margin left=1mm,text margin right=1mm} +%\setbeamercovered{dynamic} +\beamertemplatenavigationsymbolsempty +\setbeamertemplate{section in toc}[sections numbered] +\setbeamertemplate{itemize items}[default] +\setbeamertemplate{enumerate items}[default] +\setbeamertemplate{section in toc shaded}[default][20] +%\setbeamercovered{transparent=20} +%\setbeamercolor{structure}{fg=blue} +\setbeamertemplate{footline}{ + \begin{tikzpicture}[overlay] + \node [anchor=center,white,fill=structure,circle, + minimum size=7mm,text height=3.5mm,text depth=1.5mm,inner sep=1pt] + at ($(current page) + (64mm,-49mm) + (-5mm,6mm)$) + %{\insertframenumber~/~\inserttotalframenumber} + {\large\insertframenumber}; + \end{tikzpicture} +} +\setbeamertemplate{frametitle}{ + \color{structure} + %\bfseries + \insertframetitle + \par + \vskip-12pt + \pgfmathsetmacro{\progress}{\insertframenumber/\inserttotalframenumber} + \pgfmathsetmacro{\progress}{126*\progress} + \tikz[overlay]{\draw[structure,thick,gridded] + (0,0) -- (\progress mm,0);}\par +} + +% Solarized set +\definecolor{base03}{HTML}{002B36} +\definecolor{base02}{HTML}{073642} +\definecolor{base01}{HTML}{586E75} +\definecolor{base00}{HTML}{657B83} +\definecolor{base0}{HTML}{839496} +\definecolor{base1}{HTML}{93A1A1} +\definecolor{base2}{HTML}{EEE8D5} +\definecolor{base3}{HTML}{FDF6E3} +\definecolor{orange}{HTML}{CB4B16} +\definecolor{red}{HTML}{DC322F} +\definecolor{green}{HTML}{859900} +\definecolor{yellow}{HTML}{B58900} +\definecolor{magenta}{HTML}{D33682} +\definecolor{violet}{HTML}{6C71C4} +\definecolor{blue}{HTML}{268BD2} +\definecolor{cyan}{HTML}{2AA198} + +% Partie multi +\colorlet{compilcol}{black!80} +% Partie activité +\colorlet{active}{red} +\colorlet{ashes}{gray!60!black} +\colorlet{fire}{orange!70!red} +\colorlet{forest}{green} +\colorlet{frontier}{green} +\colorlet{quiescent}{blue} +% Partie OTB +\colorlet{c} {blue!60} +\colorlet{ocaml} {green!60} +\colorlet{opencl} {red!60} +\colorlet{sbgp} {magenta!60} + +\newcount\currentimg % used in animations + +%Commands and aliases +\newcommand{\mgs}{MGS\xspace} +\newcommand{\voisinde}[1]{% + \usebeamercolor{structure}% + \tikz[baseline,every node/.style={circle,anchor=base,inner sep=.5mm}]{% + \draw[draw=none] node (#1) {,};% + \uncover<2->{\node[draw,fg] (c#1) {,};}% +}} +\newcommand{\mkPart}[1]{\section{#1}\input{plan}} +\newcommand{\model}{\ensuremath{\mathfrak{M}}} +\newcommand{\bhvm}{\ensuremath{\mathfrak{B}_{\mathfrak{M}}}} +\newcommand{\ensm}[1][]{\ensuremath{E_{\mathfrak{M}_{#1}}}} +\newcommand{\mref}{\ensuremath{E_{\text{Réf}}}} +\newcommand{\sigm}{\ensuremath{\Sigma_{\mathfrak{M}}}} +\newcommand{\timm}{\ensuremath{\mathbb{T}_{\mathfrak{M}}}} +\newcommand{\phim}{\ensuremath{\Phi_{\mathfrak{M}}}} +\newcommand{\chsm}{\ensuremath{\mathbb{S}_{\mathfrak{M}}}} +\newcommand{\chvm}{\ensuremath{\mathbb{V}_{\mathfrak{M}}}} +\newcommand{\funm}{\ensuremath{f_{\mathfrak{M}}}} +\newcommand{\mesm}{\ensuremath{\mathbb{X}_{\mathfrak{M}}}} +\newcommand{\prom}{\ensuremath{\mathbb{P}_{\mathfrak{M}}}} +\newcommand{\trim}{\ensuremath{\mathcal{A}_{\mathfrak{M}}}} +\newcommand{\orr}[1]{\ensuremath{\vec{#1}}} +\newcommand{\mkCitation}[1]{{\Tiny\textcolor{gray}{{#1}}\par}} +\newcommand{\tocshowonlycurrentsection}{} +%\newcommand{\tourdelangages}[4][white][white][white][white]{ +\DeclareDocumentCommand{\tourdelangages}{ O{transparent} O{transparent} O{transparent} O{transparent} }{ + \begin{tikzpicture}[overlay,% + every node/.style={inner sep=1mm}, + wp/.style={draw,text width=2cm,font=\footnotesize,align=center, + minimum width=22mm, minimum height=12mm}, + compilation/.style={#4,line width=5mm,-Triangle Cap}] + \node[wp,anchor=east,xshift=-8mm] (phenotype) at (current page.east) { + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (2cm,1cm); + \node[anchor=center] at (1cm,0.5cm) {\includegraphics[height=1cm]{vector/badecoli}}; + \end{tikzpicture} + }; + \node[wp,below=of phenotype] (genotype) { + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (2cm,1cm); + \node[anchor=center] at (2mm,0.5cm) {\includegraphics[height=7mm,angle=47]{vector/helix}}; + \end{tikzpicture} + }; + \node[wp,above=of phenotype] (population) { + \begin{tikzpicture} + \clip (0cm,0cm) rectangle (2cm,1cm); + \node[anchor=center] at (1cm,0.5cm) {\includegraphics[height=2cm]{vector/petri}}; + \end{tikzpicture} + }; + \draw[compilation] (population) to (phenotype); + \draw[compilation] (phenotype) to (genotype); + \begin{scope}[on background layer] + \node[fit=(genotype) (phenotype) (population),rounded corners, + fill,#1,inner sep=3mm] {}; + \node[fit=(population) (phenotype),rounded corners, + fill,#2,inner sep=3mm] {}; + \node[fit=(phenotype),rounded corners, + fill,#3,inner sep=3mm] {}; + \end{scope} + \end{tikzpicture} +} +\newcommand{\drawfigure}{\tourdelangages{}} +\DeclareDocumentCommand{\moteurs}{ O{transparent} O{transparent} O{transparent} }{ + \begin{tikzpicture}[overlay, + node distance=8mm, + wp/.style={draw}, + causation/.style={black!80,-{Triangle[width=8mm,length=5mm]},shorten >= 1mm, + shorten <=1mm,line width=5mm}% + ] + \coordinate[xshift=-15mm] (centre) at (current page.east); + \node[wp,above=of centre] (moteur-physique) {% + \begin{tikzpicture}[scale=0.7] + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center] at (15mm,1cm) {% + \includegraphics[height=20mm]{vector/collision}}; + \end{tikzpicture} + }; + \node[wp,below=of centre] (moteur-chimique) {% + \begin{tikzpicture}[scale=0.7] + \clip (0cm,0cm) rectangle (3cm,2cm); + \node[anchor=center] at (15mm,1cm) {% + \includegraphics[height=14mm]{vector/chimie}}; + \end{tikzpicture} + }; + \draw[causation,transform canvas={xshift= 6mm}] (moteur-chimique) to (moteur-physique); + \draw[causation,transform canvas={xshift=-6mm}] (moteur-physique) to (moteur-chimique); + \begin{scope}[on background layer] + \node[fit=(moteur-chimique),rounded corners, + fill,#1,inner sep=3mm] {}; + \node[fit=(moteur-physique),rounded corners, + fill,#2,inner sep=3mm] {}; + \node[rounded corners,fill,#3,inner sep=3mm,minimum height=2cm, minimum width=3cm] + at (barycentric cs:moteur-chimique=1,moteur-physique=1) {}; + \end{scope} + \end{tikzpicture} +} + +\makeatletter +\patchcmd{\beamer@sectionintoc} +{\vfill} +{\vskip5\itemsep} +{} +{} +\makeatother + + + +\begin{document} +%\input{test} +% +\input{title} +\input{introduction} +\input{plan} + +\renewcommand{\tocshowonlycurrentsection}{currentsection} +\renewcommand{\drawfigure}{\tourdelangages[structure!30][transparent][transparent]} +\mkPart{Vers la modélisation multi-niveau} +\input{multimodel} +\input{formalism.model.system} +\input{experimental.model} +\input{predator.prey} +\input{model.category} +\input{part1.conclude} + +\renewcommand{\drawfigure}{\tourdelangages[transparent][structure!30][transparent]} +\mkPart{Topologie de l'activité} +\input{activity.motivation} +\input{mgs.topological.collections} +\input{mgs.topological.transformations} +\input{simple.ff.example} +\input{where.is.activity} +\input{example.forest.fire} +\input{example.dla} +\input{part2.conclude} + +\renewcommand{\drawfigure}{\tourdelangages[transparent][transparent][structure!30]} +\mkPart{Simulateur de colonie de bactéries} +\input{otb.general} +\input{otb.organisation} +\input{chemical.model} +\input{ecoli.model} +\input{decision.model} +\input{otb.sectorisation} +\input{otb.stable.pop} +\input{otb.architecture} +\input{part3.conclude} + +\input{closing} + +\end{document} +%\input{bilan} +%\input{sbgp} +%\input{otb.ppm} +%\input{wave.algorithm} +%\input{activity.in.mgs} diff --git a/mgs.topological.collections.tex b/mgs.topological.collections.tex new file mode 100644 index 0000000..4afb585 --- /dev/null +++ b/mgs.topological.collections.tex @@ -0,0 +1,31 @@ +\begin{frame} +\frametitle{Formalisme \mgs} +\framesubtitle{Collections topologiques} + \begin{columns}[c] + \column{.5\textwidth} + \begin{itemize} + \item Une collection de \structure{cellules topologiques} + \begin{itemize} + \item + \alert<1>{0-cellule}, + \alert<2>{1-cellule}, + \alert<3>{2-cellule}, + \alert<4>{3-cellule}, etc. + \end{itemize} + + \medskip + \item Liées par une \structure{relation d'incidence} + \begin{itemize} + \item $\text{face}(\alert<6>{s_1}) = $% + \tikz[baseline=-0.5ex] \node (e) {$\{e_0,e_1,e_2,e_3,e_4,e_5\}$}; + \end{itemize} + + \medskip + \item Les cellules sont \structure{étiquetées} avec des valeurs + arbitraires + \end{itemize} + + \column{.5\textwidth} + \input{vector/coll-topo-papillon.tikz} + \end{columns} +\end{frame} diff --git a/mgs.topological.transformations.tex b/mgs.topological.transformations.tex new file mode 100644 index 0000000..d7da266 --- /dev/null +++ b/mgs.topological.transformations.tex @@ -0,0 +1,30 @@ +\defverbatim[colored]\transformation{% +\small +\begin{semiverbatim} +trans evol = \{ + \structure{pattern_1} => \alert{expression_1} + ... + pattern_n => expression_n +\} +\end{semiverbatim}} + +\begin{frame}[fragile] +\frametitle{Formalisme \mgs} +\framesubtitle{Transformations topologiques} + +\only<1>{ +\begin{itemize} +\item Fonctions définies \structure{par cas} sur les collections\\ + {\small chaque cas détermine une \structure{sous-collection}} +\item Relation de réécriture: \structure{réécriture topologique} +\end{itemize} +} + +\tikz[overlay] \node[text width=4cm] + at (current page.center) {\transformation}; + + \begin{center} + \input{vector/transformation-papillon.tikz} + \end{center} +\end{frame} + diff --git a/model.category.tex b/model.category.tex new file mode 100644 index 0000000..45fcf89 --- /dev/null +++ b/model.category.tex @@ -0,0 +1,79 @@ +\pgfdeclarelayer{background} +\pgfdeclarelayer{foreground} +\pgfsetlayers{background,main,foreground} + +\begin{frame}[label=this one] + \frametitle{Catégorie des modèles} + \tikz[overlay] \node[yshift=-2cm] at (current page.north){ + $ \mathbf{Abs}_S = (\alert{\mref} \downarrow \mathbf{Set})^{\mathbf{op}} $ + }; + + \centering + \begin{tikzpicture}[overlay,% + node distance=13mm and 20mm, + model/.style={draw,rectangle,on grid=true,fill=white}, + function/.style={-Stealth,thick}, + abstraction/.style={function,very thick} + ] + \alt<1-4>{ + \node[model,left=of current page.center] (m1) {$\ensm[1]$}; + \node[model,above=of current page.center] (m2) {$\ensm[2]$}; + \node[model,below=of current page.center] (m3) {$\ensm[3]$}; + \node[model,right=of current page.center] (m4) {$\ensm[4]$}; + }{ + \node[model,circle,left=of current page.center] (m1) {$\model_1$}; + \node[model,circle,above=of current page.center] (m2) {$\model_2$}; + \node[model,circle,below=of current page.center] (m3) {$\model_3$}; + \node[model,circle,right=of current page.center] (m4) {$\model_4$}; + \draw[abstraction] (m1) to (m2); + \draw[abstraction] (m1) to (m3); + \draw[abstraction] (m2) to (m4); + \draw[abstraction] (m3) to (m4); + } + \uncover<3-4>{ + \draw[function] (m2) to (m1); + } + \uncover<4>{ + \draw[function] (m3) to (m1); + \draw[function] (m4) to (m2); + \draw[function] (m4) to (m3); + } + + \visible<1-4>{ + \node[draw, very thick, rounded corners=2pt,inner sep=0pt,% + minimum width=.7\textwidth,minimum height=.65\textheight,yshift=-5mm] + (set) at (current page.center) {}; + \node[below right] (setl) at (set.north west) {$\mathbf{Set}$}; + } + \visible<2-4>{ + \node[alert,draw,xshift=-12mm,yshift=6mm] (ms) at (set.south) {$\mref$}; + \draw[function] (ms) to (m1); + \draw[function] (ms) to (m2); + \draw[function] (ms) to (m3); + \draw[function,bend right] (ms) to (m4); + } + \begin{pgfonlayer}{background} + \visible<5>{ + \node[alert,draw,circle,xshift=-12mm,yshift=6mm] (ms) at (set.south) {$\model_{\texttt{Réf}}$}; + \draw[black!50,abstraction] (m1) to (ms); + \draw[black!50,abstraction] (m2) to (ms); + \draw[black!50,abstraction] (m3) to (ms); + \draw[black!50,abstraction,bend left] (m4) to (ms); + } + \end{pgfonlayer} + + \visible<4>{ + \node[draw, dashed, very thick, rounded corners=2pt,inner sep=0pt,% + minimum width=.5\textwidth,minimum height=.46\textheight] + (abs) at (current page.center) {}; + \node[below right] (absl) at (abs.north west) {$\mathbf{Abs}_S$}; + } + \visible<5>{ + \node[draw, very thick, rounded corners=2pt,inner sep=0pt,% + minimum width=.7\textwidth,minimum height=.65\textheight,yshift=-5mm] + (abs) at (current page.center) {}; + \node[below right] (absl) at (abs.north west) {$\mathbf{Abs}_S$}; + } + + \end{tikzpicture} +\end{frame} diff --git a/multimodel.tex b/multimodel.tex new file mode 100644 index 0000000..155d4b3 --- /dev/null +++ b/multimodel.tex @@ -0,0 +1,66 @@ +\begin{frame}%[label=this one] + \frametitle{Mettre en relation des «modèles»} + %\framesubtitle{dans la littérature} + + \begin{columns} + \column{.5\textwidth} + \begin{itemize} + \item \structure{Couplage} + \begin{itemize} + \item \alert<1>{\emph{Modèle} de la croissance des villes} + \item \alert<2>{\emph{Modèle} intégratif d'une cellule} + \end{itemize} + \medskip + \item \structure{Transformation} + \begin{itemize} + \item \alert<3>{Transformation de \emph{modèles} UML} + \item \alert<4>{Raffinement de \emph{modèles}} + \end{itemize} + \medskip + \item \structure{Complexification} + \begin{itemize} + \item \alert<5>{Memory Evolutive (Neural) System} + \item \alert<5>{Cellular Non-linear Network} + \end{itemize} + \end{itemize} + \column{.5\textwidth}\centering + \only<1>{\includegraphics[width=\textwidth]{raster/simpop3}\\ + \mkCitation{T. Louail “Comparer les morphogénèses urbaines en + Europe et aux États-Unis par la simulation à base d'agents -- Approches + multi-niveaux et environnements de simulation spatiale”, Thèse, 2010} + } + \only<2>{\includegraphics[height=4cm]{raster/whole-cell-models}\\ + \mkCitation{J. R. Karr et al. “A whole-cell computational + model predicts phenotype from genotype”, Nature, 2012} + } + \only<3>{% + \includegraphics[height=21mm]{raster/transformation-1}\\ + \includegraphics[height=21mm]{raster/transformation-2}\\ + \mkCitation{A. Christoph et M. M. Müller “GREAT: UML + transformation tool for porting middleware applications”, Modeling + Languages and Applications: 6th International Conference, San Francisco, + CA, USA, 2003} + } + \only<4>{ + \includegraphics[height=4cm]{raster/refinement-av} + \includegraphics[height=4cm]{raster/refinement-ap}\\ + \mkCitation{D.-E. Gratie “Refinement of biomodels using Petri + nets”, TUCS dissertation, 2016} + } + \only<5->{% + \includegraphics[width=.9\textwidth,page=5]{vector/mens-neurons}\\[1em] + \includegraphics[width=.45\textwidth,page=1]{vector/cnn-synapses}\hfill + \includegraphics[width=.45\textwidth,page=2]{vector/cnn-synapses}\\ + \mkCitation{K. Mainzer et L. O. Chua: “Local activity principle”, World Scientific, 2013} + } + \end{columns} + + \bigskip\centering + \uncover<6>{ + Cadre \structure{formel unifié},\\ + «\structure{sémantique}» du système,\\ + \structure{abstraction} et \structure{multi-niveau} + } + % Multi-niveau = aller au delà de l'abstraction + +\end{frame} diff --git a/otb.architecture.tex b/otb.architecture.tex new file mode 100644 index 0000000..ed1dfb8 --- /dev/null +++ b/otb.architecture.tex @@ -0,0 +1,49 @@ +\begin{frame}%[label=this one] + \frametitle{Architecture logicielle} + \begin{columns} + \column{.7\textwidth} + \begin{itemize} + \item[{\tikz[c]{\node[fill,rectangle]{};}}] \num{2300} lignes de C + \begin{itemize} + \item Programmation API, bas niveau + \item Interface avec OpenCL/OpenGL + \end{itemize} + \item[{\tikz[ocaml]{\node[fill,rectangle]{};}}] \num{2000} lignes de OCaml + réparties en 10 modules + \begin{itemize} + \item Programmation API, haut niveau + \item Processus maître, orchestration de simulation + \item Gestion des zones dynamiques + \end{itemize} + \item[{\tikz[opencl]{\node[fill,rectangle]{};}}] \num{700} lignes de kernel OpenCL + \smallskip + \item[{\tikz[sbgp]{\node[fill,rectangle]{};}}] SBGP + \end{itemize} + + \begin{center} + \small + \begin{tikzpicture}[node distance=4mm and 1.3333cm, + box/.style={on grid,inner sep=0pt,rectangle,draw, + minimum height=4mm,font=\small}, + full/.style={minimum width=4cm}, + half/.style={minimum width=2cm}, + third/.style={minimum width=1.3333cm}, + ] + \node[fill=black,draw=black,white,half,box] (cpu) {CPU}; + \node[fill=black,draw=black,white,half,box,right=2cm of cpu] (gpu) {GPU}; + \node[fill=c,third,box,above=of cpu.west,right] (os) {OS}; + \node[fill=opencl,third,box,right=of os] (opencl) {OpenCL}; + \node[fill=c,third,box,right=of opencl] (opengl) {OpenGL}; + \node[fill=c,full,box,above=of os.west,right] (api1) {API OpenCL/OpenGL}; + \node[fill=ocaml,full,box,above=of api1] (api2) {API Simulateur}; + \node[diagonal fill={ocaml}{sbgp},full,box,above=of api2] (spec) {Spécification simulation}; + \node[full,box,above=of spec,dashed] (ihm) {IHM}; + + \draw[white] (cpu.north east) -- (cpu.south east); + \end{tikzpicture} + \end{center} + + \column{.2\textwidth} + \moteurs + \end{columns} +\end{frame} diff --git a/otb.general.tex b/otb.general.tex new file mode 100644 index 0000000..29abbbc --- /dev/null +++ b/otb.general.tex @@ -0,0 +1,55 @@ +\begin{frame}%[label=this one] + \frametitle{OTB, un simulateur de bactéries} + \begin{columns} + \column{.7\textwidth} + \begin{itemize} + \item \structure{Motivations} + \begin{itemize} + \item \structure{Assister} le travail du programmeur (L1, L2) + \item \structure{Observer} la morphogenèse à partir de la spécification + d'un comportement local + \end{itemize} + \medskip + \item \structure{Objectifs} + \begin{itemize} + \item Simulation raisonnable de grandes populations\\($10^5$ individus) + \item Simulation réaliste + \end{itemize} + \medskip + \item \structure{Utilisation du parallélisme} + \begin{itemize} + \item Nécessaire pour accélérer les calculs + \item Largement disponible (Multi-cœur, GPU) + \end{itemize} + \end{itemize} + + \column{.2\textwidth} + \tourdelangages + \begin{tikzpicture}[overlay, + big red/.style={line width=1mm,line cap=round,red}] + \draw[big red] (genotype.south west) to (genotype.north east); + \draw[big red] (genotype.north west) to (genotype.south east); + \end{tikzpicture} + \end{columns} +\end{frame} + +% Il nous faut un simulateur pour: +% \begin{itemize} +% \item Observer de l'expression d'un RRG au niveau de la population +% \item Tester des hypothèses et guider le design de L1 et L2 +% \item Palier le manque de composants biologique dans le projet +% \end{itemize} +% +% \medskip Propriétés souhaitables: +% \begin{itemize} +% \item Simulation raisonnable de grandes populations ($10^5$ individus) +% \item Simulation réaliste +% \item Simulateur générique et modulaire pour adaptation facile à d'autres +% problématiques +% \end{itemize} +% +% \medskip Utilisation du parallélisme car +% \begin{itemize} +% \item nécessaire pour accélérer les calculs +% \item largement disponible (Multi-cœur, GPU) +% \end{itemize} diff --git a/otb.organisation.tex b/otb.organisation.tex new file mode 100644 index 0000000..a9a2405 --- /dev/null +++ b/otb.organisation.tex @@ -0,0 +1,21 @@ +\begin{frame}%[label=this one] + \frametitle{Organisation} + + \begin{columns} + \column{.7\textwidth} + \begin{itemize} + \item \structure{Moteur chimique}\\ + {\small comportement du support sur lequel évoluent les bactéries} + \bigskip + \item \structure{Moteur physique}\\ + {\small comportement mécanique des bactéries} + \bigskip + \item \structure{Moteur comportemental}\\ + {\small couplage entre morphogènes et bactéries} + \end{itemize} + + \column{.2\textwidth} + \moteurs + \end{columns} + +\end{frame} diff --git a/otb.ppm.tex b/otb.ppm.tex new file mode 100644 index 0000000..acf8e5c --- /dev/null +++ b/otb.ppm.tex @@ -0,0 +1,317 @@ +\begin{frame}{Propagation Paralèlle \emph{à la} Margolus} + {Le problème de la dépendance aux cellules voisines} + \vfill + + \centering + \begin{tikzpicture} + \clip (-17mm,-17mm) rectangle (17mm,17mm); + \draw[xshift=5mm,yshift=5mm] ( -3cm, -3cm) grid ( 3cm, 3cm); + \node (x) at (0,0) {$x_i$}; + \foreach[count=\n] \p in {(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1)} { + \node (v\n) at \p {$v_{\n_i}$}; + } + \begin{scope}[on background layer] + \clip (-17mm,-17mm) rectangle (17mm,17mm); + \only<1>{% + \fill[black!10] (v6.south west) rectangle (v2.north east); + \fill[white] (v6.north east) rectangle (v2.south west); + \fill[red!60] (x) circle (3mm); + } + \only<2>{% + \fill[black!10] (v3.north east) rectangle ($(v7.south east)+(-10cm,0)$); + \fill[white] (v3.south west) rectangle ($(v7.north east)+(-10cm,0)$); + \fill[red!60] (v5) circle (3mm); + } + \end{scope} + \end{tikzpicture} + + \alt<1>{% + $$ x_{i,1} = f(x_i , v_{1_i} , v_{2_i} , \ldots , v_{8_i}) $$ + }{% + $$ v_{5_{i,1}} = f(v_{5_i} , x_i , v_{3_i}, v_{4_i} , + \alert{? , ? , ?} , v_{6_i} , v_{7_i}) $$ + } + \vfill~ + \uncover<2>{Une partie du \structure{contexte} est manquant.} +\end{frame} + +\begin{frame}{Propagation Paralèlle \emph{à la} Margolus} + {Le voisinage de margolus} + \vfill + + \centering + \begin{tikzpicture} + \clip (-27mm,-27mm) rectangle (27mm,27mm); + \draw[xshift=5mm,yshift=5mm] ( -5cm, -5cm) grid ( 5cm, 5cm); + \fill[red] (0,0) circle (3mm); + \only<1>{\draw[xshift=5mm,yshift=5mm, step=2cm, very thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + \only<2>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, very thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + \begin{scope}[on background layer] + \only<1>{% + \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);} + \only<2>{% + \fill[red!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);} + \end{scope} + \end{tikzpicture} + + \vfill~ +\end{frame} + +\begin{frame}{Propagation Paralèlle \emph{à la} Margolus} + {Mise à jour \emph{indépendante} d'un bloc} + \vfill + + \centering + \begin{tikzpicture}[ + cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\TINY}, + neighbor cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\small}, + center cell/.style={cell,white,fill=black}, + spy using outlines={circle,red,size=58mm,magnification=4,connect spies}] + \begin{scope}[scale=.5] + \clip (-27mm,-27mm) rectangle (27mm,27mm); + + % Background + \only<1-3>{% + \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + } + \only<4->{% + \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); + } + + \begin{scope} + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + \only<1-3>{ + \begin{scope}[shift={(-1cm,0)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + \begin{scope}[shift={(-1cm,-1cm)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + \begin{scope}[shift={(0cm,-1cm)}] + \clip (-3mm,-3mm) rectangle (3mm,3mm); + \draw[very thin] (-5mm,-5mm) grid (5mm,5mm); + \end{scope} + } + + \only<1>{ + % Voisins + \node[neighbor cell] at ( 1cm, 0cm) {$v_{A,1}$}; + \node[neighbor cell] at ( 1cm, 1cm) {$v_{A,2}$}; + \node[neighbor cell] at ( 0cm, 1cm) {$v_{A,3}$}; + \node[neighbor cell] at (-1cm, 1cm) {$v_{B,1}$}; + \node[neighbor cell] at (-2cm, 1cm) {$v_{B,2}$}; + \node[neighbor cell] at (-2cm, 0cm) {$v_{B,3}$}; + \node[neighbor cell] at (-2cm,-1cm) {$v_{C,1}$}; + \node[neighbor cell] at (-2cm,-2cm) {$v_{C,2}$}; + \node[neighbor cell] at (-1cm,-2cm) {$v_{C,3}$}; + \node[neighbor cell] at ( 0cm,-2cm) {$v_{D,1}$}; + \node[neighbor cell] at ( 1cm,-2cm) {$v_{D,2}$}; + \node[neighbor cell] at ( 1cm,-1cm) {$v_{D,3}$}; + + \begin{scope}[scale=0.5,shift={(-5mm,-5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A$}; + \node[cell] at (-10mm, -0mm) {$B$}; + \node[cell] at (-10mm,-10mm) {$C$}; + \node[cell] at ( -0mm,-10mm) {$D$}; + + \node[cell] at ( 1cm, 0cm) {$v_{A,1}$}; + \node[cell] at ( 1cm, 1cm) {$v_{A,2}$}; + \node[cell] at ( 0cm, 1cm) {$v_{A,3}$}; + \node[cell] at (-1cm, 1cm) {$v_{B,1}$}; + \node[cell] at (-2cm, 1cm) {$v_{B,2}$}; + \node[cell] at (-2cm, 0cm) {$v_{B,3}$}; + \node[cell] at (-2cm,-1cm) {$v_{C,1}$}; + \node[cell] at (-2cm,-2cm) {$v_{C,2}$}; + \node[cell] at (-1cm,-2cm) {$v_{C,3}$}; + \node[cell] at ( 0cm,-2cm) {$v_{D,1}$}; + \node[cell] at ( 1cm,-2cm) {$v_{D,2}$}; + \node[cell] at ( 1cm,-1cm) {$v_{D,3}$}; + \end{scope} + } + \only<2>{ + \begin{scope}[scale=0.5,shift={(-5mm,-5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + \only<3>{ + \begin{scope}[scale=0.5,shift={(5mm,5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(-15mm,5mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(-15mm,-15mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + \begin{scope}[scale=0.5,shift={(5mm,-15mm)}] + \node[cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + \only<4>{ + \begin{scope}[scale=0.5,shift={(5mm,5mm)}] + \node[center cell] at ( -0mm, -0mm) {$A'$}; + \node[cell] at (-10mm, -0mm) {$B'$}; + \node[cell] at (-10mm,-10mm) {$C'$}; + \node[cell] at ( -0mm,-10mm) {$D'$}; + \end{scope} + } + + % Grilles: + \draw[xshift=5mm,yshift=5mm,thin] ( -5cm, -5cm) grid ( 5cm, 5cm); + \only<1-3>{\draw[xshift=5mm,yshift=5mm, step=2cm, thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + \only<4>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, thick]% + ( -5cm, -5cm) grid ( 5cm, 5cm);} + + \only<1-3>{ + \coordinate (spyhook) at (-5mm,-5mm); + } + \only<4>{ + \coordinate (spyhook) at (5mm,5mm); + } + \end{scope} + + \spy on (spyhook) in node (zoom) at (5cm,0); + \end{tikzpicture} + + %\only<1-2>{ + %Toute l'information \emph{nécessaire} est disponible pour mettre à jour $A$. + %$$ A' = f( A, v_{A_1}, v_{A_2}, v_{A_3}, v_{B_1}, B, C, D, v_{D_3} ) $$ + %ainsi que $B$, $C$ et $D$, symétriquement. + %} + %\only<3>{ + %Le bloc $(A',B',C',D')$ est répliqué 4 fois.} + %\only<4>{ + %Au décalage de la grille, le nouveau bloc est prêt pour une mise à jour. + %} + + + \vfill~ +\end{frame} + +%\begin{frame}{Propagation Paralèlle \emph{à la} Margolus} +% {Mise à jour \emph{indépendante} d'un bloc} +% \vfill +% +% \begin{columns}[c] +% \column{.4\textwidth}\centering +% \begin{tikzpicture}[scale=.5] +% \clip (-27mm,-27mm) rectangle (27mm,27mm); +% \draw[xshift=5mm,yshift=5mm] ( -5cm, -5cm) grid ( 5cm, 5cm); +% \fill[red] (0,0) circle (3mm); +% \only<1-3>{\draw[xshift=5mm,yshift=5mm, step=2cm, very thick]% +% ( -5cm, -5cm) grid ( 5cm, 5cm);} +% \only<4->{\draw[xshift=-5mm,yshift=-5mm, step=2cm, very thick]% +% ( -5cm, -5cm) grid ( 5cm, 5cm);} +% \begin{scope}[on background layer] +% \only<1-3>{% +% \fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm); +% \fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);} +% \only<4->{% +% \fill[red!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);} +% \end{scope} +% \end{tikzpicture} +% \column{.6\textwidth}\centering +% \begin{tikzpicture} +% \only<1-2,4>{% +% \fill[red!50] (-1cm,-1cm) rectangle (1cm,1cm);} +% \only<3>{% +% \fill[red!50, shift={(1cm,1cm)}] (0cm,0cm) rectangle (1cm,1cm); +% \fill[red!50, shift={(1cm,-2cm)}] (0cm,0cm) rectangle (1cm,1cm); +% \fill[red!50, shift={(-2cm,1cm)}] (0cm,0cm) rectangle (1cm,1cm); +% \fill[red!50, shift={(-2cm,-2cm)}] (0cm,0cm) rectangle (1cm,1cm);} +% \only<1>{% +% \fill[blue!50] (0cm,1cm) -- (0cm,2cm) -- (2cm,2cm) -- (2cm,0cm) -- (1cm,0cm) -- (1cm,1cm) -- cycle;} +% \draw[very thin,dashed] (-2,-2) grid (2,2); +% \draw[step=2cm] (-2,-2) grid (2,2); +% \draw[step=4cm, very thick, shift={(-2cm,-2cm)}] (-4mm,-4mm) grid (44mm,44mm); +% \only<1>{% +% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A) at (5mm,5mm) {A};% +% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (B) at (-5mm,5mm) {B};% +% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (C) at (-5mm,-5mm) {C};% +% \node [draw=red, thick, dashed, minimum size=6mm, inner sep=0, circle] (D) at (5mm,-5mm) {D};% +% \node (va1) at (15mm,5mm) {$v_{A_1}$};% +% \node (va2) at (15mm,15mm) {$v_{A_2}$};% +% \node (va3) at (5mm,15mm) {$v_{A_3}$};% +% \node (vb1) at (-5mm,15mm) {$v_{B_1}$};% +% \node (vd3) at (15mm,-5mm) {$v_{D_3}$};% +% } +% \only<2>{% +% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (5mm,5mm) {A'};% +% \node (B') at (-5mm,5mm) {B'};% +% \node (C') at (-5mm,-5mm) {C'};% +% \node (D') at (5mm,-5mm) {D'};% +% } +% \only<3>{% +% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (15mm,15mm) {A'};% +% \node (B') at ( 5mm,15mm) {B'};% +% \node (C') at ( 5mm, 5mm) {C'};% +% \node (D') at (15mm, 5mm) {D'};% +% \begin{scope}[shift={(-15mm,5mm)}] +% \node (A') at (10mm,10mm) {A'};% +% \node (B') at ( 0mm,10mm) {B'};% +% \node (C') at ( 0mm, 0mm) {C'};% +% \node (D') at (10mm, 0mm) {D'};% +% \end{scope} +% \begin{scope}[shift={(5mm,-15mm)}] +% \node (A') at (10mm,10mm) {A'};% +% \node (B') at ( 0mm,10mm) {B'};% +% \node (C') at ( 0mm, 0mm) {C'};% +% \node (D') at (10mm, 0mm) {D'};% +% \end{scope} +% \begin{scope}[shift={(-15mm,-15mm)}] +% \node (A') at (10mm,10mm) {A'};% +% \node (B') at ( 0mm,10mm) {B'};% +% \node (C') at ( 0mm, 0mm) {C'};% +% \node (D') at (10mm, 0mm) {D'};% +% \end{scope} +% } +% \only<4>{ +% \begin{scope}[shift={(-15mm,-15mm)}] +% \node [fill=red, minimum size=6mm, inner sep=0, circle] (A') at (10mm,10mm) {A};% +% \node (B') at ( 0mm,10mm) {B};% +% \node (C') at ( 0mm, 0mm) {C};% +% \node (D') at (10mm, 0mm) {D};% +% \end{scope} +% } +% \end{tikzpicture} +% \end{columns} +% +% \centering +% \only<1-2>{ +% Toute l'information \emph{nécessaire} est disponible pour mettre à jour $A$. +% $$ A' = f( A, v_{A_1}, v_{A_2}, v_{A_3}, v_{B_1}, B, C, D, v_{D_3} ) $$ +% ainsi que $B$, $C$ et $D$, symétriquement. +% } +% \only<3>{ +% Le bloc $(A',B',C',D')$ est répliqué 4 fois.} +% \only<4>{ +% Au décalage de la grille, le nouveau bloc est prêt pour une mise à jour. +% } +% +% +% \vfill~ +%\end{frame} diff --git a/otb.sectorisation.tex b/otb.sectorisation.tex new file mode 100644 index 0000000..5f57656 --- /dev/null +++ b/otb.sectorisation.tex @@ -0,0 +1,35 @@ +\begin{frame}{Exemple 1: Sectorisation} + + \begin{columns} + \column{.5\textwidth}\centering + \includegraphics[width=.6\textwidth]{raster/sectors-original}\\ + \textcolor{gray}{\Tiny O. Hallatschek et al : “Genetic drift at expanding + frontiers promotes gene segregation”, 2007}\\[1em] + \column{.5\textwidth}\centering + \includegraphics[width=.6\textwidth]{raster/sectors} + \end{columns} + + \bigskip + \begin{columns} + \column{.5\textwidth} + \begin{itemize} + \item Démarche expérimentale + \begin{enumerate} + \item Croissance $1 \rightarrow 1000$ + \item Marquage 50\% \textcolor{red}{rouge}, 50\% \textcolor{green}{vert} + \item Croissance $1000 \rightarrow 200000$ + \end{enumerate} + \end{itemize} + + \column{.5\textwidth} + \begin{itemize} + \item Deux résultats + \begin{enumerate} + \item Moteur physique réaliste + \item Nouvelle hypothèse pour la sectorisation + \end{enumerate} + \end{itemize} + \end{columns} + +\end{frame} + diff --git a/otb.stable.pop.tex b/otb.stable.pop.tex new file mode 100644 index 0000000..540c55b --- /dev/null +++ b/otb.stable.pop.tex @@ -0,0 +1,90 @@ +\begin{frame}[fragile]{Exemple 2: Cercles concentriques} + + \begin{columns} + \column{.6\textwidth} + \begin{itemize} + \item \structure{Morphogènes} : Vert, Rouge, Bleu + \item \structure{États} + \begin{itemize} + \item $A$: Croissance(0.005), Dépôt(Vert,50), Tumble() + \item $B$: Croissance(0.005), Dépôt(Bleu,50), Tumble() + \item $C$: Croissance(0.005), Dépôt(Rouge,50), Tumble() + \item $D$: Destruction() + \end{itemize} + \item \structure{Transition} + \begin{itemize} + \item $c_1$: IsDaughter() + \item $c_2$: LessThreshold(Vert,0.1) + \item $c_3$: LessThreshold(Vert,0.1) $\wedge$ LessThreshold(Rouge,10.0) + \end{itemize} + \end{itemize} + + \column{.4\textwidth}\center + \includegraphics[width=\textwidth]{raster/cercles} + \end{columns} + \begin{center} + \begin{tikzpicture}[ + node distance=20mm, + state/.style={draw,circle,anchor=mid}, + transition/.style={-Stealth,semithick,bend left}] + \node[state] (mere) {$A$}; + \node[state,right=of mere] (fp) {$B$}; + \node[state,right=of fp] (fl) {$C$}; + \node[state,right=of fl] (ded) {$D$}; + \draw[transition] (mere) to node [auto,]{$c_1$} (fp); + \draw[transition] (fp) to node [auto,]{$c_2$} (fl); + \draw[transition] (fl) to node [auto,]{$c_3$} (ded); + \end{tikzpicture} + \end{center} +\end{frame} + +% \begin{lstlisting} +%{ +% "signal" : [ +% {"Vert" : [0.01, 2.5]}, +% {"Rouge": [0.001, 1.5]}, +% {"Bleu" : [0.001, 1.5]} +% ], +% "reaction" : [ +% [["bleu","vert"], ["vert","vert"], 0.05], +% [["bleu"], ["bleu","bleu"], 0.05], +% [["vert"], [], 0.05] +% ], +% "type" : [ +% "AALEADER", +% "CDAUGHTER", +% "FDAUGHTER", +% "ZOMBIE" +% ], +% "behaviour" : { +% "AALEADER" : [ +% { "Divide" : 0.005 }, +% { "Tumble" : [] }, +% { "EmitSignal" : [ "Vert", 50 ] } +% ], +% "FDAUGHTER" : [ +% { "Divide" : 0.005 }, +% { "Tumble" : [] }, +% { "EmitSignal" : [ "Bleu", 50 ] } +% ], +% "CDAUGHTER" : [ +% { "Divide" : 0.005 }, +% { "Tumble" : [] }, +% { "EmitSignal" : [ "Rouge", 50 ] } +% ], +% "ZOMBIE" : [ { "Die" : [] } ] +% }, +% "transition" : [ +% ["NA","NA","NA","NA"], +% ["CD","NA","NA","NA"], +% ["NA","CF","NA","NA"], +% ["NA","NA","CA","ND"] +% ], +% "condition" : [ +% {"CD" : "ISDAUGHTER()"}, +% {"CF" : "LESSTHRESHOLD(VERT,1.e-1f)"}, +% {"CA" : "AND(LESSTHRESHOLD(VERT,1.e-1f),LESSTHRESHOLD(ROUGE,10.f))"}, +% {"ND" : "TRUE"} +% ] +%} +% \end{lstlisting} diff --git a/part1.conclude.tex b/part1.conclude.tex new file mode 100644 index 0000000..cbe4ef2 --- /dev/null +++ b/part1.conclude.tex @@ -0,0 +1,19 @@ +\begin{frame}%[label=this one] + \frametitle{Conclusion et perspectives} + +\begin{itemize} + \item Contributions + \begin{enumerate} + \item \structure{Cadre unifié} pour approcher la modélisation multi-niveau + \item \structure{Identification} de formalisme, modèle, système + \item \structure{Introduction} de $\mathbf{Abs}_S$ + \end{enumerate} + \bigskip + \item Perspectives + \begin{enumerate} + \item \structure{Étude} de la catégorie $\mathbf{Abs}_S$ + \item \structure{Intégrer} les niveaux de description + \end{enumerate} +\end{itemize} + +\end{frame} diff --git a/part2.conclude.tex b/part2.conclude.tex new file mode 100644 index 0000000..3e2a894 --- /dev/null +++ b/part2.conclude.tex @@ -0,0 +1,22 @@ +\begin{frame}[label=this one] + \frametitle{Conclusion et perspectives} + + \begin{itemize} + \item \structure{Conclusion} + \begin{enumerate} + \item \structure{Spatialisation de l'activité} à partir des \structure{interactions} + \item \structure{Caractérisation topologique} de la progression de l'activité + \item \structure{Algorithme} générique de suivi du front d'activité + \item \structure{Optimisation} fondée sur l'activité + \end{enumerate} + \bigskip + \item \structure{Perspectives} + \begin{enumerate} + \item \structure{Ajouter} le support de l'activité à MGS + \item \structure{Raffiner} la zone active en sous-régions + \item \structure{Réifier} le bord de la zone active + \item \structure{Décrire} un modèle multi-niveau de la propagation du feu de forêt + \end{enumerate} + \end{itemize} + +\end{frame} diff --git a/part3.conclude.tex b/part3.conclude.tex new file mode 100644 index 0000000..f7605a9 --- /dev/null +++ b/part3.conclude.tex @@ -0,0 +1,23 @@ +\begin{frame}{Conclusion et perspectives} + + \begin{itemize} + \item \structure{Conclusion}: + \begin{enumerate} + \item Développement d'un simulateur d'une colonie de bactéries + \item Programmation spécifique SIMD, non triviale + \item Proposition d'un algorithme (PPM) pour la simulation parallèle + d'un automate cellulaire 2D + \end{enumerate} + \bigskip + \item \structure{Perspectives}: + \begin{enumerate} + \item Calibrer les paramètres des moteurs physique et chimique + \item Tester d'autres méthodes de discrétisation pour l'équation de + réaction-diffusion + \item Construire une IHM (GUI, CLI, etc.) + \item Effectuer des tests de performance + \item Diffuser l'outil auprès de la communauté + \end{enumerate} + \end{itemize} + +\end{frame} diff --git a/plan.tex b/plan.tex new file mode 100644 index 0000000..375b9a8 --- /dev/null +++ b/plan.tex @@ -0,0 +1,9 @@ +\begin{frame}[noframenumbering]{ } + \begin{columns} + \column{.7\textwidth} + {\LARGE\tableofcontents[\tocshowonlycurrentsection]} + + \column{.2\textwidth} + \centering\drawfigure + \end{columns} +\end{frame} diff --git a/predator.prey.tex b/predator.prey.tex new file mode 100644 index 0000000..40b413d --- /dev/null +++ b/predator.prey.tex @@ -0,0 +1,109 @@ +\begin{frame}%[label=this one] + \frametitle{Système proies/prédateurs (système)} + \framesubtitle{Description du système} + + \begin{columns} + \column{.7\textwidth}\centering + \includegraphics[width=.7\textwidth]{raster/system-predator-prey}\\ + \mkCitation{S. S. Mader, Biology 6th edition, 1998} + + \bigskip + \begin{itemize} + \item Les proies se reproduisent spontanément + \item Les prédateurs meurent spontanément + \item Les prédateurs chassent les proies + \begin{itemize} + \item Les proies meurent (chassées) + \item Les prédateurs peuvent se reproduire (efficacité de la chasse) + \end{itemize} + \end{itemize} + \end{columns} + +\end{frame} + +\begin{frame}%[label=this one] + \frametitle{Système proies/prédateurs (modèles)} + \framesubtitle{Modèles et formalismes} + \centering + \begin{tikzpicture}[overlay,% + node distance=13mm and 20mm, + model/.style={draw,circle,on grid=true,fill=white,minimum size=24pt}, + abstraction/.style={-Stealth,thick} + ] + \node[model, left=of current page.center] (m1) {$\model_1$}; + \node[model,above=of current page.center] (m2) {$\model_2$}; + \uncover<2->{ + \node[model,below=of current page.center] (m3) {$\model_3$}; + } + \uncover<3>{ + \node[model,right=of current page.center] (m4) {?}; + } + \uncover<4->{ + \node[model,right=of current page.center] (m4) {$\model_4$}; + } + \draw[abstraction] (m1) to node[anchor=south,midway,sloped] + {\tiny trajectoire moyenne} (m2); + \uncover<2->{ + \draw[abstraction] (m1) to node[anchor=north,midway,sloped,swap] + {\tiny aggrégation de l'espace} (m3); + } + \uncover<3>{ + \draw[abstraction,dashed] (m2) to (m4); + \draw[abstraction,dashed] (m1) to (m4); + \draw[abstraction,dashed] (m3) to (m4); + } + \uncover<4->{ + \draw[abstraction] (m2) to node[anchor=south,midway,sloped,swap] + {\tiny aggrégation de l'espace} (m4); + \draw[abstraction] (m3) to node[anchor=north,midway,sloped] + {\tiny trajectoire moyenne} (m4); + } + \end{tikzpicture} + + \begin{tikzpicture}[overlay] + \uncover<1-2>{ + \node[anchor=south east] (m1eq) at (m1.north west) {\tiny$ + \left\{ + \arraycolsep=1.4pt%\def\arraystretch{2.2} + \begin{array}{rcl} + \displaystyle\frac{dU_V}{dt} &=& r U_V (1 - \displaystyle\frac{U_V}{K}) + - g U_P U_V\\[1.5ex] + \displaystyle\frac{dU_P}{dt} &=& n U_V U_P - \mu U_P + \end{array} + \right.%} + $}; + \node[anchor=north] at (m1eq.south) {\includegraphics[height=2cm]{vector/lv-graph}}; + \node[anchor=south east] (m2eq) at ($(m2.north west)+(0,7pt)$) {\tiny$ + \arraycolsep=1.4pt%\def\arraystretch{0} + \begin{array}{rl} + V + E &\overset{b}{\longrightarrow} 2\,V \\ + P + V &\overset{p_1}{\longrightarrow} 2\,P \\ + P + V &\overset{p_2}{\longrightarrow} P + E + \end{array} + \quad + \begin{array}{rl} + V &\overset{d_V}{\longrightarrow} E \\ + P &\overset{d_P}{\longrightarrow} E + \end{array} + $}; + \node[anchor=west] at (m2eq.east) {\includegraphics[width=2cm]{vector/lv-gil-graph}}; + } + \uncover<2>{ + \node[anchor=north] (m3eq) at (m3.south) {\tiny$ + \left\{ + \arraycolsep=1.4pt%\def\arraystretch{2.0} + \begin{array}{rcll} + \displaystyle\frac{du_V}{dt} &=& r u_V (1 - \displaystyle\frac{u_V}{K}) - g u_P u_V \\ + &+& D_V (\nabla^2 u_V + u_V \nabla^2 u_P - u_P \nabla^2 u_V) + \\[1.5ex] + \displaystyle\frac{du_P}{dt} &=& n u_V u_P - \mu u_P \\ + &+& D_P (\nabla^2 u_P + u_P \nabla^2 u_V - u_V \nabla^2 u_P) + \end{array} + \right.%} + $}; + } + \uncover<4>{ + \node[anchor=west] at (m4.east) {\structure{[Lugo et McKane 2008]}}; + } + \end{tikzpicture} +\end{frame} diff --git a/representing.space.tex b/representing.space.tex new file mode 100644 index 0000000..6833a73 --- /dev/null +++ b/representing.space.tex @@ -0,0 +1,37 @@ +\begin{frame}{Representing Space} + \begin{columns} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/space-nospace-shade}} + \only<2>{\includegraphics[width=\textwidth]{raster/space-nospace}} + \column{.4\textwidth} + \begin{itemize} + \item<1> Without space + \item<2> With space + \end{itemize} + \end{columns} + + \begin{columns} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/space-discrete-shade}} + \only<2>{\includegraphics[width=\textwidth]{raster/space-discrete}} + \column{.4\textwidth} + \begin{itemize} + \item<2> Discrete + \item<2> Continuous + \end{itemize} + \end{columns} + + \begin{columns} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/space-newton-shade}} + \only<2>{\includegraphics[width=\textwidth]{raster/space-newton}} + \column{.4\textwidth} + \begin{itemize} + % Embedded in preexisting space + \item<2> Absolute (Newtonian) + % induced by relationship between entities + \item<2> Relative (Leibnizian) + \end{itemize} + \end{columns} + +\end{frame} diff --git a/representing.space.time.interaction.tex b/representing.space.time.interaction.tex new file mode 100644 index 0000000..95402c2 --- /dev/null +++ b/representing.space.time.interaction.tex @@ -0,0 +1,32 @@ +\begin{frame}{Representing the Evolution Function} + \begin{center} + \includegraphics[height=1cm]{raster/evolution-function} + \end{center} + \begin{columns} + \column{.6\textwidth} + \includegraphics[width=\textwidth]{raster/sync-sync} + \column{.4\textwidth} + \begin{itemize} + \item Synchronous\\all the events + \end{itemize} + \end{columns} + \vspace{-2ex} + \begin{columns} + \column{.6\textwidth} + \includegraphics[width=\textwidth]{raster/sync-seq} + \column{.4\textwidth} + \begin{itemize} + \item Sequential\\exactly one event + \end{itemize} + \end{columns} + \vspace{-2ex} + \begin{columns} + \column{.6\textwidth} + \includegraphics[width=\textwidth]{raster/sync-async} + \column{.4\textwidth} + \begin{itemize} + \item Asynchronous\\at least one event + \end{itemize} + \end{columns} + +\end{frame} diff --git a/representing.time.tex b/representing.time.tex new file mode 100644 index 0000000..d60799c --- /dev/null +++ b/representing.time.tex @@ -0,0 +1,35 @@ +\begin{frame}{Representing Time} + \begin{columns} + \column{.4\textwidth} + \begin{itemize} + \item<1> Without time + \item<2> With time + \end{itemize} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/time-notime-shadetime}} + \only<2>{\includegraphics[width=\textwidth]{raster/time-notime-shadenotime}} + \end{columns} + + \begin{columns} + \column{.4\textwidth} + \begin{itemize} + \item<2> Discrete + \item<2> Continuous + \end{itemize} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/time-discrete-shade}} + \only<2>{\includegraphics[width=\textwidth]{raster/time-discrete}} + \end{columns} + + \begin{columns} + \column{.4\textwidth} + \begin{itemize} + \item<2> Absolute (Newtonian) + \item<2> Relative (Leibnizian) + \end{itemize} + \column{.6\textwidth} + \only<1>{\includegraphics[width=\textwidth]{raster/time-newton-shade}} + \only<2>{\includegraphics[width=\textwidth]{raster/time-newton}} + \end{columns} + +\end{frame} diff --git a/sbgp.tex b/sbgp.tex new file mode 100644 index 0000000..2061a2b --- /dev/null +++ b/sbgp.tex @@ -0,0 +1,26 @@ +\begin{frame}[fragile]{Décrire une simulation avec SBGP} + + \begin{columns} + \column{.4\textwidth} + \begin{lstlisting} + { + "signals" = [], + "reactions" = [], + "type" = [], + "behavior" = {}, + "transition" = [], + "cond_transition" = [] + } + \end{lstlisting} + + \column{.5\textwidth} + \begin{itemize}[<+->] + \item signals: liste des morphogènes + \item reactions: liste des réactions + \item type: liste des états possibles pour les bactéries + \item behavior: liste des actions effectuées par les bactéries par type + \item transition: table de transition pour un changement de type + \item cond\_transition: liste des conditions de transition + \end{itemize} + \end{columns} +\end{frame} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..507c813 --- /dev/null +++ b/shell.nix @@ -0,0 +1,77 @@ +#To run this, you need nix (https://ariya.io/2016/05/nix-as-os-x-package-manager) +#and the package nix-shell (just run `nix-env -iA nixos.nix-shell`) +#Then, in the directory of this file, just call `nix-shell` + +#This will create a custom shell (with only the needed dependencies) for +#building the presentation +with import {}; +stdenv.mkDerivation { + name = "thesis-presentation"; + shellHook = '' + latexmk \ + -pvc \ + -view=none \ + -silent \ + -time \ + -interaction=nonstopmode \ + -xelatex main.tex + latexmk -c + rm *.{snm,nav,vrb} + ''; + buildInputs = [ + ( texlive.combine { + inherit (texlive) + scheme-basic + collection-langfrench + #algorithm2e + #biblatex + #caption + #enumitem + #logreq + #minitoc + #multirow + #pgf + #pgfplots + #placeins + #relsize + #setspace + #standalone + #xcolor + #xkeyval + #xstring + beamer + colortbl + euenc + extsizes + filehook + jknapltx + latexmk + listings + metafont + ms + pdfpages + polyglossia + realscripts + rsfs + siunitx + tools + ucharcat + unicode-math + xetex + xetex-def + xltxtra + zapfding + ;} ) + #biber + ]; +} +#thesis = buildEnv { +# name = "memoire-these"; +# buildInputs = [ +# ]; +# shellHook = '' +# alias make=$(which buildthesis) +# ln -s $(which buildthesis) buildme +# echo "Juste type 'make' or './buildme' to build the thesis" +# ''; +#}; diff --git a/simple.ff.example.tex b/simple.ff.example.tex new file mode 100644 index 0000000..7678ed7 --- /dev/null +++ b/simple.ff.example.tex @@ -0,0 +1,61 @@ +\begin{frame}[fragile]%,label=this one] +\frametitle{Modèle 1: un automate à 3 états} +%\framesubtitle{a 3-state fire propagation} +% Nécessaire plus loin pour l'activité +\hspace{5mm} +\input{vector/simpleexamplelegend.tikz} +\hfill +% PROPAGATION RULE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\input{vector/simpleexample-propagation.tikz} +\hfill +% EXTINCTION RULE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\input{vector/simpleexample-extinction.tikz} +\hspace{5mm} + +\pause +\bigskip +\begin{columns}[t] +\column{.72\textwidth} +\begin{overlayarea}{\textwidth}{.35\textheight} +\begin{itemize} +\item<1-> Topologie des interactions + +\medskip +\only<2>{\input{vector/simpleexample-moore.tikz}} + +\item<3-> Lois d'évolution + +\medskip +\only<3->{ +\defverbatim[colored]\transevol{% +\begin{semiverbatim} +trans $T$ = \{ + +  {\color{forest}`Forest} / neighboursMember({\color{fire}`Fire}) => {\color{fire}`Fire};\par +  {\color{fire}`Fire} => {\color{ashes}`Ash}; + +\} +\end{semiverbatim}} +\transevol +} + +\end{itemize} +\end{overlayarea} +\column{.24\textwidth} +\uncover<4->{ +\begin{overlayarea}{.9\textwidth}{.2\textheight} + \begin{center} + \animatevalue<4-10>{\currentimg}{5}{16} + \includegraphics[width=\textwidth]{animation/ffire-frame-\the\currentimg.png} + \end{center} +\end{overlayarea} +\end{columns} +} +\only<2>{\begin{center} +{\small Deux cellules \structure{sont voisines} si le feu peut se propager de +l'une à l'autre} +\end{center}} +\only<3>{{\large + $$ C^{i+1} = T(C^i)$$ +}} +\end{frame} diff --git a/test.tex b/test.tex new file mode 100644 index 0000000..0baeaff --- /dev/null +++ b/test.tex @@ -0,0 +1,28 @@ +\begin{frame}[plain,noframenumbering]{TEST} +\tikz[overlay] \node[very thick,minimum width=\textwidth, + minimum height=\textheight,draw] at (current page.center) {x}; + + + \begin{tikzpicture} + \node { + \foreach \posx/\posy/\kolor in {% + 0cm/7cm/orange, + 0cm/6cm/red, + 0cm/5cm/green, + 0cm/4cm/yellow, + 0cm/3cm/magenta, + 0cm/2cm/violet, + 0cm/1cm/blue, + 0cm/0cm/cyan, + 1cm/5cm/active, + 1cm/4cm/ashes, + 1cm/3cm/fire, + 1cm/2cm/forest, + 1cm/1cm/frontier, + 1cm/0cm/quiescent} + \tikz \node[fill=\kolor,minimum size=5mm,inner sep=0pt,label=right:\kolor] + at (\posy,\posx) {}; + }; + \end{tikzpicture} + +\end{frame} diff --git a/title.tex b/title.tex new file mode 100644 index 0000000..1ae32f3 --- /dev/null +++ b/title.tex @@ -0,0 +1,29 @@ +\begin{frame}[plain,noframenumbering]{} + + \begin{center} + {\Huge\structure\inserttitle} + \medskip + \par\insertsubtitle + \end{center} +\vfill + + \begin{center} + Soutenance de thèse de\\[.5em] + {\huge\insertauthor} + + \bigskip + le 6 juillet 2017\\ + \small LACL (Créteil, France)\\ + \end{center} + +\vfill +\hspace{5mm} +\includegraphics[height=.6cm]{raster/logo-lacl} +\hfill +\includegraphics[height=.6cm]{raster/logo-upe} +\hfill +\includegraphics[height=.6cm]{raster/logo-anr} +\hfill +\includegraphics[height=.6cm]{raster/logo-synbiotic} +\hspace{5mm} +\end{frame} diff --git a/wave.algorithm.tex b/wave.algorithm.tex new file mode 100644 index 0000000..d182703 --- /dev/null +++ b/wave.algorithm.tex @@ -0,0 +1,22 @@ +\begin{frame} +\newcommand{\myA}{{\color{active}A}} +\newcommand{\myF}{{\color{frontier}F}} +\frametitle{Algorithme du suivi de l'activité} +\begin{columns} +\column{.5\textwidth} +\input{vector/algo-frontier.tikz} +\column{.5\textwidth} +\begin{tabular}{rl} + $A, F$:& set of cells\\ + $C$:& collection +\end{tabular} +\[ +\huge +\begin{array}{rl} +\uncover<1->{C &\leftarrow T(\myA|\myF)}\\ +\uncover<2->{\myA &\leftarrow P_C(\myA) \cup P_C(\myF)}\\ +\uncover<3->{\myF &\leftarrow \text{Lk}(\myA)} +\end{array} +\] +\end{columns} +\end{frame} diff --git a/where.is.activity.tex b/where.is.activity.tex new file mode 100644 index 0000000..3592537 --- /dev/null +++ b/where.is.activity.tex @@ -0,0 +1,110 @@ +\begin{frame} +\frametitle{Localiser l'activité} + +\centering +\input{vector/active-equation.tikz} +\begin{columns} + \column{.65\textwidth}\centering + \input{vector/active-quiescent-reprensentation.tikz} + \column{.35\textwidth} +\end{columns} +\end{frame} + +\begin{frame}[label=this one] + \frametitle{Simulations \mgs et sous-collection active} + \begin{itemize} + \item Trajectoires dans \mgs + \begin{center} + \begin{tikzpicture} [scale=0.4,baseline, + cell/.style={minimum size=0.35cm}] + \fill (0.65,0.65) rectangle (8.35,8.35); + \foreach \p/\c in% + { { (1,8)/forest},{(2,8)/forest},{(3,8)/forest},{(4,8)/forest},{(5,8)/forest},{(6,8)/forest},{(7,8)/forest},{(8,8)/forest}% + ,{(1,7)/forest},{(2,7)/forest},{(3,7)/forest},{(4,7)/forest},{(5,7)/forest},{(6,7)/forest},{(7,7)/forest},{(8,7)/forest}% + ,{(1,6)/forest},{(2,6)/forest},{(3,6)/fire}, {(4,6)/fire}, {(5,6)/forest},{(6,6)/forest},{(7,6)/forest},{(8,6)/forest}% + ,{(1,5)/forest},{(2,5)/forest},{(3,5)/forest},{(4,5)/fire}, {(5,5)/forest},{(6,5)/forest},{(7,5)/forest},{(8,5)/forest}% + ,{(1,4)/forest},{(2,4)/forest},{(3,4)/forest},{(4,4)/forest},{(5,4)/forest},{(6,4)/forest},{(7,4)/forest},{(8,4)/forest}% + ,{(1,3)/forest},{(2,3)/forest},{(3,3)/forest},{(4,3)/forest},{(5,3)/forest},{(6,3)/forest},{(7,3)/forest},{(8,3)/forest}% + ,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/forest},{(7,2)/forest},{(8,2)/fire}% + ,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/forest},{(7,1)/forest},{(8,1)/fire}} + \node[cell,fill=\c,draw=white,line width=1pt] at \p {}; + \node at (4.5,0) {$C^0$}; + \end{tikzpicture} + \hfill + \begin{tikzpicture} [scale=0.4,baseline, + cell/.style={minimum size=0.35cm}] + \fill (0.65,0.65) rectangle (8.35,8.35); + \foreach \p/\c in% + { { (1,8)/forest},{(2,8)/forest},{(3,8)/forest},{(4,8)/forest},{(5,8)/forest},{(6,8)/forest},{(7,8)/forest},{(8,8)/forest}% + ,{(1,7)/forest},{(2,7)/fire}, {(3,7)/fire}, {(4,7)/fire}, {(5,7)/fire}, {(6,7)/forest},{(7,7)/forest},{(8,7)/forest}% + ,{(1,6)/forest},{(2,6)/fire}, {(3,6)/ashes}, {(4,6)/ashes}, {(5,6)/fire}, {(6,6)/forest},{(7,6)/forest},{(8,6)/forest}% + ,{(1,5)/forest},{(2,5)/fire}, {(3,5)/fire}, {(4,5)/ashes}, {(5,5)/fire}, {(6,5)/forest},{(7,5)/forest},{(8,5)/forest}% + ,{(1,4)/forest},{(2,4)/forest},{(3,4)/fire}, {(4,4)/fire}, {(5,4)/fire}, {(6,4)/forest},{(7,4)/forest},{(8,4)/forest}% + ,{(1,3)/forest},{(2,3)/forest},{(3,3)/forest},{(4,3)/forest},{(5,3)/forest},{(6,3)/forest},{(7,3)/fire}, {(8,3)/fire}% + ,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/forest},{(7,2)/fire}, {(8,2)/ashes}% + ,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/forest},{(7,1)/fire}, {(8,1)/ashes}} + \node[cell,fill=\c,draw=white,line width=1pt] at \p {}; + \node at (4.5,0) {$C^1 = T(C^0)$}; + \end{tikzpicture} + \hfill + \begin{tikzpicture} [scale=0.4,baseline, + cell/.style={minimum size=0.35cm}] + \fill (0.65,0.65) rectangle (8.35,8.35); + \foreach \p/\c in% + { { (1,8)/fire}, {(2,8)/fire}, {(3,8)/fire}, {(4,8)/fire}, {(5,8)/fire}, {(6,8)/fire}, {(7,8)/forest},{(8,8)/forest}% + ,{(1,7)/fire}, {(2,7)/ashes}, {(3,7)/ashes}, {(4,7)/ashes}, {(5,7)/ashes}, {(6,7)/fire}, {(7,7)/forest},{(8,7)/forest}% + ,{(1,6)/fire}, {(2,6)/ashes}, {(3,6)/ashes}, {(4,6)/ashes}, {(5,6)/ashes}, {(6,6)/fire}, {(7,6)/forest},{(8,6)/forest}% + ,{(1,5)/fire}, {(2,5)/ashes}, {(3,5)/ashes}, {(4,5)/ashes}, {(5,5)/ashes}, {(6,5)/fire}, {(7,5)/forest},{(8,5)/forest}% + ,{(1,4)/fire}, {(2,4)/fire}, {(3,4)/ashes}, {(4,4)/ashes}, {(5,4)/ashes}, {(6,4)/fire}, {(7,4)/fire}, {(8,4)/fire}% + ,{(1,3)/forest},{(2,3)/fire}, {(3,3)/fire}, {(4,3)/fire}, {(5,3)/fire}, {(6,3)/fire}, {(7,3)/ashes}, {(8,3)/ashes}% + ,{(1,2)/forest},{(2,2)/forest},{(3,2)/forest},{(4,2)/forest},{(5,2)/forest},{(6,2)/fire}, {(7,2)/ashes}, {(8,2)/ashes}% + ,{(1,1)/forest},{(2,1)/forest},{(3,1)/forest},{(4,1)/forest},{(5,1)/forest},{(6,1)/fire}, {(7,1)/ashes}, {(8,1)/ashes}} + \node[cell,fill=\c,draw=white,line width=1pt] at \p {}; + \node at (4.5,0) {$C^2 = T(C^1) = T^2(C^0)$}; + \end{tikzpicture} + + \end{center} + \item Décomposition de l'activité et trajectoires + \begin{itemize} + \item \textcolor{active}{Sous-collection active $A_i$} et + \textcolor{quiescent}{sous-collection quiescente $Q_i$} + \item Décomposition de la relation d'évolution + \[ A^{i+1} + Q^{i+1} = T(A^i + Q^i) \] + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}{Relation entre $A^{i+1},Q^{i+1}$ et $A^i,Q^i$} + $$ A^{i+1} + Q^{i+1} = T(A^i + Q^i) $$ + \begin{itemize} + \item Sous-collection \textcolor{frontier}{frontière $F^i$} + \end{itemize} + \begin{columns} + \column{.5\textwidth} + \begin{enumerate} + \item \structure{Propriété} $T(A^i + Q^i) = T(A^i \mid Q^i) + Q^i$ + \item \structure{Propriété} $| A^{i+1} | \subseteq | A^i + F^i |$ + \item \structure{Propriété} $| Q^i - F^i | \subseteq | Q^{i+1} |$ + \item \structure{Définition} $F^i = \text{Lk}(A^i)$ + \item \structure{Remarque} $T(A^i \mid Q^i) = T(A^i \mid F^i)$ + \item \structure{Résultat} $C^{i+1} = T(A^i \mid F^i) + F^i + (Q^i - F^i)$ + \end{enumerate} + \column{.5\textwidth} + $$ \text{Lk} \left( + \tikz[baseline] \node {\includegraphics[width=2cm]{vector/operateursS}}; + \right) = + \tikz[baseline] \node {\includegraphics[width=2cm]{vector/operateursLkS}}; + $$ + \end{columns} + + \bigskip + \[ + \left\{ + \arraycolsep=1.4pt%\def\arraystretch{2.2} + \begin{array}{rl} + A^0 &= \text{PatMatch}_T(C^0)\\ + A^{i+1} &= \text{PatMatch}_T\left[ T(A^i \mid \text{Lk}(A^i)) + \text{Lk}(A^i) \right] + \end{array} + \right. + \] +\end{frame}