diff --git a/02_assignments/assignment_1.ipynb b/02_assignments/assignment_1.ipynb index 946889317..4afe242de 100644 --- a/02_assignments/assignment_1.ipynb +++ b/02_assignments/assignment_1.ipynb @@ -56,34 +56,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "# This is a function, which we will learn more about next week. For testing purposes, we will write our code in the function\n", + "# Function to check if to words anagrams of each other (not case sensetive)\n", "def anagram_checker(word_a, word_b):\n", - " # Your code here\n", - "\n", - "# Run your code to check using the words below:\n", - "anagram_checker(\"Slient\", \"listen\")" + " return sorted(word_a.lower()) == sorted(word_b.lower()) # Convert case to lower, sort letters in both words, and return result of comparison" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "anagram_checker(\"Slient\", \"Night\")" + "# Create and fulfill list of word pairs\n", + "text_pairs = [(\"Slient\", \"listen\"), (\"Slient\", \"Night\"), (\"night\", \"Thing\"), (-1,4242.555), (\"asdasd casd\", \"asdasd ca sd\"), (\"\",\"\"), (None, None)]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n", + "True\n", + "worng input\n", + "False\n", + "True\n", + "worng input\n" + ] + } + ], "source": [ - "anagram_checker(\"night\", \"Thing\")" + "# Send each pair to anagram_checker() to check if it is an anagram \n", + "for pair in text_pairs:\n", + " # try/catch exeptions in case of wrong input in pairs\n", + " try:\n", + " print(anagram_checker(*pair))\n", + " except: print(\"worng input\")" ] }, { @@ -97,24 +114,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ + "# Function to check if to words anagrams of each other (case sensetive)\n", "def anagram_checker(word_a, word_b, is_case_sensitive):\n", - " # Modify your existing code here\n", - "\n", - "# Run your code to check using the words below:\n", - "anagram_checker(\"Slient\", \"listen\", False) # True" + " if is_case_sensitive == False: # Check if is_case_sensitive parameter equal False\n", + " return sorted(word_a.lower()) == sorted(word_b.lower()) # Convert case to lower, sort letters in both words and return result of comparison\n", + " else: return sorted(word_a) == sorted(word_b) #sort letters in both words and return result of comparison (remaining case)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "anagram_checker(\"Slient\", \"Listen\", True) # False" + "# Create and fulfill list of word with is_case_sensitive parameter for each pair\n", + "text_trinities= [(\"Slient\", \"listen\", False), (\"Slient\", \"Listen\", True), (\"Slient\", \"Night\", True), (\"night\", \"Thing\", False), (-1,4242.555, True), (\"asdasd casd\", \"asdasd ca sd\", False), (\"\",\"\", True)]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n", + "False\n", + "True\n", + "worng input\n", + "False\n", + "True\n" + ] + } + ], + "source": [ + "# For the list of Tuples, send each Tuple with pair of words and is_case_sensitive parameter as arguments to anagram_checker() and check if words pair is an anagram \n", + "for trinity in text_trinities:\n", + " try: # try/catch exeptions in case of wrong input \n", + " print(anagram_checker(*trinity))\n", + " except: print(\"worng input\")" ] }, { @@ -144,7 +189,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.9.15" } }, "nbformat": 4, diff --git a/02_assignments/assignment_2.ipynb b/02_assignments/assignment_2.ipynb index 77554f12b..44c94c291 100644 --- a/02_assignments/assignment_2.ipynb +++ b/02_assignments/assignment_2.ipynb @@ -90,16 +90,146 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "all_paths = [\n", + " \"../05_data/assignment_2_data/inflammation_01.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_02.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_03.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_04.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_05.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_06.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_07.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_08.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_09.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_10.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_11.csv\",\n", + " \"../05_data/assignment_2_data/inflammation_12.csv\",\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "metadata": { "id": "n0m48JsS-nMC" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n", + "\n", + "0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n", + "\n", + "0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n", + "\n", + "0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4,2,3,2,1\n", + "\n", + "0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4,2,0,1,1\n", + "\n", + "0,0,1,2,2,4,2,1,6,4,7,6,6,9,9,15,4,16,18,12,12,5,18,9,5,3,10,3,12,7,8,4,7,3,5,4,4,3,2,1\n", + "\n", + "0,0,2,2,4,2,2,5,5,8,6,5,11,9,4,13,5,12,10,6,9,17,15,8,9,3,13,7,8,2,8,8,4,2,3,5,4,1,1,1\n", + "\n", + "0,0,1,2,3,1,2,3,5,3,7,8,8,5,10,9,15,11,18,19,20,8,5,13,15,10,6,10,6,7,4,9,3,5,2,5,3,2,2,1\n", + "\n", + "0,0,0,3,1,5,6,5,5,8,2,4,11,12,10,11,9,10,17,11,6,16,12,6,8,14,6,13,10,11,4,6,4,7,6,3,2,1,0,0\n", + "\n", + "0,1,1,2,1,3,5,3,5,8,6,8,12,5,13,6,13,8,16,8,18,15,16,14,12,7,3,8,9,11,2,5,4,5,1,4,1,2,0,0\n", + "\n", + "0,1,0,0,4,3,3,5,5,4,5,8,7,10,13,3,7,13,15,18,8,15,15,16,11,14,12,4,10,10,4,3,4,5,5,3,3,2,2,1\n", + "\n", + "0,1,0,0,3,4,2,7,8,5,2,8,11,5,5,8,14,11,6,11,9,16,18,6,12,5,4,3,5,7,8,3,5,4,5,5,4,0,1,1\n", + "\n", + "0,0,2,1,4,3,6,4,6,7,9,9,3,11,6,12,4,17,13,15,13,12,8,7,4,7,12,9,5,6,5,4,7,3,5,4,2,3,0,1\n", + "\n", + "0,0,0,0,1,3,1,6,6,5,5,6,3,6,13,3,10,13,9,16,15,9,11,4,6,4,11,11,12,3,5,8,7,4,6,4,1,3,0,0\n", + "\n", + "0,1,2,1,1,1,4,1,5,2,3,3,10,7,13,5,7,17,6,9,12,13,10,4,12,4,6,7,6,10,8,2,5,1,3,4,2,0,2,0\n", + "\n", + "0,1,1,0,1,2,4,3,6,4,7,5,5,7,5,10,7,8,18,17,9,8,12,11,11,11,14,6,11,2,10,9,5,6,5,3,4,2,2,0\n", + "\n", + "0,0,0,0,2,3,6,5,7,4,3,2,10,7,9,11,12,5,12,9,13,19,14,17,5,13,8,11,5,10,9,8,7,5,3,1,4,0,2,1\n", + "\n", + "0,0,0,1,2,1,4,3,6,7,4,2,12,6,12,4,14,7,8,14,13,19,6,9,12,6,4,13,6,7,2,3,6,5,4,2,3,0,1,0\n", + "\n", + "0,0,2,1,2,5,4,2,7,8,4,7,11,9,8,11,15,17,11,12,7,12,7,6,7,4,13,5,7,6,6,9,2,1,1,2,2,0,1,0\n", + "\n", + "0,1,2,0,1,4,3,2,2,7,3,3,12,13,11,13,6,5,9,16,9,19,16,11,8,9,14,12,11,9,6,6,6,1,1,2,4,3,1,1\n", + "\n", + "0,1,1,3,1,4,4,1,8,2,2,3,12,12,10,15,13,6,5,5,18,19,9,6,11,12,7,6,3,6,3,2,4,3,1,5,4,2,2,0\n", + "\n", + "0,0,2,3,2,3,2,6,3,8,7,4,6,6,9,5,12,12,8,5,12,10,16,7,14,12,5,4,6,9,8,5,6,6,1,4,3,0,2,0\n", + "\n", + "0,0,0,3,4,5,1,7,7,8,2,5,12,4,10,14,5,5,17,13,16,15,13,6,12,9,10,3,3,7,4,4,8,2,6,5,1,0,1,0\n", + "\n", + "0,1,1,1,1,3,3,2,6,3,9,7,8,8,4,13,7,14,11,15,14,13,5,13,7,14,9,10,5,11,5,3,5,1,1,4,4,1,2,0\n", + "\n", + "0,1,1,1,2,3,5,3,6,3,7,10,3,8,12,4,12,9,15,5,17,16,5,10,10,15,7,5,3,11,5,5,6,1,1,1,1,0,2,1\n", + "\n", + "0,0,2,1,3,3,2,7,4,4,3,8,12,9,12,9,5,16,8,17,7,11,14,7,13,11,7,12,12,7,8,5,7,2,2,4,1,1,1,0\n", + "\n", + "0,0,1,2,4,2,2,3,5,7,10,5,5,12,3,13,4,13,7,15,9,12,18,14,16,12,3,11,3,2,7,4,8,2,2,1,3,0,1,1\n", + "\n", + "0,0,1,1,1,5,1,5,2,2,4,10,4,8,14,6,15,6,12,15,15,13,7,17,4,5,11,4,8,7,9,4,5,3,2,5,4,3,2,1\n", + "\n", + "0,0,2,2,3,4,6,3,7,6,4,5,8,4,7,7,6,11,12,19,20,18,9,5,4,7,14,8,4,3,7,7,8,3,5,4,1,3,1,0\n", + "\n", + "0,0,0,1,4,4,6,3,8,6,4,10,12,3,3,6,8,7,17,16,14,15,17,4,14,13,4,4,12,11,6,9,5,5,2,5,2,1,0,1\n", + "\n", + "0,1,1,0,3,2,4,6,8,6,2,3,11,3,14,14,12,8,8,16,13,7,6,9,15,7,6,4,10,8,10,4,2,6,5,5,2,3,2,1\n", + "\n", + "0,0,2,3,3,4,5,3,6,7,10,5,10,13,14,3,8,10,9,9,19,15,15,6,8,8,11,5,5,7,3,6,6,4,5,2,2,3,0,0\n", + "\n", + "0,1,2,2,2,3,6,6,6,7,6,3,11,12,13,15,15,10,14,11,11,8,6,12,10,5,12,7,7,11,5,8,5,2,5,5,2,0,2,1\n", + "\n", + "0,0,2,1,3,5,6,7,5,8,9,3,12,10,12,4,12,9,13,10,10,6,10,11,4,15,13,7,3,4,2,9,7,2,4,2,1,2,1,1\n", + "\n", + "0,0,1,2,4,1,5,5,2,3,4,8,8,12,5,15,9,17,7,19,14,18,12,17,14,4,13,13,8,11,5,6,6,2,3,5,2,1,1,1\n", + "\n", + "0,0,0,3,1,3,6,4,3,4,8,3,4,8,3,11,5,7,10,5,15,9,16,17,16,3,8,9,8,3,3,9,5,1,6,5,4,2,2,0\n", + "\n", + "0,1,2,2,2,5,5,1,4,6,3,6,5,9,6,7,4,7,16,7,16,13,9,16,12,6,7,9,10,3,6,4,5,4,6,3,4,3,2,1\n", + "\n", + "0,1,1,2,3,1,5,1,2,2,5,7,6,6,5,10,6,7,17,13,15,16,17,14,4,4,10,10,10,11,9,9,5,4,4,2,1,0,1,0\n", + "\n", + "0,1,0,3,2,4,1,1,5,9,10,7,12,10,9,15,12,13,13,6,19,9,10,6,13,5,13,6,7,2,5,5,2,1,1,1,1,3,0,1\n", + "\n", + "0,1,1,3,1,1,5,5,3,7,2,2,3,12,4,6,8,15,16,16,15,4,14,5,13,10,7,10,6,3,2,3,6,3,3,5,4,3,2,1\n", + "\n", + "0,0,0,2,2,1,3,4,5,5,6,5,5,12,13,5,7,5,11,15,18,7,9,10,14,12,11,9,10,3,2,9,6,2,2,5,3,0,0,1\n", + "\n", + "0,0,1,3,3,1,2,1,8,9,2,8,10,3,8,6,10,13,11,17,19,6,4,11,6,12,7,5,5,4,4,8,2,6,6,4,2,2,0,0\n", + "\n", + "0,1,1,3,4,5,2,1,3,7,9,6,10,5,8,15,11,12,15,6,12,16,6,4,14,3,12,9,6,11,5,8,5,5,6,1,2,1,2,0\n", + "\n", + "0,0,1,3,1,4,3,6,7,8,5,7,11,3,6,11,6,10,6,19,18,14,6,10,7,9,8,5,8,3,10,2,5,1,5,4,2,1,0,1\n", + "\n", + "0,1,1,3,3,4,4,6,3,4,9,9,7,6,8,15,12,15,6,11,6,18,5,14,15,12,9,8,3,6,10,6,8,7,2,5,4,3,1,1\n", + "\n", + "0,1,2,2,4,3,1,4,8,9,5,10,10,3,4,6,7,11,16,6,14,9,11,10,10,7,10,8,8,4,5,8,4,4,5,2,4,1,1,0\n", + "\n", + "0,0,2,3,4,5,4,6,2,9,7,4,9,10,8,11,16,12,15,17,19,10,18,13,15,11,8,4,7,11,6,7,6,5,1,3,1,0,0,0\n", + "\n", + "0,1,1,3,1,4,6,2,8,2,10,3,11,9,13,15,5,15,6,10,10,5,14,15,12,7,4,5,11,4,6,9,5,6,1,1,2,1,2,1\n", + "\n" + ] + } + ], "source": [ - "with open(all_paths[0], 'r') as f:\n", - " # YOUR CODE HERE: Use the readline() method to read the .csv file into 'contents'\n", - " \n", - " # YOUR CODE HERE: Iterate through 'contents' using a for loop and print each row for inspection" + "import os\n", + "if os.path.exists(all_paths[0]):\n", + " with open(all_paths[0], 'r') as f:\n", + " for i in range(len(all_paths[0])): ## Solution 1: Based on task details \n", + " contents = f.readline()\n", + " print(contents)\n", + " #for contents in f: ## Solution 2: also work, but easier\n", + " # print(contents)\n", + "else : print(\"Wrong path\") " ] }, { @@ -133,48 +263,61 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "id": "82-bk4CBB1w4" }, "outputs": [], "source": [ "import numpy as np\n", + "operation_dict = {\"min\": np.min, \"mean\": np.mean, \"max\": np.max}\n", "\n", - "def patient_summary(file_path, operation):\n", - " # load the data from the file\n", - " data = np.loadtxt(fname=file_path, delimiter=',')\n", - " ax = 1 # this specifies that the operation should be done for each row (patient)\n", - "\n", - " # implement the specific operation based on the 'operation' argument\n", - " if operation == 'mean':\n", - " # YOUR CODE HERE: calculate the mean (average) number of flare-ups for each patient\n", + "def patient_summary(file_path, operation): #Compute summary statistics for each patient's data over a 40-day period\n", "\n", - " elif operation == 'max':\n", - " # YOUR CODE HERE: calculate the maximum number of flare-ups experienced by each patient\n", + " data = np.loadtxt(fname=file_path, delimiter=',') #read the data from the file at file_path\n", + " ax = 1 # this specifies that the operation should be done for each row (patient)\n", "\n", - " elif operation == 'min':\n", - " # YOUR CODE HERE: calculate the minimum number of flare-ups experienced by each patient\n", + " if operation in operation_dict:\n", + " return operation_dict[operation](data, ax) # specific operation based on the 'operation' argument\n", "\n", " else:\n", " # if the operation is not one of the expected values, raise an error\n", - " raise ValueError(\"Invalid operation. Please choose 'mean', 'max', or 'min'.\")\n", - "\n", - " return summary_values" + " raise ValueError(\"Invalid operation. Please choose 'mean', 'max', or 'min'.\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "3TYo0-1SDLrd" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60\n", + "Data:\n", + "[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", + "Shape: (60,)\n", + "Type: \n" + ] + } + ], "source": [ "# test it out on the data file we read in and make sure the size is what we expect i.e., 60\n", "# Your output for the first file should be 60\n", - "data_min = patient_summary(all_paths[0], 'min')\n", - "print(len(data_min))" + "try:\n", + " data_min = patient_summary(all_paths[0], \"min\") # an array with 60 elements, each element being the result of the summary operation for a corresponding patient\n", + "except IndexError: print(\"Index is out of range\")\n", + "except FileNotFoundError: print(\"File not found\")\n", + "except (OSError, IOError): print(\"File found but cannot be opened\")\n", + "print(len(data_min))\n", + "\n", + "# Check\n", + "print(\"Data:\\n\" + str(data_min) + \"\\nShape: \" + str(data_min.shape) + \"\\nType: \" + str(type(data_min)))" ] }, { @@ -232,7 +375,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "id": "_svDiRkdIwiT" }, @@ -255,29 +398,76 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "id": "LEYPM5v4JT0i" }, "outputs": [], "source": [ - "# Define your function `detect_problems` here\n", - "\n", + "# Define function `detect_problems` here\n", "def detect_problems(file_path):\n", - " #YOUR CODE HERE: use patient_summary() to get the means and check_zeros() to check for zeros in the means\n", - "\n", - " return" + " #get the means and check_zeros() to check for zeros in the means\n", + " print(\"\\n\" + file_path )\n", + " try:\n", + " data_mean = patient_summary(file_path, \"mean\") # an array with 60 elements, each element being the result of the summary operation for a corresponding patient\n", + " return str(check_zeros(data_mean)).upper()\n", + " #except IndexError: print(\"Index is out of range\")\n", + " except FileNotFoundError: print(\"File not found\")\n", + " except (OSError, IOError): print(\"File found but cannot be opened\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "../05_data/assignment_2_data/inflammation_01.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_02.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_03.csv\n", + "TRUE\n", + "\n", + "../05_data/assignment_2_data/inflammation_04.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_05.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_06.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_07.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_08.csv\n", + "TRUE\n", + "\n", + "../05_data/assignment_2_data/inflammation_09.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_10.csv\n", + "FALSE\n", + "\n", + "../05_data/assignment_2_data/inflammation_11.csv\n", + "TRUE\n", + "\n", + "../05_data/assignment_2_data/inflammation_12.csv\n", + "FALSE\n" + ] + } + ], "source": [ - "# Test out your code here\n", - "# Your output for the first file should be True\n", - "print(detect_problems(all_paths[0]))" + "# Test out code here\n", + "for path in all_paths: # Loop thru all files\n", + " print(detect_problems(path))" ] }, { @@ -331,7 +521,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.9.15" } }, "nbformat": 4,