├── Activity_1_Python_Basics.ipynb
├── Activity_2_Data_Visualization.ipynb
├── Activity_3_Data_Analysis.ipynb
├── Activity_4_Argo_Data.ipynb
├── Quickstart_Example.ipynb
├── README.md
└── requirements.txt
/Activity_1_Python_Basics.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Activity 1 Python Basics.ipynb",
7 | "provenance": [],
8 | "collapsed_sections": []
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | }
14 | },
15 | "cells": [
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {
19 | "id": "QxxH0AcX15bs",
20 | "colab_type": "text"
21 | },
22 | "source": [
23 | "# Activity 1 - Python Basics & NDBC Weather Data\n",
24 | "**2020 Data Labs REU**\n",
25 | "\n",
26 | "*Written by Sage Lichtenwalner, Rutgers University, June 9, 2020*\n",
27 | "\n",
28 | "Welcome to Python! In this notebook, we will demonstrate how you can quickly get started programming in Python, using Google's cool [Colaboratory](https://colab.research.google.com) platform. Colab is basically a free service that can run Python/Jupyter notebooks in the cloud.\n",
29 | "\n",
30 | "In this notebook, we will demonstrate some of the basics of programming Python. If you want to lean more, there are lots of other resources and training sessions out there, including the official [Python Tutorial](https://docs.python.org/3/tutorial/). But as an oceanographer, you don't really need to know all the ins-and-outs of programming (though it helps), especially when just starting out. \n",
31 | "\n",
32 | "Over the next few sessions we will cover many of the basic recipes you need to:\n",
33 | "* Quickly load some data\n",
34 | "* Make some quick plots, and make them look good\n",
35 | "* Calculate a few basic statistics and averages\n",
36 | "* And save the data to a new file you can use elsewhere."
37 | ]
38 | },
39 | {
40 | "cell_type": "markdown",
41 | "metadata": {
42 | "id": "uHXHmHwv--ww",
43 | "colab_type": "text"
44 | },
45 | "source": [
46 | "## Getting Started\n",
47 | "\n",
48 | "Jupyter notebooks have two kids of cells. \"Markdown\" cells, like this one which can contain formatted text, and \"Code\" cells, which contain the code you will run.\n",
49 | "\n",
50 | "To execute the code in a cell, you can either:\n",
51 | "* click the **Play** icon on the left\n",
52 | "* type **Cmd (or Ctrl) + Enter** to run the cell in place \n",
53 | "* or type **Shift + Enter** to run the cell and move the focus to the next cell.\n",
54 | "\n",
55 | "You can try all these options on our first very elaborate piece of code in the next cell.\n",
56 | "\n",
57 | "After you execute the cell, the result will automatically display underneath the cell."
58 | ]
59 | },
60 | {
61 | "cell_type": "code",
62 | "metadata": {
63 | "id": "gQSi2cI9_EZG",
64 | "colab_type": "code",
65 | "colab": {}
66 | },
67 | "source": [
68 | "2+2"
69 | ],
70 | "execution_count": 0,
71 | "outputs": []
72 | },
73 | {
74 | "cell_type": "code",
75 | "metadata": {
76 | "id": "0a6RP0OvBGpl",
77 | "colab_type": "code",
78 | "colab": {}
79 | },
80 | "source": [
81 | "print(\"Hello, world!\")"
82 | ],
83 | "execution_count": 0,
84 | "outputs": []
85 | },
86 | {
87 | "cell_type": "code",
88 | "metadata": {
89 | "id": "Dvqpvyi2BKOv",
90 | "colab_type": "code",
91 | "colab": {}
92 | },
93 | "source": [
94 | "# This is a comment"
95 | ],
96 | "execution_count": 0,
97 | "outputs": []
98 | },
99 | {
100 | "cell_type": "markdown",
101 | "metadata": {
102 | "id": "U9BweOkrFcf_",
103 | "colab_type": "text"
104 | },
105 | "source": [
106 | "As we go through the notebooks, you can add your own comments or text blocks to save your notes."
107 | ]
108 | },
109 | {
110 | "cell_type": "code",
111 | "metadata": {
112 | "id": "wYHhEJnwBnsY",
113 | "colab_type": "code",
114 | "colab": {}
115 | },
116 | "source": [
117 | "# Your Turn: Create your own print() command here with your name\n",
118 | "print()"
119 | ],
120 | "execution_count": 0,
121 | "outputs": []
122 | },
123 | {
124 | "cell_type": "markdown",
125 | "metadata": {
126 | "colab_type": "text",
127 | "id": "i4k796DieJ0_"
128 | },
129 | "source": [
130 | "**A note about print()**\n",
131 | "\n",
132 | "* By default, a Colab/Jupyter notebook will print out the output from the last line, so you don't have to specify the `print()` command. \n",
133 | "* However, if we want to output the results from additional lines (as we do below), we need to use `print()` on each line.\n",
134 | "* Sometimes, you can suppress the output from the last line by adding a semi-colon `;` at the end."
135 | ]
136 | },
137 | {
138 | "cell_type": "code",
139 | "metadata": {
140 | "id": "hP7VTnDB_dRh",
141 | "colab_type": "code",
142 | "colab": {}
143 | },
144 | "source": [
145 | "3\n",
146 | "4\n",
147 | "5"
148 | ],
149 | "execution_count": 0,
150 | "outputs": []
151 | },
152 | {
153 | "cell_type": "code",
154 | "metadata": {
155 | "colab_type": "code",
156 | "id": "rbULmpXCFJIZ",
157 | "colab": {}
158 | },
159 | "source": [
160 | "print(3)\n",
161 | "print(4)\n",
162 | "print(5)"
163 | ],
164 | "execution_count": 0,
165 | "outputs": []
166 | },
167 | {
168 | "cell_type": "markdown",
169 | "metadata": {
170 | "id": "Jr_Htihg_E7B",
171 | "colab_type": "text"
172 | },
173 | "source": [
174 | "## Some Basics\n",
175 | "Let's review a few basic features of programming. \n",
176 | "\n",
177 | "First, it's great for math. You can use addition (+), subtraction (-), multiplication (\\*), division (/) and exponents (**)."
178 | ]
179 | },
180 | {
181 | "cell_type": "code",
182 | "metadata": {
183 | "id": "NlDw--ocCZ28",
184 | "colab_type": "code",
185 | "colab": {}
186 | },
187 | "source": [
188 | "# Your Turn: Try some math here\n",
189 | "5*2"
190 | ],
191 | "execution_count": 0,
192 | "outputs": []
193 | },
194 | {
195 | "cell_type": "markdown",
196 | "metadata": {
197 | "id": "1THCSL0kCbYF",
198 | "colab_type": "text"
199 | },
200 | "source": [
201 | "The order of operations is also important."
202 | ]
203 | },
204 | {
205 | "cell_type": "code",
206 | "metadata": {
207 | "id": "k5YEVycoCdco",
208 | "colab_type": "code",
209 | "colab": {}
210 | },
211 | "source": [
212 | "print(5 * 2 + 3)\n",
213 | "print(5 * (2+3))\n",
214 | "print((5 * 2) + 3)"
215 | ],
216 | "execution_count": 0,
217 | "outputs": []
218 | },
219 | {
220 | "cell_type": "markdown",
221 | "metadata": {
222 | "id": "nE9GQeevCveA",
223 | "colab_type": "text"
224 | },
225 | "source": [
226 | "## Variables"
227 | ]
228 | },
229 | {
230 | "cell_type": "code",
231 | "metadata": {
232 | "id": "3Fao5FUxA8Me",
233 | "colab_type": "code",
234 | "colab": {}
235 | },
236 | "source": [
237 | "# We can eailsy assign variables, just like in other languages\n",
238 | "x = 4\n",
239 | "y = 2.5"
240 | ],
241 | "execution_count": 0,
242 | "outputs": []
243 | },
244 | {
245 | "cell_type": "code",
246 | "metadata": {
247 | "id": "Cv6oBNDLA91Q",
248 | "colab_type": "code",
249 | "colab": {}
250 | },
251 | "source": [
252 | "# And we can use them in our formulas\n",
253 | "print(x + y)\n",
254 | "print(x/y)"
255 | ],
256 | "execution_count": 0,
257 | "outputs": []
258 | },
259 | {
260 | "cell_type": "code",
261 | "metadata": {
262 | "id": "2_x4zV7LFCcs",
263 | "colab_type": "code",
264 | "colab": {}
265 | },
266 | "source": [
267 | "# What kind of objects are these?\n",
268 | "print(type(x))\n",
269 | "print(type(y))"
270 | ],
271 | "execution_count": 0,
272 | "outputs": []
273 | },
274 | {
275 | "cell_type": "markdown",
276 | "metadata": {
277 | "id": "AcUxD7ehCxRf",
278 | "colab_type": "text"
279 | },
280 | "source": [
281 | "## Strings"
282 | ]
283 | },
284 | {
285 | "cell_type": "code",
286 | "metadata": {
287 | "id": "uXF3zKv6_zxt",
288 | "colab_type": "code",
289 | "colab": {}
290 | },
291 | "source": [
292 | "# A string needs to be in quotes (single or double)\n",
293 | "z = 'Python is great'\n",
294 | "z"
295 | ],
296 | "execution_count": 0,
297 | "outputs": []
298 | },
299 | {
300 | "cell_type": "code",
301 | "metadata": {
302 | "id": "jSjoVPLcAIDW",
303 | "colab_type": "code",
304 | "colab": {}
305 | },
306 | "source": [
307 | "# You can't concatenate (add) strings and integers\n",
308 | "print( z + x )"
309 | ],
310 | "execution_count": 0,
311 | "outputs": []
312 | },
313 | {
314 | "cell_type": "code",
315 | "metadata": {
316 | "id": "CtSvgM4yAJe7",
317 | "colab_type": "code",
318 | "colab": {}
319 | },
320 | "source": [
321 | "# But you can multiply them!\n",
322 | "print( z * x )"
323 | ],
324 | "execution_count": 0,
325 | "outputs": []
326 | },
327 | {
328 | "cell_type": "code",
329 | "metadata": {
330 | "id": "f1UOtr7HALCG",
331 | "colab_type": "code",
332 | "colab": {}
333 | },
334 | "source": [
335 | "# If you convert an integer into a string, you can then catenate them\n",
336 | "print( z + ' ' + str(x) + ' you!' )"
337 | ],
338 | "execution_count": 0,
339 | "outputs": []
340 | },
341 | {
342 | "cell_type": "code",
343 | "metadata": {
344 | "id": "-zCETuuXAMqr",
345 | "colab_type": "code",
346 | "colab": {}
347 | },
348 | "source": [
349 | "# A better way\n",
350 | "print( 'Python is great %s you!' % x )"
351 | ],
352 | "execution_count": 0,
353 | "outputs": []
354 | },
355 | {
356 | "cell_type": "markdown",
357 | "metadata": {
358 | "id": "zenkK_sXAPBs",
359 | "colab_type": "text"
360 | },
361 | "source": [
362 | "## Fun with Lists\n",
363 | "Remember, Python uses 0-based indexes, so to grab the first element in a list you actually use \"0\". The last element is n-1, or just \"-1\" for short. In Matlab this would be 1 to n, or 1:end."
364 | ]
365 | },
366 | {
367 | "cell_type": "code",
368 | "metadata": {
369 | "id": "JTCl0vHGAPur",
370 | "colab_type": "code",
371 | "colab": {}
372 | },
373 | "source": [
374 | "my_list = [3, 4, 5, 9, 12, 13]"
375 | ],
376 | "execution_count": 0,
377 | "outputs": []
378 | },
379 | {
380 | "cell_type": "code",
381 | "metadata": {
382 | "id": "JcwapC7kAP7Q",
383 | "colab_type": "code",
384 | "colab": {}
385 | },
386 | "source": [
387 | "# The fist item\n",
388 | "my_list[0]"
389 | ],
390 | "execution_count": 0,
391 | "outputs": []
392 | },
393 | {
394 | "cell_type": "code",
395 | "metadata": {
396 | "id": "0oLk1TaYAP_0",
397 | "colab_type": "code",
398 | "colab": {}
399 | },
400 | "source": [
401 | "# The last item\n",
402 | "my_list[-1]"
403 | ],
404 | "execution_count": 0,
405 | "outputs": []
406 | },
407 | {
408 | "cell_type": "code",
409 | "metadata": {
410 | "id": "2hpVK9V8AP0T",
411 | "colab_type": "code",
412 | "colab": {}
413 | },
414 | "source": [
415 | "# Extract a subset\n",
416 | "my_list[2:5]"
417 | ],
418 | "execution_count": 0,
419 | "outputs": []
420 | },
421 | {
422 | "cell_type": "code",
423 | "metadata": {
424 | "id": "B4CYNZoKV-fq",
425 | "colab_type": "code",
426 | "colab": {}
427 | },
428 | "source": [
429 | "# A subset from the end\n",
430 | "my_list[-3:]"
431 | ],
432 | "execution_count": 0,
433 | "outputs": []
434 | },
435 | {
436 | "cell_type": "code",
437 | "metadata": {
438 | "id": "N4fVWQaQAPzS",
439 | "colab_type": "code",
440 | "colab": {}
441 | },
442 | "source": [
443 | "# Update a value\n",
444 | "my_list[3] = 99\n",
445 | "my_list"
446 | ],
447 | "execution_count": 0,
448 | "outputs": []
449 | },
450 | {
451 | "cell_type": "code",
452 | "metadata": {
453 | "id": "vWLYxQ3AAaDU",
454 | "colab_type": "code",
455 | "colab": {}
456 | },
457 | "source": [
458 | "# Warning, Python variables are object references and not copies by default\n",
459 | "my_second_list = my_list\n",
460 | "print( my_second_list )\n",
461 | "\n",
462 | "my_second_list[0] = 66\n",
463 | "\n",
464 | "print( my_second_list )\n",
465 | "print( my_list ) # The first list has been overwritten"
466 | ],
467 | "execution_count": 0,
468 | "outputs": []
469 | },
470 | {
471 | "cell_type": "code",
472 | "metadata": {
473 | "id": "jsBIFXDRAbyB",
474 | "colab_type": "code",
475 | "colab": {}
476 | },
477 | "source": [
478 | "# To avoid this, create a copy of the list, which keeps the original intact\n",
479 | "my_list = [3, 4, 5, 9, 12]\n",
480 | "\n",
481 | "my_second_list = list(my_list) # You can also use copy.copy() or my_list[:]\n",
482 | "\n",
483 | "my_second_list[0] = 66\n",
484 | "\n",
485 | "print( my_second_list )\n",
486 | "print( my_list )"
487 | ],
488 | "execution_count": 0,
489 | "outputs": []
490 | },
491 | {
492 | "cell_type": "markdown",
493 | "metadata": {
494 | "id": "kU1kERQCLFUu",
495 | "colab_type": "text"
496 | },
497 | "source": [
498 | "## Arrays\n",
499 | "Note, a list is not an array by default. But we can turn it into an array using the *NumPy* library.\n",
500 | "\n",
501 | "NumPy is an essential library for working with scientific data. It provides an array object that is very similar to Matlab's array functionality, allowing you to perform mathematical calculations or run linear algebra routines."
502 | ]
503 | },
504 | {
505 | "cell_type": "code",
506 | "metadata": {
507 | "id": "jnf1SA8wJo5F",
508 | "colab_type": "code",
509 | "colab": {}
510 | },
511 | "source": [
512 | "my_list * x"
513 | ],
514 | "execution_count": 0,
515 | "outputs": []
516 | },
517 | {
518 | "cell_type": "code",
519 | "metadata": {
520 | "id": "C8mZCShbWtHj",
521 | "colab_type": "code",
522 | "colab": {}
523 | },
524 | "source": [
525 | "import numpy as np"
526 | ],
527 | "execution_count": 0,
528 | "outputs": []
529 | },
530 | {
531 | "cell_type": "code",
532 | "metadata": {
533 | "id": "D3-yiFQaJTAQ",
534 | "colab_type": "code",
535 | "colab": {}
536 | },
537 | "source": [
538 | "a = np.array(my_list)\n",
539 | "a * x"
540 | ],
541 | "execution_count": 0,
542 | "outputs": []
543 | },
544 | {
545 | "cell_type": "markdown",
546 | "metadata": {
547 | "id": "xhLtARB0WYOw",
548 | "colab_type": "text"
549 | },
550 | "source": [
551 | "Note, we won't be explicitly creating NumPy arrays much in this course. But later on, when we load datasets using Pandas or Xarray, the actually arrays under the hood will be numpy arrays."
552 | ]
553 | },
554 | {
555 | "cell_type": "markdown",
556 | "metadata": {
557 | "id": "QSsn4neWAdIK",
558 | "colab_type": "text"
559 | },
560 | "source": [
561 | "## Dictionaries\n",
562 | "These are a great way to stored structured data of different types. You'll often find metadata information inside dictionaries."
563 | ]
564 | },
565 | {
566 | "cell_type": "code",
567 | "metadata": {
568 | "id": "oAQykqhkAeHn",
569 | "colab_type": "code",
570 | "colab": {}
571 | },
572 | "source": [
573 | "my_dict = {'temperature': 21, 'salinity':35, 'sensor':'CTD 23'}\n",
574 | "my_dict"
575 | ],
576 | "execution_count": 0,
577 | "outputs": []
578 | },
579 | {
580 | "cell_type": "code",
581 | "metadata": {
582 | "id": "ADrxbbB7AhAC",
583 | "colab_type": "code",
584 | "colab": {}
585 | },
586 | "source": [
587 | "# Grab a list of dictionary keys\n",
588 | "my_dict.keys()"
589 | ],
590 | "execution_count": 0,
591 | "outputs": []
592 | },
593 | {
594 | "cell_type": "code",
595 | "metadata": {
596 | "id": "ndmWw7lSAfu2",
597 | "colab_type": "code",
598 | "colab": {}
599 | },
600 | "source": [
601 | "# Accessing a key/value pair\n",
602 | "my_dict['sensor']"
603 | ],
604 | "execution_count": 0,
605 | "outputs": []
606 | },
607 | {
608 | "cell_type": "markdown",
609 | "metadata": {
610 | "id": "vUPvO6YFAip2",
611 | "colab_type": "text"
612 | },
613 | "source": [
614 | "## Functions, Conditions and Loops\n",
615 | "If you're familiar with how to do these in Matlab or R, it's all very similar, just with a different syntax. \n",
616 | "\n",
617 | "Remember, Python uses spaces to group together sub-elements, rather than parentheses, curly braces, or end statements. Traditionally, you can use 2 or 4 spaces to indent lines."
618 | ]
619 | },
620 | {
621 | "cell_type": "code",
622 | "metadata": {
623 | "id": "Qx0nnCutQG_5",
624 | "colab_type": "code",
625 | "colab": {}
626 | },
627 | "source": [
628 | "def times_two(num):\n",
629 | " return num * 2;"
630 | ],
631 | "execution_count": 0,
632 | "outputs": []
633 | },
634 | {
635 | "cell_type": "code",
636 | "metadata": {
637 | "id": "WdHlh20TQP5T",
638 | "colab_type": "code",
639 | "colab": {}
640 | },
641 | "source": [
642 | "times_two(3)"
643 | ],
644 | "execution_count": 0,
645 | "outputs": []
646 | },
647 | {
648 | "cell_type": "code",
649 | "metadata": {
650 | "id": "ED6K9R49OuX3",
651 | "colab_type": "code",
652 | "colab": {}
653 | },
654 | "source": [
655 | "def my_name(name='Sage'):\n",
656 | " return name;"
657 | ],
658 | "execution_count": 0,
659 | "outputs": []
660 | },
661 | {
662 | "cell_type": "code",
663 | "metadata": {
664 | "id": "nnNYgBDeOy5y",
665 | "colab_type": "code",
666 | "colab": {}
667 | },
668 | "source": [
669 | "my_name()"
670 | ],
671 | "execution_count": 0,
672 | "outputs": []
673 | },
674 | {
675 | "cell_type": "markdown",
676 | "metadata": {
677 | "id": "IcPlKcJ1V3lm",
678 | "colab_type": "text"
679 | },
680 | "source": [
681 | "Here one quick example that demonstrates how to define a function, use a conditional, and iterate over a for loop all at once."
682 | ]
683 | },
684 | {
685 | "cell_type": "code",
686 | "metadata": {
687 | "id": "L9H3VuppAlLP",
688 | "colab_type": "code",
689 | "colab": {}
690 | },
691 | "source": [
692 | "# A more complicated function\n",
693 | "def my_func(number):\n",
694 | " print('Running my_func')\n",
695 | " if type(number)==int:\n",
696 | " for i in range(number):\n",
697 | " print(i)\n",
698 | " else:\n",
699 | " print(\"Not a number\")\n"
700 | ],
701 | "execution_count": 0,
702 | "outputs": []
703 | },
704 | {
705 | "cell_type": "code",
706 | "metadata": {
707 | "id": "nLhLban8HSSq",
708 | "colab_type": "code",
709 | "colab": {}
710 | },
711 | "source": [
712 | "my_func('Test')"
713 | ],
714 | "execution_count": 0,
715 | "outputs": []
716 | },
717 | {
718 | "cell_type": "code",
719 | "metadata": {
720 | "id": "2hX4I3FvHRbe",
721 | "colab_type": "code",
722 | "colab": {}
723 | },
724 | "source": [
725 | "my_func(4)"
726 | ],
727 | "execution_count": 0,
728 | "outputs": []
729 | },
730 | {
731 | "cell_type": "markdown",
732 | "metadata": {
733 | "id": "vY3zXFu9Hqxy",
734 | "colab_type": "text"
735 | },
736 | "source": [
737 | "## Fun with NDBC Data\n",
738 | "Now that we've covered some basics, let's start having some fun with actual ocean data.\n",
739 | "\n",
740 | "The [National Data Buoy Center (NDBC)](https://www.ndbc.noaa.gov) provides a great dataset to start with. And for this example, we'll use my favorite buoy [Station 44025](https://www.ndbc.noaa.gov/station_page.php?station=44025).\n",
741 | "\n",
742 | "\n",
743 | "\n",
744 | "To load datasets like this, there are 2 popular libraries we can use.\n",
745 | "\n",
746 | "* Pandas\n",
747 | " * Great for working with \"spreadsheet-like\" tables that have headers and rows, like Excel or CSV files\n",
748 | " * Can easily load text or CSV files \n",
749 | "* Xarray\n",
750 | " * Supports multidimensional arrays (e.g. x,y,z,t)\n",
751 | " * Can open NetCDF files or data from Thredds servers which are common in Oceanography\n",
752 | " * If you're using a Thredds server, you don't have to load all the data to use it\n",
753 | "\n",
754 | "NDBC actually makes their data available in a variety of ways. Text files are often more intuitive. However, the NDBC text files require a few hoops to load a use (each file is a separate year, dates are in multiple columns, etc.).\n",
755 | "\n",
756 | "Luckily, NDBC also provides a Thredds server [DODS](https://dods.ndbc.noaa.gov), which we can use to quickly load some data to play with."
757 | ]
758 | },
759 | {
760 | "cell_type": "code",
761 | "metadata": {
762 | "id": "U5xiYqAyPMka",
763 | "colab_type": "code",
764 | "colab": {}
765 | },
766 | "source": [
767 | "import xarray as xr\n",
768 | "!pip install netcdf4"
769 | ],
770 | "execution_count": 0,
771 | "outputs": []
772 | },
773 | {
774 | "cell_type": "code",
775 | "metadata": {
776 | "id": "MN7o_buKPO7E",
777 | "colab_type": "code",
778 | "colab": {}
779 | },
780 | "source": [
781 | "data = xr.open_dataset('https://dods.ndbc.noaa.gov/thredds/dodsC/data/stdmet/44025/44025.ncml')"
782 | ],
783 | "execution_count": 0,
784 | "outputs": []
785 | },
786 | {
787 | "cell_type": "code",
788 | "metadata": {
789 | "id": "WFKcrSUNPSNS",
790 | "colab_type": "code",
791 | "colab": {}
792 | },
793 | "source": [
794 | "# The Dataset\n",
795 | "data"
796 | ],
797 | "execution_count": 0,
798 | "outputs": []
799 | },
800 | {
801 | "cell_type": "code",
802 | "metadata": {
803 | "id": "YIgYXHz6an6A",
804 | "colab_type": "code",
805 | "colab": {}
806 | },
807 | "source": [
808 | "# Let's look at one variable\n",
809 | "data.air_temperature"
810 | ],
811 | "execution_count": 0,
812 | "outputs": []
813 | },
814 | {
815 | "cell_type": "code",
816 | "metadata": {
817 | "id": "-7BBHVRqb6te",
818 | "colab_type": "code",
819 | "colab": {}
820 | },
821 | "source": [
822 | "# And one piece of metadata\n",
823 | "data.air_temperature.long_name"
824 | ],
825 | "execution_count": 0,
826 | "outputs": []
827 | },
828 | {
829 | "cell_type": "code",
830 | "metadata": {
831 | "id": "OQxdcxzzaq-r",
832 | "colab_type": "code",
833 | "colab": {}
834 | },
835 | "source": [
836 | "# Now let's make a quick plot\n",
837 | "data.air_temperature.plot();"
838 | ],
839 | "execution_count": 0,
840 | "outputs": []
841 | },
842 | {
843 | "cell_type": "code",
844 | "metadata": {
845 | "id": "-bPP4Ue0avNf",
846 | "colab_type": "code",
847 | "colab": {}
848 | },
849 | "source": [
850 | "# Let's subset the data in time\n",
851 | "data2 = data.sel(time=slice('2019-01-01','2020-01-01'))"
852 | ],
853 | "execution_count": 0,
854 | "outputs": []
855 | },
856 | {
857 | "cell_type": "code",
858 | "metadata": {
859 | "id": "Fu6J6e3bawhG",
860 | "colab_type": "code",
861 | "colab": {}
862 | },
863 | "source": [
864 | "# Let's make that quick plot again\n",
865 | "data2.air_temperature.plot();"
866 | ],
867 | "execution_count": 0,
868 | "outputs": []
869 | },
870 | {
871 | "cell_type": "code",
872 | "metadata": {
873 | "id": "dOt2EDY0WXnl",
874 | "colab_type": "code",
875 | "colab": {}
876 | },
877 | "source": [
878 | "import matplotlib.pyplot as plt"
879 | ],
880 | "execution_count": 0,
881 | "outputs": []
882 | },
883 | {
884 | "cell_type": "code",
885 | "metadata": {
886 | "id": "Sm-cFGk1PSXR",
887 | "colab_type": "code",
888 | "colab": {}
889 | },
890 | "source": [
891 | "# We can even plot 2 variables on one graph\n",
892 | "data2.air_temperature.plot(label=\"Air Temperature\")\n",
893 | "data2.sea_surface_temperature.plot(label=\"Sea Surface Temperature\")\n",
894 | "plt.legend();"
895 | ],
896 | "execution_count": 0,
897 | "outputs": []
898 | },
899 | {
900 | "cell_type": "markdown",
901 | "metadata": {
902 | "id": "11_8VZyGa-J1",
903 | "colab_type": "text"
904 | },
905 | "source": [
906 | "Tomorrow, we'll delve a lot more into data visualization and many of the other plotting commands you can use. But now, it's your turn to create your own plots. \n",
907 | "\n",
908 | "Try plotting different:\n",
909 | "* Variables (see options above)\n",
910 | "* Time ranges (you will need to reload the dataset)\n",
911 | "* Different stations (you will need to change the dataset URL). Check out the [NDBC homepage](https://www.ndbc.noaa.gov) for available stations\n",
912 | "\n",
913 | "As you create your graphs, try to write *figure captions* that describe what you think is going on."
914 | ]
915 | },
916 | {
917 | "cell_type": "code",
918 | "metadata": {
919 | "id": "DGeLchEtPSgm",
920 | "colab_type": "code",
921 | "colab": {}
922 | },
923 | "source": [
924 | "# Your Turn: Create some plots "
925 | ],
926 | "execution_count": 0,
927 | "outputs": []
928 | },
929 | {
930 | "cell_type": "code",
931 | "metadata": {
932 | "id": "43_sS5K4cm85",
933 | "colab_type": "code",
934 | "colab": {}
935 | },
936 | "source": [
937 | ""
938 | ],
939 | "execution_count": 0,
940 | "outputs": []
941 | },
942 | {
943 | "cell_type": "code",
944 | "metadata": {
945 | "id": "4ENykXphciuG",
946 | "colab_type": "code",
947 | "colab": {}
948 | },
949 | "source": [
950 | ""
951 | ],
952 | "execution_count": 0,
953 | "outputs": []
954 | },
955 | {
956 | "cell_type": "code",
957 | "metadata": {
958 | "id": "sdDkr17McjDd",
959 | "colab_type": "code",
960 | "colab": {}
961 | },
962 | "source": [
963 | ""
964 | ],
965 | "execution_count": 0,
966 | "outputs": []
967 | },
968 | {
969 | "cell_type": "code",
970 | "metadata": {
971 | "id": "ZrvA7X25KnDc",
972 | "colab_type": "code",
973 | "colab": {}
974 | },
975 | "source": [
976 | ""
977 | ],
978 | "execution_count": 0,
979 | "outputs": []
980 | },
981 | {
982 | "cell_type": "markdown",
983 | "metadata": {
984 | "id": "b5z6araEkYhC",
985 | "colab_type": "text"
986 | },
987 | "source": [
988 | "### Additional Intros and References\n",
989 | "[2019 Data Labs Quick Intro to Pytyon](https://github.com/ooi-data-lab/data-lab-workshops/blob/master/Summer_Examples/Python_Introduction.ipynb)\n",
990 | "\n",
991 | "[2018 Python Basics for Matlab Wizards](https://github.com/ooi-data-review/2018-data-workshops/blob/master/chemistry/examples/extras2/Python_Basics_for_Matlab_Wizards.ipynb)\n",
992 | "\n",
993 | "[Rowe Getting Started with Python](https://github.com/prowe12/python_resources/blob/master/Introduction_to_python3.ipynb)"
994 | ]
995 | }
996 | ]
997 | }
--------------------------------------------------------------------------------
/Quickstart_Example.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Activity 0 Python Quickstart.ipynb",
7 | "provenance": [],
8 | "toc_visible": true
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | }
14 | },
15 | "cells": [
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {
19 | "id": "qRPHAjb-E-9Q",
20 | "colab_type": "text"
21 | },
22 | "source": [
23 | "# Activity 0 - Python Quickstart\n",
24 | "**2020 Data Labs REU**\n",
25 | "\n",
26 | "*Written by Sage Lichtenwalner, Rutgers University, June 8, 2020*\n",
27 | "\n",
28 | "This notebook is designed as a kickoff activity to our 3-day Intro to Oceanographic Data Processing in Python series. The commands here are simple and provided mostly without context (which will be discussed in later notebooks) in order to highlight some of the advantages of using Python in Research Computing.\n",
29 | "\n",
30 | "The code from this example was adapted from [A Quick Introduction to Python](https://github.com/ooi-data-lab/data-lab-workshops/blob/master/Summer_Examples/Python_Introduction.ipynb) develoed as part of our 2019 Summer workshop series."
31 | ]
32 | },
33 | {
34 | "cell_type": "markdown",
35 | "metadata": {
36 | "id": "c5kbjL5UGBia",
37 | "colab_type": "text"
38 | },
39 | "source": [
40 | "## Notebook and Python Basics"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "metadata": {
46 | "id": "upDBJahnE4LV",
47 | "colab_type": "code",
48 | "outputId": "83de2152-68a4-4dbb-b88e-f84658f42a17",
49 | "colab": {
50 | "base_uri": "https://localhost:8080/",
51 | "height": 34
52 | }
53 | },
54 | "source": [
55 | "2+2"
56 | ],
57 | "execution_count": 0,
58 | "outputs": [
59 | {
60 | "output_type": "execute_result",
61 | "data": {
62 | "text/plain": [
63 | "4"
64 | ]
65 | },
66 | "metadata": {
67 | "tags": []
68 | },
69 | "execution_count": 23
70 | }
71 | ]
72 | },
73 | {
74 | "cell_type": "code",
75 | "metadata": {
76 | "id": "aZ680o6bFuIR",
77 | "colab_type": "code",
78 | "colab": {}
79 | },
80 | "source": [
81 | "a = 42"
82 | ],
83 | "execution_count": 0,
84 | "outputs": []
85 | },
86 | {
87 | "cell_type": "code",
88 | "metadata": {
89 | "id": "kzdOionBFuNg",
90 | "colab_type": "code",
91 | "outputId": "b18db6c3-daf0-48de-be0a-e0296dd21e61",
92 | "colab": {
93 | "base_uri": "https://localhost:8080/",
94 | "height": 34
95 | }
96 | },
97 | "source": [
98 | "a"
99 | ],
100 | "execution_count": 0,
101 | "outputs": [
102 | {
103 | "output_type": "execute_result",
104 | "data": {
105 | "text/plain": [
106 | "42"
107 | ]
108 | },
109 | "metadata": {
110 | "tags": []
111 | },
112 | "execution_count": 25
113 | }
114 | ]
115 | },
116 | {
117 | "cell_type": "code",
118 | "metadata": {
119 | "id": "fzKT_UMHFuSq",
120 | "colab_type": "code",
121 | "colab": {}
122 | },
123 | "source": [
124 | "b = 'Life, The Universe, and Everything'"
125 | ],
126 | "execution_count": 0,
127 | "outputs": []
128 | },
129 | {
130 | "cell_type": "code",
131 | "metadata": {
132 | "id": "ZOHMWqmzFuWq",
133 | "colab_type": "code",
134 | "outputId": "22204f80-6a89-461a-d747-61c8825d5921",
135 | "colab": {
136 | "base_uri": "https://localhost:8080/",
137 | "height": 34
138 | }
139 | },
140 | "source": [
141 | "b"
142 | ],
143 | "execution_count": 0,
144 | "outputs": [
145 | {
146 | "output_type": "execute_result",
147 | "data": {
148 | "text/plain": [
149 | "'Life, The Universe, and Everything'"
150 | ]
151 | },
152 | "metadata": {
153 | "tags": []
154 | },
155 | "execution_count": 27
156 | }
157 | ]
158 | },
159 | {
160 | "cell_type": "markdown",
161 | "metadata": {
162 | "id": "n4MoZJRaGFMX",
163 | "colab_type": "text"
164 | },
165 | "source": [
166 | "## A Quick Data Example"
167 | ]
168 | },
169 | {
170 | "cell_type": "code",
171 | "metadata": {
172 | "id": "x9tzAxI7Fua3",
173 | "colab_type": "code",
174 | "colab": {}
175 | },
176 | "source": [
177 | "import pandas as pd"
178 | ],
179 | "execution_count": 0,
180 | "outputs": []
181 | },
182 | {
183 | "cell_type": "code",
184 | "metadata": {
185 | "id": "woP9UcXUGLOk",
186 | "colab_type": "code",
187 | "colab": {}
188 | },
189 | "source": [
190 | "url = 'https://marine.rutgers.edu/~sage/OOI_Data_Workshops/CP02PMUO_R9_ar24011.csv'"
191 | ],
192 | "execution_count": 0,
193 | "outputs": []
194 | },
195 | {
196 | "cell_type": "code",
197 | "metadata": {
198 | "id": "Fk3vEZakGMRD",
199 | "colab_type": "code",
200 | "outputId": "a437514a-b67b-4157-ca71-ed57c647dfdd",
201 | "colab": {
202 | "base_uri": "https://localhost:8080/",
203 | "height": 419
204 | }
205 | },
206 | "source": [
207 | "data = pd.read_csv(url)\n",
208 | "data"
209 | ],
210 | "execution_count": 0,
211 | "outputs": [
212 | {
213 | "output_type": "execute_result",
214 | "data": {
215 | "text/html": [
216 | "
\n",
217 | "\n",
230 | "
\n",
231 | " \n",
232 | " \n",
233 | " | \n",
234 | " Depth | \n",
235 | " Pressure | \n",
236 | " Temperature | \n",
237 | " Salinity | \n",
238 | " Density | \n",
239 | " Fluorescence | \n",
240 | " Turbidity | \n",
241 | " Oxygen | \n",
242 | "
\n",
243 | " \n",
244 | " \n",
245 | " \n",
246 | " 0 | \n",
247 | " 14 | \n",
248 | " 14.109 | \n",
249 | " 20.0267 | \n",
250 | " 34.7221 | \n",
251 | " 1521.47 | \n",
252 | " 0.0072 | \n",
253 | " 0.3726 | \n",
254 | " 34.7187 | \n",
255 | "
\n",
256 | " \n",
257 | " 1 | \n",
258 | " 15 | \n",
259 | " 15.116 | \n",
260 | " 20.0913 | \n",
261 | " 34.7772 | \n",
262 | " 1521.73 | \n",
263 | " -0.0245 | \n",
264 | " 0.3700 | \n",
265 | " 34.7693 | \n",
266 | "
\n",
267 | " \n",
268 | " 2 | \n",
269 | " 16 | \n",
270 | " 16.124 | \n",
271 | " 20.2141 | \n",
272 | " 34.8684 | \n",
273 | " 1522.19 | \n",
274 | " -0.0361 | \n",
275 | " 0.3785 | \n",
276 | " 34.8652 | \n",
277 | "
\n",
278 | " \n",
279 | " 3 | \n",
280 | " 17 | \n",
281 | " 17.132 | \n",
282 | " 20.3139 | \n",
283 | " 34.9335 | \n",
284 | " 1522.55 | \n",
285 | " -0.0401 | \n",
286 | " 0.3759 | \n",
287 | " 34.9386 | \n",
288 | "
\n",
289 | " \n",
290 | " 4 | \n",
291 | " 18 | \n",
292 | " 18.140 | \n",
293 | " 20.4459 | \n",
294 | " 35.0250 | \n",
295 | " 1523.03 | \n",
296 | " -0.0509 | \n",
297 | " 0.3744 | \n",
298 | " 35.0229 | \n",
299 | "
\n",
300 | " \n",
301 | " ... | \n",
302 | " ... | \n",
303 | " ... | \n",
304 | " ... | \n",
305 | " ... | \n",
306 | " ... | \n",
307 | " ... | \n",
308 | " ... | \n",
309 | " ... | \n",
310 | "
\n",
311 | " \n",
312 | " 866 | \n",
313 | " 6 | \n",
314 | " 6.046 | \n",
315 | " 19.9109 | \n",
316 | " 34.6342 | \n",
317 | " 1520.92 | \n",
318 | " -0.0185 | \n",
319 | " 0.3842 | \n",
320 | " 34.6310 | \n",
321 | "
\n",
322 | " \n",
323 | " 867 | \n",
324 | " 5 | \n",
325 | " 5.039 | \n",
326 | " 19.9138 | \n",
327 | " 34.6359 | \n",
328 | " 1520.91 | \n",
329 | " -0.0323 | \n",
330 | " 0.3816 | \n",
331 | " 34.6319 | \n",
332 | "
\n",
333 | " \n",
334 | " 868 | \n",
335 | " 4 | \n",
336 | " 4.031 | \n",
337 | " 19.9145 | \n",
338 | " 34.6371 | \n",
339 | " 1520.90 | \n",
340 | " -0.0236 | \n",
341 | " 0.3874 | \n",
342 | " 34.6333 | \n",
343 | "
\n",
344 | " \n",
345 | " 869 | \n",
346 | " 3 | \n",
347 | " 3.023 | \n",
348 | " 19.9165 | \n",
349 | " 34.6385 | \n",
350 | " 1520.89 | \n",
351 | " -0.0218 | \n",
352 | " 0.3842 | \n",
353 | " 34.6347 | \n",
354 | "
\n",
355 | " \n",
356 | " 870 | \n",
357 | " 2 | \n",
358 | " 2.015 | \n",
359 | " 19.9122 | \n",
360 | " 34.6354 | \n",
361 | " 1520.86 | \n",
362 | " 0.0187 | \n",
363 | " 0.4047 | \n",
364 | " 34.6308 | \n",
365 | "
\n",
366 | " \n",
367 | "
\n",
368 | "
871 rows × 8 columns
\n",
369 | "
"
370 | ],
371 | "text/plain": [
372 | " Depth Pressure Temperature ... Fluorescence Turbidity Oxygen\n",
373 | "0 14 14.109 20.0267 ... 0.0072 0.3726 34.7187\n",
374 | "1 15 15.116 20.0913 ... -0.0245 0.3700 34.7693\n",
375 | "2 16 16.124 20.2141 ... -0.0361 0.3785 34.8652\n",
376 | "3 17 17.132 20.3139 ... -0.0401 0.3759 34.9386\n",
377 | "4 18 18.140 20.4459 ... -0.0509 0.3744 35.0229\n",
378 | ".. ... ... ... ... ... ... ...\n",
379 | "866 6 6.046 19.9109 ... -0.0185 0.3842 34.6310\n",
380 | "867 5 5.039 19.9138 ... -0.0323 0.3816 34.6319\n",
381 | "868 4 4.031 19.9145 ... -0.0236 0.3874 34.6333\n",
382 | "869 3 3.023 19.9165 ... -0.0218 0.3842 34.6347\n",
383 | "870 2 2.015 19.9122 ... 0.0187 0.4047 34.6308\n",
384 | "\n",
385 | "[871 rows x 8 columns]"
386 | ]
387 | },
388 | "metadata": {
389 | "tags": []
390 | },
391 | "execution_count": 30
392 | }
393 | ]
394 | },
395 | {
396 | "cell_type": "code",
397 | "metadata": {
398 | "id": "5uja3oJrGQWF",
399 | "colab_type": "code",
400 | "outputId": "06b3603b-629b-4aa7-ba2c-a2bae651c045",
401 | "colab": {
402 | "base_uri": "https://localhost:8080/",
403 | "height": 297
404 | }
405 | },
406 | "source": [
407 | "data.describe()"
408 | ],
409 | "execution_count": 0,
410 | "outputs": [
411 | {
412 | "output_type": "execute_result",
413 | "data": {
414 | "text/html": [
415 | "\n",
416 | "\n",
429 | "
\n",
430 | " \n",
431 | " \n",
432 | " | \n",
433 | " Depth | \n",
434 | " Pressure | \n",
435 | " Temperature | \n",
436 | " Salinity | \n",
437 | " Density | \n",
438 | " Fluorescence | \n",
439 | " Turbidity | \n",
440 | " Oxygen | \n",
441 | "
\n",
442 | " \n",
443 | " \n",
444 | " \n",
445 | " count | \n",
446 | " 871.000000 | \n",
447 | " 871.000000 | \n",
448 | " 871.000000 | \n",
449 | " 871.000000 | \n",
450 | " 871.000000 | \n",
451 | " 871.000000 | \n",
452 | " 871.000000 | \n",
453 | " 871.000000 | \n",
454 | "
\n",
455 | " \n",
456 | " mean | \n",
457 | " 225.208955 | \n",
458 | " 227.110232 | \n",
459 | " 11.493936 | \n",
460 | " 35.353968 | \n",
461 | " 1498.607773 | \n",
462 | " -0.259318 | \n",
463 | " 0.361451 | \n",
464 | " 35.350359 | \n",
465 | "
\n",
466 | " \n",
467 | " std | \n",
468 | " 125.862021 | \n",
469 | " 126.972414 | \n",
470 | " 3.870060 | \n",
471 | " 0.255037 | \n",
472 | " 11.098248 | \n",
473 | " 0.159814 | \n",
474 | " 0.027444 | \n",
475 | " 0.254881 | \n",
476 | "
\n",
477 | " \n",
478 | " min | \n",
479 | " 2.000000 | \n",
480 | " 2.015000 | \n",
481 | " 6.252900 | \n",
482 | " 34.634200 | \n",
483 | " 1483.100000 | \n",
484 | " -0.375900 | \n",
485 | " 0.328600 | \n",
486 | " 34.630800 | \n",
487 | "
\n",
488 | " \n",
489 | " 25% | \n",
490 | " 116.500000 | \n",
491 | " 117.432000 | \n",
492 | " 7.907650 | \n",
493 | " 35.123850 | \n",
494 | " 1487.855000 | \n",
495 | " -0.335200 | \n",
496 | " 0.346150 | \n",
497 | " 35.120850 | \n",
498 | "
\n",
499 | " \n",
500 | " 50% | \n",
501 | " 225.000000 | \n",
502 | " 226.861000 | \n",
503 | " 11.021400 | \n",
504 | " 35.288300 | \n",
505 | " 1497.670000 | \n",
506 | " -0.335000 | \n",
507 | " 0.352200 | \n",
508 | " 35.285600 | \n",
509 | "
\n",
510 | " \n",
511 | " 75% | \n",
512 | " 334.000000 | \n",
513 | " 336.851000 | \n",
514 | " 13.775450 | \n",
515 | " 35.607250 | \n",
516 | " 1505.530000 | \n",
517 | " -0.296100 | \n",
518 | " 0.367750 | \n",
519 | " 35.603200 | \n",
520 | "
\n",
521 | " \n",
522 | " max | \n",
523 | " 443.000000 | \n",
524 | " 446.900000 | \n",
525 | " 20.648000 | \n",
526 | " 35.793200 | \n",
527 | " 1523.790000 | \n",
528 | " 0.327700 | \n",
529 | " 0.501700 | \n",
530 | " 35.790500 | \n",
531 | "
\n",
532 | " \n",
533 | "
\n",
534 | "
"
535 | ],
536 | "text/plain": [
537 | " Depth Pressure ... Turbidity Oxygen\n",
538 | "count 871.000000 871.000000 ... 871.000000 871.000000\n",
539 | "mean 225.208955 227.110232 ... 0.361451 35.350359\n",
540 | "std 125.862021 126.972414 ... 0.027444 0.254881\n",
541 | "min 2.000000 2.015000 ... 0.328600 34.630800\n",
542 | "25% 116.500000 117.432000 ... 0.346150 35.120850\n",
543 | "50% 225.000000 226.861000 ... 0.352200 35.285600\n",
544 | "75% 334.000000 336.851000 ... 0.367750 35.603200\n",
545 | "max 443.000000 446.900000 ... 0.501700 35.790500\n",
546 | "\n",
547 | "[8 rows x 8 columns]"
548 | ]
549 | },
550 | "metadata": {
551 | "tags": []
552 | },
553 | "execution_count": 31
554 | }
555 | ]
556 | },
557 | {
558 | "cell_type": "code",
559 | "metadata": {
560 | "id": "siL32Li5GRBd",
561 | "colab_type": "code",
562 | "outputId": "a2997234-7958-490e-e093-a371cc2c5cf1",
563 | "colab": {
564 | "base_uri": "https://localhost:8080/",
565 | "height": 265
566 | }
567 | },
568 | "source": [
569 | "# Let's plot the depth column\n",
570 | "data['Depth'].plot();"
571 | ],
572 | "execution_count": 0,
573 | "outputs": [
574 | {
575 | "output_type": "display_data",
576 | "data": {
577 | "image/png": "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\n",
578 | "text/plain": [
579 | ""
580 | ]
581 | },
582 | "metadata": {
583 | "tags": [],
584 | "needs_background": "light"
585 | }
586 | }
587 | ]
588 | },
589 | {
590 | "cell_type": "code",
591 | "metadata": {
592 | "id": "Yo6eAZOXGWyL",
593 | "colab_type": "code",
594 | "outputId": "47e5ae1f-6768-4ada-97e9-384ded995ffa",
595 | "colab": {
596 | "base_uri": "https://localhost:8080/",
597 | "height": 265
598 | }
599 | },
600 | "source": [
601 | "# Now let's plot temperature\n",
602 | "data['Temperature'].plot();"
603 | ],
604 | "execution_count": 0,
605 | "outputs": [
606 | {
607 | "output_type": "display_data",
608 | "data": {
609 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dd3yV5f3/8dcnOyEkIYsRAknYQVYIypKCoKUOVKwDF46KdVWtrVb9VmuHVmu1Vq3jh1YrrrpxD8QJBsImhBFGQghkkpA9zrl+f+RAKSTNOufcZ3yejwcPcu77wP0+N3c+XLnu674uMcaglFLK+wRYHUAppVT3aAFXSikvpQVcKaW8lBZwpZTyUlrAlVLKSwW582Dx8fEmJSXFnYdUSimvt2bNmjJjTMKx291awFNSUsjOznbnIZVSyuuJSH5b27ULRSmlvJQWcKWU8lJawJVSyktpAVdKKS+lBVwppbyUFnCllPJSWsCVUspLeVUBr21sYfG3u3h/QxEtNrvVcZRS6gi73bBiZxk7iqvddky3PsjTU3/4YAuvrd4LwCkjE3nop2OJjwy1OJVSyt/llVRzw8vr2FZcTa+QQDbcexpBga5vH3tNC9wYwyc5Bzh3QhL3zRvNl1tLmPWXryg8WGd1NKWUH9t2oJqL/18WhQfrSO8fRW2TjYIK99QlryngBRV1VNY1MyklloVTU1h8eSbVjS18saXY6mhKKT/2qzc2UFXfzOvXTuH++WMA2FFS45Zje00B31BYBcDYgdEAzEnvS2p8L/65Yg+NLTYroyml/FRtYwub9lVx46yhnJAUzYi+vQkLDuD7vDK3HN9rCvjGvZWEBgUwol/vI9vOzxxIfnkdL3y/x7pgSim/lV/e2lWSlhAJQHhIIDOHJ/Lx5gPY7K5fb9h7CnhhFekDogg+6sbA9TOHcmJqLK+v3osuzqyUcrf88loABsdFHNl2+tj+lFY3kr2nwuXH77CAi0iyiCwXkS0ikiMiNzu2x4rI5yKyw/F7H1eFtNkNm4uqGDcw5rh952UksauslpW7yl11eKWUatNuRwFPie91ZNspIxOJCAnkjTWFLj9+Z1rgLcBtxph0YDJwg4ikA78BlhljhgHLHK9dYntxNXVNNsYkRR+376xxA0iKCee+pVtcdXillDpOY4uNhz7ZBkBk6H9GZEeGBjE/I4mlG4rYV1nv0gwdFnBjzH5jzFrH19VALpAEnA286Hjbi8A5rgr53voiAgOEk4fFH7cvIiSISycPZltxNYcaml0VQSml/stGx8CKOaMSj9t37YwhBAcIV7+wmprGFpdl6FIfuIikABOALKCvMWa/Y9cBoG87f2aRiGSLSHZpaWm3Qk5Oi+WW2cNIjAprc3+Ko/+poFzHhCul3OOddfsIDQrgr+ePP25fcmwEvz/7BLYeqOaOtzby0so9FLmgNd7pAi4ikcBbwC3GmENH7zOtdxDbvItojHnWGJNpjMlMSDhuSbdOmTkikZtmD2t3/yBHAc/XAq6UcpPtB6qZMCiG6IjgNvefOyGJ9P5RfLhxP799L4ddpbVOz9CpR+lFJJjW4v2yMeZtx+ZiEelvjNkvIv2BEqen66TBca03EPIrnH+ClFKqLQfrmv5rWPOxAgKEpTdOo7K+mRabIaadQt8TnRmFIsBzQK4x5pGjdi0FFjq+Xgi85/R0nRQZGkRcrxDtQlFKuU1lXTMxESH/8z1BgQHER4bSLzqMsOBAp2foTAt8GnAZsElE1ju23QX8Gfi3iFwN5AMXOD1dF8RFhlBZpzcxlVKuZ4yhsr6ZPi5oVXdFhwXcGPMdIO3snu3cON0XEhRAk04xq5Ryg4raJmx2Q58OWuCu5jVPYnYkODCAZi3gSik3WJN/EKDNZ1PcyWcKeEhgAI0tWsCVUq73xppC4iNDGJd8/NPh7uQ7BTwogCYt4EopF2totvH5lmJmDEtwyY3JrvCdAq5dKEopN3j08+0AhFpcvMGXCri2wJVSblDX1Lr+wAWZAy1O4kMFXG9iKqXcISIkkNCgACYMctkErJ3mMwVcW+BKKXdoaLZZ3vd9mM8U8ODAAJpsuqiDUsq1GprthAV7Run0jBROEBoUQJOujamUcrGGFm2BO11woOiTmEopl2tothEWpAXcqUKCAmjWLhSllItpF4oLBAcGYLMbt6wErZTyXw3NNo8YAw4+VMBDglo/ig4lVEq5UkOLXfvAnS0ksPWj6HwoSilXamy2ERbkGaXTM1I4gbbAlVLuoOPAXeBwC1wf5lFKuVJDs51wLeDOFRyoLXCllOu1jgP3jNLpGSmc4HAXirbAlVKu5FVdKCLyvIiUiMjmo7aNF5EfRGS9iGSLyImujdmxYL2JqZRyMWMMDc12rxpG+AIw95htDwH3GWPGA/c4XlsqVG9iKqVc7HAD0Wu6UIwx3wAVx24GohxfRwNFTs7VZcF6E1Mp5WKNzY4C7iGP0ne4Kn07bgE+FZGHaf1PYKrzInXPf4YR6pOYSinXaHBMmOc1feDtuA641RiTDNwKPNfeG0VkkaOfPLu0tLSbh+vYkZuYNp2RUCnlGvVNhwu4l3ShtGMh8Lbj6zeAdm9iGmOeNcZkGmMyExISunm4jgUHCgBNLdoCV0q5Rk1jCwARId3tvHCu7hbwIuBHjq9PAXY4J073hR5pgWsfuFLKNcprmwCIjwyxOEmrDv8bEZFXgZlAvIgUAvcC1wCPiUgQ0AAscmXIzogKCwZgS9Eh5oxK9Jj/IZVSvqOsuhGA+MhQi5O06rDKGWMWtLNropOz9EhiVBjxkSE8/fVO3t9QxN8uGs+E5BiCAj2jr0op5f3KahwFvLdnFHCfqm5PXJzBldNSOHCogfOfXsnFi7MwRvvElVI9V9vYwmdbiknsHUqvEO8eheKRJqfFce9Zo1n5m1O49kdprNpdwdtr91kdSynl5UqqG/jRX75iTf5BfnXaCETE6kiAjxXwwxKjwrh1znAmp8Vy59ub2FtRZ3UkpZQXe+673ZTVNPLYReO5YFKy1XGO8MkCDq0D7e85czRNNjtrCw5aHUcp5aUeX7aDZ77exZikaOaNG2B1nP/iswUcIC2hFwD55doCV0p1nc1uePbbXcwemcjr1072mK6Tw3y6gIcFB5LQO5TCg1rAlVJdV1RZT3VDC6em9/XIock+XcAB+kQEU1XfbHUMpZQXOnz/bFBshMVJ2ubzBTw6PJhD9S1Wx1BKeaHv8soQgaGJkVZHaZPPF/CoMG2BK6W6rsVm55lvdjF9aDyJUWFWx2mTzxfw6PBgDjVoAVdKdc37G4uw2Q3p/aM6frNFfL6AR4VrC1wp1XXlNa0TV10+NcXaIP+DXxTwmsYW7HZ9pF4p1XmHF4eJjfCMmQfb4vsFPCwIY6C6UW9kKqU67/D6uocXi/FEnpvMSaLCW6eZPaTdKEqpLmhqsRMgEBjgWQ/vHM3nC3i0o4BrP7hSqiuabXaPbn2DHxTwwws9aAtcKdUVTTY7wR6+noBnp3OCwy1wHUqolOqKphY7IVrArRUV3jp/gXahKKW6QrtQPMCRFrg+Tq+U6oJmm/H+LhQReV5ESkRk8zHbbxKRrSKSIyIPuS5iz/QKCSJAtAtFKdU1TS2+0QJ/AZh79AYRmQWcDYwzxowGHnZ+NOcICBB9GlMp1WU+cRPTGPMNUHHM5uuAPxtjGh3vKXFBNqeJCgumsk4LuFKq83y5D3w4cLKIZInI1yIyqb03isgiEckWkezS0tJuHq5nUuN7sb242pJjK6W8U12TjZBAz32IB7pfwIOAWGAy8Gvg39LOWkPGmGeNMZnGmMyEhIRuHq5nMgb1YVtxNdsOaBFXSnVs874qVu2uILG3Z04je1h3C3gh8LZptQqwA/HOi+Vcl00ZTHR4ML99dzPG6KRWSqn21Ta2cN3La+gfHcY9Z6VbHed/6m4BfxeYBSAiw4EQoMxZoZwttlcId8wdyao9FSz+drfVcZRSHuz11XvZW1HPw+ePo6+HLuRwWIerdIrIq8BMIF5ECoF7geeB5x1DC5uAhcbDm7YXZCbz1bYS/vRRLiLws5PTrI6klPIwK/LKuP+jXKYNjWPqkDir43RI3Fl3MzMzTXZ2ttuOd6wWm51Ln8tib0U93//mFMtyKKU8T01jCzMeWk58ZAhvXjf1yDxKnkBE1hhjMo/d7tljZJwsKDCAOaP6sq+ynuJDDVbHUUp5kB92llNR28TvzhrtUcX7f/GrAg6QMbgPAGvzD1qcRCnlSfaU1wIwyoPXwDyW3xXw0QOiiAwN4plvdlHfZLM6jlLKQ3y1rZTeYUHERHhH6xv8sICHBgXy8PljWb+3kseW7bA6jlLKA+QUVfFdXhlXTE2hnUdaPJLfFXCAuSf058SUWL7P89iRj0opN3olq4DQoAB+Nt27Rqf5ZQEHODE1lpyiKmp0sWOl/FpNYwvvrtvHWeMGEO1F3SfgxwX8pLRY7AY+yzlgdRSllIU+3XyA2iYbC04cZHWULvPbAj5tSDyjB0Rx79Ic/vLpVux2j34OSSnlAlX1zTz19U76RAQzITnG6jhd5rcFPCBAeHzBBE5MieXJ5Tv5+ZI12LSIK+UXjDG8uqqAc578nvzyWn714xEEBHjPzcvD/LaAA6QlRLJ4YSa3zhnOZ1uKWb7Vo6c1V0o5gTGGvy/L4863NxEYILx09UlcctJgq2N1i18XcAAR4fpZQ+gXFcbDn22jtLrR6khKKRf6NKeYR7/YzsnD4vnslhlMTvP8OU/a4/cFHCA4MIAH5o9hV2ktJz/0JYu/3WV1JKWUC2wpOsTv388hKSac5xZO8spuk6NpAXeYNTKRj285mZNS47j/o1xW7zl2FTmllDf7Znsp8574jqr6Zv5xSYbHL5fWGd7/CZxoSEIkj1wwjv7R4Sx8fhVFlfVWR1JKOYExhj98sIXBcREsu20m47xwxElbtIAfIy4ylFevmYzdGB79fLvVcZRSTnDf+1vYUVLDtTOG0C/asxdp6Aot4G0YFBfB/IyBvLt+Hyt26uP2Snmz+iYbr6/eS+/QIOaNH2B1HKfSAt6OO348kr5RYTzxZZ7VUZRSPfDtjlLqm208delEwoIDrY7jVFrA2xEdEcyp6X1ZW3CQqrpmq+Mopbrpk5wD9A4L4qS0WKujOF2HBVxEnheREsf6l8fuu01EjIh47Ir0PXFBZjKNLXYe+DhXV7NXygt9uHE/76zbx9njBxAc6Hvt1c58oheAucduFJFk4DSgwMmZPMao/lFcMTWF11bv5fLnV9HUYrc6klKqE4wx/G5pDje8spZR/aK46/RRVkdyiQ4LuDHmG6CtQdGPArcDPt00/e0Z6dwwawjf7ijj77oAhFJeIWt3BS+s2APAM5dNJCIkyNpALtKtnylE5GxgnzFmg5PzeJyAAOGXp47g5GHx/OOrPL7dUWp1JKVUO5pa7Ly3fh8XPfsDANn/N4fk2AiLU7lOlwu4iEQAdwH3dPL9i0QkW0SyS0u9s/gFBghPXJxBv6gwHvhoK9UNelNTKU9jsxt+vmQNN7+2nvjIUO6bN5r4yFCrY7lUd1rgQ4BUYIOI7AEGAmtFpF9bbzbGPGuMyTTGZCYkJHQ/qcWiw4O5afYwtuw/xLQ/f8mHG/dbHUkp5ZC7/xDznviOL7eWMGdUIt/dMYuFU1OsjuVyXe4YMsZsAhIPv3YU8UxjjM8/8bLgxEGkxvfigY+3csMra8ndP5Rb5gwjyAfvbivlLRqabdz4ylrKapp48LwxXDjJ+1bW6a7ODCN8FVgJjBCRQhG52vWxPNfktDje/PkUZo9M5Inledz8+npqdV1NpSxRUt3ANf/KZmdpLU9cPMGvijd0ogVujFnQwf4Up6XxEsGBATx3xSSuW7KGDzfup6ahheevmESgl09NqZQ3Wb+3kov/3w80tdi57dThnDzMe7tou0t/9u+Bf1ySwe/PHs3X20t5+uudVsdRym80NNu4/8NcIkOD+OzWGdw0e5jVkSzhm4Mj3UREuHxKCt/nlfGXT7eRtbuCG2cNZVJKH0S0Na6UMzW12Pl+Zxkr8sp4ffVeDjW0cN+80aQlRFodzTLizkfEMzMzTXZ2ttuO5y71TTae/343z3+3m/LaJi6alMwD88doEVfKSWoaW7jsuSzWFVQCcFp6X66YlsLUIT45i8dxRGSNMSbz2O3aAneC8JBAbpg1lKumpfL7D3J4ddVeEnuH8svTRlgdTSmvt724mtMe/QaA+88dw4zh8Qzs47sP53SF9oE7UXhIIPefO4bpQ+N5d30RdrtPzzKglMsZY/j1mxsBmDu6HxefNEiL91G0Be5kIsJPxvTj7nc2M+EPnzMpJZaTUmOZPSrRr/vqlOqKgvI61u09yEsr89mwt5L7zx3DeROTrI7lcbSAu8DFJw6iV0gQ3+eVsXpPBV/kFvOnj3I5ZWQif18wgchQPe1KtaWh2cYdb23kvfVFACTFhHP/uWNYcGKy3lNqg97EdIO8kmqWri/iya92MjgugkcvGO8zi6oq5Szvrd/HQ59sY19lPVdMTWF+RhLp/aP0SWfav4mpBdyNVuws47Z/b6CkupFrZ6Rx3sSBDNFuFeXHjDGsyT/I3e9sZltxNYPjIvi/M9I5Nb2v1dE8ihZwD1FV38y9723mXcePiFdPT+Wu00fpU5zKr9jthk9yDvDYFzvYVlxNn4hgfjF7GJdPSdHvhTboMEIPER0ezN8umsBtp43gyeV5PPfdbuzGcO9Zo62OppRbFFXWc+1La9i0r4rk2HAePG8MZ4wdoPeGukHPmEWSYyP483ljCQ0K4J/f76GkupGZwxM4Z0KST67dp1R9k40lP+Tz4CdbsRvDA/PH8NOJA/V67wEt4Ba78/RR2Izhk83FfLhxP59tKeapSzL0xo3yKbn7D/GzF7PZV1lPfGQIjy/IYMqQOKtjeT2tEhYLCw7kj+eMYfXds7nnzHQ+31LMiyvzrY6llNMY07pSTovdzuLLM1l552wt3k6iBdxDiAhXTU9l6pA4nvoqj7omnWNc+YZ1eyvJL6/jttNGMCe9r3aZOJGeSQ9z22nDKatp4szHv+OznANWx1GqR+x2w8OfbqN3aBA/OaHNVRdVD2gB9zATB8ey+PJMAkVY9NIazn96BZv3VVkdS6ku23agmnP+8T0rdpZz1xmj6B0WbHUkn6MF3APNSe/LRzefzF2nj6Sgoo7Ln19FeU2j1bGU6rRnvt7J3Me+YW9FHX+7cDwXTUq2OpJP0gLuoYIDA1g0YwiPL8igoraJ6Q8uZ/m2EqtjKdWhb3eU8udPtvLj9H58fPMMzpmQpPOYuEhnFjV+XkRKRGTzUdv+IiJbRWSjiLwjIjqxh4ucmBrLGz+fQkp8L65fspa8kmqrIynVruw9FVz23CqGJETy6IXj6RcdZnUkn9aZFvgLwNxjtn0OnGCMGQtsB+50ci51lEkpsbx45SRsdsNrq/ZaHUepNhljuOe9HAD+74xRhIcEWpzI93VYwI0x3wAVx2z7zBhzeJzbD8BAF2RTR0mMCmPG8Hje31hEfZPN6jhKHWflrnK27D/En849gZkjEq2O4xec0Qd+FfBxeztFZJGIZItIdmlpqRMO578un5JC8aFGnli+w+ooSh3n6a93ER8ZwnkZ2p5zlx4VcBG5G2gBXm7vPcaYZ40xmcaYzISEhJ4czu/NGJ7AGWP68+KKfCrrmqyOo9QRO0tr+GZ7KVdOSyUsWLtO3KXbBVxErgDOBC4x7pyT1s/dNHsoNY0t/O0LbYUrz/Hv1a33Zk7TebzdqlsFXETmArcD84wxdc6NpP6Xkf2iuHzKYF5cuYdVuys6fL9SrvbP73fzzDe7ABgUpwsOu1NnhhG+CqwERohIoYhcDTwB9AY+F5H1IvK0i3Oqo9w+dySDYiO49fX1NNvsVsdRfu6N7EIAzp2QRGiQdp+4U4fTyRpjFrSx+TkXZFGdFBkaxL1npXPVC9ksXV/EeRP1ppGyxvsbitiy/xC3zx3B9TOHWh3H7+iTmF5q1ohERvbrzVNf78Ru11sQyv0aW2z84YMtJMeGc+nkwVbH8UtawL2UiHDdzCHkldTw4so9VsdRfui9dUWUVDfywLljidKJqiyhBdyLnTV2ALNHJnL/R7msKzhodRzlR7L3VHD7WxvpHRrEtKG6OINVtIB7sYAA4a8XjKNvVBg3vrKO6oZmqyMpP1DfZOPnS9YC8POZQ3SiKgtpAfdyMREh/H3BBPZX1fPAx1utjqP8wH3v51Be28iTF2dwwyy9cWklLeA+IGNQH66alsorWQXkFOniD8p13lu/j9dW7+X6mUM4Y2x/q+P4PS3gPuKm2cOICgvi0c+3Wx1F+ShjDPd/lMuEQTHcOme41XEUWsB9RnR4MNecnMYXuSUUlOvDscr5Cg/WU3yokfkTkgjShYk9gv4r+JB54wcAsHTDPouTKF9T09jCvUtzCAwQpg2NtzqOcujwSUzlPQbH9WLOqET+9sUOhib2Zq6uAq6c4MON+7njrY3UNLZw46yhpCVEWh1JOWgL3Mc8euF4xgyM5sZX1vLElzvQiSJVT+TuP8Qv/72ewXER3H36KH4xe5jVkdRRtID7mN5hwfzrqhOZlBLLw59tJztfH/BR3bMst5jT//4t0eHB/PPKSVwzI42QIC0ZnkT/NXxQ77Bgnr5sIgHS+uOvUl21qbCK65asxRhY8rOTSOytixN7Ii3gPio6PJh54wbw0g/5bC/WlexV5xljuHfpZqLCg/nm17MY3re31ZFUO7SA+7A7fjKSyNAgTn/sW25/c4Muw6Y6VHiwjt9/sIW1BZXcdtpwXaDBw+koFB/WPzqcj28+mWe/2cXLWfnsLqvlpatP0jUL1XGMMXyaU8wdb22kqr6Z6UPjOV/nmfd42gL3cQNiwvndvNE8csF4Vu85yHVL1ujIFHWcf2fv5edL1hAg8P6N01nys5P0YR0voP9CfuKscQO48ycjWb6tlCeX52HTRSCUw67SGh78ZBvp/aP4+vZZjBkYbXUk1UmdWRPzeREpEZHNR22LFZHPRWSH4/c+ro2pnOHq6amcmt6Xhz/bzlUvrNY+ccWy3GLmPPI1FbVNXDdziC7M4GU60wJ/AZh7zLbfAMuMMcOAZY7XysMFBQbw7GUT+eM5J7BiZxk/fXoljS02q2Mpi9jshj99mEtcZCif3TqDs8YNsDqS6qIOC7gx5hug4pjNZwMvOr5+ETjHybmUi4gIl04ezNOXTiSvpIaXVuZbHUlZ5PynV7CrrJb75o3WoYJeqrt94H2NMYefEDkA9G3vjSKySESyRSS7tLS0m4dTzjZ7VF9OTInl5awCvanphzYWVrK2oJK0+F7MHa1z5nirHt/ENK3f/e1WAGPMs8aYTGNMZkJCQk8Pp5zovIlJ7C6rZeWucqujKDf75/d76BUSyLs3TiMgQJdE81bdLeDFItIfwPF7ifMiKXc5Y+wABvYJ55bX1nOgqsHqOMpNig818MHGIi6YlKw3Lb1cdwv4UmCh4+uFwHvOiaPcKTI0iMULM6ltbOHal7JpaNYbmv7g4U+30WI3XDE1xeooqoc6M4zwVWAlMEJECkXkauDPwKkisgOY43itvNDIflE8euF4NhRWcf3La8nS7hSftmFvJW+sKeTKqakMjutldRzVQx0+Sm+MWdDOrtlOzqIsctroftw+dwQPfbKNL7eW8Mo1JzF1iK664ose/zKP6PBgbj1V5/X2BfokpgLg+plD+fK2HwHw0SadgtbXNLXY+fUbG/git5irp6fSW/u+fYIWcHVEWkIk04fGs3xrKSXVelPTlzy5PI831hSSHBvOFdNSrI6jnEQLuPov501MYl9lPSc/uFxb4j6gvKaRX7y6jseW7eDMsf35+lezdOSJD9HpZNV/OXfCQFLjI1n0r2yuf3ktl5w0iDt+MlK/6b1MRW0Td769kWW5JbTYDdfOSOPWU4frmG8fowVcHWd8cgyf3DKDRz7fxpIfCiiqrOcP55xAUkw4IloAPN3uslpueW0duQequWp6KvMzkhjZL8rqWMoFtICrNsX2CuGP54whKSaCBz/ZyvQHlzN6QBSnj+nPqel9de4MD9Ris7NqTwW3vr6e4kONPHlxBmeM7W91LOVC4s55MDIzM012drbbjqecY/O+KrJ2V/D22kJyig4RFhzA4wsymDMqUVvkHqKyron5T61gV2ktAP+4JIPTx2jx9hUissYYk3ncdi3gqivySmpY9FI2u0prmT40nsULM3WJNotl7Srnwmd/AOCeM9OZn5FETESIxamUM7VXwHUUiuqSoYmRfHrLDO4+fRTf5ZXxclaB1ZH82ptrCo8U79+dlc5V01O1ePsRLeCqy4IDA7hmRhrjkmN4bVUBdl2ezRJNLXb++tk20hJ6seGe07hiWqrVkZSbaQFX3XbZ5MHsKKnhrCe+Y0dxtdVx/M4tr69jf1UDl00eTHSEDvP0R1rAVbedl5HEIxeMo6Cijvve32J1HL+yIq+MjzYdICIkkAsnJVsdR1lEhxGqbhMR5mcMJKfoEC9n5dNisxMUqG0CV9tYWMnFi7MICQpg3T2nEhqkN5H9lX63qR4blxxDQ7OdL3KLrY7iF5bltq6fcs+Z6Vq8/ZwWcNVjc0f3Y2CfcF5ZtdfqKH5h874qhiZGcunkwVZHURbTAq56LCQogDPG9mdFXhklh3QWQ1cyxrChsJJxA2OsjqI8gBZw5RTzJwwkQIT7PtCbma60JKuAspompg+LszqK8gBawJVTjOjXm5+dnMpHm/azs7TG6jg+6dsdpfz23c2M7Nebs8YOsDqO8gBawJXTXDZlMMbAV9tKrY7ik/6xfCcA95yVrqN9FNDDAi4it4pIjohsFpFXRSTMWcGU9+kfHU5ybDirduvCyM6WU1TFyl3l3DpnuK5Xqo7odgEXkSTgF0CmMeYEIBC4yFnBlHc6MSWOT3OK+elTK7j3vc2sLThodSSvV1XXzPPf7SEwQLh08iCr4ygP0tMHeYKAcBFpBiKAop5HUt7shllDqG5oprKumdez97Ikq4DfzRvNgknJ+mN/F/2wq5z73t9C7v5DAFw6eRBxkaEWp1KepEfTyYrIzcCfgHrgM2PMJW28Z560TX0AAApWSURBVBGwCGDQoEET8/Pzu3085V2qG5q5/PlVrCuopG9UKOdlDOTaGUN03o4ONLbY+HpbKfcuzaGxxc7V01OZMCiGyalxuiSan3L6fOAi0gd4C7gQqATeAN40xixp78/ofOD+p9lmZ1luCa+tLuCrbaUMTYzk6UsnMjQx0upoHmljYSU3vbqO/PI6YnuF8PiCCUwbqn3e/s4V84HPAXYbY0qNMc3A28DUHvx9ygcFBwYw94R+vHDliTy3MJOymkbOfuI7lm7Q3rZjfbujlHlPfE9zi53Fl2eSdddsLd7qf+pJAS8AJotIhLSuqzUbyHVOLOWLZo/qy4e/OJkR/Xpzx5sb2VtRZ3Ukj9DUYueRz7dz2XOrAHj84gnMSe9LsN4zUB3o9hVijMkC3gTWApscf9ezTsqlfFRSTDiPX5yBCNzwylpeySpgWW4xhxqarY7mdlV1zWwvrubSxVn8fdkOROCt66YwcXCs1dGUl9A1MZUlPtm8nzve2kRVfWvhju0Vwi1zhjE/YyCRob4/y/G/Vu7hDx9sodlmEIEH54/l/MyBuki0apMuaqw8TrPNTml1I3vKanls2Q6ydlcQHxnKC1dO4oSkaKvjOV1dUwvvbygia1cFSzcUMXFwHy6clMyEQX1Ije9ldTzlwbSAK49mjGHlznJuenUdVfXNDIgJ58HzxjJliHdP2lTT2MIL3+9mb0U93+WVsa+ynrheIcwYnsBvz0wntpcuQKw6pgVceYW8khqW/JDPu+v30S8qjHdvmEZYsPcuWvCbtzby2uq99IkIJi0hksunDGbeuAHaVaK6RAu48iofbtzPDa+sJaF3KNfOSGN+xkCvaa3a7IZvdpTyztp9LN1QxHkZA/nrBeOsjqW8WHsF3PfvFimvdMbY/vTpdRKPfr6dP36Yy/0f5RLbK4Q+ESEk9A5laGIkU9LiOGVUouXLipXXNPL4l3ls2X+IQ/XNHDjUQGVdM71CApk1IoGbZw+zNJ/yXdoCVx7NGENO0SE+yzlAaU0T5TWNlNU0svVANXVNNk5L78szl020pEvCGMNba/dxz3ubqWuyMap/FMl9wukT0drHfWp6X0KCdCy36jltgSuvJCKckBR93KiUZpudp77aySOfb+e99UWcMyHJ7dmWbijiV29sYHBcBA+eN5bJad59w1V5Hy3gyisFBwZww6yhfLWthHuX5jAgJpxJKX3c1hIvKK/j9+9v4YSkKN6+bpq2tJUltIArrxUYIPzl/HFc+MwPXPDMSvpFhZExOIYxSTFMHxrPmIHOG0tujGFXWS3fbi9l5a5yPs0pRgSeuDhDi7eyjPaBK69X32Tj/Q1FfL2jlE2FVRQ45lg5MSWWa3+UxqwRid2ehrWqrpl/rtjNK1kFlFQ3AtAnIpiLTxrEmWMHMKp/lNM+h1Lt0WGEym9U1Dbxzrp9PPftLoqqGkiKCeeq6alcPT21039HeU0jd72ziWW5JbTYDZmD+3Dm2P7MHJHI4LgIHcet3EoLuPI7zTY7H23az79W5rMm/yBT0uK46/RRHXatLP52F3/8MJfQoAAWTk1h1ohETkqN1cUUlGW0gCu/1WKz84+vdvJyVj51TTa++OWP6BvV9vrbj32xg0e/2A7Aa4sm68gS5RFcsaCDUl4hKDCAX8wexqvXTKamsYU31xS2+b7qhmYeW7adOaP6svruOVq8lcfTAq78RlpCJKnxvVhXUNnm/rUFldgNXDE1hYTeuniw8nxawJVfyRjUh6xd5ZTXNB63b9XucgIDhAmDYixIplTXaQFXfuVnJ6fSZLMz8Y9f8OHG/djtrfeAymsaeXddEZmD+9DLDxaUUL5Br1TlV0b2i+KB+WP45b83cMMra+kVEogB6ppsBAaIzhqovEqPCriIxACLgRMAA1xljFnpjGBKucr8jIFMSonlh13lbN5XRVBgADHhwZw2uh8j+vW2Op5SndbTFvhjwCfGmJ+KSAgQ4YRMSrlccmwEybERnJ+ZbHUUpbqt2wVcRKKBGcAVAMaYJqDJObGUUkp1pCc3MVOBUuCfIrJORBaLyHErs4rIIhHJFpHs0tLSHhxOKaXU0XpSwIOADOApY8wEoBb4zbFvMsY8a4zJNMZkJiQk9OBwSimljtaTAl4IFBpjshyv36S1oCullHKDbhdwY8wBYK+IjHBsmg1scUoqpZRSHerpKJSbgJcdI1B2AVf2PJJSSqnO6FEBN8asB46bIUsppZTr6aP0Sinlpdw6H7iIlAL53fzj8UCZE+P4Cj0vbdPz0jY9L23z9PMy2Bhz3DA+txbwnhCR7LYmNPd3el7apuelbXpe2uat50W7UJRSyktpAVdKKS/lTQX8WasDeCg9L23T89I2PS9t88rz4jV94Eoppf6bN7XAlVJKHUULuFJKeSmvKOAiMldEtolInogcN+OhrxKRZBFZLiJbRCRHRG52bI8Vkc9FZIfj9z6O7SIif3ecp40i4tOTi4lIoGMq4w8cr1NFJMvx+V93TPGAiIQ6Xuc59qdYmduVRCRGRN4Uka0ikisiU/R6ARG51fE9tFlEXhWRMF+4Xjy+gItIIPAk8BMgHVggIunWpnKbFuA2Y0w6MBm4wfHZfwMsM8YMA5bxn2l8fwIMc/xaBDzl/shudTOQe9TrB4FHjTFDgYPA1Y7tVwMHHdsfdbzPVx1eJWskMI7W8+PX14uIJAG/ADKNMScAgcBF+ML1Yozx6F/AFODTo17fCdxpdS6LzsV7wKnANqC/Y1t/YJvj62eABUe9/8j7fO0XMJDWYnQK8AEgtD5JF3TsdQN8CkxxfB3keJ9Y/RlccE6igd3HfjZ/v16AJGAvEOv49/8A+LEvXC8e3wLnPyf/sELHNr/i+DFuApAF9DXG7HfsOgD0dXztT+fqb8DtgN3xOg6oNMa0OF4f/dmPnBfH/irH+31Ne6tk+fX1YozZBzwMFAD7af33X4MPXC/eUMD9nohEAm8BtxhjDh29z7Q2E/xqLKiInAmUGGPWWJ3Fw3S4SpafXi99gLNp/Q9uANALmGtpKCfxhgK+Dzh66fCBjm1+QUSCaS3eLxtj3nZsLhaR/o79/YESx3Z/OVfTgHkisgd4jdZulMeAGBE5PEXy0Z/9yHlx7I8Gyt0Z2E3aWyXL36+XOcBuY0ypMaYZeJvWa8jrrxdvKOCrgWGOO8YhtN58WGpxJrcQEQGeA3KNMY8ctWspsNDx9UJa+8YPb7/cMbpgMlB11I/OPsMYc6cxZqAxJoXW6+FLY8wlwHLgp463HXteDp+vnzre73OtUNP+Kll+fb3Q2nUyWUQiHN9Th8+L918vVnfCd/ImxOnAdmAncLfVedz4uafT+uPuRmC949fptPbHLQN2AF8AsY73C60jdnYCm2i9627553DxOZoJfOD4Og1YBeQBbwChju1hjtd5jv1pVud24fkYD2Q7rpl3gT56vRiA+4CtwGbgJSDUF64XfZReKaW8lDd0oSillGqDFnCllPJSWsCVUspLaQFXSikvpQVcKaW8lBZwpZTyUlrAlVLKS/1/pByv3v8uyl0AAAAASUVORK5CYII=\n",
610 | "text/plain": [
611 | ""
612 | ]
613 | },
614 | "metadata": {
615 | "tags": [],
616 | "needs_background": "light"
617 | }
618 | }
619 | ]
620 | },
621 | {
622 | "cell_type": "code",
623 | "metadata": {
624 | "id": "xEBlWEjhGYDB",
625 | "colab_type": "code",
626 | "outputId": "10612c9b-e9d3-4629-8e9c-41461f60ce2f",
627 | "colab": {
628 | "base_uri": "https://localhost:8080/",
629 | "height": 279
630 | }
631 | },
632 | "source": [
633 | "# Temperature vs. Depth\n",
634 | "ax = data.plot(x='Temperature',y='Depth');\n",
635 | "ax.invert_yaxis(); # Flip the y-axis"
636 | ],
637 | "execution_count": 0,
638 | "outputs": [
639 | {
640 | "output_type": "display_data",
641 | "data": {
642 | "image/png": "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\n",
643 | "text/plain": [
644 | ""
645 | ]
646 | },
647 | "metadata": {
648 | "tags": [],
649 | "needs_background": "light"
650 | }
651 | }
652 | ]
653 | },
654 | {
655 | "cell_type": "code",
656 | "metadata": {
657 | "id": "gfQT6GBSGma8",
658 | "colab_type": "code",
659 | "colab": {}
660 | },
661 | "source": [
662 | "data.describe().to_csv('ctd_summary.csv');"
663 | ],
664 | "execution_count": 0,
665 | "outputs": []
666 | }
667 | ]
668 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 2020 Data Labs REU
2 |
3 | This repository contains Python scripts developed for the [2020 Data Labs Virtual Research Experience for Undergraduates (REU)](https://datalab.marine.rutgers.edu/2020-virtual-reu/), hosted by Rutgers University.
4 |
5 | ## Workshop Sessions
6 |
7 | * Activity 1 - Intro to Python & Accessing NDBC Data
8 |
9 | [Jupyter Notebook](Activity_1_Python_Basics.ipynb) |
10 | [Open in Colab](https://colab.research.google.com/github/ooi-data-lab/datalab-reu-2020/blob/master/Activity_1_Python_Basics.ipynb)
11 |
12 | * Activity 2 - Data Visualization
13 |
14 | [Jupyter Notebook](Activity_2_Data_Visualization.ipynb) |
15 | [Open in Colab](https://colab.research.google.com/github/ooi-data-lab/datalab-reu-2020/blob/master/Activity_2_Data_Visualization.ipynb)
16 |
17 | * Activity 3 - Data Analysis
18 |
19 | [Jupyter Notebook](Activity_3_Data_Analysis.ipynb) |
20 | [Open in Colab](https://colab.research.google.com/github/ooi-data-lab/datalab-reu-2020/blob/master/Activity_3_Data_Analysis.ipynb)
21 |
22 | * Bonus Activity 4 - Argo Float Data
23 |
24 | [Jupyter Notebook](Activity_4_Argo_Data.ipynb) |
25 | [Open in Colab](https://colab.research.google.com/github/ooi-data-lab/datalab-reu-2020/blob/master/Activity_4_Argo_Data.ipynb)
26 |
27 |
28 | For more information, please see the [Ocean Data Labs](https://datalab.marine.rutgers.edu) website.
29 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy==1.18.*
2 | matplotlib==3.*
3 | seaborn==0.10.1
4 | pandas==1.0.*
5 | xarray==0.15.*
6 | netcdf4==1.5.3
--------------------------------------------------------------------------------