├── LICENSE ├── Manifest.toml ├── Project.toml ├── README.md ├── indexing_part1_introduction.ipynb ├── indexing_part1_introduction_solutions.ipynb └── indexing_part2_advanced.ipynb /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Bogumił Kamiński 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Manifest.toml: -------------------------------------------------------------------------------- 1 | # This file is machine-generated - editing it directly is not advised 2 | 3 | julia_version = "1.9.0" 4 | manifest_format = "2.0" 5 | project_hash = "e55b01926de16451e2fd175b5f3c008df9a0e4cf" 6 | 7 | [[deps.ArgTools]] 8 | uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" 9 | version = "1.1.1" 10 | 11 | [[deps.Artifacts]] 12 | uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" 13 | 14 | [[deps.Base64]] 15 | uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" 16 | 17 | [[deps.BenchmarkTools]] 18 | deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] 19 | git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" 20 | uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" 21 | version = "1.3.2" 22 | 23 | [[deps.CSV]] 24 | deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "SnoopPrecompile", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] 25 | git-tree-sha1 = "c700cce799b51c9045473de751e9319bdd1c6e94" 26 | uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" 27 | version = "0.10.9" 28 | 29 | [[deps.CodecZlib]] 30 | deps = ["TranscodingStreams", "Zlib_jll"] 31 | git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" 32 | uuid = "944b1d66-785c-5afd-91f1-9de20f533193" 33 | version = "0.7.1" 34 | 35 | [[deps.Compat]] 36 | deps = ["Dates", "LinearAlgebra", "UUIDs"] 37 | git-tree-sha1 = "61fdd77467a5c3ad071ef8277ac6bd6af7dd4c04" 38 | uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" 39 | version = "4.6.0" 40 | 41 | [[deps.CompilerSupportLibraries_jll]] 42 | deps = ["Artifacts", "Libdl"] 43 | uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" 44 | version = "1.0.2+0" 45 | 46 | [[deps.Conda]] 47 | deps = ["Downloads", "JSON", "VersionParsing"] 48 | git-tree-sha1 = "e32a90da027ca45d84678b826fffd3110bb3fc90" 49 | uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" 50 | version = "1.8.0" 51 | 52 | [[deps.Crayons]] 53 | git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" 54 | uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" 55 | version = "4.1.1" 56 | 57 | [[deps.DataAPI]] 58 | git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" 59 | uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" 60 | version = "1.14.0" 61 | 62 | [[deps.DataFrames]] 63 | deps = ["Compat", "DataAPI", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SnoopPrecompile", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] 64 | git-tree-sha1 = "aa51303df86f8626a962fccb878430cdb0a97eee" 65 | uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" 66 | version = "1.5.0" 67 | 68 | [[deps.DataStructures]] 69 | deps = ["Compat", "InteractiveUtils", "OrderedCollections"] 70 | git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" 71 | uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" 72 | version = "0.18.13" 73 | 74 | [[deps.DataValueInterfaces]] 75 | git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" 76 | uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" 77 | version = "1.0.0" 78 | 79 | [[deps.Dates]] 80 | deps = ["Printf"] 81 | uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" 82 | 83 | [[deps.Downloads]] 84 | deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] 85 | uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" 86 | version = "1.6.0" 87 | 88 | [[deps.FilePathsBase]] 89 | deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] 90 | git-tree-sha1 = "e27c4ebe80e8699540f2d6c805cc12203b614f12" 91 | uuid = "48062228-2e41-5def-b9a4-89aafe57970f" 92 | version = "0.9.20" 93 | 94 | [[deps.FileWatching]] 95 | uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" 96 | 97 | [[deps.Formatting]] 98 | deps = ["Printf"] 99 | git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" 100 | uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" 101 | version = "0.4.2" 102 | 103 | [[deps.Future]] 104 | deps = ["Random"] 105 | uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" 106 | 107 | [[deps.IJulia]] 108 | deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] 109 | git-tree-sha1 = "59e19713542dd9dd02f31d59edbada69530d6a14" 110 | uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" 111 | version = "1.24.0" 112 | 113 | [[deps.InlineStrings]] 114 | deps = ["Parsers"] 115 | git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" 116 | uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" 117 | version = "1.4.0" 118 | 119 | [[deps.InteractiveUtils]] 120 | deps = ["Markdown"] 121 | uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" 122 | 123 | [[deps.InvertedIndices]] 124 | git-tree-sha1 = "82aec7a3dd64f4d9584659dc0b62ef7db2ef3e19" 125 | uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" 126 | version = "1.2.0" 127 | 128 | [[deps.IteratorInterfaceExtensions]] 129 | git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" 130 | uuid = "82899510-4779-5014-852e-03e436cf321d" 131 | version = "1.0.0" 132 | 133 | [[deps.JLLWrappers]] 134 | deps = ["Preferences"] 135 | git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" 136 | uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" 137 | version = "1.4.1" 138 | 139 | [[deps.JSON]] 140 | deps = ["Dates", "Mmap", "Parsers", "Unicode"] 141 | git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" 142 | uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" 143 | version = "0.21.3" 144 | 145 | [[deps.LaTeXStrings]] 146 | git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" 147 | uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 148 | version = "1.3.0" 149 | 150 | [[deps.LibCURL]] 151 | deps = ["LibCURL_jll", "MozillaCACerts_jll"] 152 | uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" 153 | version = "0.6.3" 154 | 155 | [[deps.LibCURL_jll]] 156 | deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] 157 | uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" 158 | version = "7.84.0+0" 159 | 160 | [[deps.LibGit2]] 161 | deps = ["Base64", "NetworkOptions", "Printf", "SHA"] 162 | uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" 163 | 164 | [[deps.LibSSH2_jll]] 165 | deps = ["Artifacts", "Libdl", "MbedTLS_jll"] 166 | uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" 167 | version = "1.10.2+0" 168 | 169 | [[deps.Libdl]] 170 | uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" 171 | 172 | [[deps.LinearAlgebra]] 173 | deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] 174 | uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" 175 | 176 | [[deps.Logging]] 177 | uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" 178 | 179 | [[deps.Markdown]] 180 | deps = ["Base64"] 181 | uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" 182 | 183 | [[deps.MbedTLS]] 184 | deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] 185 | git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" 186 | uuid = "739be429-bea8-5141-9913-cc70e7f3736d" 187 | version = "1.1.7" 188 | 189 | [[deps.MbedTLS_jll]] 190 | deps = ["Artifacts", "Libdl"] 191 | uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" 192 | version = "2.28.0+0" 193 | 194 | [[deps.Missings]] 195 | deps = ["DataAPI"] 196 | git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" 197 | uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" 198 | version = "1.1.0" 199 | 200 | [[deps.Mmap]] 201 | uuid = "a63ad114-7e13-5084-954f-fe012c677804" 202 | 203 | [[deps.MozillaCACerts_jll]] 204 | uuid = "14a3606d-f60d-562e-9121-12d972cd8159" 205 | version = "2022.10.11" 206 | 207 | [[deps.NetworkOptions]] 208 | uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" 209 | version = "1.2.0" 210 | 211 | [[deps.OpenBLAS_jll]] 212 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] 213 | uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" 214 | version = "0.3.21+0" 215 | 216 | [[deps.OrderedCollections]] 217 | git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" 218 | uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" 219 | version = "1.4.1" 220 | 221 | [[deps.Parsers]] 222 | deps = ["Dates", "SnoopPrecompile"] 223 | git-tree-sha1 = "946b56b2135c6c10bbb93efad8a78b699b6383ab" 224 | uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" 225 | version = "2.5.6" 226 | 227 | [[deps.Pkg]] 228 | deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] 229 | uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" 230 | version = "1.9.0" 231 | 232 | [[deps.PooledArrays]] 233 | deps = ["DataAPI", "Future"] 234 | git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" 235 | uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" 236 | version = "1.4.2" 237 | 238 | [[deps.Preferences]] 239 | deps = ["TOML"] 240 | git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" 241 | uuid = "21216c6a-2e73-6563-6e65-726566657250" 242 | version = "1.3.0" 243 | 244 | [[deps.PrettyTables]] 245 | deps = ["Crayons", "Formatting", "LaTeXStrings", "Markdown", "Reexport", "StringManipulation", "Tables"] 246 | git-tree-sha1 = "96f6db03ab535bdb901300f88335257b0018689d" 247 | uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" 248 | version = "2.2.2" 249 | 250 | [[deps.Printf]] 251 | deps = ["Unicode"] 252 | uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" 253 | 254 | [[deps.Profile]] 255 | deps = ["Printf"] 256 | uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" 257 | 258 | [[deps.REPL]] 259 | deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] 260 | uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" 261 | 262 | [[deps.Random]] 263 | deps = ["SHA", "Serialization"] 264 | uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" 265 | 266 | [[deps.Reexport]] 267 | git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" 268 | uuid = "189a3867-3050-52da-a836-e630ba90ab69" 269 | version = "1.2.2" 270 | 271 | [[deps.SHA]] 272 | uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" 273 | version = "0.7.0" 274 | 275 | [[deps.SentinelArrays]] 276 | deps = ["Dates", "Random"] 277 | git-tree-sha1 = "c02bd3c9c3fc8463d3591a62a378f90d2d8ab0f3" 278 | uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" 279 | version = "1.3.17" 280 | 281 | [[deps.Serialization]] 282 | uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" 283 | 284 | [[deps.ShiftedArrays]] 285 | git-tree-sha1 = "503688b59397b3307443af35cd953a13e8005c16" 286 | uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" 287 | version = "2.0.0" 288 | 289 | [[deps.SnoopPrecompile]] 290 | deps = ["Preferences"] 291 | git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" 292 | uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" 293 | version = "1.0.3" 294 | 295 | [[deps.Sockets]] 296 | uuid = "6462fe0b-24de-5631-8697-dd941f90decc" 297 | 298 | [[deps.SoftGlobalScope]] 299 | deps = ["REPL"] 300 | git-tree-sha1 = "986ec2b6162ccb95de5892ed17832f95badf770c" 301 | uuid = "b85f4697-e234-5449-a836-ec8e2f98b302" 302 | version = "1.1.0" 303 | 304 | [[deps.SortingAlgorithms]] 305 | deps = ["DataStructures"] 306 | git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" 307 | uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" 308 | version = "1.1.0" 309 | 310 | [[deps.SparseArrays]] 311 | deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] 312 | uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" 313 | 314 | [[deps.Statistics]] 315 | deps = ["LinearAlgebra", "SparseArrays"] 316 | uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" 317 | version = "1.9.0" 318 | 319 | [[deps.StringManipulation]] 320 | git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" 321 | uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" 322 | version = "0.3.0" 323 | 324 | [[deps.SuiteSparse_jll]] 325 | deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] 326 | uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" 327 | version = "5.10.1+6" 328 | 329 | [[deps.TOML]] 330 | deps = ["Dates"] 331 | uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" 332 | version = "1.0.3" 333 | 334 | [[deps.TableTraits]] 335 | deps = ["IteratorInterfaceExtensions"] 336 | git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" 337 | uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" 338 | version = "1.0.1" 339 | 340 | [[deps.Tables]] 341 | deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] 342 | git-tree-sha1 = "c79322d36826aa2f4fd8ecfa96ddb47b174ac78d" 343 | uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" 344 | version = "1.10.0" 345 | 346 | [[deps.Tar]] 347 | deps = ["ArgTools", "SHA"] 348 | uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" 349 | version = "1.10.0" 350 | 351 | [[deps.Test]] 352 | deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] 353 | uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" 354 | 355 | [[deps.TranscodingStreams]] 356 | deps = ["Random", "Test"] 357 | git-tree-sha1 = "94f38103c984f89cf77c402f2a68dbd870f8165f" 358 | uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" 359 | version = "0.9.11" 360 | 361 | [[deps.UUIDs]] 362 | deps = ["Random", "SHA"] 363 | uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" 364 | 365 | [[deps.Unicode]] 366 | uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" 367 | 368 | [[deps.VersionParsing]] 369 | git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" 370 | uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" 371 | version = "1.3.0" 372 | 373 | [[deps.WeakRefStrings]] 374 | deps = ["DataAPI", "InlineStrings", "Parsers"] 375 | git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" 376 | uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" 377 | version = "1.4.2" 378 | 379 | [[deps.WorkerUtilities]] 380 | git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" 381 | uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" 382 | version = "1.6.1" 383 | 384 | [[deps.ZMQ]] 385 | deps = ["FileWatching", "Sockets", "ZeroMQ_jll"] 386 | git-tree-sha1 = "356d2bdcc0bce90aabee1d1c0f6d6f301eda8f77" 387 | uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" 388 | version = "1.2.2" 389 | 390 | [[deps.ZeroMQ_jll]] 391 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libsodium_jll"] 392 | git-tree-sha1 = "fe5c65a526f066fb3000da137d5785d9649a8a47" 393 | uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" 394 | version = "4.3.4+0" 395 | 396 | [[deps.Zlib_jll]] 397 | deps = ["Libdl"] 398 | uuid = "83775a58-1f1d-513f-b197-d71354ab007a" 399 | version = "1.2.13+0" 400 | 401 | [[deps.libblastrampoline_jll]] 402 | deps = ["Artifacts", "Libdl"] 403 | uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" 404 | version = "5.4.0+0" 405 | 406 | [[deps.libsodium_jll]] 407 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 408 | git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" 409 | uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" 410 | version = "1.0.20+0" 411 | 412 | [[deps.nghttp2_jll]] 413 | deps = ["Artifacts", "Libdl"] 414 | uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" 415 | version = "1.48.0+0" 416 | 417 | [[deps.p7zip_jll]] 418 | deps = ["Artifacts", "Libdl"] 419 | uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" 420 | version = "17.4.0+0" 421 | -------------------------------------------------------------------------------- /Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" 3 | CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" 4 | DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" 5 | IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" 6 | ShiftedArrays = "1277b4bf-5013-50f5-be3d-901d8477a67a" 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JuliaCon2020-DataFrames-Tutorial 2 | 3 | [![JuliaCon2020 Talk](https://img.youtube.com/vi/X7AJf0C4Czw/0.jpg)](https://www.youtube.com/watch?v=X7AJf0C4Czw) 4 | 5 | ## Introduction 6 | 7 | This tutorial is prepared for JuliaCon2020 presentation [A deep dive into 8 | DataFrames.jl indexing](https://pretalx.com/juliacon2020/talk/8SFYHK/). 9 | 10 | This version is updated to DataFrames.jl 1.5.0 release and Julia 1.9.0. 11 | 12 | Its focus is on discussing all the details of indexing in DataFrames.jl. If you 13 | are interested in introductory tutorials about how to use DataFrames.jl, please 14 | check out the list [here](https://dataframes.juliadata.org/stable/) 15 | and in general you might want to have a look at [my 16 | blog](https://bkamins.github.io/) as most of the posts there are somehow related 17 | to DataFrames.jl. 18 | 19 | ## Tutorial structure 20 | 21 | The tutorial is split in two parts (there is going to be a short break between 22 | them during the conference): 23 | 24 | * Introductory: "by example" explanation of indexing and broadcasting 25 | rules in DataFrames.jl (file *indexing_part1_introduction.ipynb* if you want 26 | to do exercises by yourself or file 27 | *indexing_part1_introduction_solutions.ipynb* if you prefer just to see the 28 | solutions immediately). 29 | * Advanced: detailed discussion how indexing in DataFrames.jl 30 | is actually implemented, and what are key design challenges 31 | (file: *indexing_part2_advanced.ipynb*). 32 | 33 | ## Preparing for running the tutorial 34 | 35 | All the examples are checked under Julia 1.9.0. 36 | 37 | Before you start please make sure that you have all the required packages 38 | installed. The simplest way to do it is to perform the following steps 39 | (I assume you have `git` and `julia` commands available): 40 | 41 | 1. Open a terminal in a directory where you want to have the tutorial to be 42 | stored. 43 | 2. Run `git clone https://github.com/bkamins/JuliaCon2020-DataFrames-Tutorial.git` 44 | to download the repository with the turorial (if you to not have `git` 45 | installed then you can download a Zip of this repository from GitHub and 46 | unpack it locally). 47 | 3. Run `cd JuliaCon2020-DataFrames-Tutorial` to switch a directory to the one 48 | where the tutorial has been downloaded. 49 | 4. On Kaggle go to 50 | https://www.kaggle.com/qks1lver/amex-nyse-nasdaq-stock-histories?select=fh_5yrs.csv 51 | and download the file *fh_5yrs.csv* (it is simplest to do it manually), 52 | after downloading it you will get a *75752_1304789_compressed_fh_5yrs.csv.zip* 53 | file (the name of the file might change so please check it), which you should 54 | unzip (a detailed instruction is OS dependent so I omit it here) and make 55 | sure that *fh_5yrs.csv* is in the same directory as the tutorial (if you 56 | followed my instructions the name of this directory is 57 | *JuliaCon2020-DataFrames-Tutorial*). In order to perform this step you 58 | need to be logged in to Kaggle. In case you have problem with this you can 59 | download the required file from 60 | http://bogumilkaminski.pl/files/juliacon2020_fh_5yrs.zip, 61 | but Kaggle access is preferred to give an appropriate recognition to the 62 | creator of the file (and download speed also should be better). 63 | 5. Run `julia --project=. -e "using Pkg; Pkg.instantiate(); Pkg.precompile()"` 64 | to make sure you have all the required packages automatically downloaded 65 | and precompiled (in case they would be missing; this step is optional and 66 | is recommended to be run only the first time you want to run the tutorial 67 | to make sure that all the packages are correctly set up before we start 68 | working with them) 69 | 6. Run `julia --project=. -e "using IJulia; notebook(dir=pwd())"` to start the 70 | Jupyter Notebook in the directory where the tutorials are store (note that 71 | in the terminal you do not see a prompt as the Julia process is running 72 | now). 73 | 7. Now you can work with the tutorials. 74 | 8. After you are done please make sure to choose "Quit" option in the top right 75 | hand side in the Jupyter Notebook. This will automatically terminate the 76 | Julia process in the terminal and prompt will reappear. 77 | 78 | It is best if you have the above steps performed before joining the JuliaCon2020 79 | presentation to make sure you can smoothly follow the tutorial. 80 | --------------------------------------------------------------------------------