Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 149 additions & 51 deletions 02_activities/assignments/assignment_2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -72,31 +72,109 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {
"id": "n0m48JsS-nMC"
},
"outputs": [],
"source": [
"all_paths = [\n",
" \"python/05_src/data/assignment_2_data/inflammation_01.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_02.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_03.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_04.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_05.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_06.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_07.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_08.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_09.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_10.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_11.csv\",\n",
" \"python/05_src/data/assignment_2_data/inflammation_12.csv\"\n",
" \"../../05_src/data/assignment_2_data/inflammation_01.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_02.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_03.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_04.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_05.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_06.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_07.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_08.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_09.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_10.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_11.csv\",\n",
" \"../../05_src/data/assignment_2_data/inflammation_12.csv\"\n",
"]\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"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",
"0,0,1,3,2,5,1,2,7,6,6,3,12,9,4,14,4,6,12,9,12,7,11,7,16,8,13,6,7,6,10,7,6,3,1,5,4,3,0,0\n",
"0,0,1,2,3,4,5,7,5,4,10,5,12,12,5,4,7,9,18,16,16,10,15,15,10,4,3,7,5,9,4,6,2,4,1,4,2,2,2,1\n",
"0,1,2,1,1,3,5,3,6,3,10,10,11,10,13,10,13,6,6,14,5,4,5,5,9,4,12,7,7,4,7,9,3,3,6,3,4,1,2,0\n",
"0,1,2,2,3,5,2,4,5,6,8,3,5,4,3,15,15,12,16,7,20,15,12,8,9,6,12,5,8,3,8,5,4,1,3,2,1,3,1,0\n",
"0,0,0,2,4,4,5,3,3,3,10,4,4,4,14,11,15,13,10,14,11,17,9,11,11,7,10,12,10,10,10,8,7,5,2,2,4,1,2,1\n",
"0,0,2,1,1,4,4,7,2,9,4,10,12,7,6,6,11,12,9,15,15,6,6,13,5,12,9,6,4,7,7,6,5,4,1,4,2,2,2,1\n",
"0,1,2,1,1,4,5,4,4,5,9,7,10,3,13,13,8,9,17,16,16,15,12,13,5,12,10,9,11,9,4,5,5,2,2,5,1,0,0,1\n",
"0,0,1,3,2,3,6,4,5,7,2,4,11,11,3,8,8,16,5,13,16,5,8,8,6,9,10,10,9,3,3,5,3,5,4,5,3,3,0,1\n",
"0,1,1,2,2,5,1,7,4,2,5,5,4,6,6,4,16,11,14,16,14,14,8,17,4,14,13,7,6,3,7,7,5,6,3,4,2,2,1,1\n",
"0,1,1,1,4,1,6,4,6,3,6,5,6,4,14,13,13,9,12,19,9,10,15,10,9,10,10,7,5,6,8,6,6,4,3,5,2,1,1,1\n",
"0,0,0,1,4,5,6,3,8,7,9,10,8,6,5,12,15,5,10,5,8,13,18,17,14,9,13,4,10,11,10,8,8,6,5,5,2,0,2,0\n",
"0,0,1,0,3,2,5,4,8,2,9,3,3,10,12,9,14,11,13,8,6,18,11,9,13,11,8,5,5,2,8,5,3,5,4,1,3,1,1,0\n"
]
}
],
"source": [
"with open(all_paths[0], 'r') as f:\n",
" # YOUR CODE HERE: Use the readline() or readlines() method to read the .csv file into a variable\n",
" \n",
" # YOUR CODE HERE: Iterate through the variable using a for loop and print each row for inspection"
" lines = f.readlines()\n",
"\n",
"for line in lines:\n",
" print(line.strip())\n"
]
},
{
Expand Down Expand Up @@ -130,7 +208,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {
"id": "82-bk4CBB1w4"
},
Expand All @@ -139,19 +217,20 @@
"import numpy as np\n",
"\n",
"def patient_summary(file_path, operation):\n",
" data = np.loadtxt(fname=file_path, delimiter=',') # Load the data from the file\n",
" ax = 1 # This specifies that the operation should be done for each row (patient)\n",
" data = np.loadtxt(fname=file_path, delimiter=',') # Loading the data from the file\n",
" ax = 1 # calculation across columns (days)\n",
"\n",
" # Implement the specific operation based on the 'operation' argument\n",
" # checking which operation to perform\n",
" if operation == 'mean':\n",
" # YOUR CODE HERE: Calculate the mean (average) number of flare-ups for each patient\n",
" summary_values = np.mean(data, axis=ax) # average flare-ups per patient\n",
" \n",
"\n",
" elif operation == 'max':\n",
" # YOUR CODE HERE: Calculate the maximum number of flare-ups experienced by each patient\n",
" summary_values = np.max(data, axis=ax) # Calculating the highest flare-ups per patient\n",
"\n",
" elif operation == 'min':\n",
" # YOUR CODE HERE: Calculate the minimum number of flare-ups experienced by each patient\n",
"\n",
" summary_values = np.min(data, axis=ax) # Calculating the lowest flare-ups per patient\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",
Expand All @@ -161,14 +240,22 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {
"id": "3TYo0-1SDLrd"
},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"60\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",
"# Test it out on the data file and make sure the size is what we expect i.e., 60\n",
"# output for the first file is 60\n",
"data_min = patient_summary(all_paths[0], 'min')\n",
"print(len(data_min))"
]
Expand Down Expand Up @@ -228,30 +315,26 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 10,
"metadata": {
"id": "_svDiRkdIwiT"
},
"outputs": [],
"source": [
"# Run this cell so you can use this helper function\n",
"\n",
"def check_zeros(x):\n",
" '''\n",
" Given an array, x, check whether any values in x equal 0.\n",
" Return True if any values found, else returns False.\n",
" '''\n",
" # np.where() checks every value in x against the condition (x == 0) and returns a tuple of indices where it was True (i.e. x was 0)\n",
" flag = np.where(x == 0)[0]\n",
"\n",
" # Checks if there are any objects in flag (i.e. not empty)\n",
" # If not empty, it found at least one zero so flag is True, and vice-versa.\n",
" return len(flag) > 0"
" \"\"\"\n",
" Given an array-like x, check whether any values in x equal 0.\n",
" Return True if any values found, else False.\n",
" \"\"\"\n",
" # np.where() returns the indices where x == 0\n",
" zero_indices = np.where(x == 0)[0]\n",
" # If zero_indices is non‑empty, at least one zero was found\n",
" return len(zero_indices) > 0"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 11,
"metadata": {
"id": "LEYPM5v4JT0i"
},
Expand All @@ -260,20 +343,34 @@
"# Define your function `detect_problems` here\n",
"\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"
" \"\"\"\n",
" Reads patient data from file_path, computes each patient's mean inflammation,\n",
" and returns True if any mean is zero (indicating a problem), else False.\n",
" \"\"\"\n",
" # get mean inflammation per patient\n",
" means = patient_summary(file_path, 'mean')\n",
" # check for zeros in those means\n",
" return check_zeros(means)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 12,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n"
]
}
],
"source": [
"# Test out your code here\n",
"# Your output for the first file should be False\n",
"print(detect_problems(all_paths[0]))"
"print(detect_problems(all_paths[0]))\n"
]
},
{
Expand Down Expand Up @@ -314,8 +411,9 @@
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
"display_name": "Python (dsi_participant)",
"language": "python",
"name": "dsi_participant"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -327,7 +425,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
"version": "3.9.15"
}
},
"nbformat": 4,
Expand Down
Loading