{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Probabilistic Programming 0: Check installation\n", "\n", "This notebook lets you test out your installation of Jupyter and Julia. It will also automatically download all the packages you need for the course, precompile them and check if they run correctly." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Check correct Julia version (will throw error if false)\n", "@assert VERSION == v\"1.6.3\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m environment at `~/syndr/Wouter/Onderwijs/Vakken/tueindhoven/5SSD0 - Bayesian Machine Learning & Information Processing/2021-2022 Q2/BMLIP/lessons/notebooks/probprog/workspace/Project.toml`\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m x264_jll ──────────── v2021.5.5+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m libfdk_aac_jll ────── v2.0.2+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m x265_jll ──────────── v3.5.0+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PyPlot ────────────── v2.10.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m DocStringExtensions ─ v0.8.6\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Plots ─────────────── v1.23.6\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Distributions ─────── v0.25.28\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Bzip2_jll ─────────── v1.0.8+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m HDF5 ──────────────── v0.15.7\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PlotUtils ─────────── v1.0.15\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m DiffRules ─────────── v1.4.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m ForwardDiff ───────── v0.10.23\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m MacroTools ────────── v0.5.9\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m StatsBase ─────────── v0.33.12\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PDMats ────────────── v0.11.3\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PyCall ────────────── v1.92.5\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PrettyTables ──────── v1.2.3\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m IrrationalConstants ─ v0.1.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m DataAPI ───────────── v1.9.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m ChangesOfVariables ── v0.1.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m QuadGK ────────────── v2.4.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Latexify ──────────── v0.15.9\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m StaticArrays ──────── v1.2.13\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m DensityInterface ──── v0.3.3\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m DataFrames ────────── v1.2.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Missings ──────────── v1.0.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m RecipesBase ───────── v1.1.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m FileIO ────────────── v1.11.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m EarCut_jll ────────── v2.2.3+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m UnicodeFun ────────── v0.4.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m InvertedIndices ───── v1.1.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Fontconfig_jll ────── v2.13.93+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m StatsFuns ─────────── v0.9.13\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m LogExpFunctions ───── v0.3.5\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Reexport ──────────── v1.2.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m StructArrays ──────── v0.6.3\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Blosc ─────────────── v0.7.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m SentinelArrays ────── v1.3.8\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m GR_jll ────────────── v0.62.0+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m FreeType2_jll ─────── v2.10.4+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Tables ────────────── v1.6.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m PooledArrays ──────── v1.3.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m InverseFunctions ──── v0.1.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m LaTeXStrings ──────── v1.3.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m RecipesPipeline ───── v0.4.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m SpecialFunctions ──── v1.8.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m GeometryBasics ────── v0.4.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m ChainRulesCore ────── v1.11.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m FFMPEG_jll ────────── v4.4.0+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m FillArrays ────────── v0.12.7\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m HTTP ──────────────── v0.9.16\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m VersionParsing ────── v1.2.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Parsers ───────────── v1.1.2\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Cairo_jll ─────────── v1.16.1+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m Compat ────────────── v3.40.0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m ForneyLab ─────────── v0.11.3\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m libass_jll ────────── v0.15.1+0\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m GR ────────────────── v0.62.1\n", "\u001b[32m\u001b[1m Installed\u001b[22m\u001b[39m ColorSchemes ──────── v3.15.0\n", "\u001b[32m\u001b[1m Building\u001b[22m\u001b[39m HDF5 ──→ `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/698c099c6613d7b7f151832868728f426abe698b/build.log`\n", "\u001b[32m\u001b[1m Building\u001b[22m\u001b[39m PyCall → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17/build.log`\n", "\u001b[32m\u001b[1m Building\u001b[22m\u001b[39m GR ────→ `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/30f2b340c2fff8410d89bfcdc9c0a6dd661ac5f7/build.log`\n", "\u001b[32m\u001b[1mPrecompiling\u001b[22m\u001b[39m project...\n", "\u001b[32m ✓ \u001b[39m\u001b[90mOpenLibm_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDataAPI\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mReexport\u001b[39m\n", "\u001b[32m ✓ \u001b[39mLaTeXStrings\n", "\u001b[32m ✓ \u001b[39m\u001b[90mInvertedIndices\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mPDMats\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mRecipesBase\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mIrrationalConstants\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mUnicodeFun\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mInverseFunctions\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mCompat\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mChangesOfVariables\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFillArrays\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mSentinelArrays\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDocStringExtensions\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mlibfdk_aac_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mBlosc\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mGraphite2_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mMissings\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mx265_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mPooledArrays\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mBzip2_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mx264_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mEarCut_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mTables\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mMacroTools\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDensityInterface\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFileIO\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFreeType2_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mCommonSubexpressions\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mChainRulesCore\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mHTTP\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mLatexify\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFontconfig_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mHDF5\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDataStructures\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mCairo_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mSortingAlgorithms\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDocumenter\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mQt5Base_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mLogExpFunctions\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mQuadGK\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mHarfBuzz_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39mJLD\n", "\u001b[32m ✓ \u001b[39m\u001b[90mColors\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mlibass_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mStaticArrays\u001b[39m\n", "\u001b[32m ✓ \u001b[39mStatsBase\n", "\u001b[32m ✓ \u001b[39mPyCall\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFFMPEG_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mPrettyTables\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDiffResults\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mContour\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mFFMPEG\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mGR_jll\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mStructArrays\u001b[39m\n", "\u001b[32m ✓ \u001b[39mCSV\n", "\u001b[32m ✓ \u001b[39mSpecialFunctions\n", "\u001b[32m ✓ \u001b[39m\u001b[90mDiffRules\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mGR\u001b[39m\n", "\u001b[32m ✓ \u001b[39mPyPlot\n", "\u001b[32m ✓ \u001b[39mColorSchemes\n", "\u001b[32m ✓ \u001b[39m\u001b[90mStatsFuns\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mForwardDiff\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mGeometryBasics\u001b[39m\n", "\u001b[32m ✓ \u001b[39mDistributions\n", "\u001b[32m ✓ \u001b[39m\u001b[90mPlotUtils\u001b[39m\n", "\u001b[32m ✓ \u001b[39mForneyLab\n", "\u001b[32m ✓ \u001b[39m\u001b[90mRecipesPipeline\u001b[39m\n", "\u001b[32m ✓ \u001b[39m\u001b[90mPlotThemes\u001b[39m\n", "\u001b[32m ✓ \u001b[39mDataFrames\n", "\u001b[32m ✓ \u001b[39mPlots\n", " 72 dependencies successfully precompiled in 71 seconds (89 already precompiled)\n" ] } ], "source": [ "# Set up workspace (downloads and installs necessary packages)\n", "using Pkg\n", "Pkg.activate(\"./workspace/\")\n", "Pkg.instantiate();" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Precompiling ForneyLab [9fc3f58a-c2cc-5bff-9419-6a294fefdca9]\n", "└ @ Base loading.jl:1342\n" ] } ], "source": [ "# Test ForneyLab (will throw errors if inference failed)\n", "using ForneyLab\n", "\n", "graph = FactorGraph()\n", "\n", "@RV μ ~ GaussianMeanVariance(0.0, 1.0)\n", "@RV x ~ GaussianMeanVariance(μ, 1.0)\n", "placeholder(x, :x)\n", "\n", "algorithm = messagePassingAlgorithm(μ, id=:μ)\n", "source_code = algorithmSourceCode(algorithm)\n", "eval(Meta.parse(source_code))\n", "\n", "data = Dict(:x => 3.0)\n", "marginals = Dict()\n", "stepμ!(data, marginals)\n", "\n", "@assert typeof(marginals) == Dict{Any,Any}\n", "@assert marginals[:μ] == ProbabilityDistribution(Univariate,GaussianWeightedMeanPrecision, xi=3.0, w=2.0)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]\n", "└ @ Base loading.jl:1342\n", "┌ Info: Precompiling PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]\n", "└ @ Base loading.jl:1342\n" ] }, { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Test plotting\n", "using Plots\n", "pyplot()\n", "\n", "x = range(0, stop=10, length=50)\n", "y = x.^3\n", "\n", "plot(x, y, label=\"\", xlabel=\"x\", ylabel=\"y\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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sIiIiIhsjAGLiIiIyMYYsIiIiIhsjAGLiIiIyMYYsIiILJCSkoLbb78dBoMBXbt2xTvvvOPsJhGRC+NWOURETTh79iyGDx+OYcOGYf369Th8+DDmz58PHx8fPPTQQ85uHhG5IC40SkTUhKeeegpffvkl0tLSoNPpAAB//vOf8c477yAnJ6fua0REV3CIkIioCV988QWmTJlSL0hNmTIFZ86cwb59+5zYMiJyVQxYRESNqKysRGZmJmJiYmAymeo+wsPD4eXlhdTUVGc3kYhcEAMWEVEjLly4ACkl7r//fnh5edV9+Pj4oKamBkVFRc5uIhG5IE5yJyKywMsvv4wRI0bU+9rgwYOd1BoicnUMWEREjQgMDIQQAu3bt0ffvn3rvl5dXY2amhq0bdvWia0jIlfFIUIiokb4+voiIiICJ06cqPf148ePQ0qJ2NhYJ7WMiFwZAxYRURMmTpyItWvXwmQy1X3t448/RkhICPr16+fElhGRq+I6WERETSgoKECvXr0wePBgzJs3DwcPHsSzzz6L9957D9OnT3d284jIBTFgERFZICUlBfPmzcP+/fvRoUMHLFy4EL/73e+c3SwiclEMWEREREQ2xjlYRERERDbGgEVERERkYwxYRERERDbGgEVERERkYwxYRERERDbGgEVERERkY/8PxC7wz1ouLTcAAAAASUVORK5CYII=" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Test Unicode characters in plots and LaTeXString\n", "using LaTeXStrings\n", "\n", "θ = range(0, stop=1, length=50)\n", "pθ = θ.^3 .* (1 .- θ).^7\n", "\n", "plot(θ, pθ, xlabel=\"θ\", ylabel=\"p(θ)\", label=L\"p(θ) = \\prod_{i=1}^{N} θ^{X_i} \\cdot (1-\\theta)^{1 - X_i}\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "

271 rows × 2 columns

3.60000079.000000
Float64Float64
11.854.0
23.33374.0
32.28362.0
44.53385.0
52.88355.0
64.788.0
73.685.0
81.9551.0
94.3585.0
101.83354.0
113.91784.0
124.278.0
131.7547.0
144.783.0
152.16752.0
161.7562.0
174.884.0
181.652.0
194.2579.0
201.851.0
211.7547.0
223.4578.0
233.06769.0
244.53374.0
253.683.0
261.96755.0
274.08376.0
283.8578.0
294.43379.0
304.373.0
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& 3.600000 & 79.000000\\\\\n", "\t\\hline\n", "\t& Float64 & Float64\\\\\n", "\t\\hline\n", "\t1 & 1.8 & 54.0 \\\\\n", "\t2 & 3.333 & 74.0 \\\\\n", "\t3 & 2.283 & 62.0 \\\\\n", "\t4 & 4.533 & 85.0 \\\\\n", "\t5 & 2.883 & 55.0 \\\\\n", "\t6 & 4.7 & 88.0 \\\\\n", "\t7 & 3.6 & 85.0 \\\\\n", "\t8 & 1.95 & 51.0 \\\\\n", "\t9 & 4.35 & 85.0 \\\\\n", "\t10 & 1.833 & 54.0 \\\\\n", "\t11 & 3.917 & 84.0 \\\\\n", "\t12 & 4.2 & 78.0 \\\\\n", "\t13 & 1.75 & 47.0 \\\\\n", "\t14 & 4.7 & 83.0 \\\\\n", "\t15 & 2.167 & 52.0 \\\\\n", "\t16 & 1.75 & 62.0 \\\\\n", "\t17 & 4.8 & 84.0 \\\\\n", "\t18 & 1.6 & 52.0 \\\\\n", "\t19 & 4.25 & 79.0 \\\\\n", "\t20 & 1.8 & 51.0 \\\\\n", "\t21 & 1.75 & 47.0 \\\\\n", "\t22 & 3.45 & 78.0 \\\\\n", "\t23 & 3.067 & 69.0 \\\\\n", "\t24 & 4.533 & 74.0 \\\\\n", "\t25 & 3.6 & 83.0 \\\\\n", "\t26 & 1.967 & 55.0 \\\\\n", "\t27 & 4.083 & 76.0 \\\\\n", "\t28 & 3.85 & 78.0 \\\\\n", "\t29 & 4.433 & 79.0 \\\\\n", "\t30 & 4.3 & 73.0 \\\\\n", "\t$\\dots$ & $\\dots$ & $\\dots$ \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "\u001b[1m271×2 DataFrame\u001b[0m\n", "\u001b[1m Row \u001b[0m│\u001b[1m 3.600000 \u001b[0m\u001b[1m 79.000000 \u001b[0m\n", "\u001b[1m \u001b[0m│\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\n", "─────┼─────────────────────\n", " 1 │ 1.8 54.0\n", " 2 │ 3.333 74.0\n", " 3 │ 2.283 62.0\n", " 4 │ 4.533 85.0\n", " 5 │ 2.883 55.0\n", " 6 │ 4.7 88.0\n", " 7 │ 3.6 85.0\n", " 8 │ 1.95 51.0\n", " 9 │ 4.35 85.0\n", " 10 │ 1.833 54.0\n", " 11 │ 3.917 84.0\n", " ⋮ │ ⋮ ⋮\n", " 262 │ 1.85 58.0\n", " 263 │ 4.25 83.0\n", " 264 │ 1.983 43.0\n", " 265 │ 2.25 60.0\n", " 266 │ 4.75 75.0\n", " 267 │ 4.117 81.0\n", " 268 │ 2.15 46.0\n", " 269 │ 4.417 90.0\n", " 270 │ 1.817 46.0\n", " 271 │ 4.467 74.0\n", "\u001b[36m 250 rows omitted\u001b[0m" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Testing data loading and management\n", "using CSV\n", "using DataFrames\n", "\n", "df = DataFrame(CSV.File(\"../datasets/old_faithful.csv\"))" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "julia 1.6.3", "language": "julia", "name": "julia-1.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.6.3" } }, "nbformat": 4, "nbformat_minor": 4 }