Commit b5fef2cb authored by François Févotte's avatar François Févotte

Ex 3-3 : Correction de bugs dans les outils de reproductibilité

parent 3cb0e302
...@@ -5,7 +5,7 @@ module Tools ...@@ -5,7 +5,7 @@ module Tools
function run_julia(args...) function run_julia(args...)
cd(@__DIR__) cd(@__DIR__)
julia = Base.julia_cmd()[1] julia = Base.julia_cmd()[1]
run(`$julia --color=yes --startup-file=no --project $args`) @time run(`$julia --color=yes --startup-file=no --project $args`)
nothing nothing
end end
...@@ -17,9 +17,14 @@ function weave() ...@@ -17,9 +17,14 @@ function weave()
cd(@__DIR__) cd(@__DIR__)
opts = String[] opts = String[]
isfile("Exercice.so") && push!(opts, "-JExercice.so") if isfile("Exercice.so")
@info "Using custom system image: Exercice.so"
push!(opts, "-JExercice.so")
end
run_julia(opts..., "make.jl") run_julia(opts..., "weave.jl")
end end
end end
nothing
...@@ -8,9 +8,9 @@ Pkg.activate(@__DIR__) ...@@ -8,9 +8,9 @@ Pkg.activate(@__DIR__)
Pkg.instantiate() Pkg.instantiate()
using PackageCompiler using PackageCompiler
@time create_sysimage(Symbol.(keys(Pkg.project().dependencies)); create_sysimage(Symbol.(keys(Pkg.project().dependencies));
sysimage_path=Pkg.project().name * ".so", sysimage_path=Pkg.project().name * ".so",
precompile_execution_file=joinpath(@__DIR__, "make.jl")) precompile_execution_file=joinpath(@__DIR__, "weave.jl"))
# Local Variables: # Local Variables:
# mode: julia # mode: julia
......
...@@ -946,9 +946,9 @@ Missing data: 2012-09-29 - 2012-10-20 (21 days) ...@@ -946,9 +946,9 @@ Missing data: 2012-09-29 - 2012-10-20 (21 days)
<p>Une visualisation de l&#39;ensemble des données semble montrer une augmentation tendancielle de la concentration en CO2, à laquelle se superpose une oscillation à plus haute fréquence.</p> <p>Une visualisation de l&#39;ensemble des données semble montrer une augmentation tendancielle de la concentration en CO2, à laquelle se superpose une oscillation à plus haute fréquence.</p>
<div id="77369a40-747c-4818-997c-823ab5935693" style="width:576px;height:384px;"></div> <div id="0931e72e-7523-4f49-a546-0816262b88e6" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('77369a40-747c-4818-997c-823ab5935693'); PLOT = document.getElementById('0931e72e-7523-4f49-a546-0816262b88e6');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -7423,9 +7423,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -7423,9 +7423,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>Un zoom sur les dernières années laisse penser que le cycle court se produit sur une période annuelle, avec un minimum local atteint chaque année autour du mois d&#39;octobre.</p> <p>Un zoom sur les dernières années laisse penser que le cycle court se produit sur une période annuelle, avec un minimum local atteint chaque année autour du mois d&#39;octobre.</p>
<div id="b1b87124-caea-443a-a309-af267979fc5f" style="width:576px;height:384px;"></div> <div id="6318c333-3da2-4565-838d-9419d232035b" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('b1b87124-caea-443a-a309-af267979fc5f'); PLOT = document.getElementById('6318c333-3da2-4565-838d-9419d232035b');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -8003,9 +8003,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -8003,9 +8003,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>En zoomant sur les données interpolées autour de l&#39;une des périodes de données manquantes, on observe bien le résultat attendu : une interpolation linéaire journalière lorsque les données sont disponibles, mais aucune interpolation lorsque les données sont manquantes.</p> <p>En zoomant sur les données interpolées autour de l&#39;une des périodes de données manquantes, on observe bien le résultat attendu : une interpolation linéaire journalière lorsque les données sont disponibles, mais aucune interpolation lorsque les données sont manquantes.</p>
<div id="721b56d2-967a-4d06-89a8-0ad58d5e5f6c" style="width:576px;height:384px;"></div> <div id="4576d633-4b0f-4730-b957-0c9fec2ae945" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('721b56d2-967a-4d06-89a8-0ad58d5e5f6c'); PLOT = document.getElementById('4576d633-4b0f-4730-b957-0c9fec2ae945');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -8291,9 +8291,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -8291,9 +8291,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>Sur ces années complètes, la composante <code>day</code> de la date devrait être équirépartie entre 0 et 365, ce qui est globalement le cas. Les données manquantes n&#39;ont donc pas d&#39;impact significatif de ce point de vue là.</p> <p>Sur ces années complètes, la composante <code>day</code> de la date devrait être équirépartie entre 0 et 365, ce qui est globalement le cas. Les données manquantes n&#39;ont donc pas d&#39;impact significatif de ce point de vue là.</p>
<div id="81c8d63b-b2cb-44e8-95db-0c1c93218680" style="width:576px;height:384px;"></div> <div id="d9fe71d7-2577-46b1-8b94-84132faacb6a" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('81c8d63b-b2cb-44e8-95db-0c1c93218680'); PLOT = document.getElementById('d9fe71d7-2577-46b1-8b94-84132faacb6a');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -8840,9 +8840,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -8840,9 +8840,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>Examinons par exemple l&#39;effet de ce traitement sur les données interpolées de l&#39;année 1982. On voit, sur la figure du haut, les mesures brutes ainsi que la tendance locale &#40;affine&#41;. Sur la figure du bas, la composante périodique locale vérifie bien les contraintes demandées, avec ses valeurs nulles aux bords.</p> <p>Examinons par exemple l&#39;effet de ce traitement sur les données interpolées de l&#39;année 1982. On voit, sur la figure du haut, les mesures brutes ainsi que la tendance locale &#40;affine&#41;. Sur la figure du bas, la composante périodique locale vérifie bien les contraintes demandées, avec ses valeurs nulles aux bords.</p>
<div id="21cd3557-d0d2-4699-a99b-b690baeec269" style="width:576px;height:384px;"></div> <div id="c84526ce-6bf0-44c1-8f34-f06d50884815" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('21cd3557-d0d2-4699-a99b-b690baeec269'); PLOT = document.getElementById('c84526ce-6bf0-44c1-8f34-f06d50884815');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -11356,9 +11356,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -11356,9 +11356,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>Et nous traçons l&#39;ensemble des composantes oscillantes locales aux côtés de cette moyenne.</p> <p>Et nous traçons l&#39;ensemble des composantes oscillantes locales aux côtés de cette moyenne.</p>
<div id="96bdfb6d-d341-4521-8615-c070e3b07c86" style="width:576px;height:384px;"></div> <div id="cbb2c659-d933-4109-b0cd-7cfdf2f8490f" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('96bdfb6d-d341-4521-8615-c070e3b07c86'); PLOT = document.getElementById('cbb2c659-d933-4109-b0cd-7cfdf2f8490f');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -54763,9 +54763,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41; ...@@ -54763,9 +54763,9 @@ Missing data: 2012-09-29 - 2012-10-20 &#40;21 days&#41;
<p>Même s&#39;il reste des oscillations locales, nous constatons tout de même que la composante tendancielle est devenue suffisamment lisse pour récupérer une forme de monotonie.</p> <p>Même s&#39;il reste des oscillations locales, nous constatons tout de même que la composante tendancielle est devenue suffisamment lisse pour récupérer une forme de monotonie.</p>
<div id="8d83041b-d791-4cac-94e0-056dc3903729" style="width:576px;height:384px;"></div> <div id="67774a95-e6ad-4752-aa0d-4004b98b3c62" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('8d83041b-d791-4cac-94e0-056dc3903729'); PLOT = document.getElementById('67774a95-e6ad-4752-aa0d-4004b98b3c62');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -135398,9 +135398,9 @@ date_num ^ 2 9.10059e-8 2.66606e-9 34.135 &lt;1e-37 8.56585e-8 ...@@ -135398,9 +135398,9 @@ date_num ^ 2 9.10059e-8 2.66606e-9 34.135 &lt;1e-37 8.56585e-8
<p>Par ailleurs, s&#39;il est clair que la tendance est à l&#39;augmentation, on voit toutefois que l&#39;incertitude sur les paramètres n&#39;est pas complètement négligeable. L&#39;incertitude sur <span class="math">$\beta$</span> est en particulier de nature à engendrer une perte de prédictibilité du modèle en temps long.</p> <p>Par ailleurs, s&#39;il est clair que la tendance est à l&#39;augmentation, on voit toutefois que l&#39;incertitude sur les paramètres n&#39;est pas complètement négligeable. L&#39;incertitude sur <span class="math">$\beta$</span> est en particulier de nature à engendrer une perte de prédictibilité du modèle en temps long.</p>
<div id="0104ecfb-4911-4f85-ae08-682b0cae2a5d" style="width:576px;height:384px;"></div> <div id="2486ee38-4b2c-4ef1-bb96-56f4075db159" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('0104ecfb-4911-4f85-ae08-682b0cae2a5d'); PLOT = document.getElementById('2486ee38-4b2c-4ef1-bb96-56f4075db159');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -262586,9 +262586,9 @@ date_num ^ 2 9.10059e-8 2.66606e-9 34.135 &lt;1e-37 8.56585e-8 ...@@ -262586,9 +262586,9 @@ date_num ^ 2 9.10059e-8 2.66606e-9 34.135 &lt;1e-37 8.56585e-8
<p>On voit que la forme annuelle semble bien reproduite sur les 5 premières années, pour lesquelles il est possible de comparer les prédictions avec les mesures réelles. En revanche, la tendance ne colle que sur les deux premières années d&#39;extrapolation ; on observe un décalage significatif et croissant ensuite.</p> <p>On voit que la forme annuelle semble bien reproduite sur les 5 premières années, pour lesquelles il est possible de comparer les prédictions avec les mesures réelles. En revanche, la tendance ne colle que sur les deux premières années d&#39;extrapolation ; on observe un décalage significatif et croissant ensuite.</p>
<div id="483cf462-2f2f-43e8-8460-b93c6b24a85e" style="width:576px;height:384px;"></div> <div id="a56ab5c9-608e-410e-b3bc-b262e357bf34" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('483cf462-2f2f-43e8-8460-b93c6b24a85e'); PLOT = document.getElementById('a56ab5c9-608e-410e-b3bc-b262e357bf34');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -265115,9 +265115,9 @@ date_num ^ 2 -8.3699e-16 1.52956e-16 -5.47208 &lt;1e-7 -1.13678e-15 - ...@@ -265115,9 +265115,9 @@ date_num ^ 2 -8.3699e-16 1.52956e-16 -5.47208 &lt;1e-7 -1.13678e-15 -
<p>En reprenant l&#39;analyse précédente, ce nouveau modèle donne les prédictions suivantes, qui collent quasi-parfaitement aux mesures dans la période de test :</p> <p>En reprenant l&#39;analyse précédente, ce nouveau modèle donne les prédictions suivantes, qui collent quasi-parfaitement aux mesures dans la période de test :</p>
<div id="f7ef88ea-a4c3-44f1-8d76-c2fc958453f5" style="width:576px;height:384px;"></div> <div id="78878861-a121-4ee7-ae11-8387919e8c74" style="width:576px;height:384px;"></div>
<script> <script>
PLOT = document.getElementById('f7ef88ea-a4c3-44f1-8d76-c2fc958453f5'); PLOT = document.getElementById('78878861-a121-4ee7-ae11-8387919e8c74');
Plotly.plot(PLOT, [ Plotly.plot(PLOT, [
{ {
"xaxis": "x1", "xaxis": "x1",
...@@ -96,7 +96,7 @@ Pkg.status() ...@@ -96,7 +96,7 @@ Pkg.status()
## Chargement des dépendances ## Chargement des dépendances
```julia; echo=false; results="hidden" ```julia; echo=false; results="hidden"
@info "* Loading dependencies" @info "* Loading dependencies (this might take a while...)"
``` ```
Tant que nous y sommes, profitons en pour charger dès maintenant les paquets Tant que nous y sommes, profitons en pour charger dès maintenant les paquets
......
...@@ -711,15 +711,23 @@ h3:before { ...@@ -711,15 +711,23 @@ h3:before {
</ol> </ol>
<h2>Environnement</h2> <h2>Environnement</h2>
<p>L&#39;ensemble des briques logicielles sur lesquelles s&#39;appuie notre analyse constitue un &quot;environnement&quot;, décrit de manière succincte dans le fichier <a href="Project.toml"><code>Project.toml</code></a> et plus détaillée dans le fichier <a href="Manifest.toml"><code>Manifest.toml</code></a>. Les paquets logiciels compris dans cet environnement peuvent être installés en tapant les deux commandes suivantes dans la console Julia :</p> <p>L&#39;ensemble des briques logicielles sur lesquelles s&#39;appuie notre analyse constitue un &quot;environnement&quot;, décrit de manière succincte dans le fichier <a href="Project.toml"><code>Project.toml</code></a> et plus détaillée dans le fichier <a href="Manifest.toml"><code>Manifest.toml</code></a>. Les paquets logiciels compris dans cet environnement peuvent être installés en tapant les deux commandes suivantes dans la console Julia :</p>
<pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl&quot;&#41; <pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl&quot;&#41;
julia&gt; Exercice.setup&#40;&#41; julia&gt; Tools.setup&#40;&#41;
Activating environment at &#96;C:\Users\francois\Desktop\mooc-rr\module3\exo3\Project.toml&#96; Activating environment at &#96;.../Project.toml&#96;
&#91; Info: Installing required packages &#91; Info: Installing required packages
...</code></pre> Cloning default registries into &#96;~/.julia&#96;
Cloning registry from &quot;https://github.com/JuliaRegistries/General.git&quot;
Added registry &#96;General&#96; to &#96;~/.julia/registries/General&#96;
Installed Missings ───────────────────── v0.4.3
Installed DataAPI ────────────────────── v1.1.0
...
&#91; Info: Precompiling dependencies &#40;this might take a while&#41;
Precompiling project...
363.818213 seconds &#40;65 allocations: 2.656 KiB&#41;</code></pre>
<p><strong>Notes :</strong></p> <p><strong>Notes :</strong></p>
<ul> <ul>
<li><p>Dans la commande <code>include&#40;raw&#40;&quot;...utils.jl&quot;&#41;&#41;</code>, n&#39;oubliez pas d&#39;adapter le chemin du fichier <code>utils.jl</code>. Si vous êtes en train de visualiser ce document avec un navigateur web, vous pouvez probablement récupérer le chemin correspondant dans la barre d&#39;URL et la copier-coller. Notez que dans la console Julia sous windows, on &quot;colle&quot; avec un clic droit de la souris.</p> <li><p>Dans la commande <code>include&#40;raw&#40;&quot;...Tools.jl&quot;&#41;&#41;</code>, n&#39;oubliez pas d&#39;adapter le chemin du fichier <a href="Tools.jl"><code>Tools.jl</code></a>. Si vous êtes en train de visualiser ce document avec un navigateur web, vous pouvez par exemple récupérer ce chemin dans le lien ci-dessus à l&#39;aide d&#39;un simple &quot;clic-droit &gt; copier l&#39;adresse du lien&quot; &#40;n&#39;oubliez pas d&#39;enlever le préfixe &quot;<code>file://</code>&quot; si vous faites cela &#33;&#41;.</p>
</li> </li>
<li><p>Cette étape nécessite une connexion Internet afin de télécharger les paquets requis. Elle peut durer quelques minutes.</p> <li><p>Cette étape nécessite une connexion Internet afin de télécharger les paquets requis. Elle peut durer quelques minutes.</p>
</li> </li>
...@@ -730,9 +738,9 @@ julia&gt; Exercice.setup&#40;&#41; ...@@ -730,9 +738,9 @@ julia&gt; Exercice.setup&#40;&#41;
<p>Le document computationnel de l&#39;étude est constitué par le fichier <a href="exercice.jmd"><code>exercice.jmd</code></a>, qui entremêle commentaires &#40;en langage Markdown&#41; et code &#40;en langage Julia&#41;.</p> <p>Le document computationnel de l&#39;étude est constitué par le fichier <a href="exercice.jmd"><code>exercice.jmd</code></a>, qui entremêle commentaires &#40;en langage Markdown&#41; et code &#40;en langage Julia&#41;.</p>
<p>Ce document computationnel peut être rendu au format HTML, pour générer la sortie <a href="exercice.html"><code>exercice.html</code></a>, dans laquelle le code julia a été exécuté et les résultats produits sont visualisés. Tout ceci est pris en charge par le paquet Julia <a href="https://github.com/JunoLab/Weave.jl">Weave</a>, qui fournit un service similaire à <a href="https://yihui.org/knitr/">knitr</a> pour le langage R ou <a href="http://mpastell.com/pweave">Pweave</a> pour Python.</p> <p>Ce document computationnel peut être rendu au format HTML, pour générer la sortie <a href="exercice.html"><code>exercice.html</code></a>, dans laquelle le code julia a été exécuté et les résultats produits sont visualisés. Tout ceci est pris en charge par le paquet Julia <a href="https://github.com/JunoLab/Weave.jl">Weave</a>, qui fournit un service similaire à <a href="https://yihui.org/knitr/">knitr</a> pour le langage R ou <a href="http://mpastell.com/pweave">Pweave</a> pour Python.</p>
<p>Pour &#40;re-&#41;générer ce document HTML, les commandes suivantes doivent être entrées dans la console Julia :</p> <p>Pour &#40;re-&#41;générer ce document HTML, les commandes suivantes doivent être entrées dans la console Julia :</p>
<pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl&quot;&#41; <pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl&quot;&#41;
julia&gt; Exercice.weave&#40;&#41; julia&gt; Tools.weave&#40;&#41;
Activating environment at &#96;.../Project.toml&#96; Activating environment at &#96;.../Project.toml&#96;
&#91; Info: Writing to file exercice.jl &#91; Info: Writing to file exercice.jl
&#91; Info: Weaving chunk 1 from line 39 &#91; Info: Weaving chunk 1 from line 39
...@@ -741,12 +749,12 @@ julia&gt; Exercice.weave&#40;&#41; ...@@ -741,12 +749,12 @@ julia&gt; Exercice.weave&#40;&#41;
&#91; Info: Weaving chunk 3 from line 73 &#91; Info: Weaving chunk 3 from line 73
... ...
&#91; Info: Report weaved to exercice.html &#91; Info: Report weaved to exercice.html
96.114542 seconds &#40;253.72 M allocations: 12.975 GiB, 4.71&#37; gc time&#41;</code></pre> 96.114542 seconds &#40;65 allocations: 2.656 KiB&#41;</code></pre>
<p><strong>Notes :</strong></p> <p><strong>Notes :</strong></p>
<ul> <ul>
<li><p>Il est inutile de ré-exécuter la ligne <code>include&#40;...&#41;</code> si vous utilisez la même console que dans les étapes précédentes.</p> <li><p>Il est inutile de ré-exécuter la ligne <code>include&#40;...&#41;</code> si vous utilisez la même console que dans les étapes précédentes.</p>
</li> </li>
<li><p>Cette étape peut durer quelques minutes ; nous verrons dans la prochaine partie comment accélérer ce processus si vous prévoyez de réaliser et tester des modifications dans le document computationnel.</p> <li><p>Cette étape peut durer une minute ou deux ; nous verrons dans la prochaine partie comment accélérer ce processus si vous prévoyez de réaliser et tester des modifications dans le document computationnel.</p>
</li> </li>
<li><p>Vous pouvez garder votre console ouverte pour la ré-utiliser ultérieurement si nécessaire.</p> <li><p>Vous pouvez garder votre console ouverte pour la ré-utiliser ultérieurement si nécessaire.</p>
</li> </li>
...@@ -754,12 +762,18 @@ julia&gt; Exercice.weave&#40;&#41; ...@@ -754,12 +762,18 @@ julia&gt; Exercice.weave&#40;&#41;
<h1>&#40;Optionnellement&#41; compilation des paquets de l&#39;environnement</h1> <h1>&#40;Optionnellement&#41; compilation des paquets de l&#39;environnement</h1>
<p>Vous pouvez tester dès maintenant vos idées en apportant des modifications au fichier <code>exercice.jmd</code> et en re-générant son rendu HTML selon les instructions de la partie précédente.</p> <p>Vous pouvez tester dès maintenant vos idées en apportant des modifications au fichier <code>exercice.jmd</code> et en re-générant son rendu HTML selon les instructions de la partie précédente.</p>
<p>Nous voyons dans cette partie comment améliorer la productivité de ce genre de tests en compilant les paquets Julia utilisés dans l&#39;étude pour rendre leur utilisation plus performante.</p> <p>Nous voyons dans cette partie comment améliorer la productivité de ce genre de tests en compilant les paquets Julia utilisés dans l&#39;étude pour rendre leur utilisation plus performante.</p>
<pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl&quot;&#41; <pre><code>julia&gt; include&#40;raw&quot;C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl&quot;&#41;
julia&gt; Exercice.compile&#40;&#41; julia&gt; Tools.compile&#40;&#41;
...</code></pre> Activating environment at &#96;~/mooc/mooc-rr/module3/exo3/Project.toml&#96;
<p>A partir de maintenant, le processus de génération du rendu HTML devrait être accéléré de manière substantielle, pour ne prendre que quelques secondes :</p> Activating environment at &#96;~/mooc/mooc-rr/module3/exo3/Project.toml&#96;
<pre><code>julia&gt; Exercice.weave&#40;&#41; &#91; Info: Writing to file exercice.jl
...
&#91; Info: PackageCompiler: creating system image object file, this might take a while...
410.437941 seconds &#40;65 allocations: 2.641 KiB&#41;</code></pre>
<p>Prévoyez d&#39;aller boire un café : cette étape peut durer une bonne dizaine de minutes. A la fin, cette phase de compilation devrait avoir généré un nouveau fichier <code>Exercice.so</code> dans le répertoire de l&#39;étude. A partir de maintenant, le processus de génération du rendu HTML devrait être accéléré de manière substantielle, pour ne prendre que quelques secondes :</p>
<pre><code>julia&gt; Tools.weave&#40;&#41;
&#91; Info: Using custom system image: Exercice.so
Activating environment at &#96;.../Project.toml&#96; Activating environment at &#96;.../Project.toml&#96;
&#91; Info: Writing to file exercice.jl &#91; Info: Writing to file exercice.jl
&#91; Info: Weaving chunk 1 from line 39 &#91; Info: Weaving chunk 1 from line 39
...@@ -768,7 +782,7 @@ julia&gt; Exercice.compile&#40;&#41; ...@@ -768,7 +782,7 @@ julia&gt; Exercice.compile&#40;&#41;
&#91; Info: Weaving chunk 3 from line 73 &#91; Info: Weaving chunk 3 from line 73
... ...
&#91; Info: Report weaved to exercice.html &#91; Info: Report weaved to exercice.html
7.262408 seconds &#40;23.57 M allocations: 1.465 GiB, 12.50&#37; gc time&#41;</code></pre> 7.262408 seconds &#40;65 allocations: 2.656 KiB&#41;</code></pre>
<!-- Local Variables: --> <!-- Local Variables: -->
......
...@@ -68,20 +68,29 @@ environnement peuvent être installés en tapant les deux commandes suivantes da ...@@ -68,20 +68,29 @@ environnement peuvent être installés en tapant les deux commandes suivantes da
la console Julia : la console Julia :
``` ```
julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl") julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl")
julia> Exercice.setup() julia> Tools.setup()
Activating environment at `C:\Users\francois\Desktop\mooc-rr\module3\exo3\Project.toml` Activating environment at `.../Project.toml`
[ Info: Installing required packages [ Info: Installing required packages
Cloning default registries into `~/.julia`
Cloning registry from "https://github.com/JuliaRegistries/General.git"
Added registry `General` to `~/.julia/registries/General`
Installed Missings ───────────────────── v0.4.3
Installed DataAPI ────────────────────── v1.1.0
... ...
[ Info: Precompiling dependencies (this might take a while)
Precompiling project...
363.818213 seconds (65 allocations: 2.656 KiB)
``` ```
**Notes :** **Notes :**
- Dans la commande `include(raw("...utils.jl"))`, n'oubliez pas d'adapter le - Dans la commande `include(raw("...Tools.jl"))`, n'oubliez pas d'adapter le
chemin du fichier `utils.jl`. Si vous êtes en train de visualiser ce document chemin du fichier [`Tools.jl`](Tools.jl). Si vous êtes en train de visualiser
avec un navigateur web, vous pouvez probablement récupérer le chemin ce document avec un navigateur web, vous pouvez par exemple récupérer ce
correspondant dans la barre d'URL et la copier-coller. Notez que dans la chemin dans le lien ci-dessus à l'aide d'un simple "clic-droit > copier
console Julia sous windows, on "colle" avec un clic droit de la souris. l'adresse du lien" (n'oubliez pas d'enlever le préfixe "`file://`" si vous
faites cela !).
- Cette étape nécessite une connexion Internet afin de télécharger les paquets - Cette étape nécessite une connexion Internet afin de télécharger les paquets
requis. Elle peut durer quelques minutes. requis. Elle peut durer quelques minutes.
...@@ -107,9 +116,9 @@ Pour (re-)générer ce document HTML, les commandes suivantes doivent être entr ...@@ -107,9 +116,9 @@ Pour (re-)générer ce document HTML, les commandes suivantes doivent être entr
dans la console Julia : dans la console Julia :
``` ```
julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl") julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl")
julia> Exercice.weave() julia> Tools.weave()
Activating environment at `.../Project.toml` Activating environment at `.../Project.toml`
[ Info: Writing to file exercice.jl [ Info: Writing to file exercice.jl
[ Info: Weaving chunk 1 from line 39 [ Info: Weaving chunk 1 from line 39
...@@ -118,14 +127,14 @@ julia> Exercice.weave() ...@@ -118,14 +127,14 @@ julia> Exercice.weave()
[ Info: Weaving chunk 3 from line 73 [ Info: Weaving chunk 3 from line 73
... ...
[ Info: Report weaved to exercice.html [ Info: Report weaved to exercice.html
96.114542 seconds (253.72 M allocations: 12.975 GiB, 4.71% gc time) 96.114542 seconds (65 allocations: 2.656 KiB)
``` ```
**Notes :** **Notes :**
- Il est inutile de ré-exécuter la ligne `include(...)` si vous utilisez la même - Il est inutile de ré-exécuter la ligne `include(...)` si vous utilisez la même
console que dans les étapes précédentes. console que dans les étapes précédentes.
- Cette étape peut durer quelques minutes ; nous verrons dans la prochaine - Cette étape peut durer une minute ou deux ; nous verrons dans la prochaine
partie comment accélérer ce processus si vous prévoyez de réaliser et tester partie comment accélérer ce processus si vous prévoyez de réaliser et tester
des modifications dans le document computationnel. des modifications dans le document computationnel.
...@@ -145,19 +154,26 @@ utilisation plus performante. ...@@ -145,19 +154,26 @@ utilisation plus performante.
``` ```
julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\utils.jl") julia> include(raw"C:\Users\francois\Desktop\mooc-rr\module3\exo3\Tools.jl")
julia> Exercice.compile() julia> Tools.compile()
Activating environment at `~/mooc/mooc-rr/module3/exo3/Project.toml`
Activating environment at `~/mooc/mooc-rr/module3/exo3/Project.toml`
[ Info: Writing to file exercice.jl
... ...
[ Info: PackageCompiler: creating system image object file, this might take a while...
410.437941 seconds (65 allocations: 2.641 KiB)
``` ```
Cette phase de compilation devrait avoir généré un nouveau fichier `Exercice.so` Prévoyez d'aller boire un café : cette étape peut durer une bonne dizaine de
dans le répertoire de l'étude. A partir de maintenant, le processus de minutes. A la fin, cette phase de compilation devrait avoir généré un nouveau
génération du rendu HTML devrait être accéléré de manière substantielle, pour ne fichier `Exercice.so` dans le répertoire de l'étude. A partir de maintenant, le
prendre que quelques secondes : processus de génération du rendu HTML devrait être accéléré de manière
substantielle, pour ne prendre que quelques secondes :
``` ```
julia> Exercice.weave() julia> Tools.weave()
[ Info: Using custom system image: Exercice.so
Activating environment at `.../Project.toml` Activating environment at `.../Project.toml`
[ Info: Writing to file exercice.jl [ Info: Writing to file exercice.jl
[ Info: Weaving chunk 1 from line 39 [ Info: Weaving chunk 1 from line 39
...@@ -166,9 +182,10 @@ julia> Exercice.weave() ...@@ -166,9 +182,10 @@ julia> Exercice.weave()
[ Info: Weaving chunk 3 from line 73 [ Info: Weaving chunk 3 from line 73
... ...
[ Info: Report weaved to exercice.html [ Info: Report weaved to exercice.html
7.262408 seconds (23.57 M allocations: 1.465 GiB, 12.50% gc time) 7.262408 seconds (65 allocations: 2.656 KiB)
``` ```
<!-- Local Variables: -->
<!-- Local Variables: --> <!-- mode: markdown --> <!-- ispell-local-dictionary: <!-- mode: markdown -->
"french" --> <!-- End: --> <!-- ispell-local-dictionary: "french" -->
<!-- End: -->
...@@ -8,6 +8,10 @@ Pkg.activate(@__DIR__) ...@@ -8,6 +8,10 @@ Pkg.activate(@__DIR__)
@info "Installing required packages" @info "Installing required packages"
Pkg.instantiate() Pkg.instantiate()
Pkg.instantiate()
@info "Precompiling dependencies (this might take a while)"
Pkg.precompile()
# Local Variables: # Local Variables:
# mode: julia # mode: julia
......
...@@ -11,11 +11,9 @@ Pkg.activate(@__DIR__) ...@@ -11,11 +11,9 @@ Pkg.activate(@__DIR__)
Pkg.instantiate() Pkg.instantiate()
using Weave using Weave
let srcfile = joinpath(@__DIR__, "exercice.jmd") srcfile = joinpath(@__DIR__, "exercice.jmd")
tangle(srcfile) tangle(srcfile)
Weave.weave() = @time weave(srcfile) weave(srcfile)
weave()
end
# Local Variables: # Local Variables:
# mode: julia # mode: julia
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment