diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/CARe_Python_Class_2023.iml b/.idea/CARe_Python_Class_2023.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/.idea/CARe_Python_Class_2023.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..a377feb
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..7ce4733
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projet_ia_cnn_ilias_simon.ipynb b/projet_ia_cnn_ilias_simon.ipynb
new file mode 100644
index 0000000..c4aee20
--- /dev/null
+++ b/projet_ia_cnn_ilias_simon.ipynb
@@ -0,0 +1,1593 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7TVr2t_ntPPD"
+ },
+ "source": [
+ "## About\n",
+ "\n",
+ "After completion of this tutorial, you should be able to import data, transform it, and efficiently feed the data in batches to a convolution neural network (CNN) model for image classification.\n",
+ "\n",
+ "\n",
+ "**Author:** Mohit VAISHNAV"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "Su0COdCqT2Wk"
+ },
+ "outputs": [],
+ "source": [
+ "## import libraries\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "rXCYmmjyVRq5",
+ "outputId": "894bccc2-a0b3-4c03-cda3-6f41fbf2dfb4"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2.2.1+cu121\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(torch.__version__)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hhuQyU7AYE6K"
+ },
+ "source": [
+ "## Import The Data\n",
+ "The first step before training the model is to import the data. We will use the [MNIST dataset](http://yann.lecun.com/exdb/mnist/) which is like the Hello World dataset of machine learning.\n",
+ "\n",
+ "Besides importing the data, we will also do a few more things:\n",
+ "- We will tranform the data into tensors using the `transforms` module\n",
+ "- We will use `DataLoader` to build convenient data loaders or what are referred to as iterators, which makes it easy to efficiently feed data in batches to deep learning models.\n",
+ "- As hinted above, we will also create batches of the data by setting the `batch` parameter inside the data loader. Notice we use batches of `32` in this tutorial but you can change it to `64` if you like. I encourage you to experiment with different batches."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "tSjjLXrOVWBy"
+ },
+ "outputs": [],
+ "source": [
+ "%%capture\n",
+ "BATCH_SIZE = 32\n",
+ "\n",
+ "## transformations\n",
+ "transform = transforms.Compose(\n",
+ " [transforms.ToTensor()])\n",
+ "\n",
+ "## download and load training dataset\n",
+ "!wget www.di.ens.fr/~lelarge/MNIST.tar.gz\n",
+ "!tar -zxvf MNIST.tar.gz\n",
+ "\n",
+ "from torchvision.datasets import MNIST\n",
+ "\n",
+ "trainset = MNIST(root = './', train=True, download=True, transform=transform)\n",
+ "trainloader = torch.utils.data.DataLoader(trainset, batch_size=BATCH_SIZE,\n",
+ " shuffle=True, num_workers=2)\n",
+ "\n",
+ "## download and load testing dataset\n",
+ "testset = MNIST(root = './', train=False, download=True, transform=transform)\n",
+ "testloader = torch.utils.data.DataLoader(testset, batch_size=BATCH_SIZE,\n",
+ " shuffle=False, num_workers=2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "0nZwZukWXUDn"
+ },
+ "source": [
+ "## Exploring the Data\n",
+ "As a practioner and researcher, I am always spending a bit of time and effort exploring and understanding the dataset. It's fun and this is a good practise to ensure that everything is in order."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "NW_loWKga7CH"
+ },
+ "source": [
+ "Let's check what the train and test dataset contains. I will use `matplotlib` to print out some of the images from our dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 315
+ },
+ "id": "zWd9Pt1Ca6K9",
+ "outputId": "6304c92d-d4df-4aa8-a4e4-2931ff5a970d"
+ },
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "## functions to show an image\n",
+ "def imshow(img):\n",
+ " #img = img / 2 + 0.5 # unnormalize\n",
+ " npimg = img.numpy()\n",
+ " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
+ "\n",
+ "## get some random training images\n",
+ "dataiter = iter(trainloader)\n",
+ "images, labels = next(dataiter)\n",
+ "\n",
+ "## show images\n",
+ "imshow(torchvision.utils.make_grid(images))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "XFWll5Lseiht"
+ },
+ "source": [
+ "**EXERCISE:** Try to understand what the code above is doing. This will help you to better understand your dataset before moving forward.\n",
+ "*give an explanation!!*"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d9mXAVmRvhrq"
+ },
+ "source": [
+ "Let's check the dimensions of a batch."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "cNFKWz1GZ4R5",
+ "outputId": "258811bb-ab51-402c-b508-a247b3666c69"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Image batch dimensions: torch.Size([32, 1, 28, 28])\n",
+ "Image label dimensions: torch.Size([32])\n",
+ "tensor([4, 5, 3, 8, 6, 5, 5, 2, 6, 0, 0, 7, 7, 6, 6, 1, 6, 1, 3, 8, 5, 5, 4, 2,\n",
+ " 9, 7, 1, 1, 6, 6, 4, 3])\n"
+ ]
+ }
+ ],
+ "source": [
+ "for images, labels in trainloader:\n",
+ " print(\"Image batch dimensions:\", images.shape)\n",
+ " print(\"Image label dimensions:\", labels.shape)\n",
+ " print(labels)\n",
+ " break"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "_IYnV4ZBa3cJ"
+ },
+ "outputs": [],
+ "source": [
+ "class MyModel(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(MyModel, self).__init__()\n",
+ "\n",
+ " # 28x28x1 => 26x26x32\n",
+ " self.conv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3)\n",
+ " self.d1 = nn.Linear(26 * 26 * 32, 128)\n",
+ " self.d2 = nn.Linear(128, 10)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " # 32 images x1 gray scale x28x28 size => 32 images x32 out_channel x26x26 size reduced after\n",
+ " #conv (filter size 3)\n",
+ " x = self.conv1(x)\n",
+ " x = F.relu(x) #relu f() linear function above f(x<0)=0/ f(x>0)=x\n",
+ "\n",
+ " # flatten => 32 x (32*26*26)\n",
+ " x = x.flatten(start_dim = 1)\n",
+ "\n",
+ " # 32 x (32*26*26) => 32x128\n",
+ " x = self.d1(x)\n",
+ " x = F.relu(x)\n",
+ "\n",
+ " # logits => 32x10\n",
+ " logits = self.d2(x)\n",
+ " out = F.softmax(logits, dim=1) #for prob\n",
+ " return out"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "evsFbkq_X6bc"
+ },
+ "source": [
+ "I always encourage to test the model with 1 batch to ensure that the output dimensions are what we expect."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "1poxFYqftKov",
+ "outputId": "27e2dd74-2aa0-40ad-bd85-d2823c374be6"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "batch size: torch.Size([32, 1, 28, 28])\n",
+ "torch.Size([32, 10])\n",
+ "tensor([0.1045, 0.1055, 0.0925, 0.0984, 0.0992, 0.1050, 0.0947, 0.1048, 0.0910,\n",
+ " 0.1044], grad_fn=)\n"
+ ]
+ }
+ ],
+ "source": [
+ "## test the model with 1 batch\n",
+ "model = MyModel()\n",
+ "for images, labels in trainloader:\n",
+ " print(\"batch size:\", images.shape)\n",
+ " out = model(images)\n",
+ " print(out.shape)\n",
+ " print(out[0])\n",
+ " break"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "P1sXNIn8z4kd"
+ },
+ "source": [
+ "The model isn't trained yet, therefor it should be random probabilities ~1/10 dimensions (32*10 after .d2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9h_3eZQRHV_P"
+ },
+ "source": [
+ "## Training the Model\n",
+ "Now we are ready to train the model but before that we are going to setup a loss function, an optimizer and a function to compute accuracy of the model."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "3_0Vjq2RHlph"
+ },
+ "outputs": [],
+ "source": [
+ "learning_rate = 0.001\n",
+ "num_epochs = 1\n",
+ "#epochs = nb of time the dataset is read\n",
+ "\n",
+ "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = MyModel()\n",
+ "model = model.to(device)\n",
+ "criterion = nn.CrossEntropyLoss() #assess corect = highest score wrong = lowest\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) #weight update (Adam=one of the way)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "44IdrNNeIi_I"
+ },
+ "outputs": [],
+ "source": [
+ "## compute accuracy\n",
+ "def get_accuracy(logit, target, batch_size):\n",
+ " ''' Obtain accuracy for training round '''\n",
+ " corrects = (torch.argmax(logit, 1) == target).sum()\n",
+ " accuracy = 100.0 * corrects/batch_size\n",
+ " return accuracy.item()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "nK3EcuIOISSR"
+ },
+ "source": [
+ "Now it's time for training."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "E59hwZlAIVcL",
+ "outputId": "79afec38-c4f4-427c-fd33-793a07a8ba61"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch: 0 | Loss: 1.6224 | Train Accuracy: 84.21\n"
+ ]
+ }
+ ],
+ "source": [
+ "for epoch in range(num_epochs):\n",
+ " train_running_loss = 0.0\n",
+ " train_acc = 0.0\n",
+ "\n",
+ " model = model.train()\n",
+ "\n",
+ " ## training step\n",
+ " for i, (images, labels) in enumerate(trainloader):\n",
+ "\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ "\n",
+ " ## forward + backprop + loss\n",
+ " logits = model(images)\n",
+ " loss = criterion(logits, labels)\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ "\n",
+ " ## update model params\n",
+ " optimizer.step()\n",
+ "\n",
+ " train_running_loss += loss.detach().item()\n",
+ " train_acc += get_accuracy(logits, labels, BATCH_SIZE)\n",
+ "\n",
+ " model.eval()\n",
+ " print('Epoch: %d | Loss: %.4f | Train Accuracy: %.2f' \\\n",
+ " %(epoch, train_running_loss / i, train_acc/i))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "QuZxfQc1UIU-"
+ },
+ "source": [
+ "We can also compute accuracy on the testing dataset to see how well the model performs on the image classificaiton task. As you can see below, our basic CNN model is performing very well on the MNIST classification task."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "YU5WR0BTUHv1",
+ "outputId": "eaf8d15b-1e39-4b46-c5d3-81dd316e3c42"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Test Accuracy: 96.73\n"
+ ]
+ }
+ ],
+ "source": [
+ "test_acc = 0.0\n",
+ "model = model.eval()\n",
+ "for i, (images, labels) in enumerate(testloader, 0):\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " outputs = model(images)\n",
+ " test_acc += get_accuracy(outputs, labels, BATCH_SIZE)\n",
+ "\n",
+ "print('Test Accuracy: %.2f'%( test_acc/i))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "BZz7LAewgGAK"
+ },
+ "source": [
+ "**EXERCISE:** As a way to practise, try to include the testing part inside the code where I was outputing the training accuracy, so that you can also keep testing the model on the testing data as you proceed with the training steps. This is useful as sometimes you don't want to wait until your model has completed training to actually test the model with the testing data."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "s5oVytvxyvXt"
+ },
+ "source": [
+ "**GOING FURTHER:**\n",
+ "Try changing the architecture of the model and the hyperparameters.\n",
+ "How does the accuracy evolves with your changes?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "uLQlqGPsVjOB"
+ },
+ "source": [
+ "## Final Words\n",
+ "That's it for this tutorial! Congratulations! You are now able to implement a basic CNN model in PyTorch for image classification. If you would like, you can further extend the CNN model by adding more convolution layers and max pooling, but as you saw, you don't really need it here as results look good. If you are interested in implementing a similar image classification model using RNNs see the references below."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ztAiTq9HcS_H"
+ },
+ "source": [
+ "## References\n",
+ "- [Building RNNs is Fun with PyTorch and Google Colab](https://colab.research.google.com/drive/1NVuWLZ0cuXPAtwV4Fs2KZ2MNla0dBUas)\n",
+ "- [CNN Basics with PyTorch by Sebastian Raschka](https://github.com/rasbt/deeplearning-models/blob/master/pytorch_ipynb/cnn/cnn-basic.ipynb)\n",
+ "- [Tensorflow 2.0 Quickstart for experts](https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/quickstart/advanced.ipynb#scrollTo=DUNzJc4jTj6G)\n",
+ "\n",
+ "- [Elvis Saravia](https://colab.research.google.com/github/dair-ai/notebooks/blob/master/_notebooks/2020-03-18-pytorch_quick_start.ipynb#scrollTo=tmaCTw5tXowR)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "34wvH7uX6vuf"
+ },
+ "source": [
+ "# MY PERSONAL ADDITION IN THE CELLS BELOW\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjT-5Ub1_Sab"
+ },
+ "source": [
+ "\n",
+ "\n",
+ "# **What i did to ameliorate the CNN:**\n",
+ "\n",
+ "This model starts with an input layer that indicates the input format of the images into the model, which is 28 pixels by 28 , in one dimension.\n",
+ "\n",
+ "I divided the model in 3 blocks. Each block is composed of convolution-normalization-maxpool.\n",
+ "\n",
+ "For the first block:\n",
+ "**Convolution**\n",
+ "The 28x28x1 image is processed through a first convolution layer, which apply a kernel of size 3*3, with 32 neurons.\n",
+ "Here, according to the formula:\n",
+ "\n",
+ "n out= (n in + 2x padding - kernel)/stride +1\n",
+ "\n",
+ "n out = (28+2*1-3)/1 +1 =28\n",
+ "\n",
+ "n out= n in\n",
+ "\n",
+ "**Normalization**\n",
+ "The data then passes to a BatchNormalization. Batch Norm is commonly used in CNN to improve the learning speed of Neural Networks and provides regularization, avoiding overfitting.\n",
+ "\n",
+ "**MaxPooling**\n",
+ "Normalized data passes through a MaxPooling. MaxPooling (2,2) reduces the size of the data as it keeps only the highest value of 4. This extracts the most important features reducing the computational load and controlling overfitting.\n",
+ "\n",
+ "The data passess through 4 successives blocks, with for each block an increased number of features (neurons).\n",
+ "\n",
+ "Finally two fully connected layers (fc1, fc2) are defined for classification.\n",
+ "\n",
+ "The first fully connected layer (fc1) takes the flattened output from the convolutional layers and produces a feature vector with 500 dimensions. The second fully connected layer (fc2) further reduces the features to 10, corresponding to the 10 classes.\n",
+ "\n",
+ "**Dropout**\n",
+ "The fc1 layer undergoes a dropout, meaning that a random part of the neurons are turned off. Dropout layers randomly set a fraction of input units to zero during training, which helps prevent o)verfitting by providing a form of regularization.\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "Only small progress was made with the additions, so i decided to test on other dataset, more complex to see if the new CNN was performing better.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#import libraries\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "#number of images that will be used for training\n",
+ "BATCH_SIZE = 32\n",
+ "\n",
+ "## transformations to pytorch tensors\n",
+ "transform = transforms.Compose(\n",
+ " [transforms.ToTensor()])\n",
+ "\n",
+ "## download and load training dataset\n",
+ "!wget www.di.ens.fr/~lelarge/MNIST.tar.gz\n",
+ "!tar -zxvf MNIST.tar.gz\n",
+ "from torchvision.datasets import MNIST\n",
+ "trainset = MNIST(root = './', train=True, download=True, transform=transform)\n",
+ "trainloader = torch.utils.data.DataLoader(trainset, batch_size=BATCH_SIZE,\n",
+ " shuffle=True, num_workers=2)\n",
+ "## download and load testing dataset\n",
+ "testset = MNIST(root = './', train=False, download=True, transform=transform)\n",
+ "testloader = torch.utils.data.DataLoader(testset, batch_size=BATCH_SIZE,\n",
+ " shuffle=False, num_workers=2)\n",
+ "\n",
+ "## functions to show an image\n",
+ "def imshow(img):\n",
+ " npimg = img.numpy()\n",
+ " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
+ "## get some random training images\n",
+ "dataiter = iter(trainloader)\n",
+ "images, labels = next(dataiter)\n",
+ "\n",
+ "for images, labels in trainloader:\n",
+ " print(\"Image batch dimensions:\", images.shape)\n",
+ " print(\"Image label dimensions:\", labels.shape)\n",
+ " print(labels)\n",
+ " break\n",
+ "dataiter2 = iter(trainloader)\n",
+ "images, labels = next(dataiter2)\n",
+ "imshow(torchvision.utils.make_grid(images))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 956
+ },
+ "id": "6MermqnwZlNP",
+ "outputId": "0dd5c93a-a4db-4127-a00f-fbfb77e3df66"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "--2024-04-29 15:28:59-- http://www.di.ens.fr/~lelarge/MNIST.tar.gz\n",
+ "Resolving www.di.ens.fr (www.di.ens.fr)... 129.199.99.14\n",
+ "Connecting to www.di.ens.fr (www.di.ens.fr)|129.199.99.14|:80... connected.\n",
+ "HTTP request sent, awaiting response... 302 Found\n",
+ "Location: https://www.di.ens.fr/~lelarge/MNIST.tar.gz [following]\n",
+ "--2024-04-29 15:29:00-- https://www.di.ens.fr/~lelarge/MNIST.tar.gz\n",
+ "Connecting to www.di.ens.fr (www.di.ens.fr)|129.199.99.14|:443... connected.\n",
+ "HTTP request sent, awaiting response... 200 OK\n",
+ "Length: unspecified [application/x-gzip]\n",
+ "Saving to: ‘MNIST.tar.gz’\n",
+ "\n",
+ "MNIST.tar.gz [ <=> ] 33.20M 6.66MB/s in 5.8s \n",
+ "\n",
+ "2024-04-29 15:29:06 (5.68 MB/s) - ‘MNIST.tar.gz’ saved [34813078]\n",
+ "\n",
+ "MNIST/\n",
+ "MNIST/raw/\n",
+ "MNIST/raw/train-labels-idx1-ubyte\n",
+ "MNIST/raw/t10k-labels-idx1-ubyte.gz\n",
+ "MNIST/raw/t10k-labels-idx1-ubyte\n",
+ "MNIST/raw/t10k-images-idx3-ubyte.gz\n",
+ "MNIST/raw/train-images-idx3-ubyte\n",
+ "MNIST/raw/train-labels-idx1-ubyte.gz\n",
+ "MNIST/raw/t10k-images-idx3-ubyte\n",
+ "MNIST/raw/train-images-idx3-ubyte.gz\n",
+ "MNIST/processed/\n",
+ "MNIST/processed/training.pt\n",
+ "MNIST/processed/test.pt\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/lib/python3.10/multiprocessing/popen_fork.py:66: RuntimeWarning: os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.\n",
+ " self.pid = os.fork()\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Image batch dimensions: torch.Size([32, 1, 28, 28])\n",
+ "Image label dimensions: torch.Size([32])\n",
+ "tensor([6, 1, 6, 5, 2, 7, 2, 4, 9, 1, 2, 9, 9, 2, 6, 2, 3, 5, 1, 0, 7, 7, 8, 7,\n",
+ " 2, 9, 1, 2, 3, 1, 8, 7])\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "###CNN improved_1:\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "\n",
+ "class ImprovedCNN_1(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(ImprovedCNN_1, self).__init__()\n",
+ "\n",
+ " # Convolutional layers\n",
+ " #28*28*1 => 28*28*32 size is kept: n out= (n in+2padding+kernel)/stride\n",
+ " self.conv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, padding=1)\n",
+ " self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, padding=1)\n",
+ " self.conv3 = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1)\n",
+ "\n",
+ " # Batch normalization layers\n",
+ " self.batch_norm1 = nn.BatchNorm2d(32)\n",
+ " self.batch_norm2 = nn.BatchNorm2d(64)\n",
+ " self.batch_norm3 = nn.BatchNorm2d(128)\n",
+ "\n",
+ " # Pooling layers\n",
+ " self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)\n",
+ "\n",
+ " # Fully connected layers\n",
+ " self.fc1 = nn.Linear(128 * 3 * 3, 500)\n",
+ " self.fc2 = nn.Linear(500, 10)\n",
+ "\n",
+ " # Dropout layers\n",
+ " self.dropout = nn.Dropout(0.5)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " x = F.relu(self.batch_norm1(self.conv1(x)))\n",
+ " #print(x.shape) #torch.Size([16, 32, 28, 28])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 32, 14, 14])\n",
+ " x = F.relu(self.batch_norm2(self.conv2(x)))\n",
+ " #print(x.shape) #torch.Size([16, 64, 14, 14])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 64, 7, 7])\n",
+ " x = F.relu(self.batch_norm3(self.conv3(x)))\n",
+ " #print(x.shape) #torch.Size([16, 128, 7, 7])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 128, 3, 3])\n",
+ "\n",
+ " x = x.view(-1, 128 * 3 * 3)\n",
+ " x = F.relu(self.dropout(self.fc1(x)))\n",
+ " x = (self.fc2(x))\n",
+ "\n",
+ " return F.softmax(x, dim=1)\n",
+ "\n",
+ "#training initialisation\n",
+ "learning_rate = 0.001\n",
+ "num_epochs = 1\n",
+ "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = ImprovedCNN_1()\n",
+ "model = model.to(device)\n",
+ "criterion = nn.CrossEntropyLoss() #assess corect = highest score / wrong = lowest\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) #weight update (Adam=one of the way)\n",
+ "\n",
+ "#compute accuracy\n",
+ "def get_accuracy(logit, target, batch_size):\n",
+ " ''' Obtain accuracy for training round '''\n",
+ " corrects = (torch.argmax(logit, 1) == target).sum()\n",
+ " accuracy = 100.0 * corrects/batch_size\n",
+ " return accuracy.item()\n",
+ "\n",
+ "#Training\n",
+ "for epoch in range(num_epochs):\n",
+ " train_running_loss = 0.0\n",
+ " train_acc = 0.0\n",
+ " model = model.train()\n",
+ "\n",
+ " for i, (images, labels) in enumerate(trainloader):\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " ## forward + backprop + loss\n",
+ " logits = model(images)\n",
+ " loss = criterion(logits, labels)\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " ## update model params\n",
+ " optimizer.step()\n",
+ "\n",
+ " train_running_loss += loss.detach().item()\n",
+ " train_acc += get_accuracy(logits, labels, BATCH_SIZE)\n",
+ "\n",
+ " model.eval()\n",
+ " print('Epoch: %d | Loss: %.4f | Train Accuracy: %.2f' \\\n",
+ " %(epoch, train_running_loss / i, train_acc/i))\n",
+ "\n",
+ "#TEST!\n",
+ "test_acc = 0.0\n",
+ "model = model.eval()\n",
+ "for i, (images, labels) in enumerate(testloader, 0):\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " outputs = model(images)\n",
+ " test_acc += get_accuracy(outputs, labels, BATCH_SIZE)\n",
+ "\n",
+ "print('Test Accuracy: %.2f'%( test_acc/i))\n",
+ "\n",
+ "#print test image and respective values attribuated by the CNN\n",
+ "dataiter2 = iter(testloader)\n",
+ "images, labels = next(dataiter2)\n",
+ "imshow(torchvision.utils.make_grid(images))\n",
+ "for images, labels in testloader:\n",
+ " print(\"Image batch dimensions:\", images.shape)\n",
+ " print(\"Image label dimensions:\", labels.shape)\n",
+ " print(labels)\n",
+ " break"
+ ],
+ "metadata": {
+ "id": "hz9_ulnSYiSC",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 425
+ },
+ "outputId": "c4e86de9-f2ce-4da5-90f2-156ed6d36ac8"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch: 0 | Loss: 1.5417 | Train Accuracy: 92.24\n",
+ "Test Accuracy: 97.82\n",
+ "Image batch dimensions: torch.Size([32, 1, 28, 28])\n",
+ "Image label dimensions: torch.Size([32])\n",
+ "tensor([7, 2, 1, 0, 4, 1, 4, 9, 5, 9, 0, 6, 9, 0, 1, 5, 9, 7, 3, 4, 9, 6, 6, 5,\n",
+ " 4, 0, 7, 4, 0, 1, 3, 1])\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "\n",
+ "# ***Classification test on another dataset:***\n",
+ "\n",
+ "I used the CIFAR10 dataset, composed of images of 32x32x3 (RGB). The images represents 10 different classes, dog, cat, plane, bird, deer, frog, horse, car, ship and truck.\n",
+ "For the loading and test, i took the code from:\n",
+ "\n",
+ "https://github.com/patrickloeber/pytorchTutorial/blob/69637721ed9fa2ccf81a1093a928a52bbb591439/14_cnn.py#L26\n",
+ "\n",
+ "In the first place, i tested the model used in class; which achieved a score of approximately 43% classification accuracy.\n",
+ "\n",
+ "Then, i tested the 'improvedCNN_1' model that i have made previously on this dataset. It reaches a classification accuracy of 60.61%% with the same parameters. The model was better to classify more complex datasets.\n",
+ "\n",
+ "To improve it, i added after each BatchNorm a new convolution layer with the same number of feature than the previous one. The idea is to work/learn on the features before a second layer of Batch_Normalization. The following scheme represents the 'improvedCNN_2' architecture that i found out was working the best, with an average accuracy of 64.21%.\n",
+ "\n",
+ "The accuracy score could still be improved by increasing the epoch , but for technical reasons (lack of gpu access) i didn't tried.\n",
+ "\n",
+ "\n"
+ ],
+ "metadata": {
+ "id": "s_Vp7K8laPJ-"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ ""
+ ],
+ "metadata": {
+ "id": "CwgaNrIvwi-Z"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "##test with the model given in class\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
+ "num_epochs = 2\n",
+ "batch_size = 4\n",
+ "learning_rate = 0.001\n",
+ "\n",
+ "transform = transforms.Compose(\n",
+ " [transforms.ToTensor(),\n",
+ " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
+ "train_dataset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size,\n",
+ " shuffle=True)\n",
+ "\n",
+ "test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size,\n",
+ " shuffle=False)\n",
+ "\n",
+ "classes = ('plane', 'car', 'bird', 'cat',\n",
+ " 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n",
+ "\n",
+ "def imshow(img):\n",
+ " img = img / 2 + 0.5 # unnormalize\n",
+ " npimg = img.numpy()\n",
+ " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
+ " plt.show()\n",
+ "# get some random training images\n",
+ "dataiter = iter(train_loader)\n",
+ "images, labels = next(dataiter)\n",
+ "\n",
+ "# show images\n",
+ "imshow(torchvision.utils.make_grid(images))\n",
+ "class MyModel(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(MyModel, self).__init__()\n",
+ "\n",
+ " # 28x28x3 => 26x26x32\n",
+ " self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)\n",
+ " self.d1 = nn.Linear(32 * 30 * 30, 128)\n",
+ " self.d2 = nn.Linear(128, 10)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " # 32 images x1 gray scale x28x28 size => 32 images x32 out_channel x26x26 size reduced after\n",
+ " #conv (filter size 3)\n",
+ " x = self.conv1(x)\n",
+ " x = F.relu(x) #relu f() linear function above f(x<0)=0/ f(x>0)=x\n",
+ "\n",
+ " # flatten => 32 x (32*26*26)\n",
+ " x = x.flatten(start_dim = 1)\n",
+ "\n",
+ " # 32 x (32*26*26) => 32x128\n",
+ " x = self.d1(x)\n",
+ " x = F.relu(x)\n",
+ "\n",
+ " # logits => 32x10\n",
+ " logits = self.d2(x)\n",
+ " out = F.softmax(logits, dim=1) #for prob\n",
+ " return out\n",
+ "#training initialisation\n",
+ "learning_rate = 0.001\n",
+ "num_epochs = 5\n",
+ "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = MyModel()\n",
+ "model = model.to(device)\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "n_total_steps = len(train_loader)\n",
+ "for epoch in range(num_epochs):\n",
+ " for i, (images, labels) in enumerate(train_loader):\n",
+ " # origin shape: [4, 3, 32, 32] = 4, 3, 1024\n",
+ " # input_layer: 3 input channels, 6 output channels, 5 kernel size\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ "\n",
+ " # Forward pass\n",
+ " outputs = model(images)\n",
+ " loss = criterion(outputs, labels)\n",
+ "\n",
+ " # Backward and optimize\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ "\n",
+ " if (i+1) % 2000 == 0:\n",
+ " print (f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{n_total_steps}], Loss: {loss.item():.4f}')\n",
+ "\n",
+ "print('Finished Training')\n",
+ "PATH = './cnn.pth'\n",
+ "torch.save(model.state_dict(), PATH)\n",
+ "\n",
+ "with torch.no_grad():\n",
+ " n_correct = 0\n",
+ " n_samples = 0\n",
+ " n_class_correct = [0 for i in range(10)]\n",
+ " n_class_samples = [0 for i in range(10)]\n",
+ " for images, labels in test_loader:\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " outputs = model(images)\n",
+ " # max returns (value ,index)\n",
+ " _, predicted = torch.max(outputs, 1)\n",
+ " n_samples += labels.size(0)\n",
+ " n_correct += (predicted == labels).sum().item()\n",
+ "\n",
+ " for i in range(batch_size):\n",
+ " label = labels[i]\n",
+ " pred = predicted[i]\n",
+ " if (label == pred):\n",
+ " n_class_correct[label] += 1\n",
+ " n_class_samples[label] += 1\n",
+ "\n",
+ " acc = 100.0 * n_correct / n_samples\n",
+ " print(f'Accuracy of the network: {acc} %')\n",
+ "\n",
+ " for i in range(10):\n",
+ " acc = 100.0 * n_class_correct[i] / n_class_samples[i]\n",
+ " print(f'Accuracy of {classes[i]}: {acc} %')\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "vp9tMim8x9tg",
+ "outputId": "0abb8d10-5f8a-42c4-c700-0bff406c22d2"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 170498071/170498071 [00:12<00:00, 13164580.15it/s]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting ./data/cifar-10-python.tar.gz to ./data\n",
+ "Files already downloaded and verified\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch [1/5], Step [2000/12500], Loss: 2.2500\n",
+ "Epoch [1/5], Step [4000/12500], Loss: 2.2861\n",
+ "Epoch [1/5], Step [6000/12500], Loss: 2.2019\n",
+ "Epoch [1/5], Step [8000/12500], Loss: 2.3399\n",
+ "Epoch [1/5], Step [10000/12500], Loss: 2.1844\n",
+ "Epoch [1/5], Step [12000/12500], Loss: 2.3350\n",
+ "Epoch [2/5], Step [2000/12500], Loss: 2.2429\n",
+ "Epoch [2/5], Step [4000/12500], Loss: 1.9148\n",
+ "Epoch [2/5], Step [6000/12500], Loss: 2.2092\n",
+ "Epoch [2/5], Step [8000/12500], Loss: 2.1233\n",
+ "Epoch [2/5], Step [10000/12500], Loss: 2.3513\n",
+ "Epoch [2/5], Step [12000/12500], Loss: 2.3089\n",
+ "Epoch [3/5], Step [2000/12500], Loss: 1.9413\n",
+ "Epoch [3/5], Step [4000/12500], Loss: 1.8748\n",
+ "Epoch [3/5], Step [6000/12500], Loss: 2.0640\n",
+ "Epoch [3/5], Step [8000/12500], Loss: 2.3102\n",
+ "Epoch [3/5], Step [10000/12500], Loss: 1.7880\n",
+ "Epoch [3/5], Step [12000/12500], Loss: 2.2529\n",
+ "Epoch [4/5], Step [2000/12500], Loss: 2.3574\n",
+ "Epoch [4/5], Step [4000/12500], Loss: 2.1306\n",
+ "Epoch [4/5], Step [6000/12500], Loss: 1.9520\n",
+ "Epoch [4/5], Step [8000/12500], Loss: 1.9843\n",
+ "Epoch [4/5], Step [10000/12500], Loss: 2.2214\n",
+ "Epoch [4/5], Step [12000/12500], Loss: 2.2852\n",
+ "Epoch [5/5], Step [2000/12500], Loss: 2.1417\n",
+ "Epoch [5/5], Step [4000/12500], Loss: 2.0747\n",
+ "Epoch [5/5], Step [6000/12500], Loss: 2.0788\n",
+ "Epoch [5/5], Step [8000/12500], Loss: 2.2452\n",
+ "Epoch [5/5], Step [10000/12500], Loss: 2.0212\n",
+ "Epoch [5/5], Step [12000/12500], Loss: 2.1687\n",
+ "Finished Training\n",
+ "Accuracy of the network: 43.33 %\n",
+ "Accuracy of plane: 44.0 %\n",
+ "Accuracy of car: 47.5 %\n",
+ "Accuracy of bird: 25.4 %\n",
+ "Accuracy of cat: 23.6 %\n",
+ "Accuracy of deer: 24.3 %\n",
+ "Accuracy of dog: 36.2 %\n",
+ "Accuracy of frog: 66.6 %\n",
+ "Accuracy of horse: 51.9 %\n",
+ "Accuracy of ship: 56.1 %\n",
+ "Accuracy of truck: 57.7 %\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#Classification with improvedCNN_1\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
+ "batch_size = 4\n",
+ "\n",
+ "transform = transforms.Compose(\n",
+ " [transforms.ToTensor(),\n",
+ " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
+ "\n",
+ "train_dataset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size,\n",
+ " shuffle=True)\n",
+ "\n",
+ "test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size,\n",
+ " shuffle=False)\n",
+ "\n",
+ "classes = ('plane', 'car', 'bird', 'cat',\n",
+ " 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n",
+ "\n",
+ "def imshow(img):\n",
+ " img = img / 2 + 0.5 # unnormalize\n",
+ " npimg = img.numpy()\n",
+ " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
+ " plt.show()\n",
+ "\n",
+ "# get some random training images\n",
+ "dataiter = iter(train_loader)\n",
+ "images, labels = next(dataiter)\n",
+ "\n",
+ "# show images\n",
+ "imshow(torchvision.utils.make_grid(images))\n",
+ "\n",
+ "class ImprovedCNN_1(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(ImprovedCNN_1, self).__init__()\n",
+ "\n",
+ " # Convolutional layers\n",
+ " # 32*32*3 => 32*32*32\n",
+ " self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, padding=1)\n",
+ " self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, padding=1)\n",
+ " self.conv3 = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1)\n",
+ "\n",
+ " # Batch normalization layers\n",
+ " self.batch_norm1 = nn.BatchNorm2d(32)\n",
+ " self.batch_norm2 = nn.BatchNorm2d(64)\n",
+ " self.batch_norm3 = nn.BatchNorm2d(128)\n",
+ "\n",
+ " # Pooling layers\n",
+ " self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)\n",
+ "\n",
+ " # Fully connected layers\n",
+ " self.fc1 = nn.Linear(128 * 4 * 4, 500)\n",
+ " self.fc2 = nn.Linear(500, 10)\n",
+ "\n",
+ " # Dropout layers\n",
+ " self.dropout = nn.Dropout(0.25)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " x = F.relu(self.batch_norm1(self.conv1(x)))\n",
+ " #print(x.shape) #torch.Size([16, 32, 32, 32])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 32, 16, 16])\n",
+ " x = F.relu(self.batch_norm2(self.conv2(x)))\n",
+ " #print(x.shape) #torch.Size([16, 64, 16, 16])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 64, 8, 8])\n",
+ " x = F.relu(self.batch_norm3(self.conv3(x)))\n",
+ " #print(x.shape) #torch.Size([16, 128, 8, 8])\n",
+ " x = self.pool(x)\n",
+ " #print(x.shape) #torch.Size([16, 128, 4, 4])\n",
+ "\n",
+ " #flatenning\n",
+ " x = x.view(-1, 128 * 4 * 4)\n",
+ " x = F.relu(self.dropout(self.fc1(x)))\n",
+ " x = self.fc2(x)\n",
+ "\n",
+ "\n",
+ " return F.softmax(x, dim=1)\n",
+ "\n",
+ "#training initialisation\n",
+ "learning_rate = 0.001\n",
+ "num_epochs = 5\n",
+ "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = ImprovedCNN_1()\n",
+ "model = model.to(device)\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "n_total_steps = len(train_loader)\n",
+ "for epoch in range(num_epochs):\n",
+ " for i, (images, labels) in enumerate(train_loader):\n",
+ " # origin shape: [4, 3, 32, 32] = 4, 3, 1024\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ "\n",
+ " # Forward pass\n",
+ " outputs = model(images)\n",
+ " loss = criterion(outputs, labels)\n",
+ "\n",
+ " # Backward and optimize\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ "\n",
+ " if (i+1) % 2000 == 0:\n",
+ " print (f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{n_total_steps}], Loss: {loss.item():.4f}')\n",
+ "\n",
+ "print('Finished Training')\n",
+ "PATH = './cnn.pth'\n",
+ "torch.save(model.state_dict(), PATH)\n",
+ "\n",
+ "with torch.no_grad():\n",
+ " n_correct = 0\n",
+ " n_samples = 0\n",
+ " n_class_correct = [0 for i in range(10)]\n",
+ " n_class_samples = [0 for i in range(10)]\n",
+ " for images, labels in test_loader:\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " outputs = model(images)\n",
+ " # max returns (value ,index)\n",
+ " _, predicted = torch.max(outputs, 1)\n",
+ " n_samples += labels.size(0)\n",
+ " n_correct += (predicted == labels).sum().item()\n",
+ "\n",
+ " for i in range(batch_size):\n",
+ " label = labels[i]\n",
+ " pred = predicted[i]\n",
+ " if (label == pred):\n",
+ " n_class_correct[label] += 1\n",
+ " n_class_samples[label] += 1\n",
+ "\n",
+ " acc = 100.0 * n_correct / n_samples\n",
+ " print(f'Accuracy of the network: {acc} %')\n",
+ "\n",
+ " for i in range(10):\n",
+ " acc = 100.0 * n_class_correct[i] / n_class_samples[i]\n",
+ " print(f'Accuracy of {classes[i]}: {acc} %')\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "iVqai5uUpSIR",
+ "outputId": "f55ae2bc-4db4-4b61-fe82-b27bcedde247"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 170498071/170498071 [00:04<00:00, 40591720.62it/s]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting ./data/cifar-10-python.tar.gz to ./data\n",
+ "Files already downloaded and verified\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch [1/5], Step [2000/12500], Loss: 2.2904\n",
+ "Epoch [1/5], Step [4000/12500], Loss: 2.3696\n",
+ "Epoch [1/5], Step [6000/12500], Loss: 1.9452\n",
+ "Epoch [1/5], Step [8000/12500], Loss: 2.0962\n",
+ "Epoch [1/5], Step [10000/12500], Loss: 1.9441\n",
+ "Epoch [1/5], Step [12000/12500], Loss: 2.1225\n",
+ "Epoch [2/5], Step [2000/12500], Loss: 1.9900\n",
+ "Epoch [2/5], Step [4000/12500], Loss: 2.1098\n",
+ "Epoch [2/5], Step [6000/12500], Loss: 1.9578\n",
+ "Epoch [2/5], Step [8000/12500], Loss: 2.0537\n",
+ "Epoch [2/5], Step [10000/12500], Loss: 1.8941\n",
+ "Epoch [2/5], Step [12000/12500], Loss: 1.9193\n",
+ "Epoch [3/5], Step [2000/12500], Loss: 1.7423\n",
+ "Epoch [3/5], Step [4000/12500], Loss: 1.9975\n",
+ "Epoch [3/5], Step [6000/12500], Loss: 1.8441\n",
+ "Epoch [3/5], Step [8000/12500], Loss: 1.7907\n",
+ "Epoch [3/5], Step [10000/12500], Loss: 1.7173\n",
+ "Epoch [3/5], Step [12000/12500], Loss: 2.3106\n",
+ "Epoch [4/5], Step [2000/12500], Loss: 1.4880\n",
+ "Epoch [4/5], Step [4000/12500], Loss: 2.0121\n",
+ "Epoch [4/5], Step [6000/12500], Loss: 1.5480\n",
+ "Epoch [4/5], Step [8000/12500], Loss: 1.8149\n",
+ "Epoch [4/5], Step [10000/12500], Loss: 1.7194\n",
+ "Epoch [4/5], Step [12000/12500], Loss: 1.7027\n",
+ "Epoch [5/5], Step [2000/12500], Loss: 2.0833\n",
+ "Epoch [5/5], Step [4000/12500], Loss: 1.6716\n",
+ "Epoch [5/5], Step [6000/12500], Loss: 1.5240\n",
+ "Epoch [5/5], Step [8000/12500], Loss: 1.7555\n",
+ "Epoch [5/5], Step [10000/12500], Loss: 1.9492\n",
+ "Epoch [5/5], Step [12000/12500], Loss: 1.8993\n",
+ "Finished Training\n",
+ "Accuracy of the network: 60.61 %\n",
+ "Accuracy of plane: 67.9 %\n",
+ "Accuracy of car: 74.8 %\n",
+ "Accuracy of bird: 41.9 %\n",
+ "Accuracy of cat: 21.2 %\n",
+ "Accuracy of deer: 45.2 %\n",
+ "Accuracy of dog: 62.0 %\n",
+ "Accuracy of frog: 72.9 %\n",
+ "Accuracy of horse: 71.0 %\n",
+ "Accuracy of ship: 73.8 %\n",
+ "Accuracy of truck: 75.4 %\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#Classification with ImprovedCNN_2\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
+ "batch_size = 4\n",
+ "learning_rate = 0.001\n",
+ "\n",
+ "transform = transforms.Compose(\n",
+ " [transforms.ToTensor(),\n",
+ " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n",
+ "\n",
+ "train_dataset = torchvision.datasets.CIFAR10(root='./data', train=True,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False,\n",
+ " download=True, transform=transform)\n",
+ "\n",
+ "train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size,\n",
+ " shuffle=True)\n",
+ "\n",
+ "test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size,\n",
+ " shuffle=False)\n",
+ "\n",
+ "classes = ('plane', 'car', 'bird', 'cat',\n",
+ " 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n",
+ "\n",
+ "def imshow(img):\n",
+ " img = img / 2 + 0.5 # unnormalize\n",
+ " npimg = img.numpy()\n",
+ " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
+ " plt.show()\n",
+ "\n",
+ "# get some random training images\n",
+ "dataiter = iter(train_loader)\n",
+ "images, labels = next(dataiter)\n",
+ "\n",
+ "# show images\n",
+ "imshow(torchvision.utils.make_grid(images))\n",
+ "\n",
+ "class ImprovedCNN_2(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(ImprovedCNN_2, self).__init__()\n",
+ "\n",
+ " # Convolutional layers\n",
+ " self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, padding=1)\n",
+ " self.conv2 = nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3, padding=1)\n",
+ " self.conv3 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, padding=1)\n",
+ " self.conv4 = nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1)\n",
+ " self.conv5 = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1)\n",
+ " self.conv6 = nn.Conv2d(in_channels=128, out_channels=128, kernel_size=3, padding=1)\n",
+ "\n",
+ " # Batch normalization layers\n",
+ " self.batch_norm1 = nn.BatchNorm2d(32)\n",
+ " self.batch_norm2 = nn.BatchNorm2d(32)\n",
+ " self.batch_norm3 = nn.BatchNorm2d(64)\n",
+ " self.batch_norm4 = nn.BatchNorm2d(64)\n",
+ " self.batch_norm5 = nn.BatchNorm2d(128)\n",
+ " self.batch_norm6 = nn.BatchNorm2d(128)\n",
+ "\n",
+ " # Pooling layers\n",
+ " self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)\n",
+ "\n",
+ " # Fully connected layers\n",
+ " self.fc1 = nn.Linear(128 * 4 * 4, 500)\n",
+ " self.fc2 = nn.Linear(500, 10)\n",
+ "\n",
+ " # Dropout layers\n",
+ " self.dropout = nn.Dropout(0.25)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " #Block1\n",
+ " x = F.relu(self.batch_norm1(self.conv1(x)))\n",
+ " x = F.relu(self.batch_norm2(self.conv2(x)))\n",
+ " x = self.pool(x)\n",
+ " #Block2\n",
+ " x = F.relu(self.batch_norm3(self.conv3(x)))\n",
+ " x = F.relu(self.batch_norm4(self.conv4(x)))\n",
+ " x = self.pool(x)\n",
+ " #Block3\n",
+ " x = F.relu(self.batch_norm5(self.conv5(x)))\n",
+ " x = F.relu(self.batch_norm6(self.conv6(x)))\n",
+ " x = self.pool(x)\n",
+ " #flatenning\n",
+ " x = x.view(-1, 128 * 4 * 4)\n",
+ " x = F.relu(self.dropout(self.fc1(x)))\n",
+ " #classification\n",
+ " x = self.fc2(x)\n",
+ "\n",
+ " return F.softmax(x, dim=1)\n",
+ "\n",
+ "#training initialisation\n",
+ "learning_rate = 0.001\n",
+ "num_epochs = 5\n",
+ "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = ImprovedCNN_2()\n",
+ "model = model.to(device)\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "criterion = nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n",
+ "\n",
+ "n_total_steps = len(train_loader)\n",
+ "for epoch in range(num_epochs):\n",
+ " for i, (images, labels) in enumerate(train_loader):\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ "\n",
+ " # Forward pass\n",
+ " outputs = model(images)\n",
+ " loss = criterion(outputs, labels)\n",
+ "\n",
+ " # Backward and optimize\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ "\n",
+ " if (i+1) % 2000 == 0:\n",
+ " print (f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{n_total_steps}], Loss: {loss.item():.4f}')\n",
+ "\n",
+ "print('Finished Training')\n",
+ "PATH = './cnn.pth'\n",
+ "torch.save(model.state_dict(), PATH)\n",
+ "\n",
+ "with torch.no_grad():\n",
+ " n_correct = 0\n",
+ " n_samples = 0\n",
+ " n_class_correct = [0 for i in range(10)]\n",
+ " n_class_samples = [0 for i in range(10)]\n",
+ " for images, labels in test_loader:\n",
+ " images = images.to(device)\n",
+ " labels = labels.to(device)\n",
+ " outputs = model(images)\n",
+ " # max returns (value ,index)\n",
+ " _, predicted = torch.max(outputs, 1)\n",
+ " n_samples += labels.size(0)\n",
+ " n_correct += (predicted == labels).sum().item()\n",
+ "\n",
+ " for i in range(batch_size):\n",
+ " label = labels[i]\n",
+ " pred = predicted[i]\n",
+ " if (label == pred):\n",
+ " n_class_correct[label] += 1\n",
+ " n_class_samples[label] += 1\n",
+ "\n",
+ " acc = 100.0 * n_correct / n_samples\n",
+ " print(f'Accuracy of the network: {acc} %')\n",
+ "\n",
+ " for i in range(10):\n",
+ " acc = 100.0 * n_class_correct[i] / n_class_samples[i]\n",
+ " print(f'Accuracy of {classes[i]}: {acc} %')\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 997
+ },
+ "id": "9r6wxc_26aJt",
+ "outputId": "c48aa050-5582-4256-aead-862db203bace"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Files already downloaded and verified\n",
+ "Files already downloaded and verified\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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\n"
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch [1/5], Step [2000/12500], Loss: 2.3121\n",
+ "Epoch [1/5], Step [4000/12500], Loss: 2.2111\n",
+ "Epoch [1/5], Step [6000/12500], Loss: 2.0616\n",
+ "Epoch [1/5], Step [8000/12500], Loss: 2.1760\n",
+ "Epoch [1/5], Step [10000/12500], Loss: 2.1718\n",
+ "Epoch [1/5], Step [12000/12500], Loss: 2.2055\n",
+ "Epoch [2/5], Step [2000/12500], Loss: 2.2895\n",
+ "Epoch [2/5], Step [4000/12500], Loss: 1.9990\n",
+ "Epoch [2/5], Step [6000/12500], Loss: 2.1297\n",
+ "Epoch [2/5], Step [8000/12500], Loss: 1.8548\n",
+ "Epoch [2/5], Step [10000/12500], Loss: 1.9049\n",
+ "Epoch [2/5], Step [12000/12500], Loss: 1.6000\n",
+ "Epoch [3/5], Step [2000/12500], Loss: 1.9094\n",
+ "Epoch [3/5], Step [4000/12500], Loss: 2.0642\n",
+ "Epoch [3/5], Step [6000/12500], Loss: 1.6892\n",
+ "Epoch [3/5], Step [8000/12500], Loss: 1.8924\n",
+ "Epoch [3/5], Step [10000/12500], Loss: 1.7784\n",
+ "Epoch [3/5], Step [12000/12500], Loss: 1.7349\n",
+ "Epoch [4/5], Step [2000/12500], Loss: 1.9840\n",
+ "Epoch [4/5], Step [4000/12500], Loss: 2.2062\n",
+ "Epoch [4/5], Step [6000/12500], Loss: 1.6690\n",
+ "Epoch [4/5], Step [8000/12500], Loss: 1.8863\n",
+ "Epoch [4/5], Step [10000/12500], Loss: 1.9969\n",
+ "Epoch [4/5], Step [12000/12500], Loss: 1.6891\n",
+ "Epoch [5/5], Step [2000/12500], Loss: 2.0532\n",
+ "Epoch [5/5], Step [4000/12500], Loss: 2.0082\n",
+ "Epoch [5/5], Step [6000/12500], Loss: 1.4708\n",
+ "Epoch [5/5], Step [8000/12500], Loss: 1.9425\n",
+ "Epoch [5/5], Step [10000/12500], Loss: 1.9845\n",
+ "Epoch [5/5], Step [12000/12500], Loss: 1.7794\n",
+ "Finished Training\n",
+ "Accuracy of the network: 64.21 %\n",
+ "Accuracy of plane: 84.7 %\n",
+ "Accuracy of car: 80.9 %\n",
+ "Accuracy of bird: 37.4 %\n",
+ "Accuracy of cat: 39.3 %\n",
+ "Accuracy of deer: 54.9 %\n",
+ "Accuracy of dog: 42.2 %\n",
+ "Accuracy of frog: 72.7 %\n",
+ "Accuracy of horse: 71.9 %\n",
+ "Accuracy of ship: 76.3 %\n",
+ "Accuracy of truck: 81.8 %\n"
+ ]
+ }
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "T4",
+ "provenance": [],
+ "collapsed_sections": [
+ "7TVr2t_ntPPD",
+ "hhuQyU7AYE6K",
+ "0nZwZukWXUDn",
+ "9h_3eZQRHV_P"
+ ],
+ "toc_visible": true,
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/week_0/ex_0_advanced/ex_0_advanced_runfile.py b/week_0/ex_0_advanced/ex_0_advanced_runfile.py
index ca4c2ba..6808f35 100644
--- a/week_0/ex_0_advanced/ex_0_advanced_runfile.py
+++ b/week_0/ex_0_advanced/ex_0_advanced_runfile.py
@@ -1 +1,29 @@
-#YOUR CODE FOR EX_0 ADVANCED HERE
\ No newline at end of file
+while True:
+ sequence = str(input("enter your DNA sequence: "))
+ sequence = sequence.upper()
+ valid = True
+ for i in sequence:
+ if i not in "ATGC":
+ print("please enter a valid DNA sequence (ATGC)")
+ valid = False
+ break
+ if valid:
+ break
+sequence_length = int(len(sequence))
+nA = sequence.count("A")
+nT = sequence.count("T")
+nG = sequence.count("G")
+nC = sequence.count("C")
+GC_content = nG + nC
+GC = ((GC_content)/sequence_length)
+print("sequence length =" +str(sequence_length))
+print("number of A: " +str(nA))
+print("number of T: " +str(nT))
+print("number of G: " +str(nG))
+print("number of C: " +str(nC))
+print("number of GC= " +str(GC_content), end="")
+print(" with a proportion of" + str(GC))
+if GC > 0.5:
+ print(" Your sequence is rich in GC")
+else:
+ print(" Your sequence is poor in GC")
\ No newline at end of file
diff --git a/week_0/ex_0_beginner/ex_0_beginner_runfile.py b/week_0/ex_0_beginner/ex_0_beginner_runfile.py
index b3db532..c7c556b 100644
--- a/week_0/ex_0_beginner/ex_0_beginner_runfile.py
+++ b/week_0/ex_0_beginner/ex_0_beginner_runfile.py
@@ -1,5 +1,6 @@
import this
-print("\n"+"TYPE YOUR RESPONSE TO PROMPT 1 HERE")
-
-print("\n"+"TYPE YOUR RESPONSE TO PROMPT 2 HERE")
\ No newline at end of file
+print("1- Hi, my name is ilias SIMON, i'm a M2 student following the CARe graduate program.")
+print("I wish to persue my career in biology with a phd and i found out how much developing", end="")
+print(" and coding was important for several life-changing applications in this field.")
+print("2- never i guess x)")
\ No newline at end of file
diff --git a/week_0/ex_0_beginner/ex_0_beginner_submit.txt b/week_0/ex_0_beginner/ex_0_beginner_submit.txt
index b4d44a7..bc3eae5 100644
--- a/week_0/ex_0_beginner/ex_0_beginner_submit.txt
+++ b/week_0/ex_0_beginner/ex_0_beginner_submit.txt
@@ -1 +1,3 @@
-Copy and paste output of ex_0_beginner_runfile.py below:
+1- Hi, my name is ilias SIMON, i'm a M2 student following the CARe graduate program.
+I wish to persue my career in biology with a phd and i found out how much developing and coding was important for several life-changing applications in this field.
+2- never i guess x)
diff --git a/week_0/ex_0_intermediate/ex_0_intermediate_instructions.txt b/week_0/ex_0_intermediate/ex_0_intermediate_instructions.txt
index 63f9808..a5a644b 100644
--- a/week_0/ex_0_intermediate/ex_0_intermediate_instructions.txt
+++ b/week_0/ex_0_intermediate/ex_0_intermediate_instructions.txt
@@ -6,4 +6,5 @@ Intermediate Homework Assignments (1.5 points):
and final cell counts and the time elapsed.
- Prompt the user to input the initial count, final count, and time.
- Calculate and display the growth rate using the formula: Growth Rate = (ln(final count) - ln(initial count)) / time.
-- Ensure that the program handles invalid input gracefully.
\ No newline at end of file
+- Ensure that the program handles invalid input gracefully.
+
diff --git a/week_0/ex_0_intermediate/ex_0_intermediate_runfile.py b/week_0/ex_0_intermediate/ex_0_intermediate_runfile.py
index 919a326..43507fe 100644
--- a/week_0/ex_0_intermediate/ex_0_intermediate_runfile.py
+++ b/week_0/ex_0_intermediate/ex_0_intermediate_runfile.py
@@ -1 +1,19 @@
-#YOUR CODE FOR EX_0 INTERMEDIATE HERE
\ No newline at end of file
+print("this program will calculate the Microbial Growth Rate based on your parameters, follow the instructions.")
+while True :
+ start= input("Enter the number of cells at the beginning: ")
+ end= input("Enter the number of cells at the end: ")
+ time= input("enter the time between start and end: ")
+ valid = True
+ lst = [start,end,time]
+ for i in lst:
+ if i.isdigit():
+ valid= True
+ else:
+ valid= False
+ if valid:
+ break
+ else:
+ print("please enter a numerical value")
+import math
+Growth_rate= (math.log(int(end))-math.log(int(start)))/int(time)
+print("This population of cells have a GR of " + str(Growth_rate))
diff --git a/week_1/ex_1_advanced/ex_1_advanced_runfile.py b/week_1/ex_1_advanced/ex_1_advanced_runfile.py
index 7adfa29..30581e2 100644
--- a/week_1/ex_1_advanced/ex_1_advanced_runfile.py
+++ b/week_1/ex_1_advanced/ex_1_advanced_runfile.py
@@ -1 +1,16 @@
-#YOUR CODE FOR EX_1 ADVANCED HERE
\ No newline at end of file
+#YOUR CODE FOR EX_1 ADVANCED HERE
+def str_sup(file_name, str_suppressed):
+ with open(file_name,'r', encoding='utf-8') as file:
+ content= file.read()
+ content= content.replace(str_suppressed,'')
+ with open(file_name,'w', encoding='utf-8') as file:
+ file.write(content)
+ return f"string {str_suppressed} was removed from {file_name}"
+
+file_name1= "references_1.txt"
+file_name2= "references_2.txt"
+str_space= " "
+ref1= str_sup(file_name1, str_space)
+ref2= str_sup(file_name2,str_space)
+print(ref1)
+print(ref2)
diff --git a/week_1/ex_1_advanced/references_1.txt b/week_1/ex_1_advanced/references_1.txt
index 41c3132..3ca8177 100644
--- a/week_1/ex_1_advanced/references_1.txt
+++ b/week_1/ex_1_advanced/references_1.txt
@@ -1,63 +1,63 @@
References
-1. Sung H, Ferlay J, Siegel RL, Laversanne M, Soerjomataram I, Jemal A, et al. Global Cancer Statistics 2020: GLOBOCAN Estimates of Incidence and Mortality Worldwide for 36 Cancers in 185 Countries. CA: A Cancer Journal for Clinicians. 2021;71(3):209–49.
-2. Yang JD, Hainaut P, Gores GJ, Amadou A, Plymoth A, Roberts LR. A global view of hepatocellular carcinoma: trends, risk, prevention and management. Nature Reviews Gastroenterology & Hepatology. 2019 Oct;16(10):589–604.
-3. Wertheim JA, Petrowsky H, Saab S, Kupiec-Weglinski JW, Busuttil RW. Major Challenges Limiting Liver Transplantation in the United States. Am J Transplant. 2011 Sep;11(9):1773–84.
-4. Llovet JM, Montal R, Sia D, Finn RS. Molecular therapies and precision medicine for hepatocellular carcinoma. Nature Reviews Clinical Oncology. 2018 Oct;15(10):599–616.
-5. Calderaro J, Ziol M, Paradis V, Zucman-Rossi J. Molecular and histological correlations in liver cancer. J Hepatol. 2019 Sep;71(3):616–30.
-6. Uchiyama Y, Shibata M, Koike M, Yoshimura K, Sasaki M. Autophagy–physiology and pathophysiology. Histochem Cell Biol. 2008 Apr;129(4):407–20.
-7. Hamaï A, Codogno P. New Targets for Acetylation in Autophagy. Sci Signal. 2012 Jul 3;5(231):pe29–pe29.
-8. Lee YJ, Jang BK. The Role of Autophagy in Hepatocellular Carcinoma. Int J Mol Sci. 2015 Nov 6;16(11):26629–43.
-9. Yazdani HO, Huang H, Tsung A. Autophagy: Dual Response in the Development of Hepatocellular Carcinoma. Cells. 2019 Jan 28;8(2):91.
-10. Liu L, Liao J-Z, He X-X, Li P-Y. The role of autophagy in hepatocellular carcinoma: friend or foe. Oncotarget. 2017 Apr 18;8(34):57707–22.
-11. Aunan JR, Cho WC, Søreide K. The Biology of Aging and Cancer: A Brief Overview of Shared and Divergent Molecular Hallmarks. Aging Dis. 2017 Oct;8(5):628–42.
-12. Singh SS, Vats S, Chia AY-Q, Tan TZ, Deng S, Ong MS, et al. Dual role of autophagy in hallmarks of cancer. Oncogene. 2018 Mar;37(9):1142–58.
-13. Yun CW, Lee SH. The Roles of Autophagy in Cancer. Int J Mol Sci. 2018 Nov 5;19(11):3466.
-14. Nazio F, Bordi M, Cianfanelli V, Locatelli F, Cecconi F. Autophagy and cancer stem cells: molecular mechanisms and therapeutic applications. Cell Death Differ. 2019 Mar;26(4):690–702.
-15. Ueno T, Komatsu M. Autophagy in the liver: functions in health and disease. Nat Rev Gastroenterol Hepatol. 2017 Mar;14(3):170–84.
-16. Inami Y, Waguri S, Sakamoto A, Kouno T, Nakada K, Hino O, et al. Persistent activation of Nrf2 through p62 in hepatocellular carcinoma cells. J Cell Biol. 2011 Apr 18;193(2):275–84.
-17. Denk H, Stumptner C, Fuchsbichler A, Müller T, Farr G, Müller W, et al. Are the Mallory bodies and intracellular hyaline bodies in neoplastic and non-neoplastic hepatocytes related? J Pathol. 2006 Apr;208(5):653–61.
-18. Umemura A, He F, Taniguchi K, Nakagawa H, Yamachika S, Font-Burgada J, et al. p62, Upregulated during Preneoplasia, Induces Hepatocellular Carcinogenesis by Maintaining Survival of Stressed HCC-Initiating Cells. Cancer Cell. 2016 13;29(6):935–48.
-19. Lin C-W, Chen Y-S, Lin C-C, Lee P-H, Lo G-H, Hsu C-C, et al. Autophagy-related gene LC3 expression in tumor and liver microenvironments significantly predicts recurrence of hepatocellular carcinoma after surgical resection. Clinical and Translational Gastroenterology. 2018 Jun;9(6):e166.
-20. Chang Y, Yan W, He X, Zhang L, Li C, Huang H, et al. miR-375 Inhibits Autophagy and Reduces Viability of Hepatocellular Carcinoma Cells Under Hypoxic Conditions. Gastroenterology. 2012 Jul 1;143(1):177-187.e8.
-21. Sun K, Guo X, Zhao Q, jing Y, Kou X, Xie X, et al. Paradoxical role of autophagy in the dysplastic and tumor-forming stages of hepatocarcinoma development in rats. Cell Death Dis. 2013 Feb;4(2):e501.
-22. Hu T, Li P, Luo Z, Chen X, Zhang J, Wang C, et al. Chloroquine inhibits hepatocellular carcinoma cell growth in vitro and in vivo. Oncol Rep. 2016 Jan;35(1):43–9.
-23. Ding Z-B, Hui B, Shi Y-H, Zhou J, Peng Y-F, Gu C-Y, et al. Autophagy Activation in Hepatocellular Carcinoma Contributes to the Tolerance of Oxaliplatin via Reactive Oxygen Species Modulation. Clin Cancer Res. 2011 Oct 1;17(19):6229–38.
-24. Chen L-H, Loong C-C, Su T-L, Lee Y-J, Chu P-M, Tsai M-L, et al. Autophagy inhibition enhances apoptosis triggered by BO-1051, an N-mustard derivative, and involves the ATM signaling pathway. Biochem Pharmacol. 2011 Mar 1;81(5):594–605.
-25. Hui B, Shi Y-H, Ding Z-B, Zhou J, Gu C-Y, Peng Y-F, et al. Proteasome inhibitor interacts synergistically with autophagy inhibitor to suppress proliferation and induce apoptosis in hepatocellular carcinoma. Cancer. 2012;118(22):5560–71.
-26. Du H, Yang W, Chen L, Shi M, Seewoo V, Wang J, et al. Role of autophagy in resistance to oxaliplatin in hepatocellular carcinoma cells. Oncol Rep. 2012 Jan;27(1):143–50.
-27. Himizu S, Takehara T, Hikita H, Kodama T, Tsunematsu H, Miyagi T, et al. Inhibition of autophagy potentiates the antitumor effect of the multikinase inhibitor sorafenib in hepatocellular carcinoma. International Journal of Cancer. 2012;131(3):548–57.
-28. Guo X, Li D, Hu F, Song J, Zhang S, Deng W, et al. Targeting autophagy potentiates chemotherapy-induced apoptosis and proliferation inhibition in hepatocarcinoma cells. Cancer Letters. 2012 Jul 28;320(2):171–9.
-29. Guo X, Li D, Sun K, Wang J, Liu Y, Song J, et al. Inhibition of autophagy enhances anticancer effects of bevacizumab in hepatocarcinoma. J Mol Med (Berl). 2013 Apr;91(4):473–83.
-30. Gao L, Song J, Zhang J, Zhao X, Zhao Q, Sun K, et al. Chloroquine Promotes the Anticancer Effect of TACE in a Rabbit VX2 Liver Tumor Model. Int J Biol Sci. 2013 Mar 28;9(4):322–30.
-31. Chang Z, Shi G, Jin J, Guo H, Guo X, Luo F, et al. Dual PI3K/mTOR inhibitor NVP-BEZ235-induced apoptosis of hepatocellular carcinoma cell lines is enhanced by inhibitors of autophagy. Int J Mol Med. 2013 Jun;31(6):1449–56.
-32. Yuan H, Li A-J, Ma S-L, Cui L-J, Wu B, Yin L, et al. Inhibition of autophagy significantly enhances combination therapy with sorafenib and HDAC inhibitors for human hepatoma cells. World J Gastroenterol. 2014 May 7;20(17):4953–62.
-33. Tong Y, Huang H, Pan H. Inhibition of MEK/ERK activation attenuates autophagy and potentiates pemetrexed-induced activity against HepG2 hepatocellular carcinoma cells. Biochem Biophys Res Commun. 2015 Jan 2;456(1):86–91.
-34. Zhang N, Xie H, Lu W, Li F, Li J, Guo Z. Chloroquine sensitizes hepatocellular carcinoma cells to chemotherapy via blocking autophagy and promoting mitochondrial dysfunction. Int J Clin Exp Pathol. 2017 Sep 1;10(9):10056–65.
-35. Pérez-Hernández M, Arias A, Martínez-García D, Pérez-Tomás R, Quesada R, Soto-Cerrato V. Targeting Autophagy for Cancer Treatment and Tumor Chemosensitization. Cancers (Basel). 2019 Oct 19;11(10):1599.
-36. Gao M, Yeh PY, Lu Y-S, Hsu C-H, Chen K-F, Lee W-C, et al. OSU-03012, a novel celecoxib derivative, induces reactive oxygen species-related autophagy in hepatocellular carcinoma. Cancer Res. 2008 Nov 15;68(22):9348–57.
-37. Liu Y-L, Yang P-M, Shun C-T, Wu M-S, Weng J-R, Chen C-C. Autophagy potentiates the anti-cancer effects of the histone deacetylase inhibitors in hepatocellular carcinoma. Autophagy. 2010 Nov;6(8):1057–65.
-38. Wang N, Pan W, Zhu M, Zhang M, Hao X, Liang G, et al. Fangchinoline induces autophagic cell death via p53/sestrin2/AMPK signalling in human hepatocellular carcinoma cells. Br J Pharmacol. 2011 Sep;164(2b):731–42.
-39. Li P, Du Q, Cao Z, Guo Z, Evankovich J, Yan W, et al. Interferon-gamma induces autophagy with growth inhibition and cell death in human hepatocellular carcinoma (HCC) cells through interferon-regulatory factor-1 (IRF-1). Cancer Lett. 2012 Jan 28;314(2):213–22.
-40. Yu H-C, Lin C-S, Tai W-T, Liu C-Y, Shiau C-W, Chen K-F. Nilotinib Induces Autophagy in Hepatocellular Carcinoma through AMPK Activation. J Biol Chem. 2013 Jun 21;288(25):18249–59.
-41. Hu M, Huang H, Zhao R, Li P, Li M, Miao H, et al. AZD8055 induces cell death associated with autophagy and activation of AMPK in hepatocellular carcinoma. Oncol Rep. 2014 Feb;31(2):649–56.
-42. Chen Y-J, Chi C-W, Su W-C, Huang H-L. Lapatinib induces autophagic cell death and inhibits growth of human hepatocellular carcinoma. Oncotarget. 2014 Jul 15;5(13):4845–54.
-43. Shi Y, Song Q, Hu D, Zhuang X, Yu S, Teng D. Oleanolic acid induced autophagic cell death in hepatocellular carcinoma cells via PI3K/Akt/mTOR and ROS-dependent pathway. Korean J Physiol Pharmacol. 2016 May;20(3):237–43.
-44. Han B, Yu Y-Q, Yang Q-L, Shen C-Y, Wang X-J. Kaempferol induces autophagic cell death of hepatocellular carcinoma cells via activating AMPK signaling. Oncotarget. 2017 Sep 16;8(49):86227–39.
-45. Leu Y-S, Chen Y-J, Chen C-C, Huang H-L. Induction of Autophagic Death of Human Hepatocellular Carcinoma Cells by Armillaridin from Armillaria mellea. Am J Chin Med. 2019;47(6):1365–80.
-46. Kim SY, Hwangbo H, Kim MY, Ji SY, Lee H, Kim G-Y, et al. Coptisine induces autophagic cell death through down-regulation of PI3K/Akt/mTOR signaling pathway and up-regulation of ROS-mediated mitochondrial dysfunction in hepatocellular carcinoma Hep3B cells. Arch Biochem Biophys. 2021 Jan 15;697:108688.
-47. Chen C-L, Tseng Y-W, Wu J-C, Chen G-Y, Lin K-C, Hwang S-M, et al. Suppression of hepatocellular carcinoma by baculovirus-mediated expression of long non-coding RNA PTENP1 and MicroRNA regulation. Biomaterials. 2015 Mar 1;44:71–81.
-48. Go D-H, Lee YG, Lee D-H, Kim J-A, Jo I-H, Han YS, et al. 3-Decylcatechol induces autophagy-mediated cell death through the IRE1α/JNK/p62 in hepatocellular carcinoma cells. Oncotarget. 2017 May 9;8(35):58790–800.
-49. Yao C, Liu B-B, Qian X-D, Li L-Q, Cao H-B, Guo Q-S, et al. Crocin induces autophagic apoptosis in hepatocellular carcinoma by inhibiting Akt/mTOR activity. Onco Targets Ther. 2018;11:2017–28.
-50. Hu P, Cheng B, He Y, Wei Z, Wu D, Meng Z. Autophagy suppresses proliferation of HepG2 cells via inhibiting glypican-3/wnt/β-catenin signaling. Onco Targets Ther. 2018 Jan 4;11:193–200.
-51. Pant K, Saraya A, Venugopal SK. Oxidative stress plays a key role in butyrate-mediated autophagy via Akt/mTOR pathway in hepatoma cells. Chemico-Biological Interactions. 2017 Aug 1;273:99–106.
-52. Ren Z, Li A, Jiang J, Zhou L, Yu Z, Lu H, et al. Gut microbiome analysis as a tool towards targeted non-invasive biomarkers for early hepatocellular carcinoma. Gut. 2019 Jun;68(6):1014–23.
-53. Murugan S, Amaravadi RK. Methods for Studying Autophagy Within the Tumor Microenvironment. Adv Exp Med Biol. 2016;899:145–66.
-54. Barth S, Glick D, Macleod KF. Autophagy: assays and artifacts. J Pathol. 2010 Jun;221(2):117–24.
-55. Mauthe M, Orhon I, Rocchi C, Zhou X, Luhr M, Hijlkema K-J, et al. Chloroquine inhibits autophagic flux by decreasing autophagosome-lysosome fusion. Autophagy. 2018 Jul 20;14(8):1435–55.
-56. Kucharewicz K, Dudkowska M, Zawadzka A, Ogrodnik M, Szczepankiewicz AA, Czarnocki Z, et al. Simultaneous induction and blockade of autophagy by a single agent. Cell Death & Disease. 2018 Mar 2;9(3):1–15.
-57. Gonzalez P, Mader I, Tchoghandjian A, Enzenmüller S, Cristofanon S, Basit F, et al. Impairment of lysosomal integrity by B10, a glycosylated derivative of betulinic acid, leads to lysosomal cell death and converts autophagy into a detrimental process. Cell Death Differ. 2012 Aug;19(8):1337–46.
-58. Ren Z, Li A, Jiang J, Zhou L, Yu Z, Lu H, et al. Gut microbiome analysis as a tool towards targeted non-invasive biomarkers for early hepatocellular carcinoma. Gut. 2019 Jun; 68(6):1014–23.
-59. Mei L, Chen Y, Wang Z, Wang J, Wan J, Yu C, et al. Synergistic anti-tumour effects of tetrandrine and chloroquine combination therapy in human cancer: a potential antagonistic role for p21. Br J Pharmacol. 2015 May;172(9):2232–45.
-60. Wang F, Gómez‐Sintes R, Boya P. Lysosomal membrane permeabilization and cell death. Traffic. 2018;19(12):918–31.
+1.SungH,FerlayJ,SiegelRL,LaversanneM,SoerjomataramI,JemalA,etal.GlobalCancerStatistics2020:GLOBOCANEstimatesofIncidenceandMortalityWorldwidefor36Cancersin185Countries.CA:ACancerJournalforClinicians.2021;71(3):209–49.
+2.YangJD,HainautP,GoresGJ,AmadouA,PlymothA,RobertsLR.Aglobalviewofhepatocellularcarcinoma:trends,risk,preventionandmanagement.NatureReviewsGastroenterology&Hepatology.2019Oct;16(10):589–604.
+3.WertheimJA,PetrowskyH,SaabS,Kupiec-WeglinskiJW,BusuttilRW.MajorChallengesLimitingLiverTransplantationintheUnitedStates.AmJTransplant.2011Sep;11(9):1773–84.
+4.LlovetJM,MontalR,SiaD,FinnRS.Moleculartherapiesandprecisionmedicineforhepatocellularcarcinoma.NatureReviewsClinicalOncology.2018Oct;15(10):599–616.
+5.CalderaroJ,ZiolM,ParadisV,Zucman-RossiJ.Molecularandhistologicalcorrelationsinlivercancer.JHepatol.2019Sep;71(3):616–30.
+6.UchiyamaY,ShibataM,KoikeM,YoshimuraK,SasakiM.Autophagy–physiologyandpathophysiology.HistochemCellBiol.2008Apr;129(4):407–20.
+7.HamaïA,CodognoP.NewTargetsforAcetylationinAutophagy.SciSignal.2012Jul3;5(231):pe29–pe29.
+8.LeeYJ,JangBK.TheRoleofAutophagyinHepatocellularCarcinoma.IntJMolSci.2015Nov6;16(11):26629–43.
+9.YazdaniHO,HuangH,TsungA.Autophagy:DualResponseintheDevelopmentofHepatocellularCarcinoma.Cells.2019Jan28;8(2):91.
+10.LiuL,LiaoJ-Z,HeX-X,LiP-Y.Theroleofautophagyinhepatocellularcarcinoma:friendorfoe.Oncotarget.2017Apr18;8(34):57707–22.
+11.AunanJR,ChoWC,SøreideK.TheBiologyofAgingandCancer:ABriefOverviewofSharedandDivergentMolecularHallmarks.AgingDis.2017Oct;8(5):628–42.
+12.SinghSS,VatsS,ChiaAY-Q,TanTZ,DengS,OngMS,etal.Dualroleofautophagyinhallmarksofcancer.Oncogene.2018Mar;37(9):1142–58.
+13.YunCW,LeeSH.TheRolesofAutophagyinCancer.IntJMolSci.2018Nov5;19(11):3466.
+14.NazioF,BordiM,CianfanelliV,LocatelliF,CecconiF.Autophagyandcancerstemcells:molecularmechanismsandtherapeuticapplications.CellDeathDiffer.2019Mar;26(4):690–702.
+15.UenoT,KomatsuM.Autophagyintheliver:functionsinhealthanddisease.NatRevGastroenterolHepatol.2017Mar;14(3):170–84.
+16.InamiY,WaguriS,SakamotoA,KounoT,NakadaK,HinoO,etal.PersistentactivationofNrf2throughp62inhepatocellularcarcinomacells.JCellBiol.2011Apr18;193(2):275–84.
+17.DenkH,StumptnerC,FuchsbichlerA,MüllerT,FarrG,MüllerW,etal.AretheMallorybodiesandintracellularhyalinebodiesinneoplasticandnon-neoplastichepatocytesrelated?JPathol.2006Apr;208(5):653–61.
+18.UmemuraA,HeF,TaniguchiK,NakagawaH,YamachikaS,Font-BurgadaJ,etal.p62,UpregulatedduringPreneoplasia,InducesHepatocellularCarcinogenesisbyMaintainingSurvivalofStressedHCC-InitiatingCells.CancerCell.201613;29(6):935–48.
+19.LinC-W,ChenY-S,LinC-C,LeeP-H,LoG-H,HsuC-C,etal.Autophagy-relatedgeneLC3expressionintumorandlivermicroenvironmentssignificantlypredictsrecurrenceofhepatocellularcarcinomaaftersurgicalresection.ClinicalandTranslationalGastroenterology.2018Jun;9(6):e166.
+20.ChangY,YanW,HeX,ZhangL,LiC,HuangH,etal.miR-375InhibitsAutophagyandReducesViabilityofHepatocellularCarcinomaCellsUnderHypoxicConditions.Gastroenterology.2012Jul1;143(1):177-187.e8.
+21.SunK,GuoX,ZhaoQ,jingY,KouX,XieX,etal.Paradoxicalroleofautophagyinthedysplasticandtumor-formingstagesofhepatocarcinomadevelopmentinrats.CellDeathDis.2013Feb;4(2):e501.
+22.HuT,LiP,LuoZ,ChenX,ZhangJ,WangC,etal.Chloroquineinhibitshepatocellularcarcinomacellgrowthinvitroandinvivo.OncolRep.2016Jan;35(1):43–9.
+23.DingZ-B,HuiB,ShiY-H,ZhouJ,PengY-F,GuC-Y,etal.AutophagyActivationinHepatocellularCarcinomaContributestotheToleranceofOxaliplatinviaReactiveOxygenSpeciesModulation.ClinCancerRes.2011Oct1;17(19):6229–38.
+24.ChenL-H,LoongC-C,SuT-L,LeeY-J,ChuP-M,TsaiM-L,etal.AutophagyinhibitionenhancesapoptosistriggeredbyBO-1051,anN-mustardderivative,andinvolvestheATMsignalingpathway.BiochemPharmacol.2011Mar1;81(5):594–605.
+25.HuiB,ShiY-H,DingZ-B,ZhouJ,GuC-Y,PengY-F,etal.Proteasomeinhibitorinteractssynergisticallywithautophagyinhibitortosuppressproliferationandinduceapoptosisinhepatocellularcarcinoma.Cancer.2012;118(22):5560–71.
+26.DuH,YangW,ChenL,ShiM,SeewooV,WangJ,etal.Roleofautophagyinresistancetooxaliplatininhepatocellularcarcinomacells.OncolRep.2012Jan;27(1):143–50.
+27.HimizuS,TakeharaT,HikitaH,KodamaT,TsunematsuH,MiyagiT,etal.Inhibitionofautophagypotentiatestheantitumoreffectofthemultikinaseinhibitorsorafenibinhepatocellularcarcinoma.InternationalJournalofCancer.2012;131(3):548–57.
+28.GuoX,LiD,HuF,SongJ,ZhangS,DengW,etal.Targetingautophagypotentiateschemotherapy-inducedapoptosisandproliferationinhibitioninhepatocarcinomacells.CancerLetters.2012Jul28;320(2):171–9.
+29.GuoX,LiD,SunK,WangJ,LiuY,SongJ,etal.Inhibitionofautophagyenhancesanticancereffectsofbevacizumabinhepatocarcinoma.JMolMed(Berl).2013Apr;91(4):473–83.
+30.GaoL,SongJ,ZhangJ,ZhaoX,ZhaoQ,SunK,etal.ChloroquinePromotestheAnticancerEffectofTACEinaRabbitVX2LiverTumorModel.IntJBiolSci.2013Mar28;9(4):322–30.
+31.ChangZ,ShiG,JinJ,GuoH,GuoX,LuoF,etal.DualPI3K/mTORinhibitorNVP-BEZ235-inducedapoptosisofhepatocellularcarcinomacelllinesisenhancedbyinhibitorsofautophagy.IntJMolMed.2013Jun;31(6):1449–56.
+32.YuanH,LiA-J,MaS-L,CuiL-J,WuB,YinL,etal.InhibitionofautophagysignificantlyenhancescombinationtherapywithsorafenibandHDACinhibitorsforhumanhepatomacells.WorldJGastroenterol.2014May7;20(17):4953–62.
+33.TongY,HuangH,PanH.InhibitionofMEK/ERKactivationattenuatesautophagyandpotentiatespemetrexed-inducedactivityagainstHepG2hepatocellularcarcinomacells.BiochemBiophysResCommun.2015Jan2;456(1):86–91.
+34.ZhangN,XieH,LuW,LiF,LiJ,GuoZ.Chloroquinesensitizeshepatocellularcarcinomacellstochemotherapyviablockingautophagyandpromotingmitochondrialdysfunction.IntJClinExpPathol.2017Sep1;10(9):10056–65.
+35.Pérez-HernándezM,AriasA,Martínez-GarcíaD,Pérez-TomásR,QuesadaR,Soto-CerratoV.TargetingAutophagyforCancerTreatmentandTumorChemosensitization.Cancers(Basel).2019Oct19;11(10):1599.
+36.GaoM,YehPY,LuY-S,HsuC-H,ChenK-F,LeeW-C,etal.OSU-03012,anovelcelecoxibderivative,inducesreactiveoxygenspecies-relatedautophagyinhepatocellularcarcinoma.CancerRes.2008Nov15;68(22):9348–57.
+37.LiuY-L,YangP-M,ShunC-T,WuM-S,WengJ-R,ChenC-C.Autophagypotentiatestheanti-cancereffectsofthehistonedeacetylaseinhibitorsinhepatocellularcarcinoma.Autophagy.2010Nov;6(8):1057–65.
+38.WangN,PanW,ZhuM,ZhangM,HaoX,LiangG,etal.Fangchinolineinducesautophagiccelldeathviap53/sestrin2/AMPKsignallinginhumanhepatocellularcarcinomacells.BrJPharmacol.2011Sep;164(2b):731–42.
+39.LiP,DuQ,CaoZ,GuoZ,EvankovichJ,YanW,etal.Interferon-gammainducesautophagywithgrowthinhibitionandcelldeathinhumanhepatocellularcarcinoma(HCC)cellsthroughinterferon-regulatoryfactor-1(IRF-1).CancerLett.2012Jan28;314(2):213–22.
+40.YuH-C,LinC-S,TaiW-T,LiuC-Y,ShiauC-W,ChenK-F.NilotinibInducesAutophagyinHepatocellularCarcinomathroughAMPKActivation.JBiolChem.2013Jun21;288(25):18249–59.
+41.HuM,HuangH,ZhaoR,LiP,LiM,MiaoH,etal.AZD8055inducescelldeathassociatedwithautophagyandactivationofAMPKinhepatocellularcarcinoma.OncolRep.2014Feb;31(2):649–56.
+42.ChenY-J,ChiC-W,SuW-C,HuangH-L.Lapatinibinducesautophagiccelldeathandinhibitsgrowthofhumanhepatocellularcarcinoma.Oncotarget.2014Jul15;5(13):4845–54.
+43.ShiY,SongQ,HuD,ZhuangX,YuS,TengD.OleanolicacidinducedautophagiccelldeathinhepatocellularcarcinomacellsviaPI3K/Akt/mTORandROS-dependentpathway.KoreanJPhysiolPharmacol.2016May;20(3):237–43.
+44.HanB,YuY-Q,YangQ-L,ShenC-Y,WangX-J.KaempferolinducesautophagiccelldeathofhepatocellularcarcinomacellsviaactivatingAMPKsignaling.Oncotarget.2017Sep16;8(49):86227–39.
+45.LeuY-S,ChenY-J,ChenC-C,HuangH-L.InductionofAutophagicDeathofHumanHepatocellularCarcinomaCellsbyArmillaridinfromArmillariamellea.AmJChinMed.2019;47(6):1365–80.
+46.KimSY,HwangboH,KimMY,JiSY,LeeH,KimG-Y,etal.Coptisineinducesautophagiccelldeaththroughdown-regulationofPI3K/Akt/mTORsignalingpathwayandup-regulationofROS-mediatedmitochondrialdysfunctioninhepatocellularcarcinomaHep3Bcells.ArchBiochemBiophys.2021Jan15;697:108688.
+47.ChenC-L,TsengY-W,WuJ-C,ChenG-Y,LinK-C,HwangS-M,etal.Suppressionofhepatocellularcarcinomabybaculovirus-mediatedexpressionoflongnon-codingRNAPTENP1andMicroRNAregulation.Biomaterials.2015Mar1;44:71–81.
+48.GoD-H,LeeYG,LeeD-H,KimJ-A,JoI-H,HanYS,etal.3-Decylcatecholinducesautophagy-mediatedcelldeaththroughtheIRE1α/JNK/p62inhepatocellularcarcinomacells.Oncotarget.2017May9;8(35):58790–800.
+49.YaoC,LiuB-B,QianX-D,LiL-Q,CaoH-B,GuoQ-S,etal.CrocininducesautophagicapoptosisinhepatocellularcarcinomabyinhibitingAkt/mTORactivity.OncoTargetsTher.2018;11:2017–28.
+50.HuP,ChengB,HeY,WeiZ,WuD,MengZ.AutophagysuppressesproliferationofHepG2cellsviainhibitingglypican-3/wnt/β-cateninsignaling.OncoTargetsTher.2018Jan4;11:193–200.
+51.PantK,SarayaA,VenugopalSK.Oxidativestressplaysakeyroleinbutyrate-mediatedautophagyviaAkt/mTORpathwayinhepatomacells.Chemico-BiologicalInteractions.2017Aug1;273:99–106.
+52.RenZ,LiA,JiangJ,ZhouL,YuZ,LuH,etal.Gutmicrobiomeanalysisasatooltowardstargetednon-invasivebiomarkersforearlyhepatocellularcarcinoma.Gut.2019Jun;68(6):1014–23.
+53.MuruganS,AmaravadiRK.MethodsforStudyingAutophagyWithintheTumorMicroenvironment.AdvExpMedBiol.2016;899:145–66.
+54.BarthS,GlickD,MacleodKF.Autophagy:assaysandartifacts.JPathol.2010Jun;221(2):117–24.
+55.MautheM,OrhonI,RocchiC,ZhouX,LuhrM,HijlkemaK-J,etal.Chloroquineinhibitsautophagicfluxbydecreasingautophagosome-lysosomefusion.Autophagy.2018Jul20;14(8):1435–55.
+56.KucharewiczK,DudkowskaM,ZawadzkaA,OgrodnikM,SzczepankiewiczAA,CzarnockiZ,etal.Simultaneousinductionandblockadeofautophagybyasingleagent.CellDeath&Disease.2018Mar2;9(3):1–15.
+57.GonzalezP,MaderI,TchoghandjianA,EnzenmüllerS,CristofanonS,BasitF,etal.ImpairmentoflysosomalintegritybyB10,aglycosylatedderivativeofbetulinicacid,leadstolysosomalcelldeathandconvertsautophagyintoadetrimentalprocess.CellDeathDiffer.2012Aug;19(8):1337–46.
+58.RenZ,LiA,JiangJ,ZhouL,YuZ,LuH,etal.Gutmicrobiomeanalysisasatooltowardstargetednon-invasivebiomarkersforearlyhepatocellularcarcinoma.Gut.2019Jun;68(6):1014–23.
+59.MeiL,ChenY,WangZ,WangJ,WanJ,YuC,etal.Synergisticanti-tumoureffectsoftetrandrineandchloroquinecombinationtherapyinhumancancer:apotentialantagonisticroleforp21.BrJPharmacol.2015May;172(9):2232–45.
+60.WangF,Gómez‐SintesR,BoyaP.Lysosomalmembranepermeabilizationandcelldeath.Traffic.2018;19(12):918–31.
diff --git a/week_1/ex_1_advanced/references_2.txt b/week_1/ex_1_advanced/references_2.txt
index a3839e1..2b31f08 100644
--- a/week_1/ex_1_advanced/references_2.txt
+++ b/week_1/ex_1_advanced/references_2.txt
@@ -1,61 +1,61 @@
References
-1. Sung H, Ferlay J, Siegel RL, Laversanne M, Soerjomataram I, Jemal A, et al. Global Cancer Statistics 2020: GLOBOCAN Estimates of Incidence and Mortality Worldwide for 36 Cancers in 185 Countries. CA: A Cancer Journal for Clinicians. 2021;71(3):209–49.
-2. Yang JD, Hainaut P, Gores GJ, Amadou A, Plymoth A, Roberts LR. A global view of hepatocellular carcinoma: trends, risk, prevention and management. Nature Reviews Gastroenterology & Hepatology. 2019 Oct;16(10):589–604.
-3. Wertheim JA, Petrowsky H, Saab S, Kupiec-Weglinski JW, Busuttil RW. Major Challenges Limiting Liver Transplantation in the United States. Am J Transplant. 2011 Sep;11(9):1773–84.
-4. Llovet JM, Montal R, Sia D, Finn RS. Molecular therapies and precision medicine for hepatocellular carcinoma. Nature Reviews Clinical Oncology. 2018 Oct;15(10):599–616.
-5. Calderaro J, Ziol M, Paradis V, Zucman-Rossi J. Molecular and histological correlations in liver cancer. J Hepatol. 2019 Sep;71(3):616–30.
-6. Uchiyama Y, Shibata M, Koike M, Yoshimura K, Sasaki M. Autophagy–physiology and pathophysiology. Histochem Cell Biol. 2008 Apr;129(4):407–20.
-7. Hamaï A, Codogno P. New Targets for Acetylation in Autophagy. Sci Signal. 2012 Jul 3;5(231):pe29–pe29.
-8. Lee YJ, Jang BK. The Role of Autophagy in Hepatocellular Carcinoma. Int J Mol Sci. 2015 Nov 6;16(11):26629–43.
-9. Yazdani HO, Huang H, Tsung A. Autophagy: Dual Response in the Development of Hepatocellular Carcinoma. Cells. 2019 Jan 28;8(2):91.
-10. Liu L, Liao JZ, He XX, Li PY. The role of autophagy in hepatocellular carcinoma: friend or foe. Oncotarget. 2017 Apr 18;8(34):57707–22.
-11. Aunan JR, Cho WC, Søreide K. The Biology of Aging and Cancer: A Brief Overview of Shared and Divergent Molecular Hallmarks. Aging Dis. 2017 Oct;8(5):628–42.
-12. Singh SS, Vats S, Chia AYQ, Tan TZ, Deng S, Ong MS, et al. Dual role of autophagy in hallmarks of cancer. Oncogene. 2018 Mar;37(9):1142–58.
-13. Yun CW, Lee SH. The Roles of Autophagy in Cancer. Int J Mol Sci. 2018 Nov 5;19(11):3466.
-14. Nazio F, Bordi M, Cianfanelli V, Locatelli F, Cecconi F. Autophagy and cancer stem cells: molecular mechanisms and therapeutic applications. Cell Death Differ. 2019 Mar;26(4):690–702.
-15. Ueno T, Komatsu M. Autophagy in the liver: functions in health and disease. Nat Rev Gastroenterol Hepatol. 2017 Mar;14(3):170–84.
-16. Inami Y, Waguri S, Sakamoto A, Kouno T, Nakada K, Hino O, et al. Persistent activation of Nrf2 through p62 in hepatocellular carcinoma cells. J Cell Biol. 2011 Apr 18;193(2):275–84.
-17. Denk H, Stumptner C, Fuchsbichler A, Müller T, Farr G, Müller W, et al. Are the Mallory bodies and intracellular hyaline bodies in neoplastic and non-neoplastic hepatocytes related? J Pathol. 2006 Apr;208(5):653–61.
-18. Umemura A, He F, Taniguchi K, Nakagawa H, Yamachika S, Font-Burgada J, et al. p62, Upregulated during Preneoplasia, Induces Hepatocellular Carcinogenesis by Maintaining Survival of Stressed HCC-Initiating Cells. Cancer Cell. 2016 13;29(6):935–48.
-19. Lin CW, Chen YS, Lin CC, Lee PH, Lo GH, Hsu CC, et al. Autophagy-related gene LC3 expression in tumor and liver microenvironments significantly predicts recurrence of hepatocellular carcinoma after surgical resection. Clinical and Translational Gastroenterology. 2018 Jun;9(6):e166.
-20. Chang Y, Yan W, He X, Zhang L, Li C, Huang H, et al. miR-375 Inhibits Autophagy and Reduces Viability of Hepatocellular Carcinoma Cells Under Hypoxic Conditions. Gastroenterology. 2012 Jul 1;143(1):177-187.e8.
-21. Sun K, Guo X l, Zhao Q d, jing Y y, Kou X r, Xie X q, et al. Paradoxical role of autophagy in the dysplastic and tumor-forming stages of hepatocarcinoma development in rats. Cell Death Dis. 2013 Feb;4(2):e501.
-22. Hu T, Li P, Luo Z, Chen X, Zhang J, Wang C, et al. Chloroquine inhibits hepatocellular carcinoma cell growth in vitro and in vivo. Oncol Rep. 2016 Jan;35(1):43–9.
-23. Ding ZB, Hui B, Shi YH, Zhou J, Peng YF, Gu CY, et al. Autophagy Activation in Hepatocellular Carcinoma Contributes to the Tolerance of Oxaliplatin via Reactive Oxygen Species Modulation. Clin Cancer Res. 2011 Oct 1;17(19):6229–38.
-24. Chen LH, Loong CC, Su TL, Lee YJ, Chu PM, Tsai ML, et al. Autophagy inhibition enhances apoptosis triggered by BO-1051, an N-mustard derivative, and involves the ATM signaling pathway. Biochem Pharmacol. 2011 Mar 1;81(5):594–605.
-25. Hui B, Shi YH, Ding ZB, Zhou J, Gu CY, Peng YF, et al. Proteasome inhibitor interacts synergistically with autophagy inhibitor to suppress proliferation and induce apoptosis in hepatocellular carcinoma. Cancer. 2012;118(22):5560–71.
-26. Du H, Yang W, Chen L, Shi M, Seewoo V, Wang J, et al. Role of autophagy in resistance to oxaliplatin in hepatocellular carcinoma cells. Oncol Rep. 2012 Jan;27(1):143–50.
-27. Shimizu S, Takehara T, Hikita H, Kodama T, Tsunematsu H, Miyagi T, et al. Inhibition of autophagy potentiates the antitumor effect of the multikinase inhibitor sorafenib in hepatocellular carcinoma. International Journal of Cancer. 2012;131(3):548–57.
-28. Guo X ling, Li D, Hu F, Song J rui, Zhang S shan, Deng W jie, et al. Targeting autophagy potentiates chemotherapy-induced apoptosis and proliferation inhibition in hepatocarcinoma cells. Cancer Letters. 2012 Jul 28;320(2):171–9.
-29. Guo X ling, Li D, Sun K, Wang J, Liu Y, Song J rui, et al. Inhibition of autophagy enhances anticancer effects of bevacizumab in hepatocarcinoma. J Mol Med (Berl). 2013 Apr;91(4):473–83.
-30. Gao L, Song J rui, Zhang J wei, Zhao X, Zhao Q dong, Sun K, et al. Chloroquine Promotes the Anticancer Effect of TACE in a Rabbit VX2 Liver Tumor Model. Int J Biol Sci. 2013 Mar 28;9(4):322–30.
-31. Chang Z, Shi G, Jin J, Guo H, Guo X, Luo F, et al. Dual PI3K/mTOR inhibitor NVP-BEZ235-induced apoptosis of hepatocellular carcinoma cell lines is enhanced by inhibitors of autophagy. Int J Mol Med. 2013 Jun;31(6):1449–56.
-32. Yuan H, Li AJ, Ma SL, Cui LJ, Wu B, Yin L, et al. Inhibition of autophagy significantly enhances combination therapy with sorafenib and HDAC inhibitors for human hepatoma cells. World J Gastroenterol. 2014 May 7;20(17):4953–62.
-33. Tong Y, Huang H, Pan H. Inhibition of MEK/ERK activation attenuates autophagy and potentiates pemetrexed-induced activity against HepG2 hepatocellular carcinoma cells. Biochem Biophys Res Commun. 2015 Jan 2;456(1):86–91.
-34. Zhang N, Xie H, Lu W, Li F, Li J, Guo Z. Chloroquine sensitizes hepatocellular carcinoma cells to chemotherapy via blocking autophagy and promoting mitochondrial dysfunction. Int J Clin Exp Pathol. 2017 Sep 1;10(9):10056–65.
-35. Pérez-Hernández M, Arias A, Martínez-García D, Pérez-Tomás R, Quesada R, Soto-Cerrato V. Targeting Autophagy for Cancer Treatment and Tumor Chemosensitization. Cancers (Basel). 2019 Oct 19;11(10):1599.
-36. Gao M, Yeh PY, Lu YS, Hsu CH, Chen KF, Lee WC, et al. OSU-03012, a novel celecoxib derivative, induces reactive oxygen species-related autophagy in hepatocellular carcinoma. Cancer Res. 2008 Nov 15;68(22):9348–57.
-37. Liu YL, Yang PM, Shun CT, Wu MS, Weng JR, Chen CC. Autophagy potentiates the anti-cancer effects of the histone deacetylase inhibitors in hepatocellular carcinoma. Autophagy. 2010 Nov;6(8):1057–65.
-38. Wang N, Pan W, Zhu M, Zhang M, Hao X, Liang G, et al. Fangchinoline induces autophagic cell death via p53/sestrin2/AMPK signalling in human hepatocellular carcinoma cells. Br J Pharmacol. 2011 Sep;164(2b):731–42.
-39. Li P, Du Q, Cao Z, Guo Z, Evankovich J, Yan W, et al. Interferon-gamma induces autophagy with growth inhibition and cell death in human hepatocellular carcinoma (HCC) cells through interferon-regulatory factor-1 (IRF-1). Cancer Lett. 2012 Jan 28;314(2):213–22.
-40. Yu HC, Lin CS, Tai WT, Liu CY, Shiau CW, Chen KF. Nilotinib Induces Autophagy in Hepatocellular Carcinoma through AMPK Activation. J Biol Chem. 2013 Jun 21;288(25):18249–59.
-41. Hu M, Huang H, Zhao R, Li P, Li M, Miao H, et al. AZD8055 induces cell death associated with autophagy and activation of AMPK in hepatocellular carcinoma. Oncol Rep. 2014 Feb;31(2):649–56.
-42. Chen YJ, Chi CW, Su WC, Huang HL. Lapatinib induces autophagic cell death and inhibits growth of human hepatocellular carcinoma. Oncotarget. 2014 Jul 15;5(13):4845–54.
-43. Shi Y, Song Q, Hu D, Zhuang X, Yu S, Teng D. Oleanolic acid induced autophagic cell death in hepatocellular carcinoma cells via PI3K/Akt/mTOR and ROS-dependent pathway. Korean J Physiol Pharmacol. 2016 May;20(3):237–43.
-44. Han B, Yu YQ, Yang QL, Shen CY, Wang XJ. Kaempferol induces autophagic cell death of hepatocellular carcinoma cells via activating AMPK signaling. Oncotarget. 2017 Sep 16;8(49):86227–39.
-45. Leu YS, Chen YJ, Chen CC, Huang HL. Induction of Autophagic Death of Human Hepatocellular Carcinoma Cells by Armillaridin from Armillaria mellea. Am J Chin Med. 2019;47(6):1365–80.
-46. Kim SY, Hwangbo H, Kim MY, Ji SY, Lee H, Kim GY, et al. Coptisine induces autophagic cell death through down-regulation of PI3K/Akt/mTOR signaling pathway and up-regulation of ROS-mediated mitochondrial dysfunction in hepatocellular carcinoma Hep3B cells. Arch Biochem Biophys. 2021 Jan 15;697:108688.
-47. Chen CL, Tseng YW, Wu JC, Chen GY, Lin KC, Hwang SM, et al. Suppression of hepatocellular carcinoma by baculovirus-mediated expression of long non-coding RNA PTENP1 and MicroRNA regulation. Biomaterials. 2015 Mar 1;44:71–81.
-48. Go DH, Lee YG, Lee DH, Kim JA, Jo IH, Han YS, et al. 3-Decylcatechol induces autophagy-mediated cell death through the IRE1α/JNK/p62 in hepatocellular carcinoma cells. Oncotarget. 2017 May 9;8(35):58790–800.
-49. Yao C, Liu BB, Qian XD, Li LQ, Cao HB, Guo QS, et al. Crocin induces autophagic apoptosis in hepatocellular carcinoma by inhibiting Akt/mTOR activity. Onco Targets Ther. 2018;11:2017–28.
-50. Hu P, Cheng B, He Y, Wei Z, Wu D, Meng Z. Autophagy suppresses proliferation of HepG2 cells via inhibiting glypican-3/wnt/β-catenin signaling. Onco Targets Ther. 2018 Jan 4;11:193–200.
-51. Pan H, Wang Y, Na K, Wang Y, Wang L, Li Z, et al. Autophagic flux disruption contributes to Ganoderma lucidum polysaccharide-induced apoptosis in human colorectal cancer cells via MAPK/ERK activation. Cell Death Dis. 2019 Jun 11;10(6):456.
-52. Degtyarev M, De Mazière A, Orr C, Lin J, Lee BB, Tien JY, et al. Akt inhibition promotes autophagy and sensitizes PTEN-null tumors to lysosomotropic agents. J Cell Biol. 2008 Oct 6;183(1):101–16.
-53. Boya P, González-Polo RA, Casares N, Perfettini JL, Dessen P, Larochette N, et al. Inhibition of Macroautophagy Triggers Apoptosis. Mol Cell Biol. 2005 Feb;25(3):1025–40.
-54. Kanzawa T, Germano IM, Komata T, Ito H, Kondo Y, Kondo S. Role of autophagy in temozolomide-induced cytotoxicity for malignant glioma cells. Cell Death Differ. 2004 Apr;11(4):448–57.
-55. Gonzalez P, Mader I, Tchoghandjian A, Enzenmüller S, Cristofanon S, Basit F, et al. Impairment of lysosomal integrity by B10, a glycosylated derivative of betulinic acid, leads to lysosomal cell death and converts autophagy into a detrimental process. Cell Death Differ. 2012 Aug;19(8):1337–46.
-56. Murugan S, Amaravadi RK. Methods for Studying Autophagy Within the Tumor Microenvironment. Adv Exp Med Biol. 2016;899:145–66.
-57. Pant K, Saraya A, Venugopal SK. Oxidative stress plays a key role in butyrate-mediated autophagy via Akt/mTOR pathway in hepatoma cells. Chemico-Biological Interactions. 2017 Aug 1;273:99–106.
-58. Ren Z, Li A, Jiang J, Zhou L, Yu Z, Lu H, et al. Gut microbiome analysis as a tool towards targeted non-invasive biomarkers for early hepatocellular carcinoma. Gut. 2019 Jun;68(6):1014–23.
-59. Barth S, Glick D, Macleod KF. Autophagy: assays and artifacts. J Pathol. 2010 Jun;221(2):117–24.
-60. Mauthe M, Orhon I, Rocchi C, Zhou X, Luhr M, Hijlkema KJ, et al. Chloroquine inhibits autophagic flux by decreasing autophagosome-lysosome fusion. Autophagy. 2018 Jul 20;14(8):1435–55.
\ No newline at end of file
+1.SungH,FerlayJ,SiegelRL,LaversanneM,SoerjomataramI,JemalA,etal.GlobalCancerStatistics2020:GLOBOCANEstimatesofIncidenceandMortalityWorldwidefor36Cancersin185Countries.CA:ACancerJournalforClinicians.2021;71(3):209–49.
+2.YangJD,HainautP,GoresGJ,AmadouA,PlymothA,RobertsLR.Aglobalviewofhepatocellularcarcinoma:trends,risk,preventionandmanagement.NatureReviewsGastroenterology&Hepatology.2019Oct;16(10):589–604.
+3.WertheimJA,PetrowskyH,SaabS,Kupiec-WeglinskiJW,BusuttilRW.MajorChallengesLimitingLiverTransplantationintheUnitedStates.AmJTransplant.2011Sep;11(9):1773–84.
+4.LlovetJM,MontalR,SiaD,FinnRS.Moleculartherapiesandprecisionmedicineforhepatocellularcarcinoma.NatureReviewsClinicalOncology.2018Oct;15(10):599–616.
+5.CalderaroJ,ZiolM,ParadisV,Zucman-RossiJ.Molecularandhistologicalcorrelationsinlivercancer.JHepatol.2019Sep;71(3):616–30.
+6.UchiyamaY,ShibataM,KoikeM,YoshimuraK,SasakiM.Autophagy–physiologyandpathophysiology.HistochemCellBiol.2008Apr;129(4):407–20.
+7.HamaïA,CodognoP.NewTargetsforAcetylationinAutophagy.SciSignal.2012Jul3;5(231):pe29–pe29.
+8.LeeYJ,JangBK.TheRoleofAutophagyinHepatocellularCarcinoma.IntJMolSci.2015Nov6;16(11):26629–43.
+9.YazdaniHO,HuangH,TsungA.Autophagy:DualResponseintheDevelopmentofHepatocellularCarcinoma.Cells.2019Jan28;8(2):91.
+10.LiuL,LiaoJZ,HeXX,LiPY.Theroleofautophagyinhepatocellularcarcinoma:friendorfoe.Oncotarget.2017Apr18;8(34):57707–22.
+11.AunanJR,ChoWC,SøreideK.TheBiologyofAgingandCancer:ABriefOverviewofSharedandDivergentMolecularHallmarks.AgingDis.2017Oct;8(5):628–42.
+12.SinghSS,VatsS,ChiaAYQ,TanTZ,DengS,OngMS,etal.Dualroleofautophagyinhallmarksofcancer.Oncogene.2018Mar;37(9):1142–58.
+13.YunCW,LeeSH.TheRolesofAutophagyinCancer.IntJMolSci.2018Nov5;19(11):3466.
+14.NazioF,BordiM,CianfanelliV,LocatelliF,CecconiF.Autophagyandcancerstemcells:molecularmechanismsandtherapeuticapplications.CellDeathDiffer.2019Mar;26(4):690–702.
+15.UenoT,KomatsuM.Autophagyintheliver:functionsinhealthanddisease.NatRevGastroenterolHepatol.2017Mar;14(3):170–84.
+16.InamiY,WaguriS,SakamotoA,KounoT,NakadaK,HinoO,etal.PersistentactivationofNrf2throughp62inhepatocellularcarcinomacells.JCellBiol.2011Apr18;193(2):275–84.
+17.DenkH,StumptnerC,FuchsbichlerA,MüllerT,FarrG,MüllerW,etal.AretheMallorybodiesandintracellularhyalinebodiesinneoplasticandnon-neoplastichepatocytesrelated?JPathol.2006Apr;208(5):653–61.
+18.UmemuraA,HeF,TaniguchiK,NakagawaH,YamachikaS,Font-BurgadaJ,etal.p62,UpregulatedduringPreneoplasia,InducesHepatocellularCarcinogenesisbyMaintainingSurvivalofStressedHCC-InitiatingCells.CancerCell.201613;29(6):935–48.
+19.LinCW,ChenYS,LinCC,LeePH,LoGH,HsuCC,etal.Autophagy-relatedgeneLC3expressionintumorandlivermicroenvironmentssignificantlypredictsrecurrenceofhepatocellularcarcinomaaftersurgicalresection.ClinicalandTranslationalGastroenterology.2018Jun;9(6):e166.
+20.ChangY,YanW,HeX,ZhangL,LiC,HuangH,etal.miR-375InhibitsAutophagyandReducesViabilityofHepatocellularCarcinomaCellsUnderHypoxicConditions.Gastroenterology.2012Jul1;143(1):177-187.e8.
+21.SunK,GuoXl,ZhaoQd,jingYy,KouXr,XieXq,etal.Paradoxicalroleofautophagyinthedysplasticandtumor-formingstagesofhepatocarcinomadevelopmentinrats.CellDeathDis.2013Feb;4(2):e501.
+22.HuT,LiP,LuoZ,ChenX,ZhangJ,WangC,etal.Chloroquineinhibitshepatocellularcarcinomacellgrowthinvitroandinvivo.OncolRep.2016Jan;35(1):43–9.
+23.DingZB,HuiB,ShiYH,ZhouJ,PengYF,GuCY,etal.AutophagyActivationinHepatocellularCarcinomaContributestotheToleranceofOxaliplatinviaReactiveOxygenSpeciesModulation.ClinCancerRes.2011Oct1;17(19):6229–38.
+24.ChenLH,LoongCC,SuTL,LeeYJ,ChuPM,TsaiML,etal.AutophagyinhibitionenhancesapoptosistriggeredbyBO-1051,anN-mustardderivative,andinvolvestheATMsignalingpathway.BiochemPharmacol.2011Mar1;81(5):594–605.
+25.HuiB,ShiYH,DingZB,ZhouJ,GuCY,PengYF,etal.Proteasomeinhibitorinteractssynergisticallywithautophagyinhibitortosuppressproliferationandinduceapoptosisinhepatocellularcarcinoma.Cancer.2012;118(22):5560–71.
+26.DuH,YangW,ChenL,ShiM,SeewooV,WangJ,etal.Roleofautophagyinresistancetooxaliplatininhepatocellularcarcinomacells.OncolRep.2012Jan;27(1):143–50.
+27.ShimizuS,TakeharaT,HikitaH,KodamaT,TsunematsuH,MiyagiT,etal.Inhibitionofautophagypotentiatestheantitumoreffectofthemultikinaseinhibitorsorafenibinhepatocellularcarcinoma.InternationalJournalofCancer.2012;131(3):548–57.
+28.GuoXling,LiD,HuF,SongJrui,ZhangSshan,DengWjie,etal.Targetingautophagypotentiateschemotherapy-inducedapoptosisandproliferationinhibitioninhepatocarcinomacells.CancerLetters.2012Jul28;320(2):171–9.
+29.GuoXling,LiD,SunK,WangJ,LiuY,SongJrui,etal.Inhibitionofautophagyenhancesanticancereffectsofbevacizumabinhepatocarcinoma.JMolMed(Berl).2013Apr;91(4):473–83.
+30.GaoL,SongJrui,ZhangJwei,ZhaoX,ZhaoQdong,SunK,etal.ChloroquinePromotestheAnticancerEffectofTACEinaRabbitVX2LiverTumorModel.IntJBiolSci.2013Mar28;9(4):322–30.
+31.ChangZ,ShiG,JinJ,GuoH,GuoX,LuoF,etal.DualPI3K/mTORinhibitorNVP-BEZ235-inducedapoptosisofhepatocellularcarcinomacelllinesisenhancedbyinhibitorsofautophagy.IntJMolMed.2013Jun;31(6):1449–56.
+32.YuanH,LiAJ,MaSL,CuiLJ,WuB,YinL,etal.InhibitionofautophagysignificantlyenhancescombinationtherapywithsorafenibandHDACinhibitorsforhumanhepatomacells.WorldJGastroenterol.2014May7;20(17):4953–62.
+33.TongY,HuangH,PanH.InhibitionofMEK/ERKactivationattenuatesautophagyandpotentiatespemetrexed-inducedactivityagainstHepG2hepatocellularcarcinomacells.BiochemBiophysResCommun.2015Jan2;456(1):86–91.
+34.ZhangN,XieH,LuW,LiF,LiJ,GuoZ.Chloroquinesensitizeshepatocellularcarcinomacellstochemotherapyviablockingautophagyandpromotingmitochondrialdysfunction.IntJClinExpPathol.2017Sep1;10(9):10056–65.
+35.Pérez-HernándezM,AriasA,Martínez-GarcíaD,Pérez-TomásR,QuesadaR,Soto-CerratoV.TargetingAutophagyforCancerTreatmentandTumorChemosensitization.Cancers(Basel).2019Oct19;11(10):1599.
+36.GaoM,YehPY,LuYS,HsuCH,ChenKF,LeeWC,etal.OSU-03012,anovelcelecoxibderivative,inducesreactiveoxygenspecies-relatedautophagyinhepatocellularcarcinoma.CancerRes.2008Nov15;68(22):9348–57.
+37.LiuYL,YangPM,ShunCT,WuMS,WengJR,ChenCC.Autophagypotentiatestheanti-cancereffectsofthehistonedeacetylaseinhibitorsinhepatocellularcarcinoma.Autophagy.2010Nov;6(8):1057–65.
+38.WangN,PanW,ZhuM,ZhangM,HaoX,LiangG,etal.Fangchinolineinducesautophagiccelldeathviap53/sestrin2/AMPKsignallinginhumanhepatocellularcarcinomacells.BrJPharmacol.2011Sep;164(2b):731–42.
+39.LiP,DuQ,CaoZ,GuoZ,EvankovichJ,YanW,etal.Interferon-gammainducesautophagywithgrowthinhibitionandcelldeathinhumanhepatocellularcarcinoma(HCC)cellsthroughinterferon-regulatoryfactor-1(IRF-1).CancerLett.2012Jan28;314(2):213–22.
+40.YuHC,LinCS,TaiWT,LiuCY,ShiauCW,ChenKF.NilotinibInducesAutophagyinHepatocellularCarcinomathroughAMPKActivation.JBiolChem.2013Jun21;288(25):18249–59.
+41.HuM,HuangH,ZhaoR,LiP,LiM,MiaoH,etal.AZD8055inducescelldeathassociatedwithautophagyandactivationofAMPKinhepatocellularcarcinoma.OncolRep.2014Feb;31(2):649–56.
+42.ChenYJ,ChiCW,SuWC,HuangHL.Lapatinibinducesautophagiccelldeathandinhibitsgrowthofhumanhepatocellularcarcinoma.Oncotarget.2014Jul15;5(13):4845–54.
+43.ShiY,SongQ,HuD,ZhuangX,YuS,TengD.OleanolicacidinducedautophagiccelldeathinhepatocellularcarcinomacellsviaPI3K/Akt/mTORandROS-dependentpathway.KoreanJPhysiolPharmacol.2016May;20(3):237–43.
+44.HanB,YuYQ,YangQL,ShenCY,WangXJ.KaempferolinducesautophagiccelldeathofhepatocellularcarcinomacellsviaactivatingAMPKsignaling.Oncotarget.2017Sep16;8(49):86227–39.
+45.LeuYS,ChenYJ,ChenCC,HuangHL.InductionofAutophagicDeathofHumanHepatocellularCarcinomaCellsbyArmillaridinfromArmillariamellea.AmJChinMed.2019;47(6):1365–80.
+46.KimSY,HwangboH,KimMY,JiSY,LeeH,KimGY,etal.Coptisineinducesautophagiccelldeaththroughdown-regulationofPI3K/Akt/mTORsignalingpathwayandup-regulationofROS-mediatedmitochondrialdysfunctioninhepatocellularcarcinomaHep3Bcells.ArchBiochemBiophys.2021Jan15;697:108688.
+47.ChenCL,TsengYW,WuJC,ChenGY,LinKC,HwangSM,etal.Suppressionofhepatocellularcarcinomabybaculovirus-mediatedexpressionoflongnon-codingRNAPTENP1andMicroRNAregulation.Biomaterials.2015Mar1;44:71–81.
+48.GoDH,LeeYG,LeeDH,KimJA,JoIH,HanYS,etal.3-Decylcatecholinducesautophagy-mediatedcelldeaththroughtheIRE1α/JNK/p62inhepatocellularcarcinomacells.Oncotarget.2017May9;8(35):58790–800.
+49.YaoC,LiuBB,QianXD,LiLQ,CaoHB,GuoQS,etal.CrocininducesautophagicapoptosisinhepatocellularcarcinomabyinhibitingAkt/mTORactivity.OncoTargetsTher.2018;11:2017–28.
+50.HuP,ChengB,HeY,WeiZ,WuD,MengZ.AutophagysuppressesproliferationofHepG2cellsviainhibitingglypican-3/wnt/β-cateninsignaling.OncoTargetsTher.2018Jan4;11:193–200.
+51.PanH,WangY,NaK,WangY,WangL,LiZ,etal.AutophagicfluxdisruptioncontributestoGanodermalucidumpolysaccharide-inducedapoptosisinhumancolorectalcancercellsviaMAPK/ERKactivation.CellDeathDis.2019Jun11;10(6):456.
+52.DegtyarevM,DeMazièreA,OrrC,LinJ,LeeBB,TienJY,etal.AktinhibitionpromotesautophagyandsensitizesPTEN-nulltumorstolysosomotropicagents.JCellBiol.2008Oct6;183(1):101–16.
+53.BoyaP,González-PoloRA,CasaresN,PerfettiniJL,DessenP,LarochetteN,etal.InhibitionofMacroautophagyTriggersApoptosis.MolCellBiol.2005Feb;25(3):1025–40.
+54.KanzawaT,GermanoIM,KomataT,ItoH,KondoY,KondoS.Roleofautophagyintemozolomide-inducedcytotoxicityformalignantgliomacells.CellDeathDiffer.2004Apr;11(4):448–57.
+55.GonzalezP,MaderI,TchoghandjianA,EnzenmüllerS,CristofanonS,BasitF,etal.ImpairmentoflysosomalintegritybyB10,aglycosylatedderivativeofbetulinicacid,leadstolysosomalcelldeathandconvertsautophagyintoadetrimentalprocess.CellDeathDiffer.2012Aug;19(8):1337–46.
+56.MuruganS,AmaravadiRK.MethodsforStudyingAutophagyWithintheTumorMicroenvironment.AdvExpMedBiol.2016;899:145–66.
+57.PantK,SarayaA,VenugopalSK.Oxidativestressplaysakeyroleinbutyrate-mediatedautophagyviaAkt/mTORpathwayinhepatomacells.Chemico-BiologicalInteractions.2017Aug1;273:99–106.
+58.RenZ,LiA,JiangJ,ZhouL,YuZ,LuH,etal.Gutmicrobiomeanalysisasatooltowardstargetednon-invasivebiomarkersforearlyhepatocellularcarcinoma.Gut.2019Jun;68(6):1014–23.
+59.BarthS,GlickD,MacleodKF.Autophagy:assaysandartifacts.JPathol.2010Jun;221(2):117–24.
+60.MautheM,OrhonI,RocchiC,ZhouX,LuhrM,HijlkemaKJ,etal.Chloroquineinhibitsautophagicfluxbydecreasingautophagosome-lysosomefusion.Autophagy.2018Jul20;14(8):1435–55.
\ No newline at end of file
diff --git a/week_1/ex_1_beginner/ex_1_beginner_runfile.py b/week_1/ex_1_beginner/ex_1_beginner_runfile.py
index f6ba564..09a2769 100644
--- a/week_1/ex_1_beginner/ex_1_beginner_runfile.py
+++ b/week_1/ex_1_beginner/ex_1_beginner_runfile.py
@@ -1 +1,9 @@
-#YOUR CODE FOR EX_1 BEGINNER HERE
\ No newline at end of file
+#YOUR CODE FOR EX_1 BEGINNER HERE
+lst= [100,200,150,300,50]
+average = 0
+for i in lst:
+ average += i
+average = average/5
+min = min(lst)
+max = max(lst)
+print("average= "+ str(average) +" Min= "+ str(min)+ " Max= "+ str(max))
\ No newline at end of file
diff --git a/week_1/ex_1_intermediate/ex_1_intermediate_runfile.py b/week_1/ex_1_intermediate/ex_1_intermediate_runfile.py
index d297e5b..ed0ca97 100644
--- a/week_1/ex_1_intermediate/ex_1_intermediate_runfile.py
+++ b/week_1/ex_1_intermediate/ex_1_intermediate_runfile.py
@@ -1 +1,45 @@
-#YOUR CODE FOR EX_1 INTERMEDIATE HERE
\ No newline at end of file
+#YOUR CODE FOR EX_1 INTERMEDIATE HERE
+#-Create a Python script that defines a dictionary where the keys represent different microbial species
+samples= {'Bacteria': 20,
+ 'Archaea': 15,
+ 'Fungi': 10}
+#-Implement a loop to calculate and print the total number of samples collected across all species.
+samples_val= samples.values()
+total_samples= 0
+for i in samples_val:
+ total_samples += i
+print(total_samples)
+#-Use a list comprehension to create a list of microbial species with sample counts greater than 15.
+dict_15_minimum={}
+for key,value in samples.items():
+ if value >15:
+ dict_15_minimum.update({key:value})
+print(dict_15_minimum.items())
+#-Create a function that takes the species dictionary and a new species name as input. The function should add the new
+#species to the dictionary with an initial count of 1 if the species is not already present. If the species is
+#already in the dictionary, increase its count by 1.
+def dictionary_addition(dict):
+ name= str(input('Enter the name of the species to add: ').lower().capitalize())
+ if name in dict:
+ dict[name] += 1
+ else:
+ dict[name] = 1
+ return dict
+#dictionary_addition(samples)
+#print(samples.items())
+
+#-Implement a while loop to continuously prompt the user for new species names to add to the dictionary until they
+#choose to stop.it the Python runfile with comments explaining each step and the results of your calculations in the submit file.
+def multiple_dictionary_addition(dict):
+ while True:
+ more= True
+ name= str(input('Enter the name of the species to add: ').lower().capitalize())
+ if name in dict:
+ dict[name] += 1
+ else:
+ dict[name] = 1
+ x= input("Do you wish to add another sample Y/N: ").upper()
+ if x !="Y":
+ break
+multiple_dictionary_addition(samples)
+print(samples.items())
\ No newline at end of file