| 1 | |
| 2 | % Default to the notebook output style |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | % Inherit from the specified cell style. |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | \documentclass[11pt]{article} |
| 14 | |
| 15 | |
| 16 | |
| 17 | \usepackage[T1]{fontenc} |
| 18 | % Nicer default font (+ math font) than Computer Modern for most use cases |
| 19 | \usepackage{mathpazo} |
| 20 | |
| 21 | % Basic figure setup, for now with no caption control since it's done |
| 22 | % automatically by Pandoc (which extracts ![](path) syntax from Markdown). |
| 23 | \usepackage{graphicx} |
| 24 | % We will generate all images so they have a width \maxwidth. This means |
| 25 | % that they will get their normal width if they fit onto the page, but |
| 26 | % are scaled down if they would overflow the margins. |
| 27 | \makeatletter |
| 28 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth |
| 29 | \else\Gin@nat@width\fi} |
| 30 | \makeatother |
| 31 | \let\Oldincludegraphics\includegraphics |
| 32 | % Set max figure width to be 80% of text width, for now hardcoded. |
| 33 | \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} |
| 34 | % Ensure that by default, figures have no caption (until we provide a |
| 35 | % proper Figure object with a Caption API and a way to capture that |
| 36 | % in the conversion process - todo). |
| 37 | \usepackage{caption} |
| 38 | \DeclareCaptionLabelFormat{nolabel}{} |
| 39 | \captionsetup{labelformat=nolabel} |
| 40 | |
| 41 | \usepackage{adjustbox} % Used to constrain images to a maximum size |
| 42 | \usepackage{xcolor} % Allow colors to be defined |
| 43 | \usepackage{enumerate} % Needed for markdown enumerations to work |
| 44 | \usepackage{geometry} % Used to adjust the document margins |
| 45 | \usepackage{amsmath} % Equations |
| 46 | \usepackage{amssymb} % Equations |
| 47 | \usepackage{textcomp} % defines textquotesingle |
| 48 | % Hack from http://tex.stackexchange.com/a/47451/13684: |
| 49 | \AtBeginDocument{% |
| 50 | \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code |
| 51 | } |
| 52 | \usepackage{upquote} % Upright quotes for verbatim code |
| 53 | \usepackage{eurosym} % defines \euro |
| 54 | \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support |
| 55 | \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document |
| 56 | \usepackage{fancyvrb} % verbatim replacement that allows latex |
| 57 | \usepackage{grffile} % extends the file name processing of package graphics |
| 58 | % to support a larger range |
| 59 | % The hyperref package gives us a pdf with properly built |
| 60 | % internal navigation ('pdf bookmarks' for the table of contents, |
| 61 | % internal cross-reference links, web links for URLs, etc.) |
| 62 | \usepackage{hyperref} |
| 63 | \usepackage{longtable} % longtable support required by pandoc >1.10 |
| 64 | \usepackage{booktabs} % table support for pandoc > 1.12.2 |
| 65 | \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) |
| 66 | \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) |
| 67 | % normalem makes italics be italics, not underlines |
| 68 | |
| 69 | |
| 70 | |
| 71 | |
| 72 | % Colors for the hyperref package |
| 73 | \definecolor{urlcolor}{rgb}{0,.145,.698} |
| 74 | \definecolor{linkcolor}{rgb}{.71,0.21,0.01} |
| 75 | \definecolor{citecolor}{rgb}{.12,.54,.11} |
| 76 | |
| 77 | % ANSI colors |
| 78 | \definecolor{ansi-black}{HTML}{3E424D} |
| 79 | \definecolor{ansi-black-intense}{HTML}{282C36} |
| 80 | \definecolor{ansi-red}{HTML}{E75C58} |
| 81 | \definecolor{ansi-red-intense}{HTML}{B22B31} |
| 82 | \definecolor{ansi-green}{HTML}{00A250} |
| 83 | \definecolor{ansi-green-intense}{HTML}{007427} |
| 84 | \definecolor{ansi-yellow}{HTML}{DDB62B} |
| 85 | \definecolor{ansi-yellow-intense}{HTML}{B27D12} |
| 86 | \definecolor{ansi-blue}{HTML}{208FFB} |
| 87 | \definecolor{ansi-blue-intense}{HTML}{0065CA} |
| 88 | \definecolor{ansi-magenta}{HTML}{D160C4} |
| 89 | \definecolor{ansi-magenta-intense}{HTML}{A03196} |
| 90 | \definecolor{ansi-cyan}{HTML}{60C6C8} |
| 91 | \definecolor{ansi-cyan-intense}{HTML}{258F8F} |
| 92 | \definecolor{ansi-white}{HTML}{C5C1B4} |
| 93 | \definecolor{ansi-white-intense}{HTML}{A1A6B2} |
| 94 | |
| 95 | % commands and environments needed by pandoc snippets |
| 96 | % extracted from the output of `pandoc -s` |
| 97 | \providecommand{\tightlist}{% |
| 98 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} |
| 99 | \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} |
| 100 | % Add ',fontsize=\small' for more characters per line |
| 101 | \newenvironment{Shaded}{}{} |
| 102 | \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} |
| 103 | \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} |
| 104 | \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
| 105 | \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
| 106 | \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} |
| 107 | \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
| 108 | \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
| 109 | \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} |
| 110 | \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} |
| 111 | \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} |
| 112 | \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} |
| 113 | \newcommand{\RegionMarkerTok}[1]{{#1}} |
| 114 | \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} |
| 115 | \newcommand{\NormalTok}[1]{{#1}} |
| 116 | |
| 117 | % Additional commands for more recent versions of Pandoc |
| 118 | \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} |
| 119 | \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
| 120 | \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} |
| 121 | \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} |
| 122 | \newcommand{\ImportTok}[1]{{#1}} |
| 123 | \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} |
| 124 | \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
| 125 | \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
| 126 | \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} |
| 127 | \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} |
| 128 | \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} |
| 129 | \newcommand{\BuiltInTok}[1]{{#1}} |
| 130 | \newcommand{\ExtensionTok}[1]{{#1}} |
| 131 | \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} |
| 132 | \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} |
| 133 | \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
| 134 | \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} |
| 135 | |
| 136 | |
| 137 | % Define a nice break command that doesn't care if a line doesn't already |
| 138 | % exist. |
| 139 | \def\br{\hspace*{\fill} \\* } |
| 140 | % Math Jax compatability definitions |
| 141 | \def\gt{>} |
| 142 | \def\lt{<} |
| 143 | % Document parameters |
| 144 | \title{Untitled} |
| 145 | |
| 146 | |
| 147 | |
| 148 | |
| 149 | % Pygments definitions |
| 150 | |
| 151 | \makeatletter |
| 152 | \def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% |
| 153 | \let\PY@ul=\relax \let\PY@tc=\relax% |
| 154 | \let\PY@bc=\relax \let\PY@ff=\relax} |
| 155 | \def\PY@tok#1{\csname PY@tok@#1\endcsname} |
| 156 | \def\PY@toks#1+{\ifx\relax#1\empty\else% |
| 157 | \PY@tok{#1}\expandafter\PY@toks\fi} |
| 158 | \def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% |
| 159 | \PY@it{\PY@bf{\PY@ff{#1}}}}}}} |
| 160 | \def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} |
| 161 | |
| 162 | \expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} |
| 163 | \expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 164 | \expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} |
| 165 | \expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 166 | \expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 167 | \expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} |
| 168 | \expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 169 | \expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} |
| 170 | \expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 171 | \expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
| 172 | \expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
| 173 | \expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
| 174 | \expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} |
| 175 | \expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 176 | \expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} |
| 177 | \expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} |
| 178 | \expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} |
| 179 | \expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} |
| 180 | \expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 181 | \expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} |
| 182 | \expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 183 | \expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 184 | \expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} |
| 185 | \expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} |
| 186 | \expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} |
| 187 | \expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 188 | \expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 189 | \expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 190 | \expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} |
| 191 | \expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} |
| 192 | \expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} |
| 193 | \expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} |
| 194 | \expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} |
| 195 | \expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} |
| 196 | \expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} |
| 197 | \expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} |
| 198 | \expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} |
| 199 | \expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} |
| 200 | \expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} |
| 201 | \expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 202 | \expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 203 | \expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 204 | \expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 205 | \expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} |
| 206 | \expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} |
| 207 | \expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 208 | \expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 209 | \expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 210 | \expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} |
| 211 | \expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 212 | \expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 213 | \expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 214 | \expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 215 | \expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 216 | \expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 217 | \expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} |
| 218 | \expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 219 | \expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 220 | \expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 221 | \expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 222 | \expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 223 | \expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} |
| 224 | \expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 225 | \expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 226 | \expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 227 | \expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 228 | \expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} |
| 229 | |
| 230 | \def\PYZbs{\char`\\} |
| 231 | \def\PYZus{\char`\_} |
| 232 | \def\PYZob{\char`\{} |
| 233 | \def\PYZcb{\char`\}} |
| 234 | \def\PYZca{\char`\^} |
| 235 | \def\PYZam{\char`\&} |
| 236 | \def\PYZlt{\char`\<} |
| 237 | \def\PYZgt{\char`\>} |
| 238 | \def\PYZsh{\char`\#} |
| 239 | \def\PYZpc{\char`\%} |
| 240 | \def\PYZdl{\char`\$} |
| 241 | \def\PYZhy{\char`\-} |
| 242 | \def\PYZsq{\char`\'} |
| 243 | \def\PYZdq{\char`\"} |
| 244 | \def\PYZti{\char`\~} |
| 245 | % for compatibility with earlier versions |
| 246 | \def\PYZat{@} |
| 247 | \def\PYZlb{[} |
| 248 | \def\PYZrb{]} |
| 249 | \makeatother |
| 250 | |
| 251 | |
| 252 | % Exact colors from NB |
| 253 | \definecolor{incolor}{rgb}{0.0, 0.0, 0.5} |
| 254 | \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} |
| 255 | |
| 256 | |
| 257 | |
| 258 | |
| 259 | % Prevent overflowing lines due to hard-to-break entities |
| 260 | \sloppy |
| 261 | % Setup hyperref package |
| 262 | \hypersetup{ |
| 263 | breaklinks=true, % so long urls are correctly broken across lines |
| 264 | colorlinks=true, |
| 265 | urlcolor=urlcolor, |
| 266 | linkcolor=linkcolor, |
| 267 | citecolor=citecolor, |
| 268 | } |
| 269 | % Slightly bigger margins than the latex defaults |
| 270 | |
| 271 | \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} |
| 272 | |
| 273 | |
| 274 | |
| 275 | \begin{document} |
| 276 | |
| 277 | |
| 278 | \maketitle |
| 279 | |
| 280 | |
| 281 | |
| 282 | |
| 283 | \subsection{Package R "talweg"}\label{package-r-talweg} |
| 284 | |
| 285 | Le package \(-\) Time-series sAmpLes forecasted With ExoGenous variables |
| 286 | \(-\) contient le code permettant de (re)lancer les expériences |
| 287 | numériques décrites dans cette partie et la suivante. Les fonctions |
| 288 | principales sont respectivement * \textbf{getData()} pour construire un |
| 289 | objet R contenant les données à partir de fichiers CSV (extraits de |
| 290 | bases de données). Le format choisi en R est une classe R6 (du package |
| 291 | du même nom) exposant en particulier les méthodes \emph{getSerie(i)} et |
| 292 | \emph{getExo(i)} qui renvoient respectivement la \(i^{eme}\) série de |
| 293 | 24h et les variables exogènes (mesurées) correspondantes. Voir ?Data |
| 294 | pour plus d'information, une fois le package chargé. * |
| 295 | \textbf{computeForecast()} pour calculer des prédictions sur une |
| 296 | certaine plage temporelle contenue dans \emph{data \textless{}- |
| 297 | getData(...)} * \textbf{computeError()} pour évaluer les erreurs |
| 298 | commises par différentes méthodes. |
| 299 | |
| 300 | Le package contient en outre diverses fonctions graphiques |
| 301 | \emph{plotXXX()}, utilisées dans la partie suivante. |
| 302 | |
| 303 | \begin{Verbatim}[commandchars=\\\{\}] |
| 304 | {\color{incolor}In [{\color{incolor}3}]:} \PY{c+c1}{\PYZsh{} Chargement de la librairie (après compilation, \PYZdq{}R CMD INSTALL .\PYZdq{})} |
| 305 | \PY{k+kn}{library}\PY{p}{(}talweg\PY{p}{)} |
| 306 | |
| 307 | \PY{c+c1}{\PYZsh{} Acquisition des données (depuis les fichiers CSV)} |
| 308 | ts\PYZus{}data \PY{o}{\PYZlt{}\PYZhy{}} read.csv\PY{p}{(}\PY{k+kp}{system.file}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{extdata\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{pm10\PYZus{}mesures\PYZus{}H\PYZus{}loc.csv\PYZdq{}}\PY{p}{,}package\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{talweg\PYZdq{}}\PY{p}{)}\PY{p}{)} |
| 309 | exo\PYZus{}data \PY{o}{\PYZlt{}\PYZhy{}} read.csv\PY{p}{(}\PY{k+kp}{system.file}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{extdata\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{meteo\PYZus{}extra\PYZus{}noNAs.csv\PYZdq{}}\PY{p}{,}package\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{talweg\PYZdq{}}\PY{p}{)}\PY{p}{)} |
| 310 | data \PY{o}{\PYZlt{}\PYZhy{}} getData\PY{p}{(}ts\PYZus{}data\PY{p}{,} exo\PYZus{}data\PY{p}{,} input\PYZus{}tz\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{GMT\PYZdq{}}\PY{p}{,} date\PYZus{}format\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{\PYZpc{}d/\PYZpc{}m/\PYZpc{}Y \PYZpc{}H:\PYZpc{}M\PYZdq{}}\PY{p}{,} |
| 311 | working\PYZus{}tz\PY{o}{=}\PY{l+s}{\PYZdq{}}\PY{l+s}{GMT\PYZdq{}}\PY{p}{,} predict\PYZus{}at\PY{o}{=}\PY{l+m}{7}\PY{p}{,} limit\PY{o}{=}\PY{l+m}{120}\PY{p}{)} |
| 312 | \PY{c+c1}{\PYZsh{} Plus de détails à la section 1 ci\PYZhy{}après.} |
| 313 | |
| 314 | \PY{c+c1}{\PYZsh{} Prédiction de 10 courbes (jours 102 à 111)} |
| 315 | pred \PY{o}{\PYZlt{}\PYZhy{}} computeForecast\PY{p}{(}data\PY{p}{,} \PY{l+m}{101}\PY{o}{:}\PY{l+m}{110}\PY{p}{,} \PY{l+s}{\PYZdq{}}\PY{l+s}{Persistence\PYZdq{}}\PY{p}{,} \PY{l+s}{\PYZdq{}}\PY{l+s}{Zero\PYZdq{}}\PY{p}{,} memory\PY{o}{=}\PY{l+m}{50}\PY{p}{,} horizon\PY{o}{=}\PY{l+m}{12}\PY{p}{,} ncores\PY{o}{=}\PY{l+m}{1}\PY{p}{)} |
| 316 | \PY{c+c1}{\PYZsh{} Plus de détails à la section 2 ci\PYZhy{}après.} |
| 317 | |
| 318 | \PY{c+c1}{\PYZsh{} Calcul des erreurs (sur un horizon arbitraire \PYZlt{}= horizon de prédiction)} |
| 319 | err \PY{o}{\PYZlt{}\PYZhy{}} computeError\PY{p}{(}data\PY{p}{,} pred\PY{p}{,} horizon\PY{o}{=}\PY{l+m}{6}\PY{p}{)} |
| 320 | \PY{c+c1}{\PYZsh{} Plus de détails à la section 3 ci\PYZhy{}après.} |
| 321 | |
| 322 | \PY{c+c1}{\PYZsh{} Puis voir ?plotError et les autres plot dans le paragraphe \PYZsq{}seealso\PYZsq{}} |
| 323 | \end{Verbatim} |
| 324 | |
| 325 | \subsubsection{getData()}\label{getdata} |
| 326 | |
| 327 | Les arguments de cette fonction sont, dans l'ordre : 1. |
| 328 | \textbf{ts\_data} : séries temporelles (fichier CSV avec entête ou |
| 329 | data.frame) ; la première colonne contient les heures, la seconde les |
| 330 | valeurs. 2. \textbf{exo\_data} : variables exogènes (fichier CSV avec |
| 331 | entête ou data.frame) ; la première colonne contient les jours, les |
| 332 | \(m\) suivantes les variables mesurées pour ce jour, et les \(m\) |
| 333 | dernières les variables prédites pour ce même jour. Dans notre cas |
| 334 | \(m=4\) : pression, température, gradient de température, vitesse du |
| 335 | vent. 3. \textbf{input\_tz} : zone horaire pour ts\_data (défaut : |
| 336 | "GMT"). 4. \textbf{date\_format} : format des heures dans ts\_data |
| 337 | (défaut : "\%d/\%m/\%Y \%H:\%M", format du fichier transmis par Michel). |
| 338 | 5. \textbf{working\_tz} : zone horaire dans laquelle on souhaite |
| 339 | travailler avec les données (défaut : "GMT"). 6. \textbf{predict\_at} : |
| 340 | heure à laquelle s'effectue la prévision \(-\) et donc dernière heure |
| 341 | d'un bloc de 24h, relativement à working\_tz. data\texttt{\$}getSerie(3) |
| 342 | renvoit ainsi les 24 valeurs de 8h à 7h pour le \(3^{eme}\) bloc de 24h |
| 343 | présent dans le jeu de données. |
| 344 | |
| 345 | \begin{Verbatim}[commandchars=\\\{\}] |
| 346 | {\color{incolor}In [{\color{incolor}11}]:} \PY{k+kp}{print}\PY{p}{(}data\PY{p}{)} |
| 347 | \PY{c+c1}{\PYZsh{}?Data} |
| 348 | \end{Verbatim} |
| 349 | |
| 350 | \begin{Verbatim}[commandchars=\\\{\}] |
| 351 | <Data> |
| 352 | Public: |
| 353 | append: function (time, serie, exo, exo\_hat) |
| 354 | clone: function (deep = FALSE) |
| 355 | getCenteredSerie: function (index) |
| 356 | getCenteredSeries: function (indices) |
| 357 | getExo: function (index) |
| 358 | getExoHat: function (index) |
| 359 | getLevel: function (index) |
| 360 | getSerie: function (index) |
| 361 | getSeries: function (indices) |
| 362 | getSize: function () |
| 363 | getStdHorizon: function () |
| 364 | getTime: function (index) |
| 365 | removeFirst: function () |
| 366 | removeLast: function () |
| 367 | Private: |
| 368 | .data: list |
| 369 | |
| 370 | \end{Verbatim} |
| 371 | |
| 372 | \subsubsection{computeForecast()}\label{computeforecast} |
| 373 | |
| 374 | Les arguments de cette fonction sont, dans l'ordre : 1. \textbf{data} : |
| 375 | le jeu de données renvoyé par getData() 2. \textbf{indices} : l'ensemble |
| 376 | de jours dont on veut prévoir les "lendemains" (prochains blocs de 24h) |
| 377 | ; peut être donnée sous forme d'un vecteur de dates ou d'entiers |
| 378 | (correspondants aux numéros des jours). 3. \textbf{forecaster} : le nom |
| 379 | du prédicteur principal à utiliser ; voir ?computeForecast 4. |
| 380 | \textbf{pjump} : le nom du prédicteur de saut d'une série à l'autre ; |
| 381 | voir ?computeForecast 5. \textbf{memory} : le nombre de jours à prendre |
| 382 | en compte dans le passé pour chaque prévision (par défaut : Inf, |
| 383 | c'est-à-dire tout l'historique pris en compte). 6. \textbf{horizon} : le |
| 384 | nombre d'heures à prédire ; par défaut "data\texttt{\$}getStdHorizon()", |
| 385 | c'est-à-dire le nombre d'heures restantes à partir de l'instant de |
| 386 | prévision + 1 jusqu'à minuit (17 pour predict\_at=7 par exemple). 7. |
| 387 | \textbf{ncores} : le nombre de processus parallèles (utiliser 1 pour une |
| 388 | exécution séquentielle) |
| 389 | |
| 390 | \begin{Verbatim}[commandchars=\\\{\}] |
| 391 | {\color{incolor}In [{\color{incolor}8}]:} \PY{k+kp}{print}\PY{p}{(}pred\PY{p}{)} |
| 392 | \PY{c+c1}{\PYZsh{}?computeForecast} |
| 393 | \end{Verbatim} |
| 394 | |
| 395 | \begin{Verbatim}[commandchars=\\\{\}] |
| 396 | <Forecast> |
| 397 | Public: |
| 398 | append: function (forecast, params, index\_in\_data) |
| 399 | clone: function (deep = FALSE) |
| 400 | getDates: function () |
| 401 | getForecast: function (index) |
| 402 | getIndexInData: function (index) |
| 403 | getParams: function (index) |
| 404 | getSize: function () |
| 405 | initialize: function (dates) |
| 406 | Private: |
| 407 | .dates: 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 |
| 408 | .pred: list |
| 409 | |
| 410 | \end{Verbatim} |
| 411 | |
| 412 | \subsubsection{computeError()}\label{computeerror} |
| 413 | |
| 414 | Les arguments de cette fonction sont, dans l'ordre : 1. \textbf{data} : |
| 415 | le jeu de données renvoyé par getData() 2. \textbf{pred} : les |
| 416 | prédictions renvoyées par computeForecast() 3. \textbf{horizon} : le |
| 417 | nombre d'heures à considérer pour le calcul de l'erreur ; doit être |
| 418 | inférieur ou égal à l'horizon utilisé pour la prédiction (même valeur |
| 419 | par défaut : "data\texttt{\$}getStdHorizon()") |
| 420 | |
| 421 | \begin{Verbatim}[commandchars=\\\{\}] |
| 422 | {\color{incolor}In [{\color{incolor}9}]:} \PY{k+kp}{summary}\PY{p}{(}err\PY{p}{)} |
| 423 | \PY{k+kp}{summary}\PY{p}{(}err\PY{o}{\PYZdl{}}\PY{k+kp}{abs}\PY{p}{)} |
| 424 | \PY{k+kp}{summary}\PY{p}{(}err\PY{o}{\PYZdl{}}MAPE\PY{p}{)} |
| 425 | \end{Verbatim} |
| 426 | |
| 427 | |
| 428 | \begin{verbatim} |
| 429 | Length Class Mode |
| 430 | abs 2 -none- list |
| 431 | MAPE 2 -none- list |
| 432 | \end{verbatim} |
| 433 | |
| 434 | |
| 435 | |
| 436 | \begin{verbatim} |
| 437 | Length Class Mode |
| 438 | day 6 -none- numeric |
| 439 | indices 10 -none- numeric |
| 440 | \end{verbatim} |
| 441 | |
| 442 | |
| 443 | |
| 444 | \begin{verbatim} |
| 445 | Length Class Mode |
| 446 | day 6 -none- numeric |
| 447 | indices 10 -none- numeric |
| 448 | \end{verbatim} |
| 449 | |
| 450 | |
| 451 | \subsubsection{Graphiques}\label{graphiques} |
| 452 | |
| 453 | Voir ?plotError : les autres fonctions graphiques sont dans la section |
| 454 | 'seealso' : |
| 455 | |
| 456 | \begin{verbatim} |
| 457 | ‘plotCurves’, ‘plotPredReal’, ‘plotSimils’, ‘plotFbox’, |
| 458 | ‘computeFilaments’, ‘plotFilamentsBox’, ‘plotRelVar’ |
| 459 | \end{verbatim} |
| 460 | |
| 461 | ?plotXXX, etc. |
| 462 | |
| 463 | |
| 464 | % Add a bibliography block to the postdoc |
| 465 | |
| 466 | |
| 467 | |
| 468 | \end{document} |