{
"cells": [
{
"cell_type": "markdown",
"id": "f54c9099",
"metadata": {},
"source": [
"# Arts in STEM (STEAM)\n",
"\n",
":::{note}\n",
"The inclusion of arts in STEM is a good way to engage students with diverse interests and abilities. In this chapter, we offer a few examples of a fun way to think about mathematical and programming concepts.\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "ecc3f808",
"metadata": {},
"source": [
"```{index} pixel images\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "f47fda1f",
"metadata": {},
"source": [
"## Pixel Images"
]
},
{
"cell_type": "markdown",
"id": "d86f0535",
"metadata": {},
"source": [
":::{note}\n",
"In this section, we will show how increasing the number of pixels used to represent an image will sharpen the resolution.\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "66326053",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"# PACKAGE: DO NOT EDIT THIS CELL\n",
"import numpy as np\n",
"import matplotlib\n",
"import pandas as pd\n",
"matplotlib.use('Agg')\n",
"import matplotlib.pyplot as plt\n",
"matplotlib.style.use('fivethirtyeight')\n",
"from sklearn.datasets import fetch_lfw_people, fetch_olivetti_faces\n",
"import time\n",
"import timeit\n",
"%matplotlib inline\n",
"from ipywidgets import interact"
]
},
{
"cell_type": "markdown",
"id": "42629e46",
"metadata": {},
"source": [
"```{index} alpha values\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "9355cbc4",
"metadata": {},
"source": [
"__1. Alpha Values__\n",
"The opacity of an image can be adjusted using an alpha value between 0 and 1. For example, a black circle with alpha equal to .1 appears as a light gray and is black when alpha is equal to 1. Note that a rectangular array of alpha values can then be mapped to a rectangular array of circles which have the corresponding shading."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d911cf84",
"metadata": {},
"outputs": [],
"source": [
"xls=pd.ExcelFile('data.xlsx')\n",
"num=3 #number of images\n",
"N=8 #NxN pixels\n",
"character_collection = {}\n",
"for i in np.arange(0,num):\n",
" character_collection[i]=pd.read_excel(xls,str(i))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7eceb45c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure(figsize=(4.5,5))\n",
"for i in np.arange(0,N):\n",
" for j in np.arange(0,N):\n",
" plt.plot(j,8-i,marker=\"o\", markersize=35, markeredgecolor='k', markerfacecolor=\"k\",alpha=character_collection[2].loc[i,j])"
]
},
{
"cell_type": "markdown",
"id": "daf9efee",
"metadata": {},
"source": [
"__2. Pixel Images__ \n",
"\n",
"We can use Python to create NxN pixel images of a given photo. \n",
"\n",
"For a given black and white picture, a computer code will create an $N\\times N$ array of numbers with gray-scale values.\n",
"\n",
"Or, given an $N\\times N$ array of gray scale values, another computer code can reconstruct a pixel image."
]
},
{
"cell_type": "markdown",
"id": "5fe4ac4e",
"metadata": {},
"source": [
"First we install a library for working with pixcel images."
]
},
{
"cell_type": "markdown",
"id": "b562852b",
"metadata": {},
"source": [
"```{index} opencv-python\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "208c524b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting opencv-python\n",
" Downloading opencv_python-4.8.0.74-cp37-abi3-win_amd64.whl (38.1 MB)\n",
" 0.0/38.1 MB ? eta -:--:--\n",
" 0.1/38.1 MB 3.5 MB/s eta 0:00:11\n",
" 0.5/38.1 MB 6.7 MB/s eta 0:00:06\n",
" - 1.0/38.1 MB 7.8 MB/s eta 0:00:05\n",
" - 1.4/38.1 MB 7.6 MB/s eta 0:00:05\n",
" -- 1.9/38.1 MB 8.7 MB/s eta 0:00:05\n",
" -- 2.4/38.1 MB 8.6 MB/s eta 0:00:05\n",
" --- 2.9/38.1 MB 9.2 MB/s eta 0:00:04\n",
" --- 3.3/38.1 MB 9.2 MB/s eta 0:00:04\n",
" ---- 3.9/38.1 MB 9.5 MB/s eta 0:00:04\n",
" ---- 4.3/38.1 MB 9.5 MB/s eta 0:00:04\n",
" ----- 4.9/38.1 MB 9.7 MB/s eta 0:00:04\n",
" ----- 5.4/38.1 MB 9.8 MB/s eta 0:00:04\n",
" ------ 5.9/38.1 MB 9.9 MB/s eta 0:00:04\n",
" ------ 6.4/38.1 MB 10.0 MB/s eta 0:00:04\n",
" ------- 7.0/38.1 MB 9.9 MB/s eta 0:00:04\n",
" ------- 7.5/38.1 MB 10.2 MB/s eta 0:00:03\n",
" -------- 8.0/38.1 MB 10.1 MB/s eta 0:00:03\n",
" -------- 8.5/38.1 MB 10.3 MB/s eta 0:00:03\n",
" --------- 9.1/38.1 MB 10.2 MB/s eta 0:00:03\n",
" ---------- 9.5/38.1 MB 10.2 MB/s eta 0:00:03\n",
" ---------- 10.1/38.1 MB 10.2 MB/s eta 0:00:03\n",
" ---------- 10.5/38.1 MB 10.6 MB/s eta 0:00:03\n",
" ----------- 11.1/38.1 MB 10.7 MB/s eta 0:00:03\n",
" ----------- 11.7/38.1 MB 10.9 MB/s eta 0:00:03\n",
" ------------ 12.2/38.1 MB 10.9 MB/s eta 0:00:03\n",
" ------------- 12.7/38.1 MB 10.9 MB/s eta 0:00:03\n",
" ------------- 13.2/38.1 MB 10.9 MB/s eta 0:00:03\n",
" -------------- 13.7/38.1 MB 10.9 MB/s eta 0:00:03\n",
" -------------- 14.3/38.1 MB 11.1 MB/s eta 0:00:03\n",
" --------------- 14.8/38.1 MB 11.1 MB/s eta 0:00:03\n",
" --------------- 15.4/38.1 MB 11.1 MB/s eta 0:00:03\n",
" ---------------- 15.9/38.1 MB 10.9 MB/s eta 0:00:03\n",
" ---------------- 16.4/38.1 MB 11.1 MB/s eta 0:00:02\n",
" ----------------- 16.9/38.1 MB 11.1 MB/s eta 0:00:02\n",
" ----------------- 17.4/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ------------------ 17.9/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ------------------ 18.5/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ------------------- 19.0/38.1 MB 11.1 MB/s eta 0:00:02\n",
" -------------------- 19.5/38.1 MB 11.1 MB/s eta 0:00:02\n",
" -------------------- 20.1/38.1 MB 10.9 MB/s eta 0:00:02\n",
" --------------------- 20.5/38.1 MB 11.1 MB/s eta 0:00:02\n",
" --------------------- 21.0/38.1 MB 10.9 MB/s eta 0:00:02\n",
" --------------------- 21.5/38.1 MB 10.7 MB/s eta 0:00:02\n",
" ---------------------- 22.0/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ----------------------- 22.4/38.1 MB 10.7 MB/s eta 0:00:02\n",
" ----------------------- 23.0/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ------------------------ 23.5/38.1 MB 10.7 MB/s eta 0:00:02\n",
" ------------------------ 24.0/38.1 MB 11.1 MB/s eta 0:00:02\n",
" ------------------------- 24.5/38.1 MB 10.9 MB/s eta 0:00:02\n",
" ------------------------- 25.0/38.1 MB 10.7 MB/s eta 0:00:02\n",
" -------------------------- 25.4/38.1 MB 10.9 MB/s eta 0:00:02\n",
" -------------------------- 25.9/38.1 MB 10.7 MB/s eta 0:00:02\n",
" --------------------------- 26.5/38.1 MB 10.7 MB/s eta 0:00:02\n",
" --------------------------- 27.1/38.1 MB 10.7 MB/s eta 0:00:02\n",
" ---------------------------- 27.5/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ---------------------------- 28.1/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ----------------------------- 28.6/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ----------------------------- 29.1/38.1 MB 10.6 MB/s eta 0:00:01\n",
" ------------------------------ 29.6/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ------------------------------ 30.1/38.1 MB 10.6 MB/s eta 0:00:01\n",
" ------------------------------- 30.7/38.1 MB 10.6 MB/s eta 0:00:01\n",
" ------------------------------- 31.2/38.1 MB 10.9 MB/s eta 0:00:01\n",
" -------------------------------- 31.7/38.1 MB 10.7 MB/s eta 0:00:01\n",
" -------------------------------- 32.2/38.1 MB 10.7 MB/s eta 0:00:01\n",
" --------------------------------- 32.7/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ---------------------------------- 33.2/38.1 MB 10.9 MB/s eta 0:00:01\n",
" ---------------------------------- 33.7/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ---------------------------------- 34.1/38.1 MB 10.6 MB/s eta 0:00:01\n",
" ----------------------------------- 34.7/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ------------------------------------ 35.2/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ------------------------------------ 35.7/38.1 MB 10.9 MB/s eta 0:00:01\n",
" ------------------------------------- 36.2/38.1 MB 10.9 MB/s eta 0:00:01\n",
" ------------------------------------- 36.8/38.1 MB 10.9 MB/s eta 0:00:01\n",
" -------------------------------------- 37.3/38.1 MB 10.7 MB/s eta 0:00:01\n",
" -------------------------------------- 37.8/38.1 MB 10.9 MB/s eta 0:00:01\n",
" -------------------------------------- 38.1/38.1 MB 10.7 MB/s eta 0:00:01\n",
" -------------------------------------- 38.1/38.1 MB 10.7 MB/s eta 0:00:01\n",
" ---------------------------------------- 38.1/38.1 MB 9.8 MB/s eta 0:00:00\n",
"Requirement already satisfied: numpy>=1.21.2 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from opencv-python) (1.24.3)\n",
"Installing collected packages: opencv-python\n",
"Successfully installed opencv-python-4.8.0.74\n"
]
}
],
"source": [
"!pip install opencv-python"
]
},
{
"cell_type": "markdown",
"id": "a87c7626",
"metadata": {},
"source": [
"```{index}cv2\n",
"```\n",
"\n",
"\n",
"```{index} os\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "a98ccc36",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"# import libraries \n",
"import cv2, os\n",
"import numpy as np\n",
"import numpy\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "7ef66a37",
"metadata": {},
"source": [
"The following function takes a picture file stored in a folder (in our case we will call the folder \"images\") and creates an N x N pixel image."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "c21f1473",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"def makepixelimage(folder, N):\n",
"\n",
" directory = folder\n",
"\n",
" # A data structure called a dictionary is used to store the image data and the dataframes we'll make from them.\n",
" imgs = {}\n",
" dfs = {}\n",
"\n",
" # Specify the pixel image size \n",
" dsize = (N, N)\n",
"\n",
" # This will iterate over every image in the directory given, read it into data, and create a \n",
" # dataframe for it. Both the image data and its corresponding dataframe are stored.\n",
" # Note that when being read into data, we interpret the image as grayscale. \n",
" pos = 0\n",
" for filename in os.listdir(directory):\n",
" f = os.path.join(directory, filename)\n",
" # checking if it is a file\n",
" if os.path.isfile(f):\n",
" imgs[pos] = cv2.imread(f, 0) # image data\n",
" imgs[pos] = cv2.resize(imgs[pos], dsize)\n",
" dfs[pos] = pd.DataFrame(imgs[pos]) # dataframe\n",
" pos += 1\n",
" return plt.imshow(imgs[0], cmap=\"gray\")\n"
]
},
{
"cell_type": "markdown",
"id": "6ba97963",
"metadata": {},
"source": [
"First let's create an 8x8 pixel image. Can you guess the original picture?"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "317f608e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"makepixelimage(\"images\", 8)"
]
},
{
"cell_type": "markdown",
"id": "71b5636d",
"metadata": {},
"source": [
"### Assignment"
]
},
{
"cell_type": "markdown",
"id": "3a75d80c",
"metadata": {},
"source": [
":::{admonition} Assignment\n",
"\n",
"1a) By increasing the number of pixels, we can get a better reproduction of the original.\n",
"Create a 16x16 pixel image. b) Create a 32x32 pixel image.\n",
"\n",
"2) Upload a different image into a folder called \"my_images\". Then use the makepixelimage( , ) function to create an 8x8, 16x16 and 32x32 pixel image and see if the others in the class can guess your original image\n",
"\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "ff310800",
"metadata": {},
"source": [
"```{index} word clouds\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "6586c9c3",
"metadata": {},
"source": [
"## Word Clouds"
]
},
{
"cell_type": "markdown",
"id": "966b7969",
"metadata": {},
"source": [
":::{note}\n",
"In this lab, we will create **word clouds** -- artistic representations of words from a speech, book, song or poem. The frequency or number of times a word occurs is represented by the size of that word in the word cloud.\n",
"\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "0175939b",
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBAkICAkJCQkHCQkHCAcICQkJCAcHCAgHCAcHBwcHBwcHChALBwgOCQcHDhUNDhEREx8TBw0WGBYSGBASExIBBQUFCAcIDgkJDxINEA0SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAWgB4AMBIgACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAABgUHAwQIAgEJ/8QAZxAAAgAEAwMFBw0KCAkKBQUAAgMABAUSARMiBhEyByNCUmIIFCExcoKSFTNBQ1FTYXGBoaKy1CRUY3ORk5TC0dI0RHaDsbPB8BglNnWjtcPT4RYXN0ZVZIS04vIJNXTV8UVWpKXE/8QAGgEAAgMBAQAAAAAAAAAAAAAAAAQCAwUBBv/EADYRAAICAQQAAwYFBAICAwEAAAABAgMRBBIhMRNBUQUiYXGBkRQyobHwI8HR4UJSFfEkgpIG/9oADAMBAAIRAxEAPwDjKCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIACCCCAAggggAIIIIAPu+CLWmOQupr8JTNKH+dnPssYl8iNQIrcJuk/nZ37LHZLb2cjJS6Ku3wRcqe5zrBYXDM0f8APzv2SMTO57q4+OYpX56b+yxDfH1LFXJ9Ip+CHaq8nE3LMxWb5DEh6rH44fSRhGnhsPM++ynpv/3Ud3INkvQVYIcg5O5vEbs6T/OO/wB1HmT5P5prMoWyV3aY4f8AZQKSbwgcJLtCdBFh48kVR68l+cmP9xENX9iJmSDE2Mlit8NqzaRbvOXhEtrI4FWCPtsFscOHyCPtsFsAHyCNyTpz3XZSnNt4stbDt8q3CNmX2fnGcMtMkXVyW3fVju0CL3R8hnlthKqz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",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('o8dzxh7Ybqw', width=800, height=300)"
]
},
{
"cell_type": "markdown",
"id": "85bbb4e6",
"metadata": {},
"source": [
"__1.__\n",
"Import the Python data analytics (pandas or pd) and numerical Python (numpy) libraries."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "625ce60a",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"id": "f0609817",
"metadata": {},
"source": [
"__Q1__ What is the abbreviation for numpy?\n",
"\n",
"__2.__\n",
"Use pandas (pd) to read in the Excel file with the words of the chorus \"I have the joy, joy, joy, joy, down in my heart.\" "
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "7a69b30b",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
WORDS
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
I
\n",
"
\n",
"
\n",
"
1
\n",
"
have
\n",
"
\n",
"
\n",
"
2
\n",
"
the
\n",
"
\n",
"
\n",
"
3
\n",
"
joy
\n",
"
\n",
"
\n",
"
4
\n",
"
joy
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" WORDS\n",
"0 I\n",
"1 have\n",
"2 the\n",
"3 joy\n",
"4 joy"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joy=pd.read_excel(\"joy.xlsx\") #read in the Excel file with the words\n",
"joy.head(5) #Display the first 5 rows."
]
},
{
"cell_type": "markdown",
"id": "6c969f49",
"metadata": {},
"source": [
"__Q2__ What word is in row 4?\n",
"\n",
"__3.__\n",
"Get the frequencies of each word"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "8ded9b28",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/plain": [
"joy 8\n",
"down 5\n",
"in 5\n",
"heart 5\n",
"my 3\n",
"where 3\n",
"I 2\n",
"have 2\n",
"the 2\n",
"my 2\n",
"to 1\n",
"stay 1\n",
"Name: WORDS, dtype: int64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"joy[\"WORDS\"].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "eacafac3",
"metadata": {},
"source": [
"__Q3__ Which word has the highest frequency?\n",
"\n",
"__4.__\n",
"We can make a simple word cloud by putting each important word in a specified place, with a given color, and given size.\n",
"Add the text joy to the word cloud at position .3,.5 in color 'red' and fontsize=80."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "79bb1eac",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnQAAAG4CAYAAADMq3qdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAByuUlEQVR4nO3dd3wUdf4/8Nds3zTSICGQ0JsoIkhXqiIKCEqRE1GOsx2/O8sph3h43nkqYm/nKX7RE0RORVGxIAIC0gTFgPSaEAgEEhKyKVtmdn5/hMSUmc3s7mySZV/Px8PHnTOf/cx7GSIvPjOfz0coKiqSQURERERhy9DYBRARERFRcBjoiIiIiMIcAx0RERFRmGOgIyIiIgpzDHREREREYY6BjoiIiCjMMdARERERhTkGOiIiIqIwx0BHREREFOYY6IiIiIjCnN+B7sMPP8QDDzyAoUOHokWLFoiPj8eSJUv8vrDX68WCBQswcOBApKamokOHDpg+fTqOHDnid19EREREkczk7weefPJJ5OTkICkpCSkpKcjJyQnowg8++CDee+89dO3aFXfffTfOnDmD5cuXY+3atVi1ahW6du0aUL9EREREkcbvEbrXXnsNu3btwpEjRzBjxoyALrphwwa89957GDBgANavX48nnngCb775Jj766CM4HA785S9/CahfIiIiokjkd6AbOnQoMjIygrrookWLAABz586F1WqtOj5kyBCMGDECmzdvxuHDh4O6BhEREVGkaJRJERs3bkR0dDT69+9f59zw4cMBAJs2bWrosoiIiIjCUoMHutLSUpw+fRpt2rSB0Wisc75Dhw4AwMkRRERERBo1eKArLi4GAMTFxSmej42NrdGOiIiIiHzjOnREREREYa7BA13lyJzaCJzD4ajRji4uTqcTR48ehdPpbOxSKAC8f+GL9y588d6RFg0e6KKjo5Gamors7GxIklTnfOW7c5Xv0tHFR+m+U/jg/QtfvHfhi/eO6tMoj1wHDRqE0tJSbN26tc65tWvXVrUhIiIiovqFNNAVFBTg4MGDKCgoqHH8jjvuAFCx64Tb7a46vn79eqxZswYDBw5Ex44dQ1kaERER0UXD762/Fi1ahC1btgAA9u7dCwBYvHgxNm7cCAAYPXo0xowZAwBYsGAB5s+fj9mzZ2POnDlVfQwePBi33347Fi1ahMGDB2PkyJFVW3/FxsbixRdfDPqLEREREUUKvwPdli1bsHTp0hrHtm7dWvX4NCMjoyrQ+fLyyy+je/fu+O9//4u33noL0dHRGDVqFB577DGOzhERERH5QSgqKpIbuwiKHE6nEzk5OUhPT4fNZmvscshPvH/hi/cufPHekRZch46IiIgozDHQEREREYU5BjoiIiKiMMdAR0RERBTmGOiIiIiIwhwDHREREVGYY6AjIiIiCnMMdERERERhjoGOiIiIKMwx0BERERGFOQY6IiIiojDHQEdEREQU5hjoiIiIiMIcAx0RERFRmGOgIyIiIgpzDHREREREYY6BjoiIiCjMMdARERERhTkGOiIiIqIwx0BHREREFOYY6IiIiIjCHAMdERERUZhjoCMiIiIKcwx0RERERGGOgY6IiIgozDHQEREREYU5BjoiIiKiMMdAR0RERBTmGOiIiIiIwhwDHREREVGYY6AjIiIiCnMMdERERERhjoGOiIiIKMwx0BERERGFOQY6IiIiojDHQEdEREQU5hjoiIiIiMIcAx0RERFRmGOgIyIiIgpzDHREREREYY6BjoiIiCjMMdARERERhTkGOiIiIqIwx0BHREREFOYY6IiIiIjCHAMdERERUZhjoCMiIiIKcwx0RERERGGOgY6IiIgozDHQEREREYU5BjoiIiKiMMdAR0RERBTmGOiIiIiIwhwDHREREVGYY6AjIiIiCnOmxi6A/DP649HYdHJTneOz+83GnAFzGqEiIiIiamwcoSMiIiIKcwx0RERERGGOgY6IiIgozPEdOiLy6bKFlyHHkVPn+L+v/Temdp/aCBUREVFtHKEjIiIiCnMMdERERERhjoGOiIiIKMwFFOh27NiBSZMmoU2bNkhLS8Pw4cPx8ccf+9VHUVERnnrqKQwcOBCtW7dG+/btMWzYMCxYsABOpzOQsoiIiIgikt+TIn744QdMmDABFosFN998M+Li4rBixQrcddddOH78OB566KF6+ygqKsLQoUORlZWFAQMGYPr06XC5XFi9ejX++te/4ssvv8Rnn30Gg4EDiERERET18SvQiaKI++67D4Ig4KuvvsLll18OAJg9ezZGjhyJefPmYfz48ejQoYPPft577z1kZWVh5syZePrpp6uOu91ujBo1Chs2bMCWLVswaNCgAL4SERERUWTxawhsw4YNOHbsGCZOnFgV5gAgNjYW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OnUK77zzDkaPHq1foVSHHveuY8eOmDZtmuI/QMXfMKdNm4YpU6boXD3p9bNXOeHhwIEDdc5VHmMg15de987j8cDhcNTYPrNS5XIlFoslmFIpREKVVxo90HF/2PCl172rHuYWLlyIsWPHNth3iFR63Lt+/frhtddeU/wHAFJSUvDaa6/h2WefbbgvFiH0+tmbOnUqrFYrFixYgNzc3Br9vPDCCwCAm266KcTfJrLode/69esHURTr/Hy5XC4899xzAMAZyo2sofNKo+8UAVQstDhhwgRYrVZMmDABsbGxVdugzJ07Fw8//HBVW1/bid13331YtGgRt/5qQHrcu8qtVPr06aO6REnte03B0+vnTkl8fDx3iggxve7fW2+9hdmzZyMxMRFjxoyB1WrFt99+i+PHj2P69Ol4+eWXG/ibXfz0uHe7du3C6NGj4XA40Lt3b/Tr169q2ZKsrCz07NkTK1euhM1ma4yveNFatGgRtmzZAgDYu3cvdu7cif79+6Ndu3YAgNGjR2PMmDEAGj6vNPo6dEDF8/6VK1di3rx5WL58edX+sH/729/q7A/ry8svv4zu3bvjv//9L9566y1ER0dj1KhReOyxxzg6FyJ63LucnBwAwPbt21UDAAOd/vT6uaPGodf9u+eee5CRkYFXX30Vn376KURRRNeuXfHQQw9VjSSQvvS4dz169MC6devw4osvYv369Xj77bdhMpnQrl07zJkzB3/+858Z5kJgy5YtWLp0aY1jW7durXp8mpGRURXofAlFXmkSI3REREREFLhGf4eOiIiIiILDQEdEREQU5hjoiIiIiMIcAx0RERFRmGOgIyIiIgpzDHREREREYY6BjoiIiCjMMdARERERhTkGOiIiIqIwx0BHREREFOYY6IiIiIjCHAMdERERUZhjoCMiIiIKc/8fsNNildCgO2YAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt # library used for making graphs \n",
"fig=plt.figure()\n",
"plt.gca().text(.3,.5, 'joy',color='red',fontsize=80)\n",
"plt.gca().text(.1,.7, 'heart',color='green',fontsize=50)\n",
"plt.gca().text(.6,.3, 'down',color='gray',fontsize=50)\n",
"plt.gca().text(.7,.6, 'my',color='yellow',fontsize=50)\n",
"plt.gca().text(.1,.2, 'where',color='pink',fontsize=30)\n",
"plt.gca().text(.4,.2, 'I',color='brown',fontsize=20)\n",
"plt.gca().text(.15,.05, 'have',color='purple',fontsize=20)\n",
"plt.gca().text(.4,.1, 'stay',color='cyan',fontsize=10)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "16bbe5d2",
"metadata": {},
"source": [
"__Q4__ What command is used to include the word joy?\n",
"\n",
"__5.__\n",
"Data scientists have created functions to make word clouds so we don't have to enter each word or letter one by one. These are found in the wordcloud library. "
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "15d7dfbf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting wordcloud\n",
" Downloading wordcloud-1.9.2-cp311-cp311-win_amd64.whl (151 kB)\n",
" 0.0/151.4 kB ? eta -:--:--\n",
" -------------------------------------- 151.4/151.4 kB 4.6 MB/s eta 0:00:00\n",
"Requirement already satisfied: numpy>=1.6.1 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from wordcloud) (1.24.3)\n",
"Requirement already satisfied: pillow in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from wordcloud) (9.4.0)\n",
"Requirement already satisfied: matplotlib in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from wordcloud) (3.7.1)\n",
"Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (1.0.5)\n",
"Requirement already satisfied: cycler>=0.10 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (4.25.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (1.4.4)\n",
"Requirement already satisfied: packaging>=20.0 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (23.0)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (3.0.9)\n",
"Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in c:\\users\\pisihara\\appdata\\local\\anaconda3\\lib\\site-packages (from python-dateutil>=2.7->matplotlib->wordcloud) (1.16.0)\n",
"Installing collected packages: wordcloud\n",
"Successfully installed wordcloud-1.9.2\n"
]
}
],
"source": [
"!pip install wordcloud"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "b1c9fe0c",
"metadata": {},
"outputs": [],
"source": [
"import wordcloud #used to make a wordcloud"
]
},
{
"cell_type": "markdown",
"id": "4f998455",
"metadata": {},
"source": [
"__Q5__ What is the name of the library which creates word clouds?\n",
"\n",
"__6.__\n",
"Check how fast the computer can read the text file with the words to Dr. Msrtin Luther King's \"I have a dream\" speech."
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "85d372e8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.009278297424316406\n"
]
}
],
"source": [
"import time #use to measure time\n",
"start = time.time() #record the start time\n",
"with open('I have a dream.txt','r') as file: #read in the text file\n",
" speech = file.readlines()\n",
"finish = time.time() #record the finish time\n",
"print(finish - start)"
]
},
{
"cell_type": "markdown",
"id": "91608fa7",
"metadata": {},
"source": [
"__Q6__ How fast did the computer read the text file?\n",
"\n",
"__7.__\n",
"Define a function to take out punctuation marks and count the interesting words"
]
},
{
"cell_type": "markdown",
"id": "feabfafd",
"metadata": {},
"source": [
"```{index} frequencies of words\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "c7e0b2e1",
"metadata": {},
"outputs": [],
"source": [
"#Define a function which counts the interesting words\n",
"def calculate_frequencies(textfile):\n",
" #list of punctuations\n",
" punctuations = '''!()-[]{};:'\"\\,<>./?@#$%^&*_~'''\n",
" #list of uninteresting words \n",
" uninteresting_words = [\"AND\",\"IT\",\"THE\"] #add to this list\n",
" \n",
" # removes punctuation and uninteresting words\n",
" import re\n",
" fc1=str(textfile)\n",
" fc2= fc1.split(' ')\n",
" for i in range(len(fc2)): \n",
" fc2[i] = fc2[i].upper()\n",
" #Remove punctuations\n",
" fc3 = []\n",
" for s in fc2:\n",
" if not any([o in s for o in punctuations]):\n",
" fc3.append(s)\n",
" #Remove uninteresting words\n",
" fc4=[]\n",
" for s in fc3:\n",
" if not any([o in s for o in uninteresting_words]):\n",
" fc4.append(s)\n",
" fc5=[]\n",
" for s in fc4:\n",
" if not any([o.lower() in s for o in uninteresting_words]):\n",
" fc5.append(s)\n",
" \n",
" while('' in fc5) : \n",
" fc5.remove('') \n",
" \n",
" import collections\n",
" fc6 = collections.Counter(fc5)\n",
"\n",
" #wordcloud\n",
" cloud = wordcloud.WordCloud( max_words = 30) #can adjust the number of words\n",
" cloud.generate_from_frequencies(fc6)\n",
" return cloud.to_array()"
]
},
{
"cell_type": "markdown",
"id": "dc98db4f",
"metadata": {},
"source": [
"__Q7__ What uninteresting words does the above function remove from the word cloud?\n",
"\n",
"\n",
"__8.__\n",
"Make the word cloud by executing the next cell. Then modify the calculate_frequencies() function to elimnate uninteresting words. Also change how many words are displayed."
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "9cf27e6d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"myimage = calculate_frequencies(speech)\n",
"plt.imshow(myimage, interpolation = 'nearest')\n",
"plt.axis('off')\n",
"plt.savefig('Ihaveadream.png', bbox_inches='tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "b26d0959",
"metadata": {},
"source": [
"__Q8__ What is the name of the file with the word cloud image for the \"I have a dream\" speech?\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "7cf76c45",
"metadata": {},
"source": [
"### Assignment"
]
},
{
"cell_type": "markdown",
"id": "891f2004",
"metadata": {},
"source": [
":::{admonition} Assignment\n",
"
ACTIVITY
\n",
"Create word cloud of a famous speech, poem, song etc. Then edit out all the uninteresting words. Then see if the others in the class can figure out your source from 10 words, 20 words, 30 words etc.\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "31579127",
"metadata": {},
"source": [
"## Name That Tune!"
]
},
{
"cell_type": "markdown",
"id": "3b61e027",
"metadata": {},
"source": [
":::{note}\n",
"\n",
"In this lab we will explore the basic relationship between sound and a mathematical description of sound using sine waves.\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "50d9bfdf",
"metadata": {},
"source": [
"__1.__ Watch the video and observe that the periodic vibration of a gitar string causes a sound wave."
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "67d57319",
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "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",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('tVYQRC1-D54')"
]
},
{
"cell_type": "markdown",
"id": "0e419012",
"metadata": {},
"source": [
"```{index} pure tones\n",
"```\n",
"\n",
"```{index sine waves\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "ad37ff63",
"metadata": {},
"source": [
"Pure tones can be modelled sine waves. The amplitude of a sine wave (high high up and down it oscillates) is proportional to the volume of the sound. The Frequency of a sine wave is defined as the number of times a wave completes its up and down cycle in one second. The higher the frequency of a sound wave, the hiher the pitch. Use the function defined in the next cell to check what happens to a sinewave if we change its frequency."
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "338e4a96",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"def sinewave(frequency):\n",
" #-----------CREATE THE SOUND WAVE-------------------\n",
" sampling_rate=44100 #how many times we take a measurement each second\n",
" t = np.linspace(0,1,sampling_rate) # take 44100 samples in 1 second; \n",
" sound_wave=np.sin(frequency* 2*np.pi* t) # mathematical definition of a sine wave\n",
" #----------PLOT THE SOUND WAVE----------------------\n",
" import matplotlib.pyplot as plt\n",
" fig=plt.figure(figsize=(2,1))\n",
" plt.plot(t,sound_wave)\n",
" plt.xlabel(\"seconds\")\n",
" return"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "e02afa59",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sinewave(1) #frequency=1 and 1 cycle per second"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "35be6063",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sinewave(2) #frequency=2 and 2 cycles per second"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "87fe035f",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sinewave(3) #frequency=3 and 3 cycles per second"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "ea033740",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOMAAACdCAYAAABGps/9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgDklEQVR4nO2de3RU5bn/P3tumUkyYSA3iJkA4XLQFsGfpaUghcKpPxRbrUGPoLZd1EsRsVKFqtWsUypF5JyquCS1imv9UEpRe7RQLNVqlVugFqtgAVECydAQCCGXmSRzn98fwwwMM/vdSSbJzOS8n7VYi7Wf/V72s9/v+zzvu3dmKy0tLSEkEknK0aW6AxKJJIwUo0SSJkgxSiRpghSjRJImSDFKJGmCFKNEkiZIMUokaYIUo0SSJkgxSiRpghSjRJIm9LsYN23axP3338+MGTMoKirCZrOxYcOG/u6GRJJ2GPq7wccffxyHw0F+fj7FxcU4HI7+7oJEkpb0e2R89tln2b9/P0ePHmXBggX93bxEkrb0e2ScMWNGfzcpkWQEcgNHIkkT+j0y9gZutzvu2F//1cm9e2OP6xV495pBFJp1bK7z8vDf22PsuUaFv14ziGyDwv/73M2TBzpj7MOydbz9f/PQKQr//WkHLx3xxNgvG6zjtW8OAuCRfe38odYbY//GUANVU6wA3L3Lyc5T/hj7d4ebePzKHEKhEDe918ah1mCM/Y6xWSz5cjb+YIjZb7dxsiPW/tDlFm4fbcblD/Lvf2rD6Yv909T/+moO15SaaOgMMPvPbfhii/PSNCtfKzTwWaufG991xtgU4I1ZVsYMMlB92scdO10xdqMO3pkd9u2WOi8PJePbAx289Lm6bx/6u4stdb4Y+4W+vWuXk10p8i2Az+ejsbGRwsJCjEZj9Byz2Ux3yEgx1tfXEwgEYo69cdRIk8cYd+7mgw1cXRjg1c9MNHliL7fJA28fqudKW5DfHcmiyaO/yB5k55F/MTI7xKtfmGnyxCYSOxqCfFrjIM8Arx214AwoMfatdR6Ol7bgC8LmOgshYu2bj3dwd9FZTroVdp62xPf9mIu5g5r4p1PHp83xN/bNL9qYkdXIjrM6jrvi7f/zWTNfDnl5s0FPQ2dWnP2Nw2cocfvYWGegyWOKtx9qZN4lfjZq+HZTD32768i/GJEd4tWjiX37z2MOrHp4vcaCS+DbLQLfNvTQt38459vtTXqOuxL47kjYtxfS0NAQ/b9er6e8vDyunIiMFGNJSUncsaOHmoFg3PEWkw27PZuPPzwLxP+oQZslH7vdzD92NiVsqz2niOJhRmp3nk1o9+QNJStHjzPQHGfzhhSUISV4fCFCtMbZT3t1DBlWyuenfYAzzn7Ipcdut7O7xg20x9l3NYftZ52dQEecfZ/LhN1ezJnGdiA+m/jCZ8FuH0pDnRPwxtkbdVbs9lw+P9QK+OPsEd/+o49867YOpSBHj6uHvs0fVsoXjWLfVh/zAK44+04N3/7dGfYtgNfr5dSpUxQXF2MyxU9qXSUjxZgo/Dd5EpwInPXpMJvNnPEk/nWRZr8ODPEz33m7npZQfFSI2gMGsvx6VXtr0MCZi/PDC3CGjDQK7AG9idPeeKFEMJvNnPLGCw1AQcFsNtPgiRcygD8U9s0pT/xgBWjxh8u3elsS2iO+bRL4NpRC37aFjJz2in3b4BH79rRH7NsLMZlM3U5NLyQjxZiIVm/iAdHYGcAXVP+ZnzOdQZoFN+yMO0CzR2QPkqVXhHat8pp2Qf86/EFaVMq3nRuozSpiaXSHU3218mfc4eMi3/o1fNsi6HtjF3xrFvi2sTNIq/DeidvXsnf6Q6q+bxNMAj1lQIgxGArR6lMbcOIbdtodUB2MkfItKoMZwgMyxyAW48WL/4vLaw4YQfsiMTt9Idz+kKq90R0Rq4q9M0goFFLtn5ZvGzUmmrBvBXYN3zZ5tH2rPRGKfKs+NiK+NQv6110GxKMNly+E2gTd6hHf8BaP+mAFOKsxezZ5xAOuSWNAJlv+rJbdo97/Nm8If1BdbGfPDfaAim+bPeKJokljomv2BGlRibqR9lPpW03fC2w9od8j4/r166murgbg4MGDALz88svs3LkTgDlz5nDdddd1q06RWNp8IeENd/rEDndp2tVTmUh5tTQvWl6jfdH1OX3qYgrbNaKPO4g7kNiW9LULonK4b1rXLr42ly9Im4ZvtcqLIrvLr10e1Ne03aXfxVhdXc3GjRtjju3Zs4c9e/YAUFZW1n0xCm+4eDBqD+aQsLxLw96mOSDEk4XLr9W+ONVq1kjlHK74XdII3iCc6lRRKuF1k1BsXrFYnV6N8hpibdOYDML1iyZijcmiC+V7k34XY1VVFVVVVb1apzjydcXhPR8QTl8Qs8pOLmhHPq3227TsGmI/0a4uJgCHq+f2LkV1rYlQMytQX5NpTYRadq2JWnsizfA0tS8QpRrBEDR0qA8opy8knOGcviAuv8DuDWHRi+xBXIL6Xf6Q8Ka6NPp3uiOgul4GOKkhxnqBb7TswZA4cnbFt2J7CLNePJFplXeKHitp+bZT7Nu2Xo6MA2IDxykQI8CpTnV7uz9Eu0gsvhAdAjG6fEE61XY4CN9wUXmnN0inwN6mUf9pt/jateyNAt8ka++ab8ViS8a3Lp/Yt05fUFj+tMa1iybZnjAgxCi6YRCe4YR2tR0MwjdMLJbkBkSbL0SHoP9N7qBwdhZFpt6wa/pOw96o5VuR2Px969sz7mCC94bOo+UbrSDQXQaGGAU3BLoQPQQzoCcQXrepoT37hoR2rfJ9GblAe/bvS7snoP5CAYQHu1sjMortQdx96NuM38DpC7TE2KQhRi27SMwujQHh8qk/OoDwYBTtAzRqpZlpbteMnAK7qwsTmZZvRcEr2agvN3ASoJWmntUYMKIdQYBmQXl/SBw5OwMh3OpPD7TbTqJvvWJPtn9J2JP2rca1iV5Y0OpbpP3eZECIUbSuAGjyiGc4rcio9aaFyN7hDyFqPtmorXltydqT7F8yvtOya/m2L9sG7YysuwyINaNoXQAIUxnQnuG07KL6NcZ6n7bdG/Z07l+qfdvbkXFAiFG0YyaR9BUyMiagt50ikXQFKcYESDFKUoHWXkV3GRBi7G2nSCRdQa4ZEyB6zieR9BUyTU2ATFMlqUCKMQEyTZWkApmmJqC3nSKRdAUZGROg9dBfIukLOvwhQqHeG3sDQowyTZWkgkAI4Uv+3SXjxegLhpBalKSK3gwEGS9GGRUlqaQ3H6tlvBjlYw1JKunN8ZfxYpQP/CWppH0giPGjjz7ipptuYvjw4ZSUlDBz5kxee+21btcj01RJKunNYJCSPy7esWMHFRUVmEwmbrzxRvLy8tiyZQt33nkndXV1PPDAA12uS6apklTSm8FAaWlp6dfR7Pf7mTRpEvX19bz99ttMmDABAKfTydVXX83nn3/O3r17GTVqVJfq23HSw7e3nenLLkskqrz67/l8oxAcDgd2uz2pT8L1e5q6fft2jh07xty5c6NCBLBarSxduhS/38+GDRu6XJ9cM0pSSW++/dXvYox84GbmzJlxtsixXbt2dbk+uWaUpJLeHH/9vmY8evQoQMI01GazkZ+fHz1HDbf7/NdkXW71L89KJH2N0+3F6w3HNO9FX5jubsra72Jsa2sDIC8vL6HdarVSX18vrKO+vp5AIPxrQV/Vw56p4AmGf0Bo00kjLznUP00tkfQmyz5sZ8U/QmTpzJh1rTwwysuUwUH0ej3l5eXdqisjf6qxpKQk7pjX6+XUqVNcMcwKjsTfYZdI+oJWvwKEv5ZlG1KIvdTUo3r6XYyRiBiJkBfjdDpVo2YEUfjPzTICUoyS1GC1mHq8o9rvGziRtWKidWFLSwtNTU1dfqyRCEvvfUhWIuk2Zr369yS16HcxTp06FYD33nsvzhY5FjmnJ1gMPXeGRJIsyYy/fhfj9OnTGTFiBK+//jr79++PHnc6naxevRqDwcD8+fN7XL8liZlJIkmWrCTGX7+vGQ0GA2vWrKGiooJrr72WiooKrFYrW7Zsoba2lkcffZTRo0f3uH6zTFMlKSSZYJCS3dRvfOMbbNu2jZUrV/LGG2/g8/kYN24cP/vZz7j55puTqlumqZJUksz4S9mjjSuvvJLXX3+91+uVaaoklWTUmrGvkZFRkkqSCQYDT4xyzShJEXoFjEkoasCJUacoZElBSlKARa+gKDIyxiDXjZJUYElyB2ZAijFbrhslKSDZIDAgxZjMK0kSSU9JdvNwQIpR7qhKUkGyL5wMSDHKNFWSCmSamgCLYUBeliTNkWlqAuSzRkkqyJaRMR4ZGSWpQD7aSIDcwJGkArlmTIDWBo5J46q1XmnSKi9qPtm6k+17X7ff1/0T2fuybtC+tmQfqQ1IMWo5Jd8svuz8LLF9iMBuUCBPcNdEZbvSN83yydqTbL8v7UYdWAWKSWXfQG7gJETLKYP78KZkGxRhupJrVIQzcF/2rSv2VLcvslv0ijDryTUqwujV52KUzxnj0UpTizS8ViCw6xUYpCVGQfvZBp3QnnTk0or6GvZCjSfXIt90yS5oX6eATXD9OUaxb3M0fFuo0bdk7ck+3x6QYtRaSBdpDMgii7o916iQI3C61SQeEHkmRbgFXmDWoxN0f2i2eEBo2Ys17KJrByhO0i6aCK1avjXqhEsQq0mcleRn6RCNDK1r17JbjVKMcWilqaIBkaWHQYJcx2oUi81qFKdSmuU1BlShxoAo1Ix8Gnat+pOwd8W3QrH1gm9F5ZP1Ta4UYzxaYhQ51WrUCcWQZxSLpSsDSqu8MNXSSCO1UnBNu1b9GnZR/3I10sg8DbHldmEiFNlzNezJ+kZGxgSIBnu2QRHOYLlGhRyhXUeuYAcm1yiu35pk+TyTOJUbppGGatmTSYNzDAp5JnFk0vKtyN6VNDZX8MKH1agTlh9k0gknAy3f5Mo1YzyDRAPCqGDTSJWEdpOCLUujfsEmRNjed/0bmq0TPue054oHlMiuU6AkRxD5jAqDBX3LNeqEdqtJEe7m5hq7Yhf7VrO8hm9FO+EyTU1A8jdULAbxgNK2i8SaZ9JptK8lZnH5S3L0wk2MMoEYc42KcHtfq20tMWhPhBp2oyLc6bYaxb4Plxf7VtR+Rolx165dPProo1x33XWUlZVhs9lYuHBhr7cjFltyAya3C5FPs7zohho07BoDSqt/NpNONZU06qBYtNtp0GETZB1d8Y1oIknet+KJsEuRO6mJOjkx9uvvpr7yyits3LiR7OxsSktLVb9ElSwih+VniR0+OEs84Gwakc1mEq97bBqRz6bRP1uWeMDZBJFZp5wf0K3eQMKyJn14Xdae4Iu8tizxYBzSBd+K+j5Yq7xJR44gTwxfl7h/oslgSJY48onsOkJYM2nNeNddd1FdXY3D4eC5557rs3ZyDOpvYhSYxQ4vMOuFA6LIIh4whRa9cMB1qbxgwBSZ1csrhB/qq5XPz9Kh16kLKrLLrOafQouebIP6G0Ravi0064UTWaHWvbHohRNloUU8URZYxPe2QMO34ckmcfuDjKAXPSDuAv0aGa+44op+aUdRFHKNOs56gnG2fLN6mgbnBoTGDRMPOJ3woX2+WYets+f1DxH0z2JQMOjU102Rt19UxXZu696WpfCvjkR2HYoSjpwt3vjIWWDR8K3GRCQSQ6R90fscBWYdZ9zi8qKJMl/QvsWgoBf41maM90d3ycgvF3cFNZ8XWfToBL9tWWDRCV9JK7LoKckWRTYdJoEaiyx6WjzqNy4/S8cwwY6lUaeobrF7AuF6S3r4eCOyC602ICNizlYRY5FZw7dmsW8LNXxbYNYJv/JUaNbTYhH41iz2rUGnqPpGy7e98Ud7Gbmb6na74/55vV4g/Dlxt9vNlKLE84zdEsTtdjOt2JjQXmYO4vN6+LdBiZ1emhUgGx9DVNKVS0wBLjH5E87gWTqwKV6Gm+PXawCXZOsI+jwMN8dHdIAJQ/S43W5GWhLbZw4zhu3ZiQfkFefKl+ckNDMyR8HtdvOlQYmHhd0S9v3kwp751n7Ot+N66NvSrAAlIt/qvIywqPs24PUwQsV3Ud9mi307QsW3463B6NiL/OsuGRkZ6+vrCQQSO/3UqVMAjNIbgNhvq+sIMczTiMMRYrTRyA5iB02WLoStvQGHGyZmG/msNdY+xBhCaa7H0QJXWk2844l13+jsIM0NJwCYmJfFvtbYQTchL8CJEycIhWCkxcyxi9LV8TleHA4H2UEYYrRw1hc76r5sceNwOCj2g0VnoTMYa7/U1I7D0cqIgIIeM4GL5uux+jYcjmbGKgpgifPdaKUZh6OJcXodEP8p7OGBMzgcIb5k1PM/ZMXYFEIMPefb8WYDOy7yfYxvc4wcTuBbXZK+/VfEt9lmjnWo+zbfaKFJxbdFXfCtDjPBi3x7RV4gOvYA9Ho95eXlcT4U0W0xlpeXc/bs2S6fv2XLFqZNm9bdZoSUlJTEHfP5fDQ2NlJYWIjRaOSuoUHebXVS6zo/0931b2auHF0AwAOFQapdbTR2np/pHplgYeyIsP2n+QH2veek+YJ07JnJOQwvCdsfzfNz+AMnHf6wTa/AM1MHYS8Iu7TS7OdHu5x4zzVv0cN/TxmEfVDY/p96Lw/+rZ3gueptJoVfTrFF06DKgIdffHx+4TYsW8djkwdH13tL3Z08d+j87DsmT8eSSUOwGBTswN3t7Wyq8UbtXynQc8f/GYJBF7bf0urinXpf1D6rxMDc8UNQFIX/KA3xVouTj5rOT3j/UW5i1qX5ANxZEmJbSxs1zvO+XXjped/ePzTIB21OGjrO2x+bmB317bL8AB++54xJdX/1tRyGXxK2P5bn59AHTjrP+VanwFMX+PY/LX7u2nnet1k6+K8LfPtzg5cH9p73bZ5RYcXXbVxyLkV9LIFvKycPjr43q+XbH13s23wd1w7zMLRoKEZj4qygKygtLS3dWnkuXboUl8vV5fOXLFnC2LFj445/+OGHfOtb32LevHlUVVV1pwsSyYCk25Fx9erVfdEPieR/PRm5gSORDESkGCWSNKFfd1Orq6tZv349AE1NTQDs2bMn+n7q2LFjWbJkSX92SSJJG7q9gZMMGzZsYNGiRar2qVOnsnXr1v7qjkSSVvSrGCUSiTpyzSiRpAkZL8aPPvqIm266ieHDh1NSUsLMmTN57bXXUt0tyQBn06ZN3H///cyYMYOioiJsNhsbNmxIqs6MfB0uwo4dO6ioqMBkMnHjjTeSl5fHli1buPPOO6mrq+OBBx5IdRclA5THH38ch8NBfn4+xcXFOByOpOvM2Mjo9/u57777UBSFrVu3smbNGh5//HF27tzJpZdeysqVKzl69GiquykZoDz77LPs37+fo0ePsmDBgl6pM2PFuH37do4dO8bcuXOZMGFC9LjVamXp0qX4/f6k0waJRI0ZM2ZQVlbWq3VmrBh37twJwMyZM+NskWO7du3q1z5JJMmQsWKMpKCjRo2Ks9lsNvLz82WaKskoMlaMkR+zysvLS2i3Wq199oNXEklfkLFilEgGGhkrxkhEVIt+TqdTNWpKJOlIxooxslZMtC5saWmhqakp4XpSIklXMlaMU6dOBeC9996Ls0WORc6RSDKBjBXj9OnTGTFiBK+//jr79++PHnc6naxevRqDwcD8+fNT2EOJpHtk9F9tbN++nYqKCrKysqioqMBqtbJlyxZqa2t59NFHefDBB1PdRckAZf369VRXVwNw8OBBPvnkEyZPnszIkSMBmDNnDtddd1236sxoMQLs27ePlStX8re//Q2fz8e4ceNYuHAhN998c6q7JhnALFy4kI0bN6raf/rTn/Lwww93q86MF6NEMlDI2DWjRDLQkGKUSNIEKUaJJE2QYpRI0gQpRokkTZBilEjSBClGiSRNkGKUSNIEKUZJyrHZbNhsNmpra1PdlZQixSiRpAlSjBJJmiDFKJGkCVKMEkmaIMXYBzidTlatWsW0adMoLS2lqKiISy+9lFmzZvHYY49RU1MTV+af//wnixYtYsKECRQXF1NWVsbs2bNZv349gUBAta2WlhZWrVrFN7/5TcrKyhg6dCgTJ07k9ttv580330xY5i9/+Qu33HILY8aMobCwkLFjx3Lrrbeyffv2hOfv2LEDm83G+PHjAXjrrbeYM2cOZWVllJSUMGvWLH7/+98LfbJ582Zmz57NJZdcQllZGddcc43m5/+CwSAbNmxgzpw5jBw5koKCAkaNGsWUKVNYvHixan8zFfknVL2My+Xi6quv5uDBgyiKwsiRI7HZbDQ2NtLQ0IDP52PNmjV873vfi5Z54YUXeOihhwgEAuTk5DBixAhaW1s5ceIEALNnz+aVV17BYIj9NMq+ffuYP38+p06dAsK/C2S1Wjlx4gRnzpwhLy+Purq6mDIPP/wwVVVVABQWFmK326mtrY1+vDbR3+Ht2LGDb3/729jtdm677TZWrlxJUVERJSUl1NTURH8U7Mknn+Suu+6K88mKFStYvXp1tM3S0lKOHz9Oc3MzK1eujLb3ySefMHz48Gi5C/9msKSkhOLiYpxOJydPnqS9vZ2bb76Z3/zmN925PWlNRn/4Jh15+eWXOXjwIJdddhkbN26MGVxut5tt27ZRUlISPfb222+zbNkyzGYzK1as4Pvf/z56vR6Ajz/+mB/+8Ids27aN1atXx4jk1KlT3HLLLTQ2NjJ9+nSeeeYZRowYEbXX1NTERavf/va3VFVVodfrWb16NT/4wQ/Q6XQEAgHWrl1LZWUlq1atYvz48Qn/Sr2hoYGnn36aF154gZtuugkIf/Nk2bJlvPTSSyxfvpx58+ZhtVqjZd5///2oEH/xi1+waNEidDodfr+fJ598ksrKyoR+PHDgABs3biQvL48NGzYwbdq0qC0UCrF7925Onz6teT8yCZmm9jJHjhwB4Pbbb48RIoDZbOaGG27gq1/9KhAeVJWVlYRCIX75y1+yYMGCqBABJk6cyLp161AUhaqqKjweT9S2Zs0aGhsbGTduHJs2bYoRIkB5eTlLly6NORYRxYIFC1iwYAE6Xfj26/V6Fi9eHBXYqlWrEl6bz+fjJz/5SfQ8AIPBwIoVKygoKMDlcrFjx46YMr/61a8AuP7661m8eHG0TYPBwCOPPMJVV10l9OO0adNihAigKApTp07lu9/9bsKymYoUYy9TWloKwNatWzV/0fzw4cMcPnwYs9nMvHnzEp4zceJE7HY7bW1tfPzxx9HjmzdvBmDRokWYzWbNfh05coRjx44BcO+99yY857777gPCUenkyZMJz7njjjvijlksFi6//HKAmPVwe3t79HsnP/rRjxLWt3DhwoTHI3788MMP/9d8pkGmqb3MbbfdxnPPPRf9NN306dOZPHkykyZNYtKkSTHrvk8//RQIz/Q33HCDap3Nzc0A1NfXA+ENosj3AL/2ta91qV+ff/45ALm5uXERO8K4cePQ6/UEAgGOHDnCsGHDYuz5+fkMHjw4YdnCwkIgLMAINTU10c2ncePGqbaZiEmTJvH1r3+d6upqJk2axOTJk5k6dSpf+cpXmDJlSkwqPFCQYuxliouLeffdd3niiSd46623ov8ACgoKuOeee/jxj3+MXq+npaUFgM7OTvbs2aNZd0dHBxAWY4RBgwZ1qV8ulwuAoqIi1XMMBgP5+fmcPn06ev6FZGdnq5aNpJ/BYDCuTYPBoCpitf7odDpeffVVnnrqKX73u9+xe/dudu/eDYTT/blz57J8+XKGDBmi2qdMQ4qxDxg5ciTPP/88gUCAAwcOsHv3bv785z/zwQcfsHz5clwuF5WVleTk5AAwfvz4uLWWiAujQmtrK8XFxZplcnNzAWhsbFQ9x+/3R3dVI+cnQ6QOv99Pc3NzQkGKNmGsViuVlZVUVlZSU1NDdXU1f/3rX/njH//IK6+8wtGjR9m6dWt0Ish0BsZVpCl6vZ6JEydyzz338Ic//IEnnngCgHXr1gFw2WWXAeG1YyRKdgWr1Yrdbgdg7969XSozduxYIBxVL37cEeGzzz6LppWR85OhvLw8uiF1+PDhhOeoHU9U16233sqLL77IO++8g6IoVFdXR1P9gYAUYz8yZcoUIBzNOjo6mDBhAqNGjcLn8/HMM890q67rr78egLVr18bssqoxZswYysvLAXjuuecSnvPss88CcPnll8etF3tCTk5O9JrVngf++te/7na948ePj37UqKGhoecdTDOkGHuZn//856xbty4u/WppaeGpp54CwpsW2dnZKIrCihUrUBSFp59+muXLl9Pa2hpTrr29nc2bN7N48eKY4/fddx+FhYUcOnSIefPmcfz48Rj7sWPHoo8yIkR+YX3dunWsX7+eUCj8vkcwGGTt2rVs2rQJgGXLliXnhAtYsmQJAG+++SZr166Nrin9fj+rVq1STc83bdrEihUroo84IkRemmhtbcVgMETfChoIyDdwepn58+dHN2xKS0spLi6mo6ODmpoaPB4Pubm5vPrqq9GIAeEXBR588EE8Hg9Go5ExY8aQnZ1Nc3Mzx48fJxAIYLfbOXDgQExb+/btiz74VxSF0aNHk5uby4kTJ2hsbEz4Bs5DDz0UjUZFRUWUlpZSV1fHmTNngLAQH3nkkZgyF76Bc3EfIkTelkn0Bs/y5cujzxsjb/0cP36cs2fPqr6Bs3bt2mg/hgwZgt1uJxQKUVtbG52wVqxYwaJFi7pyWzICuYHTyyxbtozLLruMXbt2UVdXx4EDB9Dr9ZSVlTFjxgzuvffeuEcLt99+O1dddRXPP/8877//PrW1tQSDQYqLi5k6dSqzZs1K+EbMlVdeyd69e6mqquJPf/pTVLjFxcVMmTKFioqKuDJPPPEEs2bN4sUXX2Tfvn3s37+fwYMHc+2113L33Xczffr0XvdJZWUll19+OVVVVRw4cIAvvviCL33pS9x7773MmTMn4c/gf+c73yEQCLBz504OHz7MF198gc/no6ioiFmzZnHHHXfETGgDARkZJZI0Qa4ZJZI0QYpRIkkTpBglkjRBilEiSROkGCWSNEGKUSJJE6QYJZI0QYpRIkkTpBglkjRBilEiSROkGCWSNEGKUSJJE6QYJZI0QYpRIkkT/j83wNYz+HnUiAAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sinewave(20) #frequency=20 and 20 cycles per second"
]
},
{
"cell_type": "markdown",
"id": "fb2f2717",
"metadata": {},
"source": [
"__2.__\n",
"If an object vibrates at high enough frequency, it creates a sound wave that we can hear.\n",
"The following function converts a frequency into a sinewave and then into an audible sound"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "96dcf97b",
"metadata": {},
"outputs": [],
"source": [
"def play(freq):\n",
" import numpy as np\n",
" from IPython.display import Audio #library used to create sounds\n",
" sampling_rate = 44100 # <- rate of sampling\n",
" t = np.linspace(0, 2, sampling_rate) # <- setup time values\n",
" sound_wave = np.sin(2 * np.pi * freq * t) # <- sine function formula\n",
" return Audio(sound_wave, rate=sampling_rate, autoplay=True) # play the generated sound"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "84dbd667",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"play(220) # play a sound at 220 hz "
]
},
{
"cell_type": "markdown",
"id": "9fc7e21b",
"metadata": {},
"source": [
"Doubling the frequency creates the same note but an octave higher."
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "1bbddf81",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"play(440) # play a sound at 440 hz "
]
},
{
"cell_type": "markdown",
"id": "4db7cc4a",
"metadata": {},
"source": [
"__3.__\n",
"A musical scale can be created by multipling the first note in the scale by different fractions"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "f1299799",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from IPython.display import Audio \n",
"rest=0\n",
"do=220\n",
"re=9/8*220\n",
"mi=5/4*220\n",
"fa=4/3*220\n",
"so=3/2*220\n",
"la=5/3*220\n",
"ti=15/8*220\n",
"do1=2*220\n",
"re1=2*9/8*220\n",
"mi1=2*5/4*220\n",
"fa1=2*4/3*220\n",
"so1=2*3/2*220\n",
"la1=2*5/3*220\n",
"ti1=2*15/8*220\n",
"do2=2*2*220\n",
"scale=[do,re,mi,fa,so,la,ti,do1]\n",
"twooctavescale=[do,re,mi,fa,so,la,ti,do1,re1,mi1,fa1,so1,la1,ti1,do2]"
]
},
{
"cell_type": "markdown",
"id": "be73fdd6",
"metadata": {},
"source": [
"The following function can play a scale or song for us."
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "214902a3",
"metadata": {},
"outputs": [],
"source": [
"def play(song):\n",
" song=np.array(song)\n",
" framerate = 44100\n",
" t = np.linspace(0, len(song) / 2, round(framerate * len(song) / 2))[:-1]\n",
" song_idx = np.floor(t * 2).astype(int)\n",
" data = np.sin(2 * np.pi * song[song_idx] * t)\n",
" return Audio(data, rate=framerate, autoplay=True)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "a07e91e8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"play(scale)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "f6adefcf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"play(twooctavescale)"
]
},
{
"cell_type": "markdown",
"id": "540df31c",
"metadata": {},
"source": [
"__4.__\n",
"We can create tunes by arranging notes in a scale."
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "16e61141",
"metadata": {},
"outputs": [],
"source": [
"weshallovercome = [so, so , la, la, so, fa,mi,rest,so, so , la, la, so, fa,mi,rest,so,so,la,ti,do1,do1,re1,re1,ti,la,ti,la,so,so,la,ti,do1,do1,ti,la,so,so,rest,rest,la,la,so,fa,mi,mi,rest,rest,so,so,do,fa,mi,mi,re,re,do,do,do,do,rest,rest]"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "1b6991ee",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"play(weshallovercome)"
]
},
{
"cell_type": "markdown",
"id": "384a0e7e",
"metadata": {},
"source": [
"### Assignment"
]
},
{
"cell_type": "markdown",
"id": "52d31ca0",
"metadata": {},
"source": [
":::{admonition} Assignment\n",
"\n",
"Create your own tune. When you are finished, see if the others can name that tune!\n",
"\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "0cad31bf",
"metadata": {},
"source": [
"## Random Numbers and Pi"
]
},
{
"cell_type": "markdown",
"id": "5d5ca9bf",
"metadata": {},
"source": [
":::{note}\n",
"In this lab we will use random numbers to estimate $\\pi\\approx 3.14$.\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "1101f8be",
"metadata": {},
"source": [
"1) Let's look at the library matplotlib. The matplotlib (mpl) library has a sub-library called pyplot (plt). We can access the functions in pyplot by executing the next cell"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "cf112216",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"np.random.seed(1232023) # The seed determines a specific stream of pseuod random numbers"
]
},
{
"cell_type": "markdown",
"id": "db224b67",
"metadata": {},
"source": [
"```{index} random numbers\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "fe9b2385",
"metadata": {},
"source": [
"__1.__ A random number is any number whose decimal is between 0 and 1. Let's use a random number generator to generate 100 random numbers and then plot them."
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "796acd1e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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mcaOHSuXy6WnnnqqaV4dAABABAj6KsusrCytWbNG8+bN04oVK1RVVaVu3brpoYce0tixYxu8n2eeeUaXX365XnrpJb344otKSEjQ0KFDNXfuXEbHAABAs2LzeDwB00VYUXl5uQoLC9WhQweugLEQ+mJd9Maa6Is10RdrMtmXoE5ZAgAAoOkRyM6hrkc7wTz6Yl30xproizXRF2sy1RdOWQIAABjGCBkAAIBhBDIAAADDCGQAAACGEcgAAAAMI5ABAAAYRiADAAAwjEAGAABgGIEMAADAMALZ9+zYsUNjxoxRp06dlJ6eruzsbC1btsx0WVGvqKhIv//973X77bfriiuuUGpqqi655BLddddd+uc//1nnz5SUlGj27Nm64oor1LZtW11xxRWaPXu2SkpKwlx98/K73/1OycnJSk5O1vbt2+vcht6E16pVqzRixAhlZGSoXbt26t69u37yk5/o4MGDtbajL+ERCAS0cuVKDRs2TD/4wQ/Uvn17XX311ZoyZYq+/PLLM7anL03rtdde05QpUzR48GC1bdtWycnJWrJkyVm3b8z7v2zZMmVnZys9PV2dOnXSmDFj9OGHH55X3dyp/zs2bdqkUaNGyel0auTIkUpKStKqVau0f/9+zZ07V9OmTTNdYtT69a9/rWeeeUYZGRkaMGCAUlNTlZ+fr9WrVysQCGjRokW6/fbba7YvKyvT0KFD9fHHH+vaa69Vjx49tGvXLq1bt05XXnml1qxZo4SEBIOvKDp9/vnnysrKksPhUFlZmd555x316tWr1jb0JnwCgYCmTp2ql156SRkZGbruuuuUmJioQ4cOafPmzfrjH/+ofv36SaIv4fTQQw/p+eefV7t27XTzzTfL5XJp165dys3NVWJiov7xj3/osssuk0RfQuHKK69UYWGhUlJS1LJlSxUWFur555/XnXfeeca2jXn/n3zySf33f/+3LrroIg0fPlxlZWV64403VF5ertdff13XXHNNo+omkH3L6/WqV69eKioq0tq1a9WjRw9JUmlpqYYMGaK9e/fq/fffV2ZmpuFKo9PKlSvVpk0b9e/fv9byLVu2aPjw4UpMTNRnn32m2NhYSdKjjz6qxx9/XJMnT9bDDz9cs3318gcffFCzZ88O62uIdj6fTzfccINsNpsyMzO1dOnSOgMZvQmfF154QTNnztSECRP02GOPnfEM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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"N=100\n",
"x=np.arange(0,N,1) \n",
"y=np.random.rand(N)\n",
"plt.scatter(x, y, s=y, marker='o')"
]
},
{
"cell_type": "markdown",
"id": "198540d5",
"metadata": {},
"source": [
"__Q1.: How are the 100 random numbers represented in this graph?\n",
"\n",
"__2.__ Here is a different plot of random numbers. "
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "e2e912c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure(figsize=(1,1))\n",
"N=100\n",
"x=np.random.rand(N)\n",
"y=np.random.rand(N)\n",
"plt.scatter(x, y,s=.1, marker='o')"
]
},
{
"cell_type": "markdown",
"id": "13b5cc7b",
"metadata": {},
"source": [
"__Q2__ How were random numbers used to generate the plot above?\n",
"\n",
"__3.__ The distance d from a point (x,y) to the origin (0,0) is given by the formula\n",
"\n",
"$$d=\\sqrt{x^2+y^2}$$\n",
"\n",
"Let's define a function dist(x,y) to compute this distance."
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "bc42589f",
"metadata": {},
"outputs": [],
"source": [
"def dist(x,y):\n",
" d=np.sqrt(x**2+y**2)\n",
" return d"
]
},
{
"cell_type": "markdown",
"id": "84edbe99",
"metadata": {},
"source": [
"Let's use our function to check the distance from (3,4) to the origin.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a29aca38",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"dist(3,4)"
]
},
{
"cell_type": "markdown",
"id": "c06917fe",
"metadata": {},
"source": [
"__Q3a__ What is the distance between (8,15) and the origin? \n",
"\n",
"__Q3b__ Can you find another pair of non-zero integers (a,b) whose distance to the origin is another integer c? (The integers a,b,c are called a \"Pythagorean triple\")\n",
"\n",
"__4.__ Let's use random numbers to create a plot of points in blue if the distance is less than or equal to 1 and in red if the distance is more than 1."
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "4e524743",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure(figsize=(1,1))\n",
"for n in np.arange(0,1000,1):\n",
" x=np.random.rand(1)\n",
" y=np.random.rand(1)\n",
" if dist(x,y)<=1:\n",
" plt.scatter(x, y,s=.1, marker='o', color='blue')\n",
" else:\n",
" plt.scatter(x, y,s=.1, marker='o', color='red')"
]
},
{
"cell_type": "markdown",
"id": "fdb3e5c6",
"metadata": {},
"source": [
"__Q4__ What is the shape of the points in blue?\n",
"\n",
"__5.__ The area $A$ of a circle with radius $r$ is $A=\\pi r^2$.\n",
"\n",
"__Q5__ What is the area of a quarter circle of radius $r=1$?\n",
"\n",
"__6.__ Note that $\\pi/4\\approx .785$. Thus, we would expect about 78.5% of the points in the plot in Step 4 to be in blue. Let's check this by counting the number of points of each color plotting a total of $N=100$ points."
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "28df4c52",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of Blue Points= 80.0\n",
"Estimate of Pi= 3.2\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure(figsize=(1,1))\n",
"N=100\n",
"blue=0\n",
"red=0\n",
"for n in np.arange(0,N,1):\n",
" x=np.random.rand(1)\n",
" y=np.random.rand(1)\n",
" if dist(x,y)<=1:\n",
" plt.scatter(x, y,s=.1, marker='o', color='blue')\n",
" blue=blue+1\n",
" else:\n",
" plt.scatter(x, y,s=.1, marker='o', color='red')\n",
" red=red+1\n",
"print(\"Percentage of Blue Points=\", (blue/N)*100)\n",
"print(\"Estimate of Pi=\", 4* (blue/N))"
]
},
{
"cell_type": "markdown",
"id": "0b4f4ed4",
"metadata": {},
"source": [
"__Q6__ What would the approximation of pi be if the percentage of blue points had been 81? \n",
"\n",
"__7.__ Let's see what happens if we use $N=1000$."
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "6141fb0d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of Blue Points= 79.3\n",
"Estimate of Pi= 3.172\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure(figsize=(1,1))\n",
"N=1000\n",
"blue=0\n",
"red=0\n",
"for n in np.arange(0,N,1):\n",
" x=np.random.rand(1)\n",
" y=np.random.rand(1)\n",
" if dist(x,y)<=1:\n",
" plt.scatter(x, y,s=.1, marker='o', color='blue')\n",
" blue=blue+1\n",
" else:\n",
" plt.scatter(x, y,s=.1, marker='o', color='red')\n",
" red=red+1\n",
"print(\"Percentage of Blue Points=\", (blue/N)*100)\n",
"print(\"Estimate of Pi=\", 4* (blue/N))"
]
},
{
"cell_type": "markdown",
"id": "8f7731ca",
"metadata": {},
"source": [
"__7.__ What is happening to the percentage of blue points as we increase $N$ from 100 to 1000?"
]
},
{
"cell_type": "markdown",
"id": "eaae8388",
"metadata": {},
"source": [
"### Assignment"
]
},
{
"cell_type": "markdown",
"id": "67b6287f",
"metadata": {},
"source": [
":::{admonition} Assignment\n",
"What do you expect to happen if we increase $N$ to 5,000? \n",
"\n",
"Check to see if you are correct.\n",
"\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "5b3745e4",
"metadata": {},
"source": [
"## Simulating Formula 1"
]
},
{
"cell_type": "markdown",
"id": "9c471b57",
"metadata": {},
"source": [
":::{note}\n",
"\n",
"In this section, we will use an object oriented approach to create a simple animation of formula 1 cars turning a corner.\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "fcf0e69b",
"metadata": {},
"source": [
"__1.__ First we import libraries."
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "8b46cb43",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.image as mpimg\n",
"from matplotlib.offsetbox import TextArea, DrawingArea, OffsetImage, AnnotationBbox\n",
"import numpy as np\n",
"import scipy.misc\n",
"from scipy import ndimage\n",
"from PIL import Image \n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.animation as animation\n",
"from matplotlib.animation import FuncAnimation\n",
"%matplotlib notebook "
]
},
{
"cell_type": "markdown",
"id": "f35b6dcc",
"metadata": {},
"source": [
"```{index} class\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "f551f34e",
"metadata": {},
"source": [
"__2.__ Next we create a car __class__. A class is a special programming tool similar to a function, but with additional features.\n",
"\n",
"Each car has **properties** or **attributes** including:\n",
"\n",
"- x position \n",
"- y position \n",
"- an image file showing what the car looks like\n",
"- a size (which can be adjusted) \n",
"- speed \n",
"\n",
"Each car also has a **method** which is a type of function.\n",
"- go"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "df80b414",
"metadata": {},
"outputs": [],
"source": [
"class car:\n",
" def __init__(self,x,y,image,size,speed): #properties\n",
" self.x=x #object's position is (x,y)\n",
" self.y=y\n",
" self.image=image #name of the image file\n",
" self.size=size\n",
" self.speed=speed\n",
" \n",
" def go(self,xamount,yamount): #method to move the object vertically\n",
" self.x=self.x+xamount*self.speed\n",
" self.y = self.y+yamount*self.speed\n",
" \n",
" \n",
" return \n"
]
},
{
"cell_type": "markdown",
"id": "974fc7fa",
"metadata": {},
"source": [
"__3.__ We'll define a function which positions two cars on a track."
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "7a1f59ee",
"metadata": {},
"outputs": [],
"source": [
"#create a function to position the cars on the track\n",
"def simulate(c1,c2,n):\n",
" #make a graph\n",
" fig = plt.figure(figsize=(12,10)) \n",
" plt.gca().set_aspect('equal')\n",
" ax = plt.axes([0.1, 0.1, 1, 1])\n",
"\n",
" #add a track diagramimagebox = OffsetImage(simulation, zoom=1)\n",
" simulation = mpimg.imread('monaco.png')\n",
" imagebox = OffsetImage(simulation, zoom=1)\n",
" ab = AnnotationBbox(imagebox, (0.5, 0.45),frameon=False)\n",
" plt.gca().add_artist(ab)\n",
"\n",
" car1 = mpimg.imread(c1.image)\n",
" imagebox= OffsetImage(car1, zoom=c1.size)\n",
" firstcar = AnnotationBbox(imagebox, (c1.x, c1.y),frameon=False)\n",
" plt.gca().add_artist(firstcar)\n",
"\n",
" car2 = mpimg.imread(c2.image)\n",
" imagebox= OffsetImage(car2, zoom=c2.size)\n",
" secondorn = AnnotationBbox(imagebox, (c2.x, c2.y),frameon=False)\n",
" plt.gca().add_artist(secondorn)\n",
" plt.savefig(str(n)+'.png')\n",
" plt.show()\n",
" return "
]
},
{
"cell_type": "markdown",
"id": "4ed220dc",
"metadata": {},
"source": [
"__4.__ We'll create two car objects and use our function to position the yellow car on the track (frame 1 of our animation).\n"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "62a72e30",
"metadata": {},
"outputs": [],
"source": [
"c1=car(.43,.15,'car1.png',.14,0)\n",
"c2=car(.02,.01,'car2.png',.12,0)\n",
"simulate(c1,c2,0)"
]
},
{
"cell_type": "markdown",
"id": "da2a9051",
"metadata": {},
"source": [
"__5.__ We'll use the go method to move the yellow car forward (frame 2 of the animation)."
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "830cf0cb",
"metadata": {},
"outputs": [],
"source": [
"c1.speed=.8\n",
"c1.go(.2,0)\n",
"simulate(c1,c2,1)"
]
},
{
"cell_type": "markdown",
"id": "c4f4f406",
"metadata": {},
"source": [
"__6.__ We'll show the yellow car after it turns the corner (frame 3 of the animation)."
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "c4dde655",
"metadata": {},
"outputs": [],
"source": [
"c1.speed=.9\n",
"c1.size=c1.size*.9\n",
"c1.go(.2,.15)\n",
"c1.image=\"car1left.png\"\n",
"simulate(c1,c2,2)"
]
},
{
"cell_type": "markdown",
"id": "175a0293",
"metadata": {},
"source": [
"```{index} animation\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "0272a3ac",
"metadata": {},
"source": [
"__7.__ Now let's put the three frames together into an animation \"F1.gif\""
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "02532b11",
"metadata": {},
"outputs": [],
"source": [
"frames=3\n",
"from PIL import Image\n",
"images = []\n",
"for n in range(frames):\n",
" exec('a'+str(n)+'=Image.open(\"'+str(n)+'.png\")')\n",
" images.append(eval('a'+str(n)))\n",
"images[0].save('F1.gif',\n",
" save_all=True,\n",
" append_images=images[1:],\n",
" duration=300,\n",
" loop=0)"
]
},
{
"cell_type": "markdown",
"id": "5b3cfd10",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"id": "ffa1dbc9",
"metadata": {},
"source": [
"### Assignment"
]
},
{
"cell_type": "markdown",
"id": "d29b790b",
"metadata": {},
"source": [
":::{admonition} Assignment\n",
"Put the red car onto the track right and show it following right behind the yellow car around the turn. Then create an animation called \"F1a.gif\".\n",
":::"
]
}
],
"metadata": {
"celltoolbar": "Edit Metadata",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}