{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "TL5y5fY9Jy_x" }, "source": [ "# Code to generate TensorFlow models for predicting mean MFE and stdev based on nucleotide content.\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "bMr7MPVmoiHf" }, "source": [ "## Use the right version of TensorFlow\n", "\n", "The following hidden code cell ensures that the Colab will run on TensorFlow 2.X, which is the most recent version of TensorFlow:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "Z1pOWL7eevO8", "outputId": "3021d2be-8362-4579-9360-e2f92a57545d", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Colab only includes TensorFlow 2.x; %tensorflow_version has no effect.\n" ] } ], "source": [ "#@title Run this Colab on TensorFlow 2.x\n", "%tensorflow_version 2.x\n" ] }, { "cell_type": "markdown", "metadata": { "id": "xchnxAsaKKqO" }, "source": [ "## Import relevant modules\n", "\n", "The following cell imports the packages that the program requires:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "9n9_cTveKmse" }, "outputs": [], "source": [ "import io\n", "import sys\n", "import pandas as pd\n", "import numpy as np\n", "import tensorflow as tf\n", "import tensorflow_probability as tfp\n", "from tensorflow.python.keras.metrics import Metric\n", "from matplotlib import pyplot as plt\n", "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "from tensorflow.keras.layers.experimental import preprocessing\n", "\n", "%matplotlib inline\n", "pd.options.display.float_format = \"{:.1f}\".format\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ViHIlMwLMypg", "outputId": "23409807-e93a-4707-a559-a779201a5e97" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "2.8.2\n" ] } ], "source": [ "print(tf.__version__)" ] }, { "cell_type": "markdown", "metadata": { "id": "SIpsyJITPcbG" }, "source": [ "## Define functions that build and train a model\n", "\n", "The following code defines two functions:\n", "\n", " * `build_model(my_learning_rate)`, which builds an empty model.\n", " * `train_model(model, feature, label, epochs)`, which trains the model from the examples (feature and label) you pass. \n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "5S5unXRJ1rMb" }, "outputs": [], "source": [ "def normalizer(shape): \n", " preprocessing.Normalization(input_shape=shape)\n", "\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "xvO_beKVP1Ke" }, "outputs": [], "source": [ "#@title Define custom functions\n", "def build_model(my_learning_rate, units, shape):\n", " \"\"\"Create and compile a simple linear regression model.\"\"\"\n", " # Most simple tf.keras models are sequential. \n", " # A sequential model contains one or more layers.\n", " model = tf.keras.models.Sequential()\n", " \n", " # Add normalization layer\n", " model.add(preprocessing.Normalization(input_shape=shape))\n", "\n", " # Add hidden non-linear layers\n", " model.add(tf.keras.layers.Dense(units=64, input_shape=shape, activation=\"relu\"))\n", " model.add(tf.keras.layers.Dense(units=64, input_shape=shape, activation=\"sigmoid\")) \n", " \n", " # Describe the topography of the model.\n", " # The topography of a simple linear regression model\n", " # is a single node in a single layer. \n", " model.add(tf.keras.layers.Dense(units=units, \n", " input_shape=shape))\n", " \n", " # Compile the model topography into code that \n", " # TensorFlow can efficiently execute. Configure \n", " # training to minimize the model's mean squared error. \n", " model.compile(optimizer=tf.keras.optimizers.RMSprop(learning_rate=my_learning_rate),\n", " loss=\"mean_squared_error\",\n", " metrics=[tf.keras.metrics.RootMeanSquaredError()])\n", "\n", " return model \n", "\n", "\n", "def train_model(model, feature, label, epochs, batch_size):\n", " \"\"\"Train the model by feeding it data.\"\"\"\n", "\n", " # Feed the feature values and the label values to the \n", " # model. The model will train for the specified number \n", " # of epochs, gradually learning how the feature values\n", " # relate to the label values. \n", " history = model.fit(x=feature,\n", " y=label,\n", " batch_size=batch_size,\n", " epochs=epochs)\n", "\n", " # Gather the trained model's weight and bias.\n", " trained_weight = model.get_weights()[0]\n", " trained_bias = model.get_weights()[1]\n", "\n", " # The list of epochs is stored separately from the \n", " # rest of history.\n", " epochs = history.epoch\n", " \n", " # Gather the history (a snapshot) of each epoch.\n", " hist = pd.DataFrame(history.history)\n", "\n", " # Specifically gather the model's root mean \n", " #squared error at each epoch. \n", " rmse = hist[\"root_mean_squared_error\"]\n", "\n", " return trained_weight, trained_bias, epochs, rmse\n", "\n", "\n", "\n", "def get_gc_content(frag):\n", " ###Ensure frag is string\n", " frag = str(frag)\n", " if 'C' and 'G' in frag:\n", " A_count = frag.count(\"A\")+frag.count(\"a\")\n", " G_count = frag.count(\"G\")+frag.count(\"g\")\n", " C_count = frag.count(\"C\")+frag.count(\"c\")\n", " T_count = frag.count(\"T\")+frag.count(\"t\")+frag.count(\"U\")+frag.count(\"u\")\n", " gc_content = round(float(G_count+C_count)/float(A_count+T_count+G_count+C_count),5)\n", " else:\n", " gc_content = 0\n", " \n", " return gc_content\n", "\n", "def get_cg_ratio(frag):\n", " frag = str(frag)\n", " if 'C' and 'G' in frag:\n", " A_count = frag.count(\"A\")+frag.count(\"a\")\n", " G_count = frag.count(\"G\")+frag.count(\"g\")\n", " C_count = frag.count(\"C\")+frag.count(\"c\")\n", " T_count = frag.count(\"T\")+frag.count(\"t\")+frag.count(\"U\")+frag.count(\"u\")\n", " cg_ratio = C_count/(C_count+G_count)\n", " else:\n", " cg_ratio = 0\n", "\n", " return cg_ratio\n", "\n", "def get_au_ratio(frag):\n", " frag = str(frag)\n", " if 'A' and 'U' in frag:\n", " A_count = frag.count(\"A\")+frag.count(\"a\")\n", " G_count = frag.count(\"G\")+frag.count(\"g\")\n", " C_count = frag.count(\"C\")+frag.count(\"c\")\n", " T_count = frag.count(\"T\")+frag.count(\"t\")+frag.count(\"U\")+frag.count(\"u\")\n", " au_ratio = A_count/(A_count+T_count)\n", " else:\n", " au_ratio = 0\n", "\n", " return au_ratio\n", "\n", "\n", "def get_di_freqs(frag):\n", " ### code taken from https://pythonforbiologists.com/dictionaries\n", " frag = str(frag)\n", " frag_list = [frag[i:i+2] for i in range(0, len(frag))]\n", " dinucleotides = ['AA','AU','AG','AC',\n", " 'UA','UU','UG','UC',\n", " 'GA','GU','GG','GC',\n", " 'CA','CU','CG','CC']\n", " all_counts = []\n", " for dinucleotide in dinucleotides:\n", " count = frag_list.count(dinucleotide)\n", " #print(\"count is \" + str(count) + \" for \" + dinucleotide)\n", " all_counts.append(count/(len(frag)-1))\n", "\n", " return(all_counts)\n", "\n", "def get_dinucleotide_counts(frag):\n", " ### code taken from https://pythonforbiologists.com/dictionaries\n", " frag = str(frag)\n", " frag_list = [frag[i:i+2] for i in range(0, len(frag))]\n", " print(frag_list)\n", " dinucleotides = ['AA','AU','AG','AC',\n", " 'UA','UU','UG','UC',\n", " 'GA','GU','GG','GC',\n", " 'CA','CU','CG','CC']\n", " all_counts = []\n", " for dinucleotide in dinucleotides:\n", " count = frag_list.count(dinucleotide)\n", " #print(\"count is \" + str(count) + \" for \" + dinucleotide)\n", " all_counts.append(count)\n", "\n", " return(all_counts)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Ak_TMAzGOIFq" }, "source": [ "## Define plotting functions\n", "\n", "We're using a popular Python library called [Matplotlib](https://developers.google.com/machine-learning/glossary/#matplotlib) to create the following two plots:\n", "\n", "* a plot of the feature values vs. the label values, and a line showing the output of the trained model.\n", "* a [loss curve](https://developers.google.com/machine-learning/glossary/#loss_curve)." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QF0BFRXTOeR3", "outputId": "25f6c25b-dc46-4bb7-91e8-63884734a213" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Defined the plot_the_model and plot_the_loss_curve functions.\n" ] } ], "source": [ "#@title Define the plotting functions\n", "def plot_the_model(trained_weight, trained_bias, feature, label):\n", " \"\"\"Plot the trained model against the training feature and label.\"\"\"\n", "\n", " # Label the axes.\n", " plt.xlabel(\"feature\")\n", " plt.ylabel(\"label\")\n", "\n", " # Plot the feature values vs. label values.\n", " plt.scatter(feature, label)\n", "\n", " # Create a red line representing the model. The red line starts\n", " # at coordinates (x0, y0) and ends at coordinates (x1, y1).\n", " x0 = 0\n", " y0 = trained_bias\n", " x1 = my_feature[-1]\n", " y1 = trained_bias + (trained_weight * x1)\n", " plt.plot([x0, x1], [y0, y1], c='r')\n", "\n", " # Render the scatter plot and the red line.\n", " plt.show()\n", "\n", "def plot_the_loss_curve(epochs, rmse):\n", " \"\"\"Plot the loss curve, which shows loss vs. epoch.\"\"\"\n", "\n", " plt.figure()\n", " plt.xlabel(\"Epoch\")\n", " plt.ylabel(\"Root Mean Squared Error\")\n", "\n", " plt.plot(epochs, rmse, label=\"Loss\")\n", " plt.legend()\n", " plt.ylim([rmse.min()*0.97, rmse.max()])\n", " plt.show()\n", "\n", "print(\"Defined the plot_the_model and plot_the_loss_curve functions.\")" ] }, { "cell_type": "markdown", "metadata": { "id": "LVSDPusELEZ5" }, "source": [ "## Load the dataset\n" ] }, { "cell_type": "markdown", "metadata": { "id": "2qrBFb50bVTW" }, "source": [ "Import the full training data set (as a pandas dataframe). Direct links to the datasets used are provided, but your own data can be uploaded via google drive, github, or local filesystem. " ] }, { "cell_type": "code", "source": [ "# If needed, this cell allows upload of local files for training/testing\n", "# Uncomment (remove the hashtags) from the following two lines then run cell\n", "# from google.colab import files\n", "# uploaded = files.upload()" ], "metadata": { "id": "95fhk6O9tVZm" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "execution_count": 29, "metadata": { "id": "ruBbYkc7a6rM" }, "outputs": [], "source": [ "# Load training set from RNAStructuromeDB\n", "training_df = pd.read_csv('https://structurome.bb.iastate.edu/files/download/trainingset.txt.gz')\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "id": "xJB4L0bCI819" }, "outputs": [], "source": [ "# Load test set from RNAStructuromeDB\n", "test_df = pd.read_csv('https://structurome.bb.iastate.edu/files/download/testset.rnacentral.20-200.all_.svm_data.csv__0.gz')\n" ] }, { "cell_type": "markdown", "metadata": { "id": "klSyq_vhoO5J" }, "source": [ "Check the data structure using \"dataframe.describe\"" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 330 }, "id": "HEA1x_iX3yHS", "outputId": "937802e2-3b57-4c01-b7d2-d237934a2bbc" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " length GC% CGratio AUratio MFE AA AU \\\n", "count 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 \n", "mean 85.1 0.5 0.5 0.5 -26.7 0.1 0.1 \n", "std 40.6 0.1 0.1 0.1 17.7 0.0 0.0 \n", "min 20.0 0.0 0.0 0.0 -221.1 0.0 0.0 \n", "25% 66.0 0.4 0.4 0.4 -35.4 0.0 0.0 \n", "50% 74.0 0.5 0.5 0.5 -25.7 0.1 0.1 \n", "75% 107.0 0.6 0.5 0.5 -14.1 0.1 0.1 \n", "max 200.0 1.0 1.0 1.0 0.0 1.0 0.5 \n", "\n", " AG AC UA ... GG GC CA \\\n", "count 5729593.0 5729592.0 5729592.0 ... 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "std 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "min 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "25% 0.1 0.0 0.0 ... 0.0 0.0 0.0 \n", "50% 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.0 ... 0.1 0.1 0.1 \n", "max 0.5 0.5 0.0 ... 1.0 0.4 0.5 \n", "\n", " CU CG CC MonoMFE mono_z DiMFE di_z \n", "count 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.1 -20.8 -0.0 -21.5 -0.0 \n", "std 0.0 0.0 0.0 13.3 1.0 13.6 1.0 \n", "min 0.0 0.0 0.0 -118.5 -10.0 -140.0 -10.0 \n", "25% 0.0 0.0 0.0 -27.1 -0.6 -27.9 -0.6 \n", "50% 0.1 0.0 0.1 -20.0 0.1 -21.0 0.1 \n", "75% 0.1 0.1 0.1 -10.9 0.7 -11.5 0.7 \n", "max 0.5 0.3 1.0 0.0 4.4 0.0 4.0 \n", "\n", "[8 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lengthGC%CGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
count5729593.05729593.05729593.05729593.05729593.05729593.05729593.05729593.05729592.05729592.0...5729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.0
mean85.10.50.50.5-26.70.10.10.10.00.0...0.10.10.10.10.00.1-20.8-0.0-21.5-0.0
std40.60.10.10.117.70.00.00.00.00.0...0.00.00.00.00.00.013.31.013.61.0
min20.00.00.00.0-221.10.00.00.00.00.0...0.00.00.00.00.00.0-118.5-10.0-140.0-10.0
25%66.00.40.40.4-35.40.00.00.10.00.0...0.00.00.00.00.00.0-27.1-0.6-27.9-0.6
50%74.00.50.50.5-25.70.10.10.10.00.0...0.10.10.10.10.00.1-20.00.1-21.00.1
75%107.00.60.50.5-14.10.10.10.10.10.0...0.10.10.10.10.10.1-10.90.7-11.50.7
max200.01.01.01.00.01.00.50.50.50.0...1.00.40.50.50.31.00.04.40.04.0
\n", "

8 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 23 } ], "source": [ "test_df.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "rQYn0ny3oT1I" }, "source": [ "Rename columns (to ensure compatibility with later functions)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "id": "0Lo7hJ3D36MR" }, "outputs": [], "source": [ "test_df.columns =[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", \"MFE\", \"AA\",\"AU\",\"AG\",\"AC\",\"UA\",\"UU\",\"UG\",\"UC\",\"GA\",\"GU\",\"GG\",\"GC\",\"CA\",\"CU\",\"CG\", \"CC\", \"MonoMFE\", \"mono_z\", \"DiMFE\", \"di_z\"]" ] }, { "cell_type": "markdown", "metadata": { "id": "NwyfPkkbobdr" }, "source": [ "Ensure values are numeric" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "Uan8bWjMt5Ss", "outputId": "280bf5df-181b-45eb-8167-2d14d4ef15d3" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE AA AU AG AC UA ... \\\n", "0 200 0.6 0.4 0.6 -59.2 0.1 0.0 0.1 0.1 0.0 ... \n", "1 72 0.2 0.4 0.5 -11.9 0.1 0.2 0.0 0.0 0.0 ... \n", "2 104 0.5 0.4 0.5 -31.3 0.0 0.0 0.1 0.1 0.0 ... \n", "3 24 0.4 0.7 0.5 -0.2 0.1 0.1 0.0 0.1 0.0 ... \n", "4 28 0.5 0.7 0.5 -1.1 0.0 0.0 0.1 0.0 0.0 ... \n", "... ... ... ... ... ... .. .. .. .. .. ... \n", "5729588 73 0.6 0.4 0.4 -25.8 0.0 0.0 0.1 0.0 0.0 ... \n", "5729589 117 0.6 0.4 0.5 -38.6 0.0 0.1 0.1 0.0 0.0 ... \n", "5729590 85 0.6 0.4 0.5 -37.3 0.0 0.0 0.1 0.0 0.0 ... \n", "5729591 113 0.4 0.5 0.5 -22.2 0.1 0.1 0.1 0.1 0.0 ... \n", "5729592 84 0.6 0.5 0.5 -34.4 0.1 0.0 0.0 0.0 0.0 ... \n", "\n", " GG GC CA CU CG CC MonoMFE mono_z DiMFE di_z \n", "0 0.1 0.1 0.0 0.1 0.1 0.0 -64.8 0.4 -64.9 -2.0 \n", "1 0.1 0.0 0.0 0.0 0.0 0.0 -7.4 0.3 -10.3 0.6 \n", "2 0.1 0.0 0.1 0.0 0.1 0.1 -30.0 0.1 -29.6 -0.6 \n", "3 0.0 0.0 0.1 0.1 0.0 0.1 -0.7 0.1 -0.2 0.3 \n", "4 0.0 0.1 0.1 0.0 0.1 0.1 -1.6 -1.0 -1.0 -0.1 \n", "... .. .. .. .. .. .. ... ... ... ... \n", "5729588 0.1 0.1 0.0 0.1 0.1 0.1 -23.4 -0.2 -20.9 1.2 \n", "5729589 0.1 0.1 0.1 0.0 0.1 0.1 -35.9 -2.2 -35.0 1.0 \n", "5729590 0.1 0.1 0.1 0.1 0.1 0.1 -29.2 -0.6 -30.1 1.9 \n", "5729591 0.0 0.0 0.1 0.0 0.0 0.0 -21.4 0.1 -22.9 1.4 \n", "5729592 0.1 0.1 0.0 0.0 0.1 0.1 -28.0 0.3 -29.8 -0.9 \n", "\n", "[5729593 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
02000.60.40.6-59.20.10.00.10.10.0...0.10.10.00.10.10.0-64.80.4-64.9-2.0
1720.20.40.5-11.90.10.20.00.00.0...0.10.00.00.00.00.0-7.40.3-10.30.6
21040.50.40.5-31.30.00.00.10.10.0...0.10.00.10.00.10.1-30.00.1-29.6-0.6
3240.40.70.5-0.20.10.10.00.10.0...0.00.00.10.10.00.1-0.70.1-0.20.3
4280.50.70.5-1.10.00.00.10.00.0...0.00.10.10.00.10.1-1.6-1.0-1.0-0.1
..................................................................
5729588730.60.40.4-25.80.00.00.10.00.0...0.10.10.00.10.10.1-23.4-0.2-20.91.2
57295891170.60.40.5-38.60.00.10.10.00.0...0.10.10.10.00.10.1-35.9-2.2-35.01.0
5729590850.60.40.5-37.30.00.00.10.00.0...0.10.10.10.10.10.1-29.2-0.6-30.11.9
57295911130.40.50.5-22.20.10.10.10.10.0...0.00.00.10.00.00.0-21.40.1-22.91.4
5729592840.60.50.5-34.40.10.00.00.00.0...0.10.10.00.00.10.1-28.00.3-29.8-0.9
\n", "

5729593 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 25 } ], "source": [ "test_df.apply(pd.to_numeric)" ] }, { "cell_type": "markdown", "metadata": { "id": "BIjDxRR-oe0c" }, "source": [ "Check structure again. Ensure all counts are the same!" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 330 }, "id": "VxB8bEG3uSLU", "outputId": "c8cdd837-8106-4444-95f2-23d1290b41e8" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE AA AU \\\n", "count 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 \n", "mean 85.1 0.5 0.5 0.5 -26.7 0.1 0.1 \n", "std 40.6 0.1 0.1 0.1 17.7 0.0 0.0 \n", "min 20.0 0.0 0.0 0.0 -221.1 0.0 0.0 \n", "25% 66.0 0.4 0.4 0.4 -35.4 0.0 0.0 \n", "50% 74.0 0.5 0.5 0.5 -25.7 0.1 0.1 \n", "75% 107.0 0.6 0.5 0.5 -14.1 0.1 0.1 \n", "max 200.0 1.0 1.0 1.0 0.0 1.0 0.5 \n", "\n", " AG AC UA ... GG GC CA \\\n", "count 5729593.0 5729592.0 5729592.0 ... 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "std 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "min 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "25% 0.1 0.0 0.0 ... 0.0 0.0 0.0 \n", "50% 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.0 ... 0.1 0.1 0.1 \n", "max 0.5 0.5 0.0 ... 1.0 0.4 0.5 \n", "\n", " CU CG CC MonoMFE mono_z DiMFE di_z \n", "count 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.1 -20.8 -0.0 -21.5 -0.0 \n", "std 0.0 0.0 0.0 13.3 1.0 13.6 1.0 \n", "min 0.0 0.0 0.0 -118.5 -10.0 -140.0 -10.0 \n", "25% 0.0 0.0 0.0 -27.1 -0.6 -27.9 -0.6 \n", "50% 0.1 0.0 0.1 -20.0 0.1 -21.0 0.1 \n", "75% 0.1 0.1 0.1 -10.9 0.7 -11.5 0.7 \n", "max 0.5 0.3 1.0 0.0 4.4 0.0 4.0 \n", "\n", "[8 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
count5729593.05729593.05729593.05729593.05729593.05729593.05729593.05729593.05729592.05729592.0...5729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.0
mean85.10.50.50.5-26.70.10.10.10.00.0...0.10.10.10.10.00.1-20.8-0.0-21.5-0.0
std40.60.10.10.117.70.00.00.00.00.0...0.00.00.00.00.00.013.31.013.61.0
min20.00.00.00.0-221.10.00.00.00.00.0...0.00.00.00.00.00.0-118.5-10.0-140.0-10.0
25%66.00.40.40.4-35.40.00.00.10.00.0...0.00.00.00.00.00.0-27.1-0.6-27.9-0.6
50%74.00.50.50.5-25.70.10.10.10.00.0...0.10.10.10.10.00.1-20.00.1-21.00.1
75%107.00.60.50.5-14.10.10.10.10.10.0...0.10.10.10.10.10.1-10.90.7-11.50.7
max200.01.01.01.00.01.00.50.50.50.0...1.00.40.50.50.31.00.04.40.04.0
\n", "

8 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 26 } ], "source": [ "test_df.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "2L0crcGabr8B" }, "source": [ "### Training data\n", "Set the column names for training data (if not already set)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "id": "AFqCzv6HbSt5" }, "outputs": [], "source": [ "training_df.columns = [\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", \"MFE\", \"MonoMFE\", \"MonoStd\", \"DiMFE\", \"DiStd\", \"AA\",\"AU\",\"AG\",\"AC\",\"UA\",\"UU\",\"UG\",\"UC\",\"GA\",\"GU\",\"GG\",\"GC\",\"CA\",\"CU\",\"CG\", \"CC\"]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "id": "LXZL5h3s5KGH", "colab": { "base_uri": "https://localhost:8080/", "height": 330 }, "outputId": "bf109352-b8b3-416f-e613-12348f83c6f4" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE MonoMFE MonoStd \\\n", "count 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 \n", "mean 152.4 0.5 0.5 0.5 -34.4 -34.5 3.7 \n", "std 37.1 0.1 0.2 0.1 18.9 18.4 0.6 \n", "min 60.0 0.1 0.1 0.1 -140.7 -125.9 0.4 \n", "25% 120.0 0.5 0.4 0.4 -45.4 -45.0 3.3 \n", "50% 160.0 0.5 0.5 0.5 -32.0 -31.9 3.8 \n", "75% 180.0 0.6 0.6 0.6 -20.6 -21.0 4.2 \n", "max 200.0 0.8 0.9 0.9 0.0 -0.1 6.4 \n", "\n", " DiMFE DiStd AA ... UG UC GA GU \\\n", "count 836376.0 836376.0 836376.0 ... 836376.0 836376.0 836376.0 836376.0 \n", "mean -34.4 3.4 0.1 ... 0.1 0.1 0.1 0.1 \n", "std 18.6 0.6 0.1 ... 0.0 0.0 0.0 0.0 \n", "min -128.7 0.0 0.0 ... 0.0 0.0 0.0 0.0 \n", "25% -45.1 3.0 0.0 ... 0.0 0.0 0.0 0.0 \n", "50% -31.9 3.4 0.1 ... 0.1 0.1 0.1 0.1 \n", "75% -20.8 3.9 0.1 ... 0.1 0.1 0.1 0.1 \n", "max -0.0 6.0 0.5 ... 0.2 0.2 0.2 0.2 \n", "\n", " GG GC CA CU CG CC \n", "count 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 \n", "mean 0.1 0.1 0.1 0.1 0.1 0.1 \n", "std 0.1 0.0 0.0 0.0 0.0 0.1 \n", "min 0.0 0.0 0.0 0.0 0.0 0.0 \n", "25% 0.0 0.0 0.0 0.0 0.0 0.0 \n", "50% 0.1 0.1 0.1 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.1 0.1 0.1 0.1 \n", "max 0.4 0.2 0.2 0.2 0.2 0.4 \n", "\n", "[8 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEMonoMFEMonoStdDiMFEDiStdAA...UGUCGAGUGGGCCACUCGCC
count836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0...836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0
mean152.40.50.50.5-34.4-34.53.7-34.43.40.1...0.10.10.10.10.10.10.10.10.10.1
std37.10.10.20.118.918.40.618.60.60.1...0.00.00.00.00.10.00.00.00.00.1
min60.00.10.10.1-140.7-125.90.4-128.70.00.0...0.00.00.00.00.00.00.00.00.00.0
25%120.00.50.40.4-45.4-45.03.3-45.13.00.0...0.00.00.00.00.00.00.00.00.00.0
50%160.00.50.50.5-32.0-31.93.8-31.93.40.1...0.10.10.10.10.10.10.10.10.10.1
75%180.00.60.60.6-20.6-21.04.2-20.83.90.1...0.10.10.10.10.10.10.10.10.10.1
max200.00.80.90.90.0-0.16.4-0.06.00.5...0.20.20.20.20.40.20.20.20.20.4
\n", "

8 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 31 } ], "source": [ "training_df.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "xK6aXDgybz2h" }, "source": [ "Round values if needed (to save on memory)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "id": "2uFReSLjs-Qh" }, "outputs": [], "source": [ "training_df = training_df.round(2)" ] }, { "cell_type": "markdown", "metadata": { "id": "pzC07m0Io3OQ" }, "source": [ "Now we can remove the MFE column while simultaneoulsy setting it as our feature (using the \".pop\" function). Our LABEL is what we are trying to predict." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "id": "sM0jCxzUVDpO" }, "outputs": [], "source": [ "# Train for Mononucleotide shuffling:\n", "my_label = training_df.pop('MonoMFE')\n", "\n", "# OR #\n", "\n", "# Train for Dinucleotide shuffling: \n", "#my_label = training_df.pop('DiStd')" ] }, { "cell_type": "markdown", "metadata": { "id": "JLSY5on4pEGC" }, "source": [ "Our feature is what we use to PREDICT our label. Here we drop the values we don't want to use. " ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "id": "mjBM_1HhcDBM" }, "outputs": [], "source": [ "### Full features for MFE (Comment out and select lines as needed:)\n", "# Mononucleotide features:\n", "# Mono MFE:\n", "my_feature = training_df.drop(columns=[\"DiMFE\", \"DiStd\", 'MonoStd', 'MFE'])\n", "# Mono Std:\n", "#my_feature = training_df.drop(columns=[\"DiMFE\", \"DiStd\", 'MonoMFE', 'MFE'])\n", "\n", "# Dinucleotide features:\n", "# Di MFE\n", "# my_feature = training_df.drop(columns=[\"MonoMFE\", \"DiStd\", 'MonoStd', 'MFE'])\n", "# Di Std:\n", "#my_feature = training_df.drop(columns=[\"DiMFE\", \"MonoMFE\", 'MonoStd', 'MFE'])" ] }, { "cell_type": "markdown", "metadata": { "id": "9P41e9jWpXhE" }, "source": [ "Using the descibe function, we can now see how many features will be used to predict our label." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "id": "S8wnsylucIEh", "colab": { "base_uri": "https://localhost:8080/", "height": 300 }, "outputId": "8f2ea1af-6a5c-4cd1-aa6b-210966648dc1" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio AA AU AG \\\n", "count 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 \n", "mean 152.4 0.5 0.5 0.5 0.1 0.1 0.1 \n", "std 37.1 0.1 0.2 0.1 0.1 0.0 0.0 \n", "min 60.0 0.1 0.1 0.1 0.0 0.0 0.0 \n", "25% 120.0 0.5 0.4 0.4 0.0 0.0 0.0 \n", "50% 160.0 0.5 0.5 0.5 0.1 0.1 0.1 \n", "75% 180.0 0.6 0.6 0.6 0.1 0.1 0.1 \n", "max 200.0 0.8 0.9 0.9 0.5 0.2 0.2 \n", "\n", " AC UA UU UG UC GA GU GG \\\n", "count 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 836376.0 \n", "mean 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 \n", "std 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.1 \n", "min 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "25% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "50% 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 \n", "max 0.2 0.2 0.4 0.2 0.2 0.2 0.2 0.4 \n", "\n", " GC CA CU CG CC \n", "count 836376.0 836376.0 836376.0 836376.0 836376.0 \n", "mean 0.1 0.1 0.1 0.1 0.1 \n", "std 0.0 0.0 0.0 0.0 0.1 \n", "min 0.0 0.0 0.0 0.0 0.0 \n", "25% 0.0 0.0 0.0 0.0 0.0 \n", "50% 0.1 0.1 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.1 0.1 0.1 \n", "max 0.2 0.2 0.2 0.2 0.4 " ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioAAAUAGACUAUUUGUCGAGUGGGCCACUCGCC
count836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0836376.0
mean152.40.50.50.50.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.1
std37.10.10.20.10.10.00.00.00.00.10.00.00.00.00.10.00.00.00.00.1
min60.00.10.10.10.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
25%120.00.50.40.40.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
50%160.00.50.50.50.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.1
75%180.00.60.60.60.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.1
max200.00.80.90.90.50.20.20.20.20.40.20.20.20.20.40.20.20.20.20.4
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 35 } ], "source": [ "my_feature.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "K00WeBUZpfan" }, "source": [ "Just another describe to ensure our label is the one we want before model building. Check that counts are the same between label and features. Ensure values look reasonable." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "rFlDsxaOcK3F", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "e2cf34f1-d720-47e3-b0ce-844f4a14d2a1" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "count 836376.0\n", "mean -34.5\n", "std 18.4\n", "min -125.9\n", "25% -45.0\n", "50% -31.9\n", "75% -21.0\n", "max -0.1\n", "Name: MonoMFE, dtype: float64" ] }, "metadata": {}, "execution_count": 36 } ], "source": [ "my_label.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "8RbxM0tNo0wV" }, "source": [ "Make sure all fields are set to be numeric" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "id": "PZKzpaI-oXOU", "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "outputId": "c9a9dc97-0235-4da7-97c7-b8a9d7e9e647" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio AA AU AG AC UA UU UG UC \\\n", "0 100 0.8 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 \n", "1 100 0.8 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 \n", "2 100 0.8 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 \n", "3 100 0.8 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.1 \n", "4 100 0.8 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 \n", "... ... ... ... ... .. .. .. .. .. .. .. .. \n", "836371 80 0.8 0.4 0.5 0.0 0.0 0.1 0.0 0.0 0.0 0.1 0.0 \n", "836372 80 0.8 0.4 0.5 0.0 0.0 0.1 0.0 0.0 0.0 0.1 0.0 \n", "836373 80 0.8 0.4 0.5 0.0 0.0 0.1 0.0 0.0 0.0 0.1 0.0 \n", "836374 80 0.8 0.4 0.5 0.0 0.0 0.1 0.0 0.0 0.0 0.1 0.0 \n", "836375 80 0.8 0.4 0.5 0.0 0.0 0.1 0.0 0.0 0.0 0.1 0.0 \n", "\n", " GA GU GG GC CA CU CG CC \n", "0 0.0 0.0 0.0 0.1 0.0 0.1 0.1 0.2 \n", "1 0.0 0.1 0.0 0.1 0.0 0.1 0.1 0.3 \n", "2 0.0 0.0 0.0 0.1 0.0 0.1 0.1 0.2 \n", "3 0.0 0.1 0.0 0.1 0.0 0.1 0.1 0.3 \n", "4 0.0 0.0 0.0 0.1 0.0 0.1 0.1 0.3 \n", "... .. .. .. .. .. .. .. .. \n", "836371 0.0 0.1 0.2 0.2 0.0 0.0 0.2 0.1 \n", "836372 0.1 0.1 0.2 0.1 0.0 0.0 0.1 0.1 \n", "836373 0.1 0.0 0.2 0.2 0.0 0.0 0.1 0.1 \n", "836374 0.1 0.1 0.2 0.2 0.0 0.0 0.2 0.1 \n", "836375 0.1 0.1 0.2 0.1 0.0 0.0 0.1 0.1 \n", "\n", "[836376 rows x 20 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioAAAUAGACUAUUUGUCGAGUGGGCCACUCGCC
01000.80.70.20.00.00.00.00.00.00.00.10.00.00.00.10.00.10.10.2
11000.80.70.20.00.00.00.00.00.10.10.10.00.10.00.10.00.10.10.3
21000.80.70.20.00.00.00.00.00.00.00.10.00.00.00.10.00.10.10.2
31000.80.70.20.00.00.00.00.00.10.00.10.00.10.00.10.00.10.10.3
41000.80.70.20.00.00.00.00.00.00.00.10.00.00.00.10.00.10.10.3
...............................................................
836371800.80.40.50.00.00.10.00.00.00.10.00.00.10.20.20.00.00.20.1
836372800.80.40.50.00.00.10.00.00.00.10.00.10.10.20.10.00.00.10.1
836373800.80.40.50.00.00.10.00.00.00.10.00.10.00.20.20.00.00.10.1
836374800.80.40.50.00.00.10.00.00.00.10.00.10.10.20.20.00.00.20.1
836375800.80.40.50.00.00.10.00.00.00.10.00.10.10.20.10.00.00.10.1
\n", "

836376 rows × 20 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 37 } ], "source": [ "my_feature.apply(pd.to_numeric)\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "xcyw0QljtPSO", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "5cbfac4c-855f-4039-e258-72f46343b809" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 -19.5\n", "1 -19.3\n", "2 -19.8\n", "3 -18.9\n", "4 -19.0\n", " ... \n", "836371 -40.2\n", "836372 -40.3\n", "836373 -40.0\n", "836374 -40.6\n", "836375 -40.2\n", "Name: MonoMFE, Length: 836376, dtype: float64" ] }, "metadata": {}, "execution_count": 38 } ], "source": [ "my_label.apply(pd.to_numeric)" ] }, { "cell_type": "markdown", "metadata": { "id": "K24afla-4s2x" }, "source": [ "## Training the model\n" ] }, { "cell_type": "markdown", "metadata": { "id": "NRd8ncTmq435" }, "source": [ "Here you can modify the parameters (learning rate, epochs, and batch size). You must also ensure that your \"shape\" is correct. The format for defining the shape is (X,) where x is number of columns in feature dataframe followed by just a comma." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "id": "Ye730h13CQ97", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "9a90d314-7bd0-49aa-c2cf-970b25c35825" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/150\n", "697/697 [==============================] - 4s 5ms/step - loss: 639.3092 - root_mean_squared_error: 25.2846\n", "Epoch 2/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 196.3606 - root_mean_squared_error: 14.0129\n", "Epoch 3/150\n", "697/697 [==============================] - 5s 7ms/step - loss: 119.9975 - root_mean_squared_error: 10.9543\n", "Epoch 4/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 100.1245 - root_mean_squared_error: 10.0062\n", "Epoch 5/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 87.9115 - root_mean_squared_error: 9.3761\n", "Epoch 6/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 78.1567 - root_mean_squared_error: 8.8406\n", "Epoch 7/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 69.5773 - root_mean_squared_error: 8.3413\n", "Epoch 8/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 62.4277 - root_mean_squared_error: 7.9011\n", "Epoch 9/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 55.9522 - root_mean_squared_error: 7.4801\n", "Epoch 10/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 50.1049 - root_mean_squared_error: 7.0785\n", "Epoch 11/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 44.6236 - root_mean_squared_error: 6.6801\n", "Epoch 12/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 39.0956 - root_mean_squared_error: 6.2526\n", "Epoch 13/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 33.9663 - root_mean_squared_error: 5.8281\n", "Epoch 14/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 29.6879 - root_mean_squared_error: 5.4487\n", "Epoch 15/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 26.2835 - root_mean_squared_error: 5.1267\n", "Epoch 16/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 23.4873 - root_mean_squared_error: 4.8464\n", "Epoch 17/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 21.0786 - root_mean_squared_error: 4.5911\n", "Epoch 18/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 18.9600 - root_mean_squared_error: 4.3543\n", "Epoch 19/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 17.3737 - root_mean_squared_error: 4.1682\n", "Epoch 20/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 16.0618 - root_mean_squared_error: 4.0077\n", "Epoch 21/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 14.9524 - root_mean_squared_error: 3.8668\n", "Epoch 22/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 14.0327 - root_mean_squared_error: 3.7460\n", "Epoch 23/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 13.2590 - root_mean_squared_error: 3.6413\n", "Epoch 24/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 12.4937 - root_mean_squared_error: 3.5346\n", "Epoch 25/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 11.8049 - root_mean_squared_error: 3.4358\n", "Epoch 26/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 11.1505 - root_mean_squared_error: 3.3392\n", "Epoch 27/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 10.5037 - root_mean_squared_error: 3.2409\n", "Epoch 28/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 9.9116 - root_mean_squared_error: 3.1483\n", "Epoch 29/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 9.3931 - root_mean_squared_error: 3.0648\n", "Epoch 30/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 8.8643 - root_mean_squared_error: 2.9773\n", "Epoch 31/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 8.4094 - root_mean_squared_error: 2.8999\n", "Epoch 32/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 7.9888 - root_mean_squared_error: 2.8264\n", "Epoch 33/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 7.6322 - root_mean_squared_error: 2.7626\n", "Epoch 34/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 7.2829 - root_mean_squared_error: 2.6987\n", "Epoch 35/150\n", "697/697 [==============================] - 4s 5ms/step - loss: 6.9896 - root_mean_squared_error: 2.6438\n", "Epoch 36/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 6.7021 - root_mean_squared_error: 2.5888\n", "Epoch 37/150\n", "697/697 [==============================] - 4s 5ms/step - loss: 6.4707 - root_mean_squared_error: 2.5438\n", "Epoch 38/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 6.2299 - root_mean_squared_error: 2.4960\n", "Epoch 39/150\n", "697/697 [==============================] - 5s 7ms/step - loss: 6.0281 - root_mean_squared_error: 2.4552\n", "Epoch 40/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 5.8690 - root_mean_squared_error: 2.4226\n", "Epoch 41/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 5.7094 - root_mean_squared_error: 2.3894\n", "Epoch 42/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 5.5660 - root_mean_squared_error: 2.3592\n", "Epoch 43/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 5.4271 - root_mean_squared_error: 2.3296\n", "Epoch 44/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 5.2882 - root_mean_squared_error: 2.2996\n", "Epoch 45/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 5.1793 - root_mean_squared_error: 2.2758\n", "Epoch 46/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 5.0446 - root_mean_squared_error: 2.2460\n", "Epoch 47/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 4.9433 - root_mean_squared_error: 2.2234\n", "Epoch 48/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 4.8393 - root_mean_squared_error: 2.1998\n", "Epoch 49/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 4.7356 - root_mean_squared_error: 2.1761\n", "Epoch 50/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 4.6524 - root_mean_squared_error: 2.1569\n", "Epoch 51/150\n", "697/697 [==============================] - 4s 5ms/step - loss: 4.5616 - root_mean_squared_error: 2.1358\n", "Epoch 52/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 4.4696 - root_mean_squared_error: 2.1142\n", "Epoch 53/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 4.3922 - root_mean_squared_error: 2.0958\n", "Epoch 54/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 4.2855 - root_mean_squared_error: 2.0702\n", "Epoch 55/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 4.1919 - root_mean_squared_error: 2.0474\n", "Epoch 56/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 4.1037 - root_mean_squared_error: 2.0258\n", "Epoch 57/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 4.0537 - root_mean_squared_error: 2.0134\n", "Epoch 58/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.9709 - root_mean_squared_error: 1.9927\n", "Epoch 59/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.9214 - root_mean_squared_error: 1.9803\n", "Epoch 60/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.8481 - root_mean_squared_error: 1.9616\n", "Epoch 61/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.7683 - root_mean_squared_error: 1.9412\n", "Epoch 62/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.7508 - root_mean_squared_error: 1.9367\n", "Epoch 63/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.6959 - root_mean_squared_error: 1.9225\n", "Epoch 64/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.6279 - root_mean_squared_error: 1.9047\n", "Epoch 65/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.6046 - root_mean_squared_error: 1.8986\n", "Epoch 66/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.5579 - root_mean_squared_error: 1.8862\n", "Epoch 67/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.5166 - root_mean_squared_error: 1.8753\n", "Epoch 68/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.4637 - root_mean_squared_error: 1.8611\n", "Epoch 69/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.4250 - root_mean_squared_error: 1.8507\n", "Epoch 70/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.3870 - root_mean_squared_error: 1.8404\n", "Epoch 71/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.3457 - root_mean_squared_error: 1.8291\n", "Epoch 72/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.3152 - root_mean_squared_error: 1.8208\n", "Epoch 73/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.2870 - root_mean_squared_error: 1.8130\n", "Epoch 74/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.2640 - root_mean_squared_error: 1.8067\n", "Epoch 75/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.2135 - root_mean_squared_error: 1.7926\n", "Epoch 76/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.1894 - root_mean_squared_error: 1.7859\n", "Epoch 77/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.1377 - root_mean_squared_error: 1.7714\n", "Epoch 78/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 3.1348 - root_mean_squared_error: 1.7706\n", "Epoch 79/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.0821 - root_mean_squared_error: 1.7556\n", "Epoch 80/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 3.0684 - root_mean_squared_error: 1.7517\n", "Epoch 81/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.0142 - root_mean_squared_error: 1.7361\n", "Epoch 82/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 3.0253 - root_mean_squared_error: 1.7393\n", "Epoch 83/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.9675 - root_mean_squared_error: 1.7226\n", "Epoch 84/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.9496 - root_mean_squared_error: 1.7174\n", "Epoch 85/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.9379 - root_mean_squared_error: 1.7140\n", "Epoch 86/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.9133 - root_mean_squared_error: 1.7068\n", "Epoch 87/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.8791 - root_mean_squared_error: 1.6968\n", "Epoch 88/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.8440 - root_mean_squared_error: 1.6864\n", "Epoch 89/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.8425 - root_mean_squared_error: 1.6860\n", "Epoch 90/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.8090 - root_mean_squared_error: 1.6760\n", "Epoch 91/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.7931 - root_mean_squared_error: 1.6712\n", "Epoch 92/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.7692 - root_mean_squared_error: 1.6641\n", "Epoch 93/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.7449 - root_mean_squared_error: 1.6568\n", "Epoch 94/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.7310 - root_mean_squared_error: 1.6526\n", "Epoch 95/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.7023 - root_mean_squared_error: 1.6439\n", "Epoch 96/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.6988 - root_mean_squared_error: 1.6428\n", "Epoch 97/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.6747 - root_mean_squared_error: 1.6354\n", "Epoch 98/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.6442 - root_mean_squared_error: 1.6261\n", "Epoch 99/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.6269 - root_mean_squared_error: 1.6208\n", "Epoch 100/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.6086 - root_mean_squared_error: 1.6151\n", "Epoch 101/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 2.6048 - root_mean_squared_error: 1.6139\n", "Epoch 102/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.5726 - root_mean_squared_error: 1.6039\n", "Epoch 103/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.5583 - root_mean_squared_error: 1.5995\n", "Epoch 104/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.5532 - root_mean_squared_error: 1.5979\n", "Epoch 105/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.5289 - root_mean_squared_error: 1.5902\n", "Epoch 106/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.5091 - root_mean_squared_error: 1.5840\n", "Epoch 107/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4945 - root_mean_squared_error: 1.5794\n", "Epoch 108/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4690 - root_mean_squared_error: 1.5713\n", "Epoch 109/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4674 - root_mean_squared_error: 1.5708\n", "Epoch 110/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4404 - root_mean_squared_error: 1.5622\n", "Epoch 111/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4199 - root_mean_squared_error: 1.5556\n", "Epoch 112/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4150 - root_mean_squared_error: 1.5540\n", "Epoch 113/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.4044 - root_mean_squared_error: 1.5506\n", "Epoch 114/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3866 - root_mean_squared_error: 1.5449\n", "Epoch 115/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3740 - root_mean_squared_error: 1.5408\n", "Epoch 116/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3702 - root_mean_squared_error: 1.5396\n", "Epoch 117/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3487 - root_mean_squared_error: 1.5325\n", "Epoch 118/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.3343 - root_mean_squared_error: 1.5278\n", "Epoch 119/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3184 - root_mean_squared_error: 1.5226\n", "Epoch 120/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3074 - root_mean_squared_error: 1.5190\n", "Epoch 121/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.3060 - root_mean_squared_error: 1.5186\n", "Epoch 122/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2809 - root_mean_squared_error: 1.5103\n", "Epoch 123/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2650 - root_mean_squared_error: 1.5050\n", "Epoch 124/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2582 - root_mean_squared_error: 1.5027\n", "Epoch 125/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2474 - root_mean_squared_error: 1.4991\n", "Epoch 126/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2309 - root_mean_squared_error: 1.4936\n", "Epoch 127/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2103 - root_mean_squared_error: 1.4867\n", "Epoch 128/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.2059 - root_mean_squared_error: 1.4852\n", "Epoch 129/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1836 - root_mean_squared_error: 1.4777\n", "Epoch 130/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1748 - root_mean_squared_error: 1.4747\n", "Epoch 131/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1834 - root_mean_squared_error: 1.4776\n", "Epoch 132/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1560 - root_mean_squared_error: 1.4683\n", "Epoch 133/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1513 - root_mean_squared_error: 1.4667\n", "Epoch 134/150\n", "697/697 [==============================] - 4s 6ms/step - loss: 2.1361 - root_mean_squared_error: 1.4615\n", "Epoch 135/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.1392 - root_mean_squared_error: 1.4626\n", "Epoch 136/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.1258 - root_mean_squared_error: 1.4580\n", "Epoch 137/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.1026 - root_mean_squared_error: 1.4501\n", "Epoch 138/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0969 - root_mean_squared_error: 1.4481\n", "Epoch 139/150\n", "697/697 [==============================] - 6s 9ms/step - loss: 2.0778 - root_mean_squared_error: 1.4415\n", "Epoch 140/150\n", "697/697 [==============================] - 5s 7ms/step - loss: 2.0872 - root_mean_squared_error: 1.4447\n", "Epoch 141/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0562 - root_mean_squared_error: 1.4340\n", "Epoch 142/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0496 - root_mean_squared_error: 1.4316\n", "Epoch 143/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0537 - root_mean_squared_error: 1.4331\n", "Epoch 144/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.0342 - root_mean_squared_error: 1.4263\n", "Epoch 145/150\n", "697/697 [==============================] - 3s 4ms/step - loss: 2.0359 - root_mean_squared_error: 1.4269\n", "Epoch 146/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0162 - root_mean_squared_error: 1.4199\n", "Epoch 147/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 2.0137 - root_mean_squared_error: 1.4191\n", "Epoch 148/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 1.9911 - root_mean_squared_error: 1.4111\n", "Epoch 149/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 1.9885 - root_mean_squared_error: 1.4102\n", "Epoch 150/150\n", "697/697 [==============================] - 3s 5ms/step - loss: 1.9712 - root_mean_squared_error: 1.4040\n" ] } ], "source": [ "learning_rate=0.001\n", "epochs=150\n", "my_batch_size=1200\n", "units = 1\n", "shape = (20,)\n", "\n", "my_model = build_model(learning_rate, units, shape)\n", "trained_weight, trained_bias, epochs, rmse = train_model(my_model, my_feature, \n", " my_label, epochs,\n", " my_batch_size)" ] }, { "cell_type": "markdown", "metadata": { "id": "YViVZelvlp1Z" }, "source": [ "Now we can save the model. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "I_hFLYbDlpZx", "outputId": "470a1218-6b73-4dab-e1c6-325ea261d728", "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: /content/drive/My Drive/DiStd/assets\n" ] } ], "source": [ "folder_name = \"set/path/of/model/folder\"\n", "tf.keras.models.save_model(my_model, folder_name)" ] }, { "cell_type": "markdown", "metadata": { "id": "_JAG5JYytnTr" }, "source": [ "## The following code can be used to troubleshoot the model building steps IF the training function is failing" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "HH4eRnesmGg4" }, "outputs": [], "source": [ "my_model.add(tf.keras.layers.Dense(units=20, input_shape=(1, )))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 324 }, "collapsed": true, "id": "AWvJ0HaDloDX", "outputId": "b161c90a-315a-47f7-fda9-53593889f546" }, "outputs": [ { "ename": "TypeError", "evalue": "ignored", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmy_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_feature\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmy_label\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmy_batch_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1146\u001b[0m \u001b[0muse_multiprocessing\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0muse_multiprocessing\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1147\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1148\u001b[0;31m steps_per_execution=self._steps_per_execution)\n\u001b[0m\u001b[1;32m 1149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1150\u001b[0m \u001b[0;31m# Container that configures and calls `tf.keras.Callback`s.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/keras/engine/data_adapter.py\u001b[0m in \u001b[0;36mget_data_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 1381\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"model\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"_cluster_coordinator\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1382\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_ClusterCoordinatorDataHandler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1383\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mDataHandler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1384\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1385\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/keras/engine/data_adapter.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, x, y, sample_weight, batch_size, steps_per_epoch, initial_epoch, epochs, shuffle, class_weight, max_queue_size, workers, use_multiprocessing, model, steps_per_execution, distribute)\u001b[0m\n\u001b[1;32m 1141\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1142\u001b[0m \u001b[0msteps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1143\u001b[0;31m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepochs\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1144\u001b[0m \u001b[0msample_weights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msample_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1145\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for -: 'list' and 'int'" ] } ], "source": [ "history = my_model.fit(my_feature, my_label, my_batch_size, epochs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "YJzOduxVl2GJ" }, "outputs": [], "source": [ "epochs = history.epoch\n", "hist = pd.DataFrame(history.history)\n", "rmse = hist[\"root_mean_squared_error\"]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "scrzhO48pcRj" }, "outputs": [], "source": [ "trained_weight = my_model.get_weights()[0]\n", "trained_bias = my_model.get_weights()[1]\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Mxwc_RAupwP_" }, "outputs": [], "source": [ "print(trained_weight)" ] }, { "cell_type": "markdown", "metadata": { "id": "vStvuHK_t1hs" }, "source": [ "## If you can get the weights and bias, you can now plot the results!" ] }, { "cell_type": "markdown", "metadata": { "id": "M694Qnq1rmaG" }, "source": [ "The loss curve should approach zero (but will likely never reach it). Poor MFE models tend to plateau down to > 5. Try to adjust model and parameters until values reach closer to 2. For standard deviation models the loss and RMSE should be much lower (0.7)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "id": "eH1ur8epqzru", "outputId": "0008ffc3-1f0d-4fb7-d870-01c204aa633e" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "plot_the_loss_curve(epochs, rmse)" ] }, { "cell_type": "markdown", "metadata": { "id": "jYSpvaglNsDp" }, "source": [ "[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", \"MFE\", \"AA\",\"AU\",\"AG\",\"AC\",\"UA\",\"UU\",\"UG\",\"UC\",\"GA\",\"GU\",\"GG\",\"GC\",\"CA\",\"CU\",\"CG\", \"CC\"]" ] }, { "cell_type": "markdown", "metadata": { "id": "okgNzjrgB4-R" }, "source": [ "Plot Results for Mean MFE prediction. \n", "#### *These cells will need to be changed depending on the model you are building.*\n", "Are you building a dinucleotide or mononucleotide model? Change names accordingly" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "id": "pUYcXkVqCOr3" }, "outputs": [], "source": [ "meanMFE_result = my_model.predict(training_df[[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", 'AA', 'AU', 'AG',\n", " 'AC', 'UA', 'UU', 'UG', 'UC', 'GA', 'GU', 'GG', 'GC', 'CA', 'CU', 'CG', 'CC']])" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "id": "BMBf-xVmEejC", "colab": { "base_uri": "https://localhost:8080/", "height": 296 }, "outputId": "4177914c-ec6c-49f0-f439-a7593a88a7a1" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 60 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "#meanMFE_result = my_model.predict(training_df[[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", 'MFE']])\n", "#meanMFE_result = my_model.predict(training_df[[\"Length\", \"GCpercent\", \"MFE\"]])\n", "predicted_mfes = pd.DataFrame(meanMFE_result)\n", "predicted_mfes.describe()\n", "\n", "predicted_mfes.columns = [\"predictedMonoMFEs\"]\n", "predicted_mfes = predicted_mfes.rename(columns={0:\"PredictedMonoMFE\"})\n", "predicted_mfes[\"MonoMFE\"] = my_label\n", "#predicted_mfes[\"DiMFE\"] = my_label\n", "#predicted_mfes[\"predictedMonoMFEs\"] = predicted_mfes\n", "# predicted_mfes[\"DiMFE\"] = predicted_mfes\n", "predicted_mfes[\"MFE\"] = training_df['MFE'].to_list()\n", "# predicted_mfes[\"RealDiMFE\"] = loaded_df['DiMFE'].to_list()\n", "predicted_mfes.plot.scatter(x=\"MFE\", y=\"predictedMonoMFEs\")\n" ] }, { "cell_type": "markdown", "metadata": { "id": "fezSTvZMB-PC" }, "source": [ "-OR- Plot results for standard deviation prediction" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "BY8pj_ICEobh" }, "outputs": [], "source": [ "\n", "DiStd_result = my_model.predict(training_df[[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", 'AA', 'AU', 'AG',\n", " 'AC', 'UA', 'UU', 'UG', 'UC', 'GA', 'GU', 'GG', 'GC', 'CA', 'CU', 'CG', 'CC']])\n", "predicted_std = pd.DataFrame(DiStd_result)\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 364 }, "collapsed": true, "id": "D5mYNK9p5aRR", "outputId": "011e56c1-0bc6-4996-e1c5-8dbb1ff58c8a" }, "outputs": [ { "ename": "ValueError", "evalue": "ignored", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpredicted_std\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"predictedDiStd\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mpredicted_std\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"DiStd\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloaded_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'DiStd'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m# predicted_std[\"RealDiMFE\"] = loaded_df['DiMFE'].to_list()\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mpredicted_std\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"DiStd\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"predictedDiStd\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__setattr__\u001b[0;34m(self, name, value)\u001b[0m\n\u001b[1;32m 5498\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5499\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5500\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__setattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5501\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5502\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/_libs/properties.pyx\u001b[0m in \u001b[0;36mpandas._libs.properties.AxisProperty.__set__\u001b[0;34m()\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m_set_axis\u001b[0;34m(self, axis, labels)\u001b[0m\n\u001b[1;32m 764\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_set_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 765\u001b[0m \u001b[0mlabels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mensure_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 766\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 767\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_clear_item_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 768\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/internals/managers.py\u001b[0m in \u001b[0;36mset_axis\u001b[0;34m(self, axis, new_labels)\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mset_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnew_labels\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0;31m# Caller is responsible for ensuring we have an Index object.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 216\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_set_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnew_labels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 217\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_labels\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 218\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/core/internals/base.py\u001b[0m in \u001b[0;36m_validate_set_axis\u001b[0;34m(self, axis, new_labels)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mnew_len\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mold_len\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m raise ValueError(\n\u001b[0;32m---> 58\u001b[0;31m \u001b[0;34mf\"Length mismatch: Expected axis has {old_len} elements, new \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34mf\"values have {new_len} elements\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m )\n", "\u001b[0;31mValueError\u001b[0m: Length mismatch: Expected axis has 2 elements, new values have 1 elements" ] } ], "source": [ "predicted_std.columns = [\"predictedDiStd\"]\n", "predicted_std[\"DiStd\"] = loaded_df['DiStd'].to_list()\n", "# predicted_std[\"RealDiMFE\"] = loaded_df['DiMFE'].to_list()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 300 }, "id": "gJRCMvD83qcv", "outputId": "13fe4372-2219-446f-c792-652dd6118978" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predictedDiStdDiStd
count836376.0836376.0
mean3.33.4
std0.60.6
min0.10.0
25%3.03.0
50%3.43.4
75%3.83.9
max4.76.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " predictedDiStd DiStd\n", "count 836376.0 836376.0\n", "mean 3.3 3.4\n", "std 0.6 0.6\n", "min 0.1 0.0\n", "25% 3.0 3.0\n", "50% 3.4 3.4\n", "75% 3.8 3.9\n", "max 4.7 6.0" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predicted_std.describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 296 }, "id": "izi94b-cEtC7", "outputId": "f8e78bff-9147-46f4-f2a9-cef08043343a" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEGCAYAAABvtY4XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de3zcZZX48c/5fufS9F7T2tKmaSkBatNfWzBswQJyU0HbqguCUkV312V1BUHRou7KRX+sy8ULCi/dirqyVl1odVsuyqKgiEK1xaS0BaFyadNy6/SakE4yM2f/mJl0ZjKTmSRz/c55v159NfOd20mTnjw5z/OcR1QVY4wx3uNUOgBjjDGlYQneGGM8yhK8McZ4lCV4Y4zxKEvwxhjjUb5KB5Bq8uTJOnv27EqHYYwxNWPTpk17VHVKtvuqKsHPnj2bjRs3VjoMY4ypGSLyYq77rERjjDEeZQneGGM8yhK8McZ4lCV4Y4zxKEvwxhjjUVW1isYYU36hrjCd+3pomtRA49jgkB6Teh1g6+4DgNA6fXzO18r1ugCd+3oYE3Dp7o3SF4nyQuh1Fs2cSMvUcf2PH+p7JG18PsQD215hzuQxvL11Go1jg/2vd7AnwvgGH63TJ2R9zUL+jQZ7/FCfXyyW4I3xsGyJZfsrh3h0+x4mjw1yoKeP6+/ZigAxhc++43jmHjUOEPoiUTo6D7C3u5ef/GkHDgICnzjjGPyuQ/vOfTz0lz2giirEMt77rcc10n04yt7uMDMmNTChIcCUcUEiUWVz5wH2vR5mx77Dac9xGPg6AE0TR3Hs1HH89pnXiKU0wJ02PsiZx0/hH06dw4uhbtZ3vMScyaM5YdYk+iIxHv7La3SH+/jNX15lX0+0/3mf//kW3r3wKO578iUiKW/oOsJlZxxDXyzGzlA3zY1jmNAQ4KsP/gVXHCKxKJefdRwXL24GYOvug4AyfUID3b1RxgRc7t/yMrc/vJ2A69AXi3FhWxN3bezE78Rv33T+ApYvmjHcL+mQSDW1C25ra1NbB29MXL5RX3z0mZ5gUkfSj/01xPd//wKuQDga47IzWnjp4GHu2thZ5s/EexwAIe2HTa4fTpkCPof7Lz+VlqnjijKyF5FNqtqW9T5L8MZUXuZ/9HXtu7h67eaco7517bv49H+3E0357+tLzKhFY1A9/6tNNj5X+NsTZrC+Y/eIR/aDJXgr0RhTYZnJ/ItL5/Hle7dxuC/G4cSYcOXazSxpmUzj2CDbXznEp37aPmC0GClk+GiqQiSq/b9JZfsaF4sleGMqKNQV5uq1m9OS+fXrt+FK+uP8jsPW3Qd57K97+M5vn7MReo3wu0JftLCvlt9x6NzXYwneGK/o3NeD33H6kztAb3TgULynL8JHfvDHtJqvqX5vmfMGfvtsqKDH9kZj/XMoxWIJ3pgKCXWFOdDTS280OujjBCu/1KpCkzvAZWe2FH0JpSV4Yyogte4e0/gEqSJEswzRbdDuHQJIxuobgKBP+pdeFpMleGPKLFvd3edkT+7GO0YHXG46fwHjG/w89tc9fP/3L/Svlb/p/AUl2QBlCd6YMstWd49Ycve83kiUq+5uJ+C69MViXLN0HvNnTCjp7lZL8MaUWOaGpAM9fVknUo23qUI4ooQjEQC+fN82fn/1WSVtXWAJ3pgSWte+i6vuak+bJA26QlQVn2OTp17kS2xzTf2tLOA6+F2hu/fIhHoplkVmsm6SxpRIqCvMyjUdA5J4OKpEYgMn2ow3xL/eStDnMC7oY5Tf4drl8whH0ldLvd4bKfqyyEw2gjemyJJtBw709OKKA2RfBmkJ3rsa/D5uX3EiExr8/Un8uvVbSV0TFVX45daXWbF4VsnisARvTJGEusKs3rCjv5NgbzRKb8SyeD3qi8XS2hl37NwfXzGTsefh+nu2sXj2G/obxdk6eGOq0Lr2Xaxc00E4kdDDVlyvS8FEx7fMZY9NkxroyzKxLsA7v/k7gj63JK2ErQZvTB6hrjAdO/cT6grnvH/lms39yd3Ur3gLoYHfB41jg1y7rHXA9XAkRm9UORSOcLgvxsq1m3N+nw2HjeCNGUS+tr0AqzfssBG7AeBw5EhnyHlHjU8rvaw4eRZIvCyTbEImqoRTmpEVe2WNJXhjcsi24zSzpWuoK8xtDz1TyTBNlcpWelmxeBbntk7rP5pw6W2PktrUvy9W3IZjVqIxJofkjtNUyRFW6mN8jlvu0EyVO9yXu/TSODbIwsQ5szedv4BR/iPLKYvdssBG8Mbk0DSpgb5Yeuklc4TVNKmBSMzKMyZuTNAdUull+aIZLGmZXLIDuW0Eb0wOjWODaSOsoM/hE2e0DHjMOW+aWqEITaWcNHsiH3lLM0Gfw+iAS9DncMN75vPjj57M/ZefijjpJ7YMVnpJjuhLsaPVzmQ1Jo8j69ufJeC69EajXHbmsVy8uJnnX+viwlWP26alOiIcWSfjClx5znFcvLg5LUGvb9/FyjyT80WLxw7dNmb4Ql1hltz4EIf7rBRjBgr6hD987uwBI/DMg9RLxQ7dNmYEsrX3NSbJlez19caxwZIm9kJYDd6YFNk2NTVNaqCnL1LBqEw1i2rxz1ItFhvBG5NQyKYmU79GB1z6ojGiMe2fc/E5cPMFCys+Us/FErwxDL6pafWGHda3vc4FXOE7HzyR1ukTANi6+wAgaQ3FqlHJE7yIuMBGYJeqLi31+xkzHNnq7H7HYevug9z+8PYKRmaqweVnHcvpx72x/3bqx9WsHDX4K4CnyvA+xgxbrk1N2RpHGW9z05ewE/QJFy9urkwwI1TSBC8iTcC7gDtK+T7GjFTmpqZRfocvLp3HwZ6INRKrIx9/6xy+ftGitO+Daq6x51PqEs03gJXAuFwPEJFLgUsBmptr86ek8YbUbeMbngtx3fqtqO1gqhtBn8NHT5tD49hg//fBmIBLd2+UUFe4JpN8yRK8iCwFXlXVTSJyRq7HqeoqYBXENzqVKh5j8kluTHnoqVe49SGru9ebv18yu//jxrFBHt2+p+ZXVZVsJ6uIfAX4EBABRgHjgZ+p6gdzPcd2sppKWf34i1x/z1YU6IvaOKMejfa7xFBuOn8BS1omD9i9PMrv8Purz6q6kfxgO1lLVoNX1c+rapOqzgbeDzw0WHI3plJWP/4i//I/W+iNqiX3OvZ6X7S/te/W3QfytoquBbYO3tSlZDlmTMDlmnVbKh2OqSIOwsGeSN5W0bWgLAleVX8D/KYc72VMPvEDsjfjOsLhvqh1gqxjjsR3o/ZGj1x7vS/KVXd3cNFJTdy1sTOtBl9t5Zl8bARv6kqoK8xn7u6wUowBYEzAx6Wnz+G2h59NOzQ9HIlx18ZO7r3s1LRzVWuNNRszdWXr7gOW3OuUZLnWF4tx8eJmvntJG6MD6Ucv+h2H7t5oyQ7jKAdL8MZzsnWETDrYY10h69G7Fx3Fxn89h4+/dQ4BVxgTdNPOQG2dPoFYxorCWqy5Z7ISjfGUfB0hxzfYt3y9Ge13+Pslc3h0+x5+8IcX8LtCOBJj5TuO7//eSO5kzjyFqVZH7kn23W48I1tHyM+u2czE0YH+rn+t0yfgd8XKNHUkqsqYgNv/vZH0b/c/zZiAjxUnzwJKfwB2JViCN56RrSNkOBLjY/+1iagql53ZQtDnWHKvM5edeSzdvVF8zsAq/PX3bOXc+dP6k3k1nMJUTJbgjWdk6wgJ8WVvAF998Jlyh2QqLOhz+jtB9mb5we53sx+35xU2yWo8I7UjZIPfvrXrXdDncPMFC/pH5dcumzfgMVHVmp9IHYyN4I2nLF80g5cPHObGB56udCimAoIuIMJlZx7LefOnpXWCXLF4Fmi8LON3HaKqnphIHYwleOMpqx9/kX/7hSX3evX5d76JZQtn8Oj2PSy97dEBq6lWnDyLc+dP89RE6mAswRvPCHWFuf7ebZUOw1SI3xWWLYwve8x1vm6yXOP1xJ5khUrjGZ37eghknrdm6sYnzzqWxrFBtu4+iJOxb7UWO0EWg43gjSeEusIc6OmzJZB1wOfE2w6kLGnvPzc12Ugu85hFL+xKHQ5L8Kbmpe5ejUTt/FQvch0Y5XeJxuITo8CAXacQL81kJvegTzw/mZqLJXhTc5K93JMjssx6q/GeWy9axMw3jEmbGM3cddqxc/+AjW6jAy7f+eCJnH7cGysVekVZgjc1JbPXzCfOaMm6Q9F4y9xp42mZOi7tWuZkabaNbjFVWqdPKEuM1cgmWU3NSO01cygc4XBfjFt//Qxd4Wj+J5ua4DIwKQVdobs3/9c4daPbuKAvrVtkvbIRvKkZ2XrNRKwq4xmjAy43nb+Az6zpSGsKJo4UPEHqxYZhI2EjeFMzxgRcwhEbrXtVTJVTjmkc8Si8cWywpg/pKCYbwZuakKy9Zx7KYGqXAAGfQ8BN779uo/DisQRvql5q7d14R9DvsOpDbUxo8A9I5PW027SULMGbqpet9m5q3+G+GNMnjBqwOsYUj9XgTdVrmtRAr21g8pxCV8eY4bMRvKlaoa4wW3cf5LG/7rEdqh40lNUxZngswZuqtK59F1fd1W7LID3IFfD7bI16OViCN1Un1BVm5ZoOS+4e4neFK89uYfHRjfh9rq2OKRNL8KbqdO7rIcvRqqZGJY/OW75oRqVDqTuW4E1VCXWF2bn3dfpitt7dC5bOn8qVbzveVspUiCV4UzWSm5nEcrtnPPj0a/zqL6/1H5lnysuWSZqqkLqZqceK754RjsQ43Bdj5drNhLrClQ6n7gw6gheRbwE5x1Oq+smiR2Tqkm1m8rbkkXk2sVpe+UbwG4FNwCjgRODZxJ9FQKC0oZl6kq2Xt6k97150FNctmzfgbNx6PTKv0gZN8Kr6Q1X9IbAAOENVv6Wq3wLOJp7kjSmKZC9vnxUNa0rmWSsPbH2FZQunc8v7Flpf9ipQ6CTrJGA8sDdxe2zimjFFs3zRDByBy37SXulQzCCuOKuFmW8YzSi/y+d/9iSHwpH++5KlGOsIWR0KTfD/DvxZRB4m3uXzdOD6wZ4gIqOAR4Bg4n3WqOq1I4jV1IHNO/dXOgQziC+cN5dL33oMEJ8YzyyrpZZirCNk5RWU4FX1ByLyC2Bx4tLVqvpynqeFgbNUtUtE/MCjIvILVX18BPEaj0keoD0m4PKVXzzFr59+rdIhmRxGBxwWz2nsv50sq61MOSPXSjHVpaAELyK/VtWzgXVZrmWlqgp0JW76E39shbPpT+obngtx0wNPozGwnoLVL6YMmCi1Ukx1y7dMchQwGpgsIpOIl2cgXo/Pu2tBRFziq3BagNtVdUOWx1wKXArQ3Nw8pOBNbUgm9KZJDfxyy8tcf882orEYUftxX/VcgVEBl2hMc47OrRRTvfKN4P8JuBKYTjxRJxP8QeC2fC+uqlFgkYhMBH4uIvNVdUvGY1YBqwDa2trsv7zHJHen+h2Hw5EofZbVa0bQFb774ZOynrhkasOgCV5VbwVuFZHLE8sjh0VV9ycmaM8FtuR7vPGG1N2ptoGp9ogjtE4fb4m9hg266lhEThKRacnkLiKXiMg6EfmmiLwhz3OnJEbuiEgD8Dbg6WIFbqpfcneqqQ0+Rwj6xNaue0i+Es1/AOcAiMjpxJdLXk58k9Mq4IJBnnsU8MNEHd4B7lLVe0ccsakZtju1tjT4XW5fcQITGgJWkvGIfAneVdXk5qaLgFWquhZYKyKD7kZR1c3ACUWI0dSoxrFBvrh0Hv/yc6vK1YKevgit0ydYYveQfL8/uyKS/CFwNvBQyn3WatjkFOoK07FzPzMnjWa038o0tUBE8j/I1JR8SfonwG9FZA/QA/wOQERagAMljs3UKFs5U/18rhBwhNf7jpTQRvlc6/joMfmajd0AXAX8J3BqYvNS8nmXlzY0U4tSV84cCkcsuVcBnyt84by5ac2/rl/eOmBdk3V89J58G53Gq+rjiRUzQRFJ/mjfk/hjTBrr6159rl/WyoqTZ3H+m5vSdpyOC/qszYDH5SvR/BhYSnyTUyYF5hQ9IlPTbOVMdbmwrYkVJ88CBu44tTYD3pevRLM08ffRWf5YcjcDJFfOBHwODTa5WnHrO3YPelRe49ggC2dOtOTuUXlXwiRW0ZwHzE1c2gY8oKqR3M8y9SK1z0zj2CDr2nfxpXu2IgqHI1Z/rzQ7Kq++5avBzyC+NPIl4M/Ee9EsBb4mImeq6u7Sh2iqVXK1jCtCXzTGh98ymzt+97y1DC0znyME/Q69icPKUye2beK0vuUbwd8AfFtVv5F6UUQ+CXwF+HCpAjPVLXW1TNJ3f/d8BSOqT0GfcN/lp9HdG6VpUgO/377HJk5Nv3wJ/mRV/UjmRVX9poj8pTQhmVrQua+HWMzG6uV2Wksjf3pxX1oCb5k6rv9+mzg1qfIl+J5B7nu9mIGY2hHqCrNzbze9tsa9bFyBW9+/iKULZwyY98hk/dlNUr4EP0FE/jbLdSF+6IepM8m6u1huLyvHEU45ZjJgCdwULl+C/y2wLMd9jxQ5FlPlstXdTXlct6zVkroZsnwHfvxduQIx1a9zXw+uNaQqG9cBV4Rrl7eyYvGsSodjalC+ZZKfHux+Vf1accMx1axpUgO9UTseuxze3DyBa5bNt4lSMyL5SjTJ6fnjgZOA9Ynby4A/liooU50axwb56Klz+PZvn6t0KJ4kwEdPO5p3zJtK29GNlQ7HeEC+Es31ACLyCHCiqh5K3L4OuK/k0Zmq89HT5rDqkeewBTTF9//fM7+/b4wxxVBos5CpQG/K7d7ENVNn9nX38v6TmrFKfPEEXIcb3mvJ3RRfoacy3Qn8UUR+nrj9HuCHpQnJVKtr/udJ7nx8R6XD8IyAK1x+1rFcvLjZ6uymJApK8Kp6g4j8AjgtcenvVPXPpQvLVFrmZpqNz4csuRdB0OegqpbYTVkM5VzV0cBBVf2BiEwRkaNV1ZqPeNCRJmJwOBLjLcc08vtnQ5UOq+YFfcJ3L3mzHWxtyqagGryIXAtcDXw+cckP/KhUQZnKSd3M1N0bIxqD3z0bsvOZhkiAG947P+2YvJsvWMjpx73Rkrspm0JH8O8FTgCeAFDV3SIybvCnmFoU38xU6ShqmwN84/2LWL5oBue2TrPGX6ZiCk3wvaqqIvEOJCIypoQxmQpqmtRA2NZAjshVbz+O5YtmANY3xlRWocsk7xKR/wAmisg/Ar8C7ihdWKZSGscGWfmO4ysdRk17R+u0SodgDFD4KppbRORtwEHiu1qvUdUHSxqZqZhLTz+GLbsOsL7jpUqHUnMuOaU5rT+7MZVUUIIXkRtV9WrgwSzXjAf9w6lz+OWWl63newEuPW02x00dz6KZEy25m6pSaInmbVmunVfMQEz5hbrCdOzcT6grPOC+Dc+FLLkX6M7Hd3Dm3DdacjdVJ183yY8D/wwcIyKbU+4aB/yhlIGZ0kqudU89+i05Mbj9lUPc+Es7kTEbnwMB1+X1viNdNf2OQ+e+HptMNVUnX4nmx8AviB+w/bmU64dUdW/JojIllbrW/XBihftn12xm3lHjuX/Ly3ztwWcqHGH1Wnnu3AH/Pn2xGE2TGioUkTG5DVqiUdUDqvoCcCuwV1VfVNUXgYiILC5HgKb4Ovf14HfSv/ThSIy3f/0RS+7E/1Ocf+KMAdfHBFwWH93ITecvSNvAdNP5C2z0bqpSoevgvw2cmHK7K8s1UyPiB3cM3Jtqu1XjAn6Hj7/1GO7dvJtw5Mg8RFSVpkkNLJw5kSUtk20Dk6l6hU6yiqr2f6eraoyh9bExVaRxbJCz576x0mFUrQvbmmiZOo6bL1iYc6TeODbIwpkTLbmbqlZokn5ORD5JfNQO8YlXO9anRoW6wvzqqVcqHUbVumtjJ1ecHd+NaiN1U8sKHcF/DHgLsAvoBBYDlw72BBGZKSIPi8g2EdkqIleMLFQzFKGuMI888yqPPPPagGWQqzfssCWQg0iuigEbqZvaVuhO1leB9w/xtSPAVar6RKIx2SYReVBVtw01SDM069p38Zm7O+hLJHGfA1+7MN78KtQV5vaHt1c4wupmq2KMV+RbB79SVW8SkW8BA4Z8qvrJXM9V1ZeAlxIfHxKRp4AZgCX4Egp1hVm5ZnN/cgeIxOCzazpY0jKZ1Rt2EI7YdGqmoM8h4B7ZE2AjduMF+UbwTyX+3jiSNxGR2cTbDW/Ict+lJMo9zc3NI3kbQ6LdrzOw368rDlt3H+C2h2wZZNCVtI6Z44I+bl9xIhMa/FZrN54yaIJX1XsSfw/7/FURGQusBa5U1YNZ3mMVsAqgra3NCsMj1DSpgWhs4D9jVGM89tcQvdEsT6ojS//fNH719KuQkuD7YjFap4+3xG48J1+J5h6ylGaSVHV5nuf7iSf31ar6s2FFaIakcWyQk2ZP4tHt6UfsXbO0lS/da9WxK885jre3TmNlRpsGS+7Gi/KVaG5J/P23wDSOHNP3AWDQdXYiIsD3gKdU9WsjCdIUbvsrhwYkd4D9r4fxOcLAtmL1I9nKt2XqOJa0TGbr7gOA0Dp9fKVDM6Yk8pVofgsgIl9V1baUu+4RkXx1+SXAh4AnRaQ9ce0Lqnr/sKM1ebXv3J/1+lf/99m63anqc+Cn/3gybUc39l97dPuenM3WjPGKQjc6jRGROar6HICIHA0Memyfqj5K/OxhU0aLZk7Mer1ekrvfFd57wgzWd+xOS96pyT1bs7WVazezpGWylWqMpxSa4D8F/EZEniOetGcB/1SyqMyQhbrC/TsuLzmlmTsf21HpkMpuxd808+m3H0fj2CBXnzs35w7UZLO1wyk/9qzlr/GiQjc6/VJEjgXmJi49rar1XM4ti9SkPVjiyeztfmFbE34H+upl2E58HXsyucPgh103TWqgL5b+j2Obm4wXFXpk32jg08AsVf1HETlWRI5X1XtLG179GuxAjlTZyg31NnoP+oSbLyh8JUzj2CA3nb/AVtIYzyu0RPMDYBNwSuL2LuBuwBJ8CQylRpyt3OB1rgOjfC6RmHLZmS1cvLh5yMnZGomZelBogj9GVS8SkQ8AqOrriWWQpgSGUiPOVm7wIlfgi0vnsWzhdICiJObByjjGeEGhCb5XRBpIbHoSkWOgrpdUl9RQa8RLjmnk10+/Vo7QKiaqcGrKbzCWmI3Jr9B2wdcCvwRmishq4NfAypJFVeeSNeJ8x8Kta9/FKV/5teeTO0DAge5677NgzBDlHcGLiANMIr6b9WTiyySvUNU9JY6triVrxI/9NcSersPMOyp9t2WoK5zWEtjrHNexVS7GDFHeBK+qsUTb4LuA+8oQk0m49VfPcOfjyRUxT/GWY97Al5bPZ9KYAD/94w5PJ3dXwHEg4LpEVW2VizHDUGgN/lci8hngv4Hu5EVV3VuSqAzbXzmUktzj/vDXvZzz9UcQBukAV8NcRxjld4jG4gndVrkYMzKFJviLiOeUf864Pqe44dSnbBuacvWUAW8m9xveO59zW6cN+HewxG7M8BWa4OcRT+6nEs8vvwO+U6qg6kmuDU25esp4zVfeO5+3t06zhG5MCRS6iuaHwJuAbwLfIp7wh30IiIlL3dB0KBzhcF+MlWs3E+oKs/Wlg57v1HbJKc18YPEsS+rGlEihI/j5qjov5fbDImKnR4xQrg1NW3cf4Oq1mz1ZioH4Mqy7/ym9fa8xpvgKHcE/ISInJ2+IyGJGeE6ryb2hCQS/U+iXpvZ87K1zOHrK2Kz3hbrCdOzcT6jL9tEZM1KFZpE3A38QkRdE5AXgMeAkEXlSRDaXLDqPy7WhqXX6eA5HvLup587HXmTJjQ+xvn1X2vV17btYcuNDfPCODVnvN8YMTaElmnNLGkUdy9b0avXjL3p6jXtyR2pqAzU7hMOY4iu0H/yLpQ6kniUTWOe+HvZ193Ld+i0Vjqg8Uhuo2SEcxhRfoSN4U0SZ695Tl0qGozGi3m8OCaQ3ULNDOIwpPkvwZZJM6lt2HeDL923rX/f+6XOO4+YHnqYvRt30dB/td4mR3n7ADuEwpvhEtXpqvW1tbbpxo/cW5yRH6D5H6Ap7d/I00+zGBl4I9aRd87vC9z58Eq3Tx2dN3oUeU2iMiRORTaralu0+G8GXWOrkYb3ZubcHV+K93JNUNWdyBzuEw5hi8u5i6yqRnDysR1GFgC/9c2/w++jc15PjGcaYYqrPzFNG9XKkXi6RWHoJ0CZOjSkfS/Allpw8DPrq75/a7wrXLWvNezKVMaY0rAZfBssXzWDi6ACXfP+PlQ6lpC5sa2Jd+25cR4jGlJsviHfGPHf+wDbAxpjSswRfQqGucP+RexMb/JUOp6hOb2nk8ef34nOESEy5dlkrK06exdXnzs3a090SuzHlZwm+RNa17+LKn7Z7siNk0Cd8/f0nAFgyN6aK1V9huAxCXWE+e3ftJ3e/E+9I70v8HXTjR+pds6y1fyXMwpkTLaEbU6VsBF8Cnft6aq7dgCOQuuAl6HP47iVtTJ8wiu7eKGMCLt290fhO3Hu3DTiByhhTfSzBF1moK8zPnuik1ppBCvGkHnCPJO7Tj5uS9phQV5iLVj1mHR+NqRGW4ItoXfsuVq7ZTDhSY8N3YHTAx+0rTmRCgz/nahfr+GhMbbEEP0TbXzlE+879/YdiJz+eNCbA1WtrM7lDfAPSYC0EwDo+GlNrLMEPwTX/8yR3Pr4j633vmj9twOi2lnzxXfPyjsKt46MxtaVkCV5Evg8sBV5V1fmlep9y2f7KoZzJHeC+LS8TcKWMEQ2d65B18nd0wGX+jAkFvUa2E6iMMdWplMsk/xMPHfXXvnN/3sf0VvnMqoiwfOG0AddjqkMqszSODdrySGNqQMkSvKo+Auwt1euXW7LmXssiUeX+J1/m5KMnpV2/sK3JkrUxHlTxjU4icqmIbBSRja+99lqlw8mpZeo4LmxrqnQYIxaJwePP70u7dtfGTkJd4QpFZIwplYoneFVdpaptqto2ZcqU/E8ooVBXmI6d+7Mmu3Xtu1jfsZvRfgenukvtQ5Zc6miM8RZbRZOQevB15g5Nr5/KZEsdjfEmS/CkJ/DkMsfPrulg4mg/rdMnZN3g4xVBn/VoN8arSrlM8ifAGcBkEekErlXV75Xq/UYiWwIPR5SP/egJYqp8cek8T57K9PG3znQevZwAAAtNSURBVOGjp82x5G6MR5UswavqB0r12sXWNKmBnr7IgOuv90YBuP6ebZza8gYeenpPuUMrCZ8jXP/uVlYsnlXpUIwxJWQlmgQRgRwNfnsjsapN7snTkzI1+BxiKDGFvpT1+QFXuP+Tp9EydVw5wzTGVEDFV9FUg859Pbg1uDTG7wpfencrmce9ugL/cUkbf/jc2Xz1fQvTzkS95X0LLbkbUydsBA+MCbg1uULm6xcuZOnCGYwL+vjsmg5ccYhqjJsvWNjf6tdaCxhTvyzBA929UYKuEK7yVgOZDhyOzxvkS+J2jJ4x9clKNMQnWaVKSzQXndTE6ICb9b4v37utf1OW9YcxxmSyBM+RNriBzGJ2BZ0zdwqb/vUcVr5jLjHN/ptFITtQB9uda4zxturJaBW2fNEMvn3xCZUOg4AjBNx4PMnSyk3nLyCY5YdPvh2o69p3seTGh/jgHRtYcuNDrG/fVcrQjTFVxvMJfigj2J37Xi9DRIPrjSm9UfjM3R1sf+UQEE/2f/jcWVz1tuMI+qR/RcxgO1BTd+ceCkc43Bdj5drNNpI3po54epJ1sP4y2R57w31PlTnC3Hqjyju/9Si3XLCgfzR/+dnHcvHi5oJWxNj5qcYYz47gCx3BhrrCPPLMq1x1VzvlWCn5kVNmceffn8SYHBOnqXojA2MudDLVzk81xnh2BJ9vBBvqCrN6ww5uf3g7jsT7pJda0Ofw3hObaJrUQDRj4tTvxnfS9kXTnzPcUbedn2qM8WyCH2wEu659FyvXdBCOlHfduwj9pZVsyXfeUeN557cepTflp81IRt22ycmY+ubZBJ8riQJcvXZz2ZN7ZlveXMn3lguKO+q2TU7G1C/PJnjInkQ7du4fUm93n8BQfhb4HCGS0fxrtN/lOx96c3/7gKRsyddG3caYYvHsJGtS5qRkttJNLqP8Dlecc1xBR/TFa+gMSO4AMZTW6eOHHbMxxgyH5xN8pqHsWo1EY5w3f1p/8s7FdcDvDny90X4373p1Y4wpFU+XaHJZ0jKZr71vAZ+6q33AqpVUkRisfaIzV5v4fq4M7Mke9Dl850NvpnX6eEvuxpiKqLsEn9z85IoQ0/ivMP5BOkne8ejzaQdmZPK7wi3vWwgwYHI0s+ZujDHl5PkEH+oK909YAv2bn1IN1iZYiPeG6U15TNDn8Pnz5jJnyhhap0/oH6Hb5Kgxppp4OsFntir4xBktuDK0tsC90diAE5NEYNnC6dZ33RhT1Tyb4ENdYVau2Uw4EutfEnnbw9uJFriCJlU0Fh+1B1zbEWqMqR2eTfCrN+wgnNF/IOA6zJ0xnj+9uH9Ir6XAdcvmMW/6BCu/GGNqhieXSYa6wtz+8LMDrh/ui/LEEJN70rXrt/JiqDstudthGsaYaubJEXznvh4Crks4Ekm73pdlE1KheqPKyrWbWdIymcaxwSG1IjbGmErwxAg+cyTdNKlhQHIvBtcRHn76Vba/csgO0zDGVL2aH8FnG0lvfGEvvYNsYBqu7nCUa9dvpS8aw8noX2CHaRhjqk1NJ/jUQz2SK2U+c3dH2pr1YutO/uTIeA87TMMYU21qOsFnO9RDJH5wRqkFXUFFCNrSSWNMlarpBJ+tM6Rqefq8iyPcd9mpdPdGbemkMaYq1fQka7Iz5Ci/w7igj1F+h1vet5BLTmlOe9xpLY0DOkIG8nSITBoTjHeEvOSU5rT3uen8BbRMHWdtfY0xVUvKNeItRFtbm27cuHHIz0vtN5NMtttfOUT7zv0smjmRlqnjCHWF2br7ACBMnzCK7t4oW3Yf4Mv3bsMVoS8a4z0nTGdd+25ccYhqjGuWtjJ/xpHNTdnexxhjKklENqlqW9b7vJrgh/tcS+LGmFoyWIKv6Ro8ZF8mOZQNR5kNwqxhmDHGK0pagxeRc0XkLyKyXUQ+V+zXT10maRuOjDEmXckSvIi4wO3AecA84AMiMq+Y75FcJpkqueHIGGPqXSlH8H8DbFfV51S1F/gp8O5ivkG2ZZK24cgYY+JKmeBnADtTbncmrhVNtmWStuHIGGPiKj7JKiKXApcCNDc353n0QMsXzbCj8owxJotSJvhdwMyU202Ja2lUdRWwCuLLJIfzRrbyxRhjBiplieZPwLEicrSIBID3A+tL+H7GGGNSlGwEr6oREbkMeABwge+r6tZSvZ8xxph0Ja3Bq+r9wP2lfA9jjDHZ1XSzMWOMMblZgjfGGI+qqmZjIvIa8OIwnz4Z2FPEcCrJPpfqZJ9Ldar3z2WWqk7JdkdVJfiREJGNuTqq1Rr7XKqTfS7VyT6X3KxEY4wxHmUJ3hhjPMpLCX5VpQMoIvtcqpN9LtXJPpccPFODN8YYk85LI3hjjDEpLMEbY4xH1XyCL/WxgOUkIt8XkVdFZEulYxkJEZkpIg+LyDYR2SoiV1Q6puESkVEi8kcR6Uh8LtdXOqaREhFXRP4sIvdWOpaREJEXRORJEWkXkY2VjmckRGSiiKwRkadF5CkROaUor1vLNfjEsYDPAG8jfqDIn4APqOq2igY2TCJyOtAF3Kmq8ysdz3CJyFHAUar6hIiMAzYB76nFr4uICDBGVbtExA88Clyhqo9XOLRhE5FPA23AeFVdWul4hktEXgDaVLXmNzmJyA+B36nqHYnuu6NVdf9IX7fWR/AlPxawnFT1EWBvpeMYKVV9SVWfSHx8CHiKIp/mVS4a15W46U/8qdlRkYg0Ae8C7qh0LCZORCYApwPfA1DV3mIkd6j9BF/yYwHNyIjIbOAEYENlIxm+REmjHXgVeFBVa/ZzAb4BrARi+R5YAxT4XxHZlDgZrlYdDbwG/CBROrtDRMYU44VrPcGbKiYiY4G1wJWqerDS8QyXqkZVdRHxU8n+RkRqsnwmIkuBV1V1U6VjKZJTVfVE4DzgE4kSZy3yAScC31bVE4BuoCjzibWe4As6FtCUX6JevRZYrao/q3Q8xZD4tflh4NxKxzJMS4Dlidr1T4GzRORHlQ1p+FR1V+LvV4GfEy/Z1qJOoDPlN8M1xBP+iNV6grdjAatQYmLye8BTqvq1SsczEiIyRUQmJj5uID6h/3RloxoeVf28qjap6mzi/1ceUtUPVjisYRGRMYkJfBLljLcDNbn6TFVfBnaKyPGJS2cDRVmQUNITnUrNa8cCishPgDOAySLSCVyrqt+rbFTDsgT4EPBkonYN8IXECV+15ijgh4kVWw5wl6rW9PJCj5gK/Dw+lsAH/FhVf1nZkEbkcmB1YqD6HPB3xXjRml4maYwxJrdaL9EYY4zJwRK8McZ4lCV4Y4zxKEvwxhjjUZbgjTHGoyzBm7ojItFEB8KtiS6RV4mIk7ivTUS+mfh4qojcm3jMNhG5P3F9tohcPMjr/0ZEPHEItKltNb0O3phh6km0HkBE3gj8GBhPfN/BRiDZevZLxHvP3Jp47ILE9dnAxYnnGVO1bARv6lpim/ulwGUSd0ZKn/SjiG8jTz52c+LDfwdOS/wW8CkRaRCRnyb6eP8caCjrJ2FMDjaCN3VPVZ9L7FR9Y8ZdtwP/ndgt/SvgB6q6m3gjqM8ke6kn+qu/rqpvSozynyhj+MbkZCN4Y3JQ1QeAOcB3gbnAn0VkSpaHng78KPGczcDmLI8xpuwswZu6JyJzgCjxfu9pVHWvqv5YVT9EvLldrbakNXXIErypa4kR+XeA2zSjMZOInCUioxMfjwOOAXYAh4BxKQ99hPikK4le8QswpgpYDd7Uo4ZEl0s/EAH+C8jW1vjNwG0iEiE+GLpDVf+U6HUfFZEO4D+BbxM/jecp4scTeuVADVPjrJukMcZ4lJVojDHGoyzBG2OMR1mCN8YYj7IEb4wxHmUJ3hhjPMoSvDHGeJQleGOM8aj/AzdIvUjIhsvWAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "predicted_std.plot.scatter(x=\"DiStd\", y=\"predictedDiStd\")\n" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 296 }, "collapsed": true, "id": "oRJGGR4gyzjH", "outputId": "2abaddaf-3c9b-49ec-c30b-a88a427e127e" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 61 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "predicted_mfes.plot.scatter(x=\"predictedMonoMFEs\", y='MFE')" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GhfuCYjfCHGJ", "outputId": "f6687c38-f784-4dac-c91d-dec38a89cb95" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " normalization (Normalizatio (None, 20) 41 \n", " n) \n", " \n", " dense (Dense) (None, 64) 1344 \n", " \n", " dense_1 (Dense) (None, 64) 4160 \n", " \n", " dense_2 (Dense) (None, 1) 65 \n", " \n", "=================================================================\n", "Total params: 5,610\n", "Trainable params: 5,569\n", "Non-trainable params: 41\n", "_________________________________________________________________\n" ] } ], "source": [ "my_model.summary()" ] }, { "cell_type": "markdown", "metadata": { "id": "NixZHwDBGPid" }, "source": [ "# Testing model on RNAcentral data" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "id": "4vQCqeRC8Kbc", "colab": { "base_uri": "https://localhost:8080/", "height": 394 }, "outputId": "b64f57f9-7cf7-4a7e-b4e6-17dc88781b93" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE AA AU \\\n", "count 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 5729593.0 \n", "mean 85.1 0.5 0.5 0.5 -26.7 0.1 0.1 \n", "std 40.6 0.1 0.1 0.1 17.7 0.0 0.0 \n", "min 20.0 0.0 0.0 0.0 -221.1 0.0 0.0 \n", "25% 66.0 0.4 0.4 0.4 -35.4 0.0 0.0 \n", "50% 74.0 0.5 0.5 0.5 -25.7 0.1 0.1 \n", "75% 107.0 0.6 0.5 0.5 -14.1 0.1 0.1 \n", "max 200.0 1.0 1.0 1.0 0.0 1.0 0.5 \n", "\n", " AG AC UA ... GG GC CA \\\n", "count 5729593.0 5729592.0 5729592.0 ... 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "std 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "min 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "25% 0.1 0.0 0.0 ... 0.0 0.0 0.0 \n", "50% 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.0 ... 0.1 0.1 0.1 \n", "max 0.5 0.5 0.0 ... 1.0 0.4 0.5 \n", "\n", " CU CG CC MonoMFE mono_z DiMFE di_z \n", "count 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 5729592.0 \n", "mean 0.1 0.0 0.1 -20.8 -0.0 -21.5 -0.0 \n", "std 0.0 0.0 0.0 13.3 1.0 13.6 1.0 \n", "min 0.0 0.0 0.0 -118.5 -10.0 -140.0 -10.0 \n", "25% 0.0 0.0 0.0 -27.1 -0.6 -27.9 -0.6 \n", "50% 0.1 0.0 0.1 -20.0 0.1 -21.0 0.1 \n", "75% 0.1 0.1 0.1 -10.9 0.7 -11.5 0.7 \n", "max 0.5 0.3 1.0 0.0 4.4 0.0 4.0 \n", "\n", "[8 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
count5729593.05729593.05729593.05729593.05729593.05729593.05729593.05729593.05729592.05729592.0...5729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.05729592.0
mean85.10.50.50.5-26.70.10.10.10.00.0...0.10.10.10.10.00.1-20.8-0.0-21.5-0.0
std40.60.10.10.117.70.00.00.00.00.0...0.00.00.00.00.00.013.31.013.61.0
min20.00.00.00.0-221.10.00.00.00.00.0...0.00.00.00.00.00.0-118.5-10.0-140.0-10.0
25%66.00.40.40.4-35.40.00.00.10.00.0...0.00.00.00.00.00.0-27.1-0.6-27.9-0.6
50%74.00.50.50.5-25.70.10.10.10.00.0...0.10.10.10.10.00.1-20.00.1-21.00.1
75%107.00.60.50.5-14.10.10.10.10.10.0...0.10.10.10.10.10.1-10.90.7-11.50.7
max200.01.01.01.00.01.00.50.50.50.0...1.00.40.50.50.31.00.04.40.04.0
\n", "

8 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 64 } ], "source": [ "test_df.describe()" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "id": "ZfjI4WyLKsE4" }, "outputs": [], "source": [ "test_over_60 = test_df[test_df['Length'] >= 60]" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "id": "pNgw2Whgp7MK", "colab": { "base_uri": "https://localhost:8080/", "height": 488 }, "outputId": "38e10ff8-d8e7-4e8e-ba5b-2f130b64ce21" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE AA AU AG AC UA ... \\\n", "0 200 0.6 0.4 0.6 -59.2 0.1 0.0 0.1 0.1 0.0 ... \n", "1 72 0.2 0.4 0.5 -11.9 0.1 0.2 0.0 0.0 0.0 ... \n", "2 104 0.5 0.4 0.5 -31.3 0.0 0.0 0.1 0.1 0.0 ... \n", "5 69 0.4 0.3 0.5 -17.9 0.1 0.1 0.1 0.0 0.0 ... \n", "6 70 0.4 0.6 0.5 -13.9 0.1 0.0 0.1 0.1 0.0 ... \n", "... ... ... ... ... ... .. .. .. .. .. ... \n", "5729588 73 0.6 0.4 0.4 -25.8 0.0 0.0 0.1 0.0 0.0 ... \n", "5729589 117 0.6 0.4 0.5 -38.6 0.0 0.1 0.1 0.0 0.0 ... \n", "5729590 85 0.6 0.4 0.5 -37.3 0.0 0.0 0.1 0.0 0.0 ... \n", "5729591 113 0.4 0.5 0.5 -22.2 0.1 0.1 0.1 0.1 0.0 ... \n", "5729592 84 0.6 0.5 0.5 -34.4 0.1 0.0 0.0 0.0 0.0 ... \n", "\n", " GG GC CA CU CG CC MonoMFE mono_z DiMFE di_z \n", "0 0.1 0.1 0.0 0.1 0.1 0.0 -64.8 0.4 -64.9 -2.0 \n", "1 0.1 0.0 0.0 0.0 0.0 0.0 -7.4 0.3 -10.3 0.6 \n", "2 0.1 0.0 0.1 0.0 0.1 0.1 -30.0 0.1 -29.6 -0.6 \n", "5 0.1 0.1 0.0 0.1 0.0 0.0 -13.0 0.8 -16.1 -0.8 \n", "6 0.0 0.0 0.1 0.1 0.0 0.1 -7.3 -0.7 -10.8 0.1 \n", "... .. .. .. .. .. .. ... ... ... ... \n", "5729588 0.1 0.1 0.0 0.1 0.1 0.1 -23.4 -0.2 -20.9 1.2 \n", "5729589 0.1 0.1 0.1 0.0 0.1 0.1 -35.9 -2.2 -35.0 1.0 \n", "5729590 0.1 0.1 0.1 0.1 0.1 0.1 -29.2 -0.6 -30.1 1.9 \n", "5729591 0.0 0.0 0.1 0.0 0.0 0.0 -21.4 0.1 -22.9 1.4 \n", "5729592 0.1 0.1 0.0 0.0 0.1 0.1 -28.0 0.3 -29.8 -0.9 \n", "\n", "[4591323 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
02000.60.40.6-59.20.10.00.10.10.0...0.10.10.00.10.10.0-64.80.4-64.9-2.0
1720.20.40.5-11.90.10.20.00.00.0...0.10.00.00.00.00.0-7.40.3-10.30.6
21040.50.40.5-31.30.00.00.10.10.0...0.10.00.10.00.10.1-30.00.1-29.6-0.6
5690.40.30.5-17.90.10.10.10.00.0...0.10.10.00.10.00.0-13.00.8-16.1-0.8
6700.40.60.5-13.90.10.00.10.10.0...0.00.00.10.10.00.1-7.3-0.7-10.80.1
..................................................................
5729588730.60.40.4-25.80.00.00.10.00.0...0.10.10.00.10.10.1-23.4-0.2-20.91.2
57295891170.60.40.5-38.60.00.10.10.00.0...0.10.10.10.00.10.1-35.9-2.2-35.01.0
5729590850.60.40.5-37.30.00.00.10.00.0...0.10.10.10.10.10.1-29.2-0.6-30.11.9
57295911130.40.50.5-22.20.10.10.10.10.0...0.00.00.10.00.00.0-21.40.1-22.91.4
5729592840.60.50.5-34.40.10.00.00.00.0...0.10.10.00.00.10.1-28.00.3-29.8-0.9
\n", "

4591323 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 66 } ], "source": [ "test_over_60.apply(pd.to_numeric)\n" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "id": "mHv2WLDfkuOR", "colab": { "base_uri": "https://localhost:8080/", "height": 394 }, "outputId": "1811ba3c-f18b-4cb7-83dc-60eb65858bdb" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Length GCpercent CGratio AUratio MFE AA AU \\\n", "count 4591323.0 4591323.0 4591323.0 4591323.0 4591323.0 4591323.0 4591323.0 \n", "mean 97.7 0.5 0.5 0.5 -31.9 0.1 0.1 \n", "std 34.9 0.1 0.1 0.1 15.6 0.0 0.0 \n", "min 60.0 0.0 0.0 0.0 -221.1 0.0 0.0 \n", "25% 72.0 0.4 0.4 0.4 -38.7 0.0 0.0 \n", "50% 82.0 0.5 0.5 0.5 -29.0 0.1 0.0 \n", "75% 117.0 0.6 0.5 0.5 -21.8 0.1 0.1 \n", "max 200.0 1.0 1.0 1.0 0.0 0.9 0.5 \n", "\n", " AG AC UA ... GG GC CA \\\n", "count 4591323.0 4591322.0 4591322.0 ... 4591322.0 4591322.0 4591322.0 \n", "mean 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "std 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "min 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "25% 0.1 0.0 0.0 ... 0.1 0.0 0.0 \n", "50% 0.1 0.0 0.0 ... 0.1 0.1 0.1 \n", "75% 0.1 0.1 0.0 ... 0.1 0.1 0.1 \n", "max 0.5 0.5 0.0 ... 0.4 0.3 0.5 \n", "\n", " CU CG CC MonoMFE mono_z DiMFE di_z \n", "count 4591322.0 4591322.0 4591322.0 4591322.0 4591322.0 4591322.0 4591322.0 \n", "mean 0.1 0.0 0.1 -24.8 -0.0 -25.7 -0.0 \n", "std 0.0 0.0 0.0 11.7 1.0 11.8 1.0 \n", "min 0.0 0.0 0.0 -118.5 -10.0 -140.0 -10.0 \n", "25% 0.0 0.0 0.0 -29.8 -0.6 -30.7 -0.6 \n", "50% 0.1 0.0 0.1 -22.3 0.1 -23.1 0.1 \n", "75% 0.1 0.1 0.1 -17.7 0.7 -18.6 0.7 \n", "max 0.5 0.3 0.4 0.0 4.4 0.0 4.0 \n", "\n", "[8 rows x 25 columns]" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LengthGCpercentCGratioAUratioMFEAAAUAGACUA...GGGCCACUCGCCMonoMFEmono_zDiMFEdi_z
count4591323.04591323.04591323.04591323.04591323.04591323.04591323.04591323.04591322.04591322.0...4591322.04591322.04591322.04591322.04591322.04591322.04591322.04591322.04591322.04591322.0
mean97.70.50.50.5-31.90.10.10.10.00.0...0.10.10.10.10.00.1-24.8-0.0-25.7-0.0
std34.90.10.10.115.60.00.00.00.00.0...0.00.00.00.00.00.011.71.011.81.0
min60.00.00.00.0-221.10.00.00.00.00.0...0.00.00.00.00.00.0-118.5-10.0-140.0-10.0
25%72.00.40.40.4-38.70.00.00.10.00.0...0.10.00.00.00.00.0-29.8-0.6-30.7-0.6
50%82.00.50.50.5-29.00.10.00.10.00.0...0.10.10.10.10.00.1-22.30.1-23.10.1
75%117.00.60.50.5-21.80.10.10.10.10.0...0.10.10.10.10.10.1-17.70.7-18.60.7
max200.01.01.01.00.00.90.50.50.50.0...0.40.30.50.50.30.40.04.40.04.0
\n", "

8 rows × 25 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 67 } ], "source": [ "test_over_60.describe()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "id": "udfgrCE1f9To", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "264c7917-662e-48a2-eb3e-3b529d056cd5" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Index(['Length', 'GCpercent', 'CGratio', 'AUratio', 'AA', 'AU', 'AG', 'AC',\n", " 'UA', 'UU', 'UG', 'UC', 'GA', 'GU', 'GG', 'GC', 'CA', 'CU', 'CG', 'CC'],\n", " dtype='object')" ] }, "metadata": {}, "execution_count": 68 } ], "source": [ "my_feature.columns" ] }, { "cell_type": "markdown", "source": [ "The following cell shows an example of how you can predict MFEs for a large dataset. Here we are analyzing all sequences between 60-200 nt from the RNACentral database." ], "metadata": { "id": "lcWNuJXC4ep_" } }, { "cell_type": "code", "execution_count": 71, "metadata": { "id": "iz39Jue9KirH" }, "outputs": [], "source": [ "### Predicting with all 21 features:\n", "rna_central_MonoMFE_result = my_model.predict(test_over_60[[\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", 'AA', 'AU', 'AG',\n", " 'AC', 'UA', 'UU', 'UG', 'UC', 'GA', 'GU', 'GG', 'GC', 'CA', 'CU', 'CG',\n", " 'CC']])\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "jp0jV5fUijwv" }, "outputs": [], "source": [ "rna_central_predicted_mfes = []\n", "#rna_central_predicted_stds = pd.DataFrame(rna_central_MonoStd_result)\n", "rna_central_predicted_mfes = pd.DataFrame(rna_central_MonoMFE_result)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "WybQRGJGUNs1" }, "outputs": [], "source": [ "#rna_central_predicted_stds = pd.DataFrame(rna_central_MonoStd_result)\n", "#rna_central_predicted_mfes.columns = [\"predictedMonoStds\"]\n", "rna_central_predicted_mfes[\"predictedMonoStds\"] = rna_central_MonoStd_result\n", "rna_central_predicted_mfes[\"predictedMonoMFEs\"] = rna_central_MonoMFE_result" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "brYLobmbtqWA" }, "outputs": [], "source": [ "len(test_over_60['MFE'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "M0EU8wJ6OXrL" }, "outputs": [], "source": [ "rna_central_predicted_mfes[\"MFE\"] = test_over_60['MFE'].to_list()\n", "rna_central_predicted_mfes[\"Length\"] = test_over_60['Length'].to_list()\n", "rna_central_predicted_mfes[\"MonoMFE\"] = test_over_60['MonoMFE'].to_list()\n", "rna_central_predicted_mfes[\"DiMFE\"] = test_over_60['DiMFE'].to_list()\n", "\n", "#predicted_mfes[\"DiMFE\"] = di_mfe\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "WtXiprh1_W-u" }, "outputs": [], "source": [ "rna_central_predicted_mfes.describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "dJx4eR5c-dUs" }, "outputs": [], "source": [ "my_label.describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "gpks0PDPSeYa" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"predictedMonoMFEs\", y='MonoMFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ruoUK3wkpVyZ" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"predictedMonoMFEs\", y='MonoMFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "92q1yXeJpXYJ" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"predictedMonoMFEs\", y='MFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "2P-nvPkTTXdF" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"predictedMonoMFEs\", y='MFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "b0cSNTOQo8ZG" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"MonoMFE\", y='MFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "tgImj2Ajp4Fu" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"DiMFE\", y='MFE')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "KtU4uiEip68c" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"MonoMFE\", y='DiMFE')" ] }, { "cell_type": "markdown", "metadata": { "id": "Yy_R7lIuVf9P" }, "source": [ "Calculating z-scores" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "aejMMcHoViBv" }, "outputs": [], "source": [ "### Create MFE list\n", "mfe_list = test_over_60['MFE'].tolist()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "P_7W-UJCU46Z" }, "outputs": [], "source": [ "zscore_list = []\n", "for i in range(0, len(mfe_list)):\n", " mfe = (mfe_list[i])\n", " print(mfe)\n", " mean_mfe = rna_central_meanMFE_result[i][0]\n", " print(mean_mfe)\n", " std = rna_central_MonoStd_result[i][0]\n", " print(std)\n", " if mean_mfe > 0:\n", " #print(mean_mfe)\n", " mean_mfe = 0\n", " zscore = round(float((mfe-mean_mfe)/std), 2)\n", " zscore_list.append(zscore)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "TQRIJSetay-m" }, "outputs": [], "source": [ "len(zscore_list)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "EPubCKBsV2LY" }, "outputs": [], "source": [ "rna_central_predicted_mfes['predicted_Z-scores'] = zscore_list" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "srYVRcOaWF91" }, "outputs": [], "source": [ "rna_central_predicted_mfes['Mono_Z-scores'] = test_over_60['mono_z'].to_list()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "A-qVx0CmXUJb" }, "outputs": [], "source": [ "rna_central_predicted_mfes['Di_Z-scores'] = test_over_60['di_z'].to_list()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "VWKQg1FaWD6K" }, "outputs": [], "source": [ "#rna_central_predicted_mfes.plot.scatter(x=\"predicted_Z-scores\", y='Mono_Z-scores', xlim=[-10, 10], ylim=[-10,10])\n", "rna_central_predicted_mfes.plot.scatter(x=\"predicted_Z-scores\", y='Mono_Z-scores')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "U4fXpJUYXXCq" }, "outputs": [], "source": [ "rna_central_predicted_mfes.plot.scatter(x=\"predicted_Z-scores\", y='Di_Z-scores', xlim=[-20, 10])" ] }, { "cell_type": "markdown", "metadata": { "id": "nA7yh96S05Lo" }, "source": [ "Violin Plot" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "TG6c2FF0049_" }, "outputs": [], "source": [ "fig, axes = plt.subplots()\n", "\n", "axes.violinplot(dataset = test_df[test_df['MonoMFE'].values])\n", "\n", "axes.set_title('Predicted Mono MFEs')\n", "axes.set_xlabel('Predicted Mono MFE')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "source": [ "### Questions or suggestions?\n", "E-mail:\n", "\n", "Ryan J. Andrews ryan.j.rna@gmail.com\n", "Walter N. Moss wmoss@iastate.edu\n", "Warren B. Rouse wbrouse@iastate.edu\n", "\n" ], "metadata": { "id": "_fCqd4qLzMyn" } }, { "cell_type": "markdown", "metadata": { "id": "l7OX4RQzd3dR" }, "source": [ "# Making Predictions with model\n", "Once you have both a standard deviation and mean MFE model built and loaded, you can calculate z" ] }, { "cell_type": "markdown", "source": [ "Now we are going to clone the ScanFold 2.0 github repo so we can easily access the models stored there." ], "metadata": { "id": "-bxTUcqH86Ql" } }, { "cell_type": "code", "source": [ "! git clone https://github.com/moss-lab/ScanFold2.0" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "n2-9L12k_53b", "outputId": "8ea3072a-1651-47c4-b3f5-05e131579fd5" }, "execution_count": 79, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Cloning into 'ScanFold2.0'...\n", "remote: Enumerating objects: 192, done.\u001b[K\n", "remote: Counting objects: 100% (33/33), done.\u001b[K\n", "remote: Compressing objects: 100% (5/5), done.\u001b[K\n", "remote: Total 192 (delta 29), reused 28 (delta 28), pack-reused 159\u001b[K\n", "Receiving objects: 100% (192/192), 319.09 KiB | 3.80 MiB/s, done.\n", "Resolving deltas: 100% (108/108), done.\n" ] } ] }, { "cell_type": "code", "source": [ "mean_mfe_model = tf.keras.models.load_model('/content/ScanFold2.0/MeanMFE')\n", "std_dev_model = tf.keras.models.load_model('/content/ScanFold2.0/StdDev')\n", "di_mean_mfe_model = tf.keras.models.load_model('/content/ScanFold2.0/DiMFE')\n", "di_std_dev_model = tf.keras.models.load_model('/content/ScanFold2.0/DiStd')" ], "metadata": { "id": "m-nUGrot8Gb_" }, "execution_count": 100, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "q03hC506k96D" }, "source": [ "### Installing ViennaRNA\n", "First we will install RNAfold (from ViennaRNA)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "id": "Y9nOW6sbgMBf", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "8974ef95-22a2-4d4d-e5d6-34fb01c04e7a" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "PREFIX=/usr/local\n", "installing: python-3.6.5-hc3d631a_2 ...\n", "installing: ca-certificates-2018.03.07-0 ...\n", "installing: conda-env-2.6.0-h36134e3_1 ...\n", "installing: libgcc-ng-7.2.0-hdf63c60_3 ...\n", "installing: libstdcxx-ng-7.2.0-hdf63c60_3 ...\n", "installing: libffi-3.2.1-hd88cf55_4 ...\n", "installing: ncurses-6.1-hf484d3e_0 ...\n", "installing: openssl-1.0.2o-h20670df_0 ...\n", "installing: tk-8.6.7-hc745277_3 ...\n", "installing: xz-5.2.4-h14c3975_4 ...\n", "installing: yaml-0.1.7-had09818_2 ...\n", "installing: zlib-1.2.11-ha838bed_2 ...\n", "installing: libedit-3.1.20170329-h6b74fdf_2 ...\n", "installing: readline-7.0-ha6073c6_4 ...\n", "installing: sqlite-3.23.1-he433501_0 ...\n", "installing: asn1crypto-0.24.0-py36_0 ...\n", "installing: certifi-2018.4.16-py36_0 ...\n", "installing: chardet-3.0.4-py36h0f667ec_1 ...\n", "installing: idna-2.6-py36h82fb2a8_1 ...\n", "installing: pycosat-0.6.3-py36h0a5515d_0 ...\n", "installing: pycparser-2.18-py36hf9f622e_1 ...\n", "installing: pysocks-1.6.8-py36_0 ...\n", "installing: ruamel_yaml-0.15.37-py36h14c3975_2 ...\n", "installing: six-1.11.0-py36h372c433_1 ...\n", "installing: cffi-1.11.5-py36h9745a5d_0 ...\n", "installing: setuptools-39.2.0-py36_0 ...\n", "installing: cryptography-2.2.2-py36h14c3975_0 ...\n", "installing: wheel-0.31.1-py36_0 ...\n", "installing: pip-10.0.1-py36_0 ...\n", "installing: pyopenssl-18.0.0-py36_0 ...\n", "installing: urllib3-1.22-py36hbe7ace6_0 ...\n", "installing: requests-2.18.4-py36he2e5f8d_1 ...\n", "installing: conda-4.5.4-py36_0 ...\n", "installation finished.\n", "WARNING:\n", " You currently have a PYTHONPATH environment variable set. This may cause\n", " unexpected behavior when running the Python interpreter in Miniconda3.\n", " For best results, please verify that your PYTHONPATH only points to\n", " directories of packages that are compatible with the Python interpreter\n", " in Miniconda3: /usr/local\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "--2022-09-16 19:45:22-- https://repo.continuum.io/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh\n", "Resolving repo.continuum.io (repo.continuum.io)... 104.18.201.79, 104.18.200.79, 2606:4700::6812:c94f, ...\n", "Connecting to repo.continuum.io (repo.continuum.io)|104.18.201.79|:443... connected.\n", "HTTP request sent, awaiting response... 301 Moved Permanently\n", "Location: https://repo.anaconda.com/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh [following]\n", "--2022-09-16 19:45:22-- https://repo.anaconda.com/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh\n", "Resolving repo.anaconda.com (repo.anaconda.com)... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8203, ...\n", "Connecting to repo.anaconda.com (repo.anaconda.com)|104.16.130.3|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 58468498 (56M) [application/x-sh]\n", "Saving to: ‘Miniconda3-4.5.4-Linux-x86_64.sh’\n", "\n", " 0K .......... .......... .......... .......... .......... 0% 45.6M 1s\n", " 50K .......... .......... .......... .......... .......... 0% 4.23M 7s\n", " 100K .......... .......... .......... .......... .......... 0% 5.33M 8s\n", " 150K .......... .......... .......... .......... .......... 0% 27.2M 7s\n", " 200K .......... .......... .......... .......... .......... 0% 67.4M 6s\n", " 250K .......... .......... .......... .......... .......... 0% 70.8M 5s\n", " 300K .......... .......... .......... .......... .......... 0% 6.09M 5s\n", " 350K .......... .......... .......... .......... .......... 0% 61.5M 5s\n", " 400K .......... .......... .......... .......... .......... 0% 79.9M 4s\n", " 450K .......... .......... .......... .......... .......... 0% 79.0M 4s\n", " 500K .......... .......... .......... .......... .......... 0% 151M 4s\n", " 550K .......... .......... .......... .......... .......... 1% 92.4M 3s\n", " 600K .......... .......... .......... .......... .......... 1% 83.5M 3s\n", " 650K .......... .......... .......... .......... .......... 1% 188M 3s\n", " 700K .......... .......... .......... .......... .......... 1% 84.9M 3s\n", " 750K .......... .......... .......... .......... .......... 1% 56.1M 3s\n", " 800K .......... .......... .......... .......... .......... 1% 68.9M 3s\n", " 850K .......... .......... .......... .......... .......... 1% 9.15M 3s\n", " 900K .......... .......... .......... .......... .......... 1% 64.3M 3s\n", " 950K .......... .......... .......... .......... .......... 1% 57.9M 3s\n", " 1000K .......... .......... .......... .......... .......... 1% 78.5M 2s\n", " 1050K .......... .......... .......... .......... .......... 1% 65.5M 2s\n", " 1100K .......... .......... .......... .......... .......... 2% 166M 2s\n", " 1150K .......... .......... .......... .......... .......... 2% 67.1M 2s\n", " 1200K .......... .......... .......... .......... .......... 2% 126M 2s\n", " 1250K .......... .......... .......... .......... .......... 2% 342M 2s\n", " 1300K .......... .......... .......... .......... .......... 2% 356M 2s\n", " 1350K .......... .......... .......... .......... .......... 2% 224M 2s\n", " 1400K .......... .......... .......... .......... .......... 2% 117M 2s\n", " 1450K .......... .......... .......... .......... .......... 2% 50.6M 2s\n", " 1500K .......... .......... .......... .......... .......... 2% 132M 2s\n", " 1550K .......... .......... .......... .......... .......... 2% 174M 2s\n", " 1600K .......... .......... .......... .......... .......... 2% 172M 2s\n", " 1650K .......... .......... .......... .......... .......... 2% 172M 2s\n", " 1700K .......... .......... .......... .......... .......... 3% 73.6M 2s\n", " 1750K .......... .......... .......... .......... .......... 3% 95.2M 2s\n", " 1800K .......... .......... .......... .......... .......... 3% 121M 2s\n", " 1850K .......... .......... .......... .......... .......... 3% 142M 2s\n", " 1900K .......... .......... .......... .......... .......... 3% 25.8M 2s\n", " 1950K .......... .......... .......... .......... .......... 3% 58.3M 2s\n", " 2000K .......... .......... .......... .......... .......... 3% 191M 2s\n", " 2050K .......... .......... .......... .......... .......... 3% 306M 1s\n", " 2100K .......... .......... .......... .......... .......... 3% 277M 1s\n", " 2150K .......... .......... .......... .......... .......... 3% 217M 1s\n", " 2200K .......... .......... .......... .......... .......... 3% 341M 1s\n", " 2250K .......... .......... .......... .......... .......... 4% 79.6M 1s\n", " 2300K .......... .......... .......... .......... .......... 4% 63.0M 1s\n", " 2350K .......... .......... .......... .......... .......... 4% 54.3M 1s\n", " 2400K .......... .......... .......... .......... .......... 4% 58.9M 1s\n", " 2450K .......... .......... .......... .......... .......... 4% 111M 1s\n", " 2500K .......... .......... .......... .......... .......... 4% 331M 1s\n", " 2550K .......... .......... .......... .......... .......... 4% 225M 1s\n", " 2600K .......... .......... .......... .......... .......... 4% 347M 1s\n", " 2650K .......... .......... .......... .......... .......... 4% 256M 1s\n", " 2700K .......... .......... .......... .......... .......... 4% 306M 1s\n", " 2750K .......... .......... .......... .......... .......... 4% 329M 1s\n", " 2800K .......... .......... .......... .......... .......... 4% 282M 1s\n", " 2850K .......... .......... .......... .......... .......... 5% 340M 1s\n", " 2900K .......... .......... .......... .......... .......... 5% 275M 1s\n", " 2950K .......... .......... .......... .......... .......... 5% 182M 1s\n", " 3000K .......... .......... .......... .......... .......... 5% 299M 1s\n", " 3050K .......... .......... .......... .......... .......... 5% 363M 1s\n", " 3100K .......... .......... .......... .......... .......... 5% 293M 1s\n", " 3150K .......... .......... .......... .......... .......... 5% 236M 1s\n", " 3200K .......... .......... .......... .......... .......... 5% 150M 1s\n", " 3250K .......... .......... .......... .......... .......... 5% 256M 1s\n", " 3300K .......... .......... .......... .......... .......... 5% 345M 1s\n", " 3350K .......... .......... .......... .......... .......... 5% 247M 1s\n", " 3400K .......... .......... .......... .......... .......... 6% 39.8M 1s\n", " 3450K .......... .......... .......... .......... .......... 6% 52.7M 1s\n", " 3500K .......... .......... .......... .......... .......... 6% 61.3M 1s\n", " 3550K .......... .......... .......... .......... .......... 6% 69.8M 1s\n", " 3600K .......... .......... .......... .......... .......... 6% 177M 1s\n", " 3650K .......... .......... .......... .......... .......... 6% 175M 1s\n", " 3700K .......... .......... .......... .......... .......... 6% 191M 1s\n", " 3750K .......... .......... .......... .......... .......... 6% 140M 1s\n", " 3800K .......... .......... .......... .......... .......... 6% 102M 1s\n", " 3850K .......... .......... .......... .......... .......... 6% 135M 1s\n", " 3900K .......... .......... .......... .......... .......... 6% 186M 1s\n", " 3950K .......... .......... .......... .......... .......... 7% 182M 1s\n", " 4000K .......... .......... .......... .......... .......... 7% 186M 1s\n", " 4050K .......... .......... .......... .......... .......... 7% 189M 1s\n", " 4100K .......... .......... .......... .......... .......... 7% 207M 1s\n", " 4150K .......... .......... .......... .......... .......... 7% 166M 1s\n", " 4200K .......... .......... .......... .......... .......... 7% 228M 1s\n", " 4250K .......... .......... .......... .......... .......... 7% 380M 1s\n", " 4300K .......... .......... .......... .......... .......... 7% 339M 1s\n", " 4350K .......... .......... .......... .......... .......... 7% 173M 1s\n", " 4400K .......... .......... .......... .......... .......... 7% 297M 1s\n", " 4450K .......... .......... .......... .......... .......... 7% 184M 1s\n", " 4500K .......... .......... .......... .......... .......... 7% 282M 1s\n", " 4550K .......... .......... .......... .......... .......... 8% 290M 1s\n", " 4600K .......... .......... .......... .......... .......... 8% 366M 1s\n", " 4650K .......... .......... .......... .......... .......... 8% 355M 1s\n", " 4700K .......... .......... .......... .......... .......... 8% 371M 1s\n", " 4750K .......... .......... .......... .......... .......... 8% 208M 1s\n", " 4800K .......... .......... .......... .......... .......... 8% 355M 1s\n", " 4850K .......... .......... .......... .......... .......... 8% 333M 1s\n", " 4900K .......... .......... .......... .......... .......... 8% 327M 1s\n", " 4950K .......... .......... .......... .......... .......... 8% 273M 1s\n", " 5000K .......... .......... .......... .......... .......... 8% 380M 1s\n", " 5050K .......... .......... .......... .......... .......... 8% 301M 1s\n", " 5100K .......... .......... .......... .......... .......... 9% 367M 1s\n", " 5150K .......... .......... .......... .......... .......... 9% 337M 1s\n", " 5200K .......... .......... .......... .......... .......... 9% 364M 1s\n", " 5250K .......... .......... .......... .......... .......... 9% 376M 1s\n", " 5300K .......... .......... .......... .......... .......... 9% 20.0M 1s\n", " 5350K .......... .......... .......... .......... .......... 9% 141M 1s\n", " 5400K .......... .......... .......... .......... .......... 9% 284M 1s\n", " 5450K .......... .......... .......... .......... .......... 9% 357M 1s\n", " 5500K .......... .......... .......... .......... .......... 9% 362M 1s\n", " 5550K .......... .......... .......... .......... .......... 9% 215M 1s\n", " 5600K .......... .......... .......... .......... .......... 9% 238M 1s\n", " 5650K .......... .......... .......... .......... .......... 9% 225M 1s\n", " 5700K .......... .......... .......... .......... .......... 10% 278M 1s\n", " 5750K .......... .......... .......... .......... .......... 10% 229M 1s\n", " 5800K .......... .......... .......... .......... .......... 10% 164M 1s\n", " 5850K .......... .......... .......... .......... .......... 10% 266M 1s\n", " 5900K .......... .......... .......... .......... .......... 10% 290M 1s\n", " 5950K .......... .......... .......... .......... .......... 10% 338M 1s\n", " 6000K .......... .......... .......... .......... .......... 10% 370M 1s\n", " 6050K .......... .......... .......... .......... .......... 10% 373M 1s\n", " 6100K .......... .......... .......... .......... .......... 10% 224M 1s\n", " 6150K .......... .......... .......... .......... .......... 10% 292M 1s\n", " 6200K .......... .......... .......... .......... .......... 10% 380M 1s\n", " 6250K .......... .......... .......... .......... .......... 11% 369M 1s\n", " 6300K .......... .......... .......... .......... .......... 11% 372M 1s\n", " 6350K .......... .......... .......... .......... .......... 11% 101M 1s\n", " 6400K .......... .......... .......... .......... .......... 11% 55.7M 1s\n", " 6450K .......... .......... .......... .......... .......... 11% 50.8M 1s\n", " 6500K .......... .......... .......... .......... .......... 11% 58.5M 1s\n", " 6550K .......... .......... .......... .......... .......... 11% 69.4M 1s\n", " 6600K .......... .......... .......... .......... .......... 11% 360M 1s\n", " 6650K .......... .......... .......... .......... .......... 11% 333M 1s\n", " 6700K .......... .......... .......... .......... .......... 11% 315M 1s\n", " 6750K .......... .......... .......... .......... .......... 11% 306M 1s\n", " 6800K .......... .......... .......... .......... .......... 11% 338M 1s\n", " 6850K .......... .......... .......... .......... .......... 12% 359M 1s\n", " 6900K .......... .......... .......... .......... .......... 12% 345M 1s\n", " 6950K .......... .......... .......... .......... .......... 12% 299M 1s\n", " 7000K .......... .......... .......... .......... .......... 12% 364M 1s\n", " 7050K .......... .......... .......... .......... .......... 12% 297M 1s\n", " 7100K .......... .......... .......... .......... .......... 12% 359M 1s\n", " 7150K .......... .......... .......... .......... .......... 12% 311M 1s\n", " 7200K .......... .......... .......... .......... .......... 12% 373M 1s\n", " 7250K .......... .......... .......... .......... .......... 12% 370M 1s\n", " 7300K .......... .......... .......... .......... .......... 12% 370M 1s\n", " 7350K .......... .......... .......... .......... .......... 12% 322M 1s\n", " 7400K .......... .......... .......... .......... .......... 13% 293M 1s\n", " 7450K .......... .......... .......... .......... .......... 13% 256M 1s\n", " 7500K .......... .......... .......... .......... .......... 13% 370M 1s\n", " 7550K .......... .......... .......... .......... .......... 13% 325M 1s\n", " 7600K .......... .......... .......... .......... .......... 13% 374M 1s\n", " 7650K .......... .......... .......... .......... .......... 13% 237M 1s\n", " 7700K .......... .......... .......... .......... .......... 13% 286M 1s\n", " 7750K .......... .......... .......... .......... .......... 13% 312M 1s\n", " 7800K .......... .......... .......... .......... .......... 13% 333M 1s\n", " 7850K .......... .......... .......... .......... .......... 13% 377M 1s\n", " 7900K .......... .......... .......... .......... .......... 13% 268M 1s\n", " 7950K .......... .......... .......... .......... .......... 14% 216M 1s\n", " 8000K .......... .......... .......... .......... .......... 14% 128M 1s\n", " 8050K .......... .......... .......... .......... .......... 14% 249M 1s\n", " 8100K .......... .......... .......... .......... .......... 14% 294M 1s\n", " 8150K .......... .......... .......... .......... .......... 14% 205M 1s\n", " 8200K .......... .......... .......... .......... .......... 14% 224M 1s\n", " 8250K .......... .......... .......... .......... .......... 14% 165M 1s\n", " 8300K .......... .......... .......... .......... .......... 14% 13.9M 1s\n", " 8350K .......... .......... .......... .......... .......... 14% 63.6M 1s\n", " 8400K .......... .......... .......... .......... .......... 14% 85.0M 1s\n", " 8450K .......... .......... .......... .......... .......... 14% 70.7M 1s\n", " 8500K .......... .......... .......... .......... .......... 14% 146M 1s\n", " 8550K .......... .......... .......... .......... .......... 15% 138M 1s\n", " 8600K .......... .......... .......... .......... .......... 15% 166M 1s\n", " 8650K .......... .......... .......... .......... .......... 15% 169M 1s\n", " 8700K .......... .......... .......... .......... .......... 15% 185M 1s\n", " 8750K .......... .......... .......... .......... .......... 15% 162M 1s\n", " 8800K .......... .......... .......... .......... .......... 15% 158M 1s\n", " 8850K .......... .......... .......... .......... .......... 15% 163M 1s\n", " 8900K .......... .......... .......... .......... .......... 15% 205M 1s\n", " 8950K .......... .......... .......... .......... .......... 15% 176M 1s\n", " 9000K .......... .......... .......... .......... .......... 15% 118M 1s\n", " 9050K .......... .......... .......... .......... .......... 15% 206M 1s\n", " 9100K .......... .......... .......... .......... .......... 16% 166M 1s\n", " 9150K .......... .......... .......... .......... .......... 16% 171M 1s\n", " 9200K .......... .......... .......... .......... .......... 16% 181M 1s\n", " 9250K .......... .......... .......... .......... .......... 16% 161M 1s\n", " 9300K .......... .......... .......... .......... .......... 16% 197M 1s\n", " 9350K .......... .......... .......... .......... .......... 16% 167M 1s\n", " 9400K .......... .......... .......... .......... .......... 16% 205M 1s\n", " 9450K .......... .......... .......... .......... .......... 16% 195M 1s\n", " 9500K .......... .......... .......... .......... .......... 16% 152M 1s\n", " 9550K .......... .......... .......... .......... .......... 16% 157M 1s\n", " 9600K .......... .......... .......... .......... .......... 16% 190M 1s\n", " 9650K .......... .......... .......... .......... .......... 16% 168M 1s\n", " 9700K .......... .......... .......... .......... .......... 17% 168M 1s\n", " 9750K .......... .......... .......... .......... .......... 17% 130M 1s\n", " 9800K .......... .......... .......... .......... .......... 17% 167M 1s\n", " 9850K .......... .......... .......... .......... .......... 17% 174M 0s\n", " 9900K .......... .......... .......... .......... .......... 17% 172M 0s\n", " 9950K .......... .......... .......... .......... .......... 17% 136M 0s\n", " 10000K .......... .......... .......... .......... .......... 17% 163M 0s\n", " 10050K .......... .......... .......... .......... .......... 17% 170M 0s\n", " 10100K .......... .......... .......... .......... .......... 17% 162M 0s\n", " 10150K .......... .......... .......... .......... .......... 17% 141M 0s\n", " 10200K .......... .......... .......... .......... .......... 17% 195M 0s\n", " 10250K .......... .......... .......... .......... .......... 18% 217M 0s\n", " 10300K .......... .......... .......... .......... .......... 18% 193M 0s\n", " 10350K .......... .......... .......... .......... .......... 18% 180M 0s\n", " 10400K .......... .......... .......... .......... .......... 18% 198M 0s\n", " 10450K .......... .......... .......... .......... .......... 18% 184M 0s\n", " 10500K .......... .......... .......... .......... .......... 18% 178M 0s\n", " 10550K .......... .......... .......... .......... .......... 18% 144M 0s\n", " 10600K .......... .......... .......... .......... .......... 18% 188M 0s\n", " 10650K .......... .......... .......... .......... .......... 18% 207M 0s\n", " 10700K .......... .......... .......... .......... .......... 18% 151M 0s\n", " 10750K .......... .......... .......... .......... .......... 18% 155M 0s\n", " 10800K .......... .......... .......... .......... .......... 19% 212M 0s\n", " 10850K .......... .......... .......... .......... .......... 19% 200M 0s\n", " 10900K .......... .......... .......... .......... .......... 19% 206M 0s\n", " 10950K .......... .......... .......... .......... .......... 19% 177M 0s\n", " 11000K .......... .......... .......... .......... .......... 19% 199M 0s\n", " 11050K .......... .......... .......... .......... .......... 19% 218M 0s\n", " 11100K .......... .......... .......... .......... .......... 19% 224M 0s\n", " 11150K .......... .......... .......... .......... .......... 19% 169M 0s\n", " 11200K .......... .......... .......... .......... .......... 19% 205M 0s\n", " 11250K .......... .......... .......... .......... .......... 19% 175M 0s\n", " 11300K .......... .......... .......... .......... .......... 19% 204M 0s\n", " 11350K .......... .......... .......... .......... .......... 19% 166M 0s\n", " 11400K .......... .......... .......... .......... .......... 20% 190M 0s\n", " 11450K .......... .......... .......... .......... .......... 20% 183M 0s\n", " 11500K .......... .......... .......... .......... .......... 20% 204M 0s\n", " 11550K .......... .......... .......... .......... .......... 20% 191M 0s\n", " 11600K .......... .......... .......... .......... .......... 20% 212M 0s\n", " 11650K .......... .......... .......... .......... .......... 20% 209M 0s\n", " 11700K .......... .......... .......... .......... .......... 20% 193M 0s\n", " 11750K .......... .......... .......... .......... .......... 20% 181M 0s\n", " 11800K .......... .......... .......... .......... .......... 20% 214M 0s\n", " 11850K .......... .......... .......... .......... .......... 20% 205M 0s\n", " 11900K .......... .......... .......... .......... .......... 20% 180M 0s\n", " 11950K .......... .......... .......... .......... .......... 21% 94.3M 0s\n", " 12000K .......... .......... .......... .......... .......... 21% 145M 0s\n", " 12050K .......... .......... .......... .......... .......... 21% 163M 0s\n", " 12100K .......... .......... .......... .......... .......... 21% 163M 0s\n", " 12150K .......... .......... .......... .......... .......... 21% 130M 0s\n", " 12200K .......... .......... .......... .......... .......... 21% 146M 0s\n", " 12250K .......... .......... .......... .......... .......... 21% 198M 0s\n", " 12300K .......... .......... .......... .......... .......... 21% 205M 0s\n", " 12350K .......... .......... .......... .......... .......... 21% 187M 0s\n", " 12400K .......... .......... .......... .......... .......... 21% 168M 0s\n", " 12450K .......... .......... .......... .......... .......... 21% 205M 0s\n", " 12500K .......... .......... .......... .......... .......... 21% 186M 0s\n", " 12550K .......... .......... .......... .......... .......... 22% 163M 0s\n", " 12600K .......... .......... .......... .......... .......... 22% 213M 0s\n", " 12650K .......... .......... .......... .......... .......... 22% 226M 0s\n", " 12700K .......... .......... .......... .......... .......... 22% 168M 0s\n", " 12750K .......... .......... .......... .......... .......... 22% 167M 0s\n", " 12800K .......... .......... .......... .......... .......... 22% 209M 0s\n", " 12850K .......... .......... .......... .......... .......... 22% 217M 0s\n", " 12900K .......... .......... .......... .......... .......... 22% 192M 0s\n", " 12950K .......... .......... .......... .......... .......... 22% 170M 0s\n", " 13000K .......... .......... .......... .......... .......... 22% 206M 0s\n", " 13050K .......... .......... .......... .......... .......... 22% 211M 0s\n", " 13100K .......... .......... .......... .......... .......... 23% 202M 0s\n", " 13150K .......... .......... .......... .......... .......... 23% 184M 0s\n", " 13200K .......... .......... .......... .......... .......... 23% 200M 0s\n", " 13250K .......... .......... .......... .......... .......... 23% 193M 0s\n", " 13300K .......... .......... .......... .......... .......... 23% 172M 0s\n", " 13350K .......... .......... .......... .......... .......... 23% 171M 0s\n", " 13400K .......... .......... .......... .......... .......... 23% 188M 0s\n", " 13450K .......... .......... .......... .......... .......... 23% 163M 0s\n", " 13500K .......... .......... .......... .......... .......... 23% 172M 0s\n", " 13550K .......... .......... .......... .......... .......... 23% 180M 0s\n", " 13600K .......... .......... .......... .......... .......... 23% 215M 0s\n", " 13650K .......... .......... .......... .......... .......... 23% 214M 0s\n", " 13700K .......... .......... .......... .......... .......... 24% 206M 0s\n", " 13750K .......... .......... .......... .......... .......... 24% 169M 0s\n", " 13800K .......... .......... .......... .......... .......... 24% 187M 0s\n", " 13850K .......... .......... .......... .......... .......... 24% 159M 0s\n", " 13900K .......... .......... .......... .......... .......... 24% 163M 0s\n", " 13950K .......... .......... .......... .......... .......... 24% 78.2M 0s\n", " 14000K .......... .......... .......... .......... .......... 24% 154M 0s\n", " 14050K .......... .......... .......... .......... .......... 24% 165M 0s\n", " 14100K .......... .......... .......... .......... .......... 24% 167M 0s\n", " 14150K .......... .......... .......... .......... .......... 24% 144M 0s\n", " 14200K .......... .......... .......... .......... .......... 24% 163M 0s\n", " 14250K .......... .......... .......... .......... .......... 25% 190M 0s\n", " 14300K .......... .......... .......... .......... .......... 25% 190M 0s\n", " 14350K .......... .......... .......... .......... .......... 25% 331M 0s\n", " 14400K .......... .......... .......... .......... .......... 25% 289M 0s\n", " 14450K .......... .......... .......... .......... .......... 25% 168M 0s\n", " 14500K .......... .......... .......... .......... .......... 25% 282M 0s\n", " 14550K .......... .......... .......... .......... .......... 25% 230M 0s\n", " 14600K .......... .......... .......... .......... .......... 25% 356M 0s\n", " 14650K .......... .......... .......... .......... .......... 25% 258M 0s\n", " 14700K .......... .......... .......... .......... .......... 25% 231M 0s\n", " 14750K .......... .......... .......... .......... .......... 25% 266M 0s\n", " 14800K .......... .......... .......... .......... .......... 26% 268M 0s\n", " 14850K .......... .......... .......... .......... .......... 26% 280M 0s\n", " 14900K .......... .......... .......... .......... .......... 26% 365M 0s\n", " 14950K .......... .......... .......... .......... .......... 26% 248M 0s\n", " 15000K .......... .......... .......... .......... .......... 26% 376M 0s\n", " 15050K .......... .......... .......... .......... .......... 26% 326M 0s\n", " 15100K .......... .......... .......... .......... .......... 26% 267M 0s\n", " 15150K .......... .......... .......... .......... .......... 26% 210M 0s\n", " 15200K .......... .......... .......... .......... .......... 26% 299M 0s\n", " 15250K .......... .......... .......... .......... .......... 26% 343M 0s\n", " 15300K .......... .......... .......... .......... .......... 26% 359M 0s\n", " 15350K .......... .......... .......... .......... .......... 26% 305M 0s\n", " 15400K .......... .......... .......... .......... .......... 27% 368M 0s\n", " 15450K .......... .......... .......... .......... .......... 27% 342M 0s\n", " 15500K .......... .......... .......... .......... .......... 27% 366M 0s\n", " 15550K .......... .......... .......... .......... .......... 27% 130M 0s\n", " 15600K .......... .......... .......... .......... .......... 27% 96.6M 0s\n", " 15650K .......... .......... .......... .......... .......... 27% 97.1M 0s\n", " 15700K .......... .......... .......... .......... .......... 27% 98.4M 0s\n", " 15750K .......... .......... .......... .......... .......... 27% 107M 0s\n", " 15800K .......... .......... .......... .......... .......... 27% 89.7M 0s\n", " 15850K .......... .......... .......... .......... .......... 27% 71.4M 0s\n", " 15900K .......... .......... .......... .......... .......... 27% 74.2M 0s\n", " 15950K .......... .......... .......... .......... .......... 28% 70.9M 0s\n", " 16000K .......... .......... .......... .......... .......... 28% 157M 0s\n", " 16050K .......... .......... .......... .......... .......... 28% 175M 0s\n", " 16100K .......... .......... .......... .......... .......... 28% 186M 0s\n", " 16150K .......... .......... .......... .......... .......... 28% 141M 0s\n", " 16200K .......... .......... .......... .......... .......... 28% 150M 0s\n", " 16250K .......... .......... .......... .......... .......... 28% 173M 0s\n", " 16300K .......... .......... .......... .......... .......... 28% 188M 0s\n", " 16350K .......... .......... .......... .......... .......... 28% 169M 0s\n", " 16400K .......... .......... .......... .......... .......... 28% 197M 0s\n", " 16450K .......... .......... .......... .......... .......... 28% 176M 0s\n", " 16500K .......... .......... .......... .......... .......... 28% 190M 0s\n", " 16550K .......... .......... .......... .......... .......... 29% 152M 0s\n", " 16600K .......... .......... .......... .......... .......... 29% 161M 0s\n", " 16650K .......... .......... .......... .......... .......... 29% 196M 0s\n", " 16700K .......... .......... .......... .......... .......... 29% 197M 0s\n", " 16750K .......... .......... .......... .......... .......... 29% 194M 0s\n", " 16800K .......... .......... .......... .......... .......... 29% 165M 0s\n", " 16850K .......... .......... .......... .......... .......... 29% 146M 0s\n", " 16900K .......... .......... .......... .......... .......... 29% 171M 0s\n", " 16950K .......... .......... .......... .......... .......... 29% 167M 0s\n", " 17000K .......... .......... .......... .......... .......... 29% 208M 0s\n", " 17050K .......... .......... .......... .......... .......... 29% 218M 0s\n", " 17100K .......... .......... .......... .......... .......... 30% 205M 0s\n", " 17150K .......... .......... .......... .......... .......... 30% 193M 0s\n", " 17200K .......... .......... .......... .......... .......... 30% 206M 0s\n", " 17250K .......... .......... .......... .......... .......... 30% 211M 0s\n", " 17300K .......... .......... .......... .......... .......... 30% 192M 0s\n", " 17350K .......... .......... .......... .......... .......... 30% 159M 0s\n", " 17400K .......... .......... .......... .......... .......... 30% 199M 0s\n", " 17450K .......... .......... .......... .......... .......... 30% 153M 0s\n", " 17500K .......... .......... .......... .......... .......... 30% 175M 0s\n", " 17550K .......... .......... .......... .......... .......... 30% 184M 0s\n", " 17600K .......... .......... .......... .......... .......... 30% 205M 0s\n", " 17650K .......... .......... .......... .......... .......... 30% 190M 0s\n", " 17700K .......... .......... .......... .......... .......... 31% 199M 0s\n", " 17750K .......... .......... .......... .......... .......... 31% 161M 0s\n", " 17800K .......... .......... .......... .......... .......... 31% 212M 0s\n", " 17850K .......... .......... .......... .......... .......... 31% 205M 0s\n", " 17900K .......... .......... .......... .......... .......... 31% 205M 0s\n", " 17950K .......... .......... .......... .......... .......... 31% 209M 0s\n", " 18000K .......... .......... .......... .......... .......... 31% 200M 0s\n", " 18050K .......... .......... .......... .......... .......... 31% 181M 0s\n", " 18100K .......... .......... .......... .......... .......... 31% 214M 0s\n", " 18150K .......... .......... .......... .......... .......... 31% 234M 0s\n", " 18200K .......... .......... .......... .......... .......... 31% 367M 0s\n", " 18250K .......... .......... .......... .......... .......... 32% 222M 0s\n", " 18300K .......... .......... .......... .......... .......... 32% 300M 0s\n", " 18350K .......... .......... .......... .......... .......... 32% 325M 0s\n", " 18400K .......... .......... .......... .......... .......... 32% 327M 0s\n", " 18450K .......... .......... .......... .......... .......... 32% 216M 0s\n", " 18500K .......... .......... .......... .......... .......... 32% 192M 0s\n", " 18550K .......... .......... .......... .......... .......... 32% 226M 0s\n", " 18600K .......... .......... .......... .......... .......... 32% 194M 0s\n", " 18650K .......... .......... .......... .......... .......... 32% 210M 0s\n", " 18700K .......... .......... .......... .......... .......... 32% 207M 0s\n", " 18750K .......... .......... .......... .......... .......... 32% 178M 0s\n", " 18800K .......... .......... .......... .......... .......... 33% 200M 0s\n", " 18850K .......... .......... .......... .......... .......... 33% 184M 0s\n", " 18900K .......... .......... .......... .......... .......... 33% 210M 0s\n", " 18950K .......... .......... .......... .......... .......... 33% 176M 0s\n", " 19000K .......... .......... .......... .......... .......... 33% 198M 0s\n", " 19050K .......... .......... .......... .......... .......... 33% 203M 0s\n", " 19100K .......... .......... .......... .......... .......... 33% 157M 0s\n", " 19150K .......... .......... .......... .......... .......... 33% 148M 0s\n", " 19200K .......... .......... .......... .......... .......... 33% 215M 0s\n", " 19250K .......... .......... .......... .......... .......... 33% 206M 0s\n", " 19300K .......... .......... .......... .......... .......... 33% 208M 0s\n", " 19350K .......... .......... .......... .......... .......... 33% 177M 0s\n", " 19400K .......... .......... .......... .......... .......... 34% 201M 0s\n", " 19450K .......... .......... .......... .......... .......... 34% 186M 0s\n", " 19500K .......... .......... .......... .......... .......... 34% 186M 0s\n", " 19550K .......... .......... .......... .......... .......... 34% 159M 0s\n", " 19600K .......... .......... .......... .......... .......... 34% 167M 0s\n", " 19650K .......... .......... .......... .......... .......... 34% 182M 0s\n", " 19700K .......... .......... .......... .......... .......... 34% 172M 0s\n", " 19750K .......... .......... .......... .......... .......... 34% 173M 0s\n", " 19800K .......... .......... .......... .......... .......... 34% 228M 0s\n", " 19850K .......... .......... .......... .......... .......... 34% 219M 0s\n", " 19900K .......... .......... .......... .......... .......... 34% 199M 0s\n", " 19950K .......... .......... .......... .......... .......... 35% 278M 0s\n", " 20000K .......... .......... .......... .......... .......... 35% 364M 0s\n", " 20050K .......... .......... .......... .......... .......... 35% 393M 0s\n", " 20100K .......... .......... .......... .......... .......... 35% 370M 0s\n", " 20150K .......... .......... .......... .......... .......... 35% 307M 0s\n", " 20200K .......... .......... .......... .......... .......... 35% 388M 0s\n", " 20250K .......... .......... .......... .......... .......... 35% 315M 0s\n", " 20300K .......... .......... .......... .......... .......... 35% 206M 0s\n", " 20350K .......... .......... .......... .......... .......... 35% 225M 0s\n", " 20400K .......... .......... .......... .......... .......... 35% 273M 0s\n", " 20450K .......... .......... .......... .......... .......... 35% 218M 0s\n", " 20500K .......... .......... .......... .......... .......... 35% 235M 0s\n", " 20550K .......... .......... .......... .......... .......... 36% 219M 0s\n", " 20600K .......... .......... .......... .......... .......... 36% 257M 0s\n", " 20650K .......... .......... .......... .......... .......... 36% 246M 0s\n", " 20700K .......... .......... .......... .......... .......... 36% 235M 0s\n", " 20750K .......... .......... .......... .......... .......... 36% 207M 0s\n", " 20800K .......... .......... .......... .......... .......... 36% 204M 0s\n", " 20850K .......... .......... .......... .......... .......... 36% 264M 0s\n", " 20900K .......... .......... .......... .......... .......... 36% 229M 0s\n", " 20950K .......... .......... .......... .......... .......... 36% 163M 0s\n", " 21000K .......... .......... .......... .......... .......... 36% 256M 0s\n", " 21050K .......... .......... .......... .......... .......... 36% 310M 0s\n", " 21100K .......... .......... .......... .......... .......... 37% 363M 0s\n", " 21150K .......... .......... .......... .......... .......... 37% 313M 0s\n", " 21200K .......... .......... .......... .......... .......... 37% 340M 0s\n", " 21250K .......... .......... .......... .......... .......... 37% 223M 0s\n", " 21300K .......... .......... .......... .......... .......... 37% 159M 0s\n", " 21350K .......... .......... .......... .......... .......... 37% 205M 0s\n", " 21400K .......... .......... .......... .......... .......... 37% 202M 0s\n", " 21450K .......... .......... .......... .......... .......... 37% 188M 0s\n", " 21500K .......... .......... .......... .......... .......... 37% 195M 0s\n", " 21550K .......... .......... .......... .......... .......... 37% 176M 0s\n", " 21600K .......... .......... .......... .......... .......... 37% 225M 0s\n", " 21650K .......... .......... .......... .......... .......... 38% 208M 0s\n", " 21700K .......... .......... .......... .......... .......... 38% 213M 0s\n", " 21750K .......... .......... .......... .......... .......... 38% 211M 0s\n", " 21800K .......... .......... .......... .......... .......... 38% 239M 0s\n", " 21850K .......... .......... .......... .......... .......... 38% 212M 0s\n", " 21900K .......... .......... .......... .......... .......... 38% 226M 0s\n", " 21950K .......... .......... .......... .......... .......... 38% 221M 0s\n", " 22000K .......... .......... .......... .......... .......... 38% 242M 0s\n", " 22050K .......... .......... .......... .......... .......... 38% 251M 0s\n", " 22100K .......... .......... .......... .......... .......... 38% 218M 0s\n", " 22150K .......... .......... .......... .......... .......... 38% 151M 0s\n", " 22200K .......... .......... .......... .......... .......... 38% 149M 0s\n", " 22250K .......... .......... .......... .......... .......... 39% 107M 0s\n", " 22300K .......... .......... .......... .......... .......... 39% 130M 0s\n", " 22350K .......... .......... .......... .......... .......... 39% 112M 0s\n", " 22400K .......... .......... .......... .......... .......... 39% 179M 0s\n", " 22450K .......... .......... .......... .......... .......... 39% 196M 0s\n", " 22500K .......... .......... .......... .......... .......... 39% 256M 0s\n", " 22550K .......... .......... .......... .......... .......... 39% 200M 0s\n", " 22600K .......... .......... .......... .......... .......... 39% 33.6M 0s\n", " 22650K .......... .......... .......... .......... .......... 39% 46.1M 0s\n", " 22700K .......... .......... .......... .......... .......... 39% 43.1M 0s\n", " 22750K .......... .......... .......... .......... .......... 39% 31.4M 0s\n", " 22800K .......... .......... .......... .......... .......... 40% 30.2M 0s\n", " 22850K .......... .......... .......... .......... .......... 40% 43.1M 0s\n", " 22900K .......... .......... .......... .......... .......... 40% 128M 0s\n", " 22950K .......... .......... .......... .......... .......... 40% 137M 0s\n", " 23000K .......... .......... .......... .......... .......... 40% 235M 0s\n", " 23050K .......... .......... .......... .......... .......... 40% 67.5M 0s\n", " 23100K .......... .......... .......... .......... .......... 40% 41.6M 0s\n", " 23150K .......... .......... .......... .......... .......... 40% 49.3M 0s\n", " 23200K .......... .......... .......... .......... .......... 40% 71.5M 0s\n", " 23250K .......... .......... .......... .......... .......... 40% 226M 0s\n", " 23300K .......... .......... .......... .......... .......... 40% 341M 0s\n", " 23350K .......... .......... .......... .......... .......... 40% 307M 0s\n", " 23400K .......... .......... .......... .......... .......... 41% 245M 0s\n", " 23450K .......... .......... .......... .......... .......... 41% 333M 0s\n", " 23500K .......... .......... .......... .......... .......... 41% 382M 0s\n", " 23550K .......... .......... .......... .......... .......... 41% 320M 0s\n", " 23600K .......... .......... .......... .......... .......... 41% 258M 0s\n", " 23650K .......... .......... .......... .......... .......... 41% 237M 0s\n", " 23700K .......... .......... .......... .......... .......... 41% 211M 0s\n", " 23750K .......... .......... .......... .......... .......... 41% 234M 0s\n", " 23800K .......... .......... .......... .......... .......... 41% 237M 0s\n", " 23850K .......... .......... .......... .......... .......... 41% 223M 0s\n", " 23900K .......... .......... .......... .......... .......... 41% 120M 0s\n", " 23950K .......... .......... .......... .......... .......... 42% 226M 0s\n", " 24000K .......... .......... .......... .......... .......... 42% 281M 0s\n", " 24050K .......... .......... .......... .......... .......... 42% 239M 0s\n", " 24100K .......... .......... .......... .......... .......... 42% 379M 0s\n", " 24150K .......... .......... .......... .......... .......... 42% 204M 0s\n", " 24200K .......... .......... .......... .......... .......... 42% 351M 0s\n", " 24250K .......... .......... .......... .......... .......... 42% 266M 0s\n", " 24300K .......... .......... .......... .......... .......... 42% 270M 0s\n", " 24350K .......... .......... .......... .......... .......... 42% 282M 0s\n", " 24400K .......... .......... .......... .......... .......... 42% 261M 0s\n", " 24450K .......... .......... .......... .......... .......... 42% 291M 0s\n", " 24500K .......... .......... .......... .......... .......... 42% 305M 0s\n", " 24550K .......... .......... .......... .......... .......... 43% 272M 0s\n", " 24600K .......... .......... .......... .......... .......... 43% 347M 0s\n", " 24650K .......... .......... .......... .......... .......... 43% 371M 0s\n", " 24700K .......... .......... .......... .......... .......... 43% 388M 0s\n", " 24750K .......... .......... .......... .......... .......... 43% 210M 0s\n", " 24800K .......... .......... .......... .......... .......... 43% 268M 0s\n", " 24850K .......... .......... .......... .......... .......... 43% 368M 0s\n", " 24900K .......... .......... .......... .......... .......... 43% 376M 0s\n", " 24950K .......... .......... .......... .......... .......... 43% 314M 0s\n", " 25000K .......... .......... .......... .......... .......... 43% 369M 0s\n", " 25050K .......... .......... .......... .......... .......... 43% 301M 0s\n", " 25100K .......... .......... .......... .......... .......... 44% 353M 0s\n", " 25150K .......... .......... .......... .......... .......... 44% 237M 0s\n", " 25200K .......... .......... .......... .......... .......... 44% 235M 0s\n", " 25250K .......... .......... .......... .......... .......... 44% 377M 0s\n", " 25300K .......... .......... .......... .......... .......... 44% 370M 0s\n", " 25350K .......... .......... .......... .......... .......... 44% 228M 0s\n", " 25400K .......... .......... .......... .......... .......... 44% 337M 0s\n", " 25450K .......... .......... .......... .......... .......... 44% 366M 0s\n", " 25500K .......... .......... .......... .......... .......... 44% 372M 0s\n", " 25550K .......... .......... .......... .......... .......... 44% 323M 0s\n", " 25600K .......... .......... .......... .......... .......... 44% 360M 0s\n", " 25650K .......... .......... .......... .......... .......... 45% 355M 0s\n", " 25700K .......... .......... .......... .......... .......... 45% 236M 0s\n", " 25750K .......... .......... .......... .......... .......... 45% 292M 0s\n", " 25800K .......... .......... .......... .......... .......... 45% 281M 0s\n", " 25850K .......... .......... .......... .......... .......... 45% 318M 0s\n", " 25900K .......... .......... .......... .......... .......... 45% 371M 0s\n", " 25950K .......... .......... .......... .......... .......... 45% 343M 0s\n", " 26000K .......... .......... .......... .......... .......... 45% 168M 0s\n", " 26050K .......... .......... .......... .......... .......... 45% 207M 0s\n", " 26100K .......... .......... .......... .......... .......... 45% 213M 0s\n", " 26150K .......... .......... .......... .......... .......... 45% 92.4M 0s\n", " 26200K .......... .......... .......... .......... .......... 45% 217M 0s\n", " 26250K .......... .......... .......... .......... .......... 46% 350M 0s\n", " 26300K .......... .......... .......... .......... .......... 46% 278M 0s\n", " 26350K .......... .......... .......... .......... .......... 46% 305M 0s\n", " 26400K .......... .......... .......... .......... .......... 46% 255M 0s\n", " 26450K .......... .......... .......... .......... .......... 46% 307M 0s\n", " 26500K .......... .......... .......... .......... .......... 46% 342M 0s\n", " 26550K .......... .......... .......... .......... .......... 46% 306M 0s\n", " 26600K .......... .......... .......... .......... .......... 46% 361M 0s\n", " 26650K .......... .......... .......... .......... .......... 46% 295M 0s\n", " 26700K .......... .......... .......... .......... .......... 46% 166M 0s\n", " 26750K .......... .......... .......... .......... .......... 46% 265M 0s\n", " 26800K .......... .......... .......... .......... .......... 47% 293M 0s\n", " 26850K .......... .......... .......... .......... .......... 47% 316M 0s\n", " 26900K .......... .......... .......... .......... .......... 47% 350M 0s\n", " 26950K .......... .......... .......... .......... .......... 47% 205M 0s\n", " 27000K .......... .......... .......... .......... .......... 47% 179M 0s\n", " 27050K .......... .......... .......... .......... .......... 47% 185M 0s\n", " 27100K .......... .......... .......... .......... .......... 47% 196M 0s\n", " 27150K .......... .......... .......... .......... .......... 47% 251M 0s\n", " 27200K .......... .......... .......... .......... .......... 47% 279M 0s\n", " 27250K .......... .......... .......... .......... .......... 47% 347M 0s\n", " 27300K .......... .......... .......... .......... .......... 47% 360M 0s\n", " 27350K .......... .......... .......... .......... .......... 47% 308M 0s\n", " 27400K .......... .......... .......... .......... .......... 48% 360M 0s\n", " 27450K .......... .......... .......... .......... .......... 48% 362M 0s\n", " 27500K .......... .......... .......... .......... .......... 48% 248M 0s\n", " 27550K .......... .......... .......... .......... .......... 48% 287M 0s\n", " 27600K .......... .......... .......... .......... .......... 48% 347M 0s\n", " 27650K .......... .......... .......... .......... .......... 48% 342M 0s\n", " 27700K .......... .......... .......... .......... .......... 48% 365M 0s\n", " 27750K .......... .......... .......... .......... .......... 48% 296M 0s\n", " 27800K .......... .......... .......... .......... .......... 48% 233M 0s\n", " 27850K .......... .......... .......... .......... .......... 48% 328M 0s\n", " 27900K .......... .......... .......... .......... .......... 48% 127M 0s\n", " 27950K .......... .......... .......... .......... .......... 49% 256M 0s\n", " 28000K .......... .......... .......... .......... .......... 49% 133M 0s\n", " 28050K .......... .......... .......... .......... .......... 49% 245M 0s\n", " 28100K .......... .......... .......... .......... .......... 49% 370M 0s\n", " 28150K .......... .......... .......... .......... .......... 49% 309M 0s\n", " 28200K .......... .......... .......... .......... .......... 49% 366M 0s\n", " 28250K .......... .......... .......... .......... .......... 49% 334M 0s\n", " 28300K .......... .......... .......... .......... .......... 49% 284M 0s\n", " 28350K .......... .......... .......... .......... .......... 49% 44.0M 0s\n", " 28400K .......... .......... .......... .......... .......... 49% 49.2M 0s\n", " 28450K .......... .......... .......... .......... .......... 49% 60.0M 0s\n", " 28500K .......... .......... .......... .......... .......... 50% 61.0M 0s\n", " 28550K .......... .......... .......... .......... .......... 50% 146M 0s\n", " 28600K .......... .......... .......... .......... .......... 50% 277M 0s\n", " 28650K .......... .......... .......... .......... .......... 50% 257M 0s\n", " 28700K .......... .......... .......... .......... .......... 50% 288M 0s\n", " 28750K .......... .......... .......... .......... .......... 50% 281M 0s\n", " 28800K .......... .......... .......... .......... .......... 50% 303M 0s\n", " 28850K .......... .......... .......... .......... .......... 50% 372M 0s\n", " 28900K .......... .......... .......... .......... .......... 50% 356M 0s\n", " 28950K .......... .......... .......... .......... .......... 50% 301M 0s\n", " 29000K .......... .......... .......... .......... .......... 50% 369M 0s\n", " 29050K .......... .......... .......... .......... .......... 50% 359M 0s\n", " 29100K .......... .......... .......... .......... .......... 51% 239M 0s\n", " 29150K .......... .......... .......... .......... .......... 51% 124M 0s\n", " 29200K .......... .......... .......... .......... .......... 51% 262M 0s\n", " 29250K .......... .......... .......... .......... .......... 51% 237M 0s\n", " 29300K .......... .......... .......... .......... .......... 51% 231M 0s\n", " 29350K .......... .......... .......... .......... .......... 51% 175M 0s\n", " 29400K .......... .......... .......... .......... .......... 51% 294M 0s\n", " 29450K .......... .......... .......... .......... .......... 51% 260M 0s\n", " 29500K .......... .......... .......... .......... .......... 51% 282M 0s\n", " 29550K .......... .......... .......... .......... .......... 51% 287M 0s\n", " 29600K .......... .......... .......... .......... .......... 51% 256M 0s\n", " 29650K .......... .......... .......... .......... .......... 52% 295M 0s\n", " 29700K .......... .......... .......... .......... .......... 52% 327M 0s\n", " 29750K .......... .......... .......... .......... .......... 52% 244M 0s\n", " 29800K .......... .......... .......... .......... .......... 52% 351M 0s\n", " 29850K .......... .......... .......... .......... .......... 52% 348M 0s\n", " 29900K .......... .......... .......... .......... .......... 52% 285M 0s\n", " 29950K .......... .......... .......... .......... .......... 52% 309M 0s\n", " 30000K .......... .......... .......... .......... .......... 52% 374M 0s\n", " 30050K .......... .......... .......... .......... .......... 52% 370M 0s\n", " 30100K .......... .......... .......... .......... .......... 52% 235M 0s\n", " 30150K .......... .......... .......... .......... .......... 52% 174M 0s\n", " 30200K .......... .......... .......... .......... .......... 52% 127M 0s\n", " 30250K .......... .......... .......... .......... .......... 53% 218M 0s\n", " 30300K .......... .......... .......... .......... .......... 53% 304M 0s\n", " 30350K .......... .......... .......... .......... .......... 53% 327M 0s\n", " 30400K .......... .......... .......... .......... .......... 53% 260M 0s\n", " 30450K .......... .......... .......... .......... .......... 53% 189M 0s\n", " 30500K .......... .......... .......... .......... .......... 53% 339M 0s\n", " 30550K .......... .......... .......... .......... .......... 53% 312M 0s\n", " 30600K .......... .......... .......... .......... .......... 53% 374M 0s\n", " 30650K .......... .......... .......... .......... .......... 53% 377M 0s\n", " 30700K .......... .......... .......... .......... .......... 53% 231M 0s\n", " 30750K .......... .......... .......... .......... .......... 53% 209M 0s\n", " 30800K .......... .......... .......... .......... .......... 54% 241M 0s\n", " 30850K .......... .......... .......... .......... .......... 54% 227M 0s\n", " 30900K .......... .......... .......... .......... .......... 54% 334M 0s\n", " 30950K .......... .......... .......... .......... .......... 54% 225M 0s\n", " 31000K .......... .......... .......... .......... .......... 54% 350M 0s\n", " 31050K .......... .......... .......... .......... .......... 54% 339M 0s\n", " 31100K .......... .......... .......... .......... .......... 54% 364M 0s\n", " 31150K .......... .......... .......... .......... .......... 54% 327M 0s\n", " 31200K .......... .......... .......... .......... .......... 54% 371M 0s\n", " 31250K .......... .......... .......... .......... .......... 54% 322M 0s\n", " 31300K .......... .......... .......... .......... .......... 54% 293M 0s\n", " 31350K .......... .......... .......... .......... .......... 54% 299M 0s\n", " 31400K .......... .......... .......... .......... .......... 55% 301M 0s\n", " 31450K .......... .......... .......... .......... .......... 55% 77.8M 0s\n", " 31500K .......... .......... .......... .......... .......... 55% 253M 0s\n", " 31550K .......... .......... .......... .......... .......... 55% 221M 0s\n", " 31600K .......... .......... .......... .......... .......... 55% 257M 0s\n", " 31650K .......... .......... .......... .......... .......... 55% 185M 0s\n", " 31700K .......... .......... .......... .......... .......... 55% 155M 0s\n", " 31750K .......... .......... .......... .......... .......... 55% 257M 0s\n", " 31800K .......... .......... .......... .......... .......... 55% 297M 0s\n", " 31850K .......... .......... .......... .......... .......... 55% 277M 0s\n", " 31900K .......... .......... .......... .......... .......... 55% 341M 0s\n", " 31950K .......... .......... .......... .......... .......... 56% 271M 0s\n", " 32000K .......... .......... .......... .......... .......... 56% 272M 0s\n", " 32050K .......... .......... .......... .......... .......... 56% 360M 0s\n", " 32100K .......... .......... .......... .......... .......... 56% 357M 0s\n", " 32150K .......... .......... .......... .......... .......... 56% 310M 0s\n", " 32200K .......... .......... .......... .......... .......... 56% 156M 0s\n", " 32250K .......... .......... .......... .......... .......... 56% 121M 0s\n", " 32300K .......... .......... .......... .......... .......... 56% 271M 0s\n", " 32350K .......... .......... .......... .......... .......... 56% 288M 0s\n", " 32400K .......... .......... .......... .......... .......... 56% 347M 0s\n", " 32450K .......... .......... .......... .......... .......... 56% 296M 0s\n", " 32500K .......... .......... .......... .......... .......... 57% 297M 0s\n", " 32550K .......... .......... .......... .......... .......... 57% 276M 0s\n", " 32600K .......... .......... .......... .......... .......... 57% 362M 0s\n", " 32650K .......... .......... .......... .......... .......... 57% 376M 0s\n", " 32700K .......... .......... .......... .......... .......... 57% 348M 0s\n", " 32750K .......... .......... .......... .......... .......... 57% 23.1M 0s\n", " 32800K .......... .......... .......... .......... .......... 57% 102M 0s\n", " 32850K .......... .......... .......... .......... .......... 57% 84.1M 0s\n", " 32900K .......... .......... .......... .......... .......... 57% 142M 0s\n", " 32950K .......... .......... .......... .......... .......... 57% 132M 0s\n", " 33000K .......... .......... .......... .......... .......... 57% 149M 0s\n", " 33050K .......... .......... .......... .......... .......... 57% 175M 0s\n", " 33100K .......... .......... .......... .......... .......... 58% 161M 0s\n", " 33150K .......... .......... .......... .......... .......... 58% 157M 0s\n", " 33200K .......... .......... .......... .......... .......... 58% 166M 0s\n", " 33250K .......... .......... .......... .......... .......... 58% 169M 0s\n", " 33300K .......... .......... .......... .......... .......... 58% 216M 0s\n", " 33350K .......... .......... .......... .......... .......... 58% 141M 0s\n", " 33400K .......... .......... .......... .......... .......... 58% 158M 0s\n", " 33450K .......... .......... .......... .......... .......... 58% 188M 0s\n", " 33500K .......... .......... .......... .......... .......... 58% 184M 0s\n", " 33550K .......... .......... .......... .......... .......... 58% 180M 0s\n", " 33600K .......... .......... .......... .......... .......... 58% 204M 0s\n", " 33650K .......... .......... .......... .......... .......... 59% 215M 0s\n", " 33700K .......... .......... .......... .......... .......... 59% 174M 0s\n", " 33750K .......... .......... .......... .......... .......... 59% 136M 0s\n", " 33800K .......... .......... .......... .......... .......... 59% 209M 0s\n", " 33850K .......... .......... .......... .......... .......... 59% 210M 0s\n", " 33900K .......... .......... .......... .......... .......... 59% 197M 0s\n", " 33950K .......... .......... .......... .......... .......... 59% 185M 0s\n", " 34000K .......... .......... .......... .......... .......... 59% 205M 0s\n", " 34050K .......... .......... .......... .......... .......... 59% 212M 0s\n", " 34100K .......... .......... .......... .......... .......... 59% 183M 0s\n", " 34150K .......... .......... .......... .......... .......... 59% 176M 0s\n", " 34200K .......... .......... .......... .......... .......... 59% 218M 0s\n", " 34250K .......... .......... .......... .......... .......... 60% 219M 0s\n", " 34300K .......... .......... .......... .......... .......... 60% 187M 0s\n", " 34350K .......... .......... .......... .......... .......... 60% 161M 0s\n", " 34400K .......... .......... .......... .......... .......... 60% 173M 0s\n", " 34450K .......... .......... .......... .......... .......... 60% 173M 0s\n", " 34500K .......... .......... .......... .......... .......... 60% 169M 0s\n", " 34550K .......... .......... .......... .......... .......... 60% 142M 0s\n", " 34600K .......... .......... .......... .......... .......... 60% 183M 0s\n", " 34650K .......... .......... .......... .......... .......... 60% 160M 0s\n", " 34700K .......... .......... .......... .......... .......... 60% 192M 0s\n", " 34750K .......... .......... .......... .......... .......... 60% 187M 0s\n", " 34800K .......... .......... .......... .......... .......... 61% 213M 0s\n", " 34850K .......... .......... .......... .......... .......... 61% 203M 0s\n", " 34900K .......... .......... .......... .......... .......... 61% 205M 0s\n", " 34950K .......... .......... .......... .......... .......... 61% 142M 0s\n", " 35000K .......... .......... .......... .......... .......... 61% 215M 0s\n", " 35050K .......... .......... .......... .......... .......... 61% 204M 0s\n", " 35100K .......... .......... .......... .......... .......... 61% 181M 0s\n", " 35150K .......... .......... .......... .......... .......... 61% 152M 0s\n", " 35200K .......... .......... .......... .......... .......... 61% 202M 0s\n", " 35250K .......... .......... .......... .......... .......... 61% 170M 0s\n", " 35300K .......... .......... .......... .......... .......... 61% 163M 0s\n", " 35350K .......... .......... .......... .......... .......... 61% 164M 0s\n", " 35400K .......... .......... .......... .......... .......... 62% 108M 0s\n", " 35450K .......... .......... .......... .......... .......... 62% 177M 0s\n", " 35500K .......... .......... .......... .......... .......... 62% 176M 0s\n", " 35550K .......... .......... .......... .......... .......... 62% 178M 0s\n", " 35600K .......... .......... .......... .......... .......... 62% 179M 0s\n", " 35650K .......... .......... .......... .......... .......... 62% 211M 0s\n", " 35700K .......... .......... .......... .......... .......... 62% 257M 0s\n", " 35750K .......... .......... .......... .......... .......... 62% 258M 0s\n", " 35800K .......... .......... .......... .......... .......... 62% 192M 0s\n", " 35850K .......... .......... .......... .......... .......... 62% 297M 0s\n", " 35900K .......... .......... .......... .......... .......... 62% 365M 0s\n", " 35950K .......... .......... .......... .......... .......... 63% 330M 0s\n", " 36000K .......... .......... .......... .......... .......... 63% 369M 0s\n", " 36050K .......... .......... .......... .......... .......... 63% 322M 0s\n", " 36100K .......... .......... .......... .......... .......... 63% 311M 0s\n", " 36150K .......... .......... .......... .......... .......... 63% 267M 0s\n", " 36200K .......... .......... .......... .......... .......... 63% 283M 0s\n", " 36250K .......... .......... .......... .......... .......... 63% 267M 0s\n", " 36300K .......... .......... .......... .......... .......... 63% 276M 0s\n", " 36350K .......... .......... .......... .......... .......... 63% 174M 0s\n", " 36400K .......... .......... .......... .......... .......... 63% 283M 0s\n", " 36450K .......... .......... .......... .......... .......... 63% 362M 0s\n", " 36500K .......... .......... .......... .......... .......... 64% 287M 0s\n", " 36550K .......... .......... .......... .......... .......... 64% 291M 0s\n", " 36600K .......... .......... .......... .......... .......... 64% 363M 0s\n", " 36650K .......... .......... .......... .......... .......... 64% 216M 0s\n", " 36700K .......... .......... .......... .......... .......... 64% 280M 0s\n", " 36750K .......... .......... .......... .......... .......... 64% 330M 0s\n", " 36800K .......... .......... .......... .......... .......... 64% 368M 0s\n", " 36850K .......... .......... .......... .......... .......... 64% 345M 0s\n", " 36900K .......... .......... .......... .......... .......... 64% 368M 0s\n", " 36950K .......... .......... .......... .......... .......... 64% 235M 0s\n", " 37000K .......... .......... .......... .......... .......... 64% 313M 0s\n", " 37050K .......... .......... .......... .......... .......... 64% 363M 0s\n", " 37100K .......... .......... .......... .......... .......... 65% 366M 0s\n", " 37150K .......... .......... .......... .......... .......... 65% 314M 0s\n", " 37200K .......... .......... .......... .......... .......... 65% 358M 0s\n", " 37250K .......... .......... .......... .......... .......... 65% 367M 0s\n", " 37300K .......... .......... .......... .......... .......... 65% 298M 0s\n", " 37350K .......... .......... .......... .......... .......... 65% 283M 0s\n", " 37400K .......... .......... .......... .......... .......... 65% 59.0M 0s\n", " 37450K .......... .......... .......... .......... .......... 65% 185M 0s\n", " 37500K .......... .......... .......... .......... .......... 65% 274M 0s\n", " 37550K .......... .......... .......... .......... .......... 65% 313M 0s\n", " 37600K .......... .......... .......... .......... .......... 65% 333M 0s\n", " 37650K .......... .......... .......... .......... .......... 66% 9.55M 0s\n", " 37700K .......... .......... .......... .......... .......... 66% 56.6M 0s\n", " 37750K .......... .......... .......... .......... .......... 66% 119M 0s\n", " 37800K .......... .......... .......... .......... .......... 66% 194M 0s\n", " 37850K .......... .......... .......... .......... .......... 66% 212M 0s\n", " 37900K .......... .......... .......... .......... .......... 66% 203M 0s\n", " 37950K .......... .......... .......... .......... .......... 66% 183M 0s\n", " 38000K .......... .......... .......... .......... .......... 66% 211M 0s\n", " 38050K .......... .......... .......... .......... .......... 66% 20.8M 0s\n", " 38100K .......... .......... .......... .......... .......... 66% 242M 0s\n", " 38150K .......... .......... .......... .......... .......... 66% 194M 0s\n", " 38200K .......... .......... .......... .......... .......... 66% 251M 0s\n", " 38250K .......... .......... .......... .......... .......... 67% 236M 0s\n", " 38300K .......... .......... .......... .......... .......... 67% 230M 0s\n", " 38350K .......... .......... .......... .......... .......... 67% 177M 0s\n", " 38400K .......... .......... .......... .......... .......... 67% 310M 0s\n", " 38450K .......... .......... .......... .......... .......... 67% 246M 0s\n", " 38500K .......... .......... .......... .......... .......... 67% 243M 0s\n", " 38550K .......... .......... .......... .......... .......... 67% 194M 0s\n", " 38600K .......... .......... .......... .......... .......... 67% 199M 0s\n", " 38650K .......... .......... .......... .......... .......... 67% 236M 0s\n", " 38700K .......... .......... .......... .......... .......... 67% 278M 0s\n", " 38750K .......... .......... .......... .......... .......... 67% 186M 0s\n", " 38800K .......... .......... .......... .......... .......... 68% 222M 0s\n", " 38850K .......... .......... .......... .......... .......... 68% 254M 0s\n", " 38900K .......... .......... .......... .......... .......... 68% 217M 0s\n", " 38950K .......... .......... .......... .......... .......... 68% 299M 0s\n", " 39000K .......... .......... .......... .......... .......... 68% 349M 0s\n", " 39050K .......... .......... .......... .......... .......... 68% 360M 0s\n", " 39100K .......... .......... .......... .......... .......... 68% 246M 0s\n", " 39150K .......... .......... .......... .......... .......... 68% 137M 0s\n", " 39200K .......... .......... .......... .......... .......... 68% 277M 0s\n", " 39250K .......... .......... .......... .......... .......... 68% 298M 0s\n", " 39300K .......... .......... .......... .......... .......... 68% 211M 0s\n", " 39350K .......... .......... .......... .......... .......... 69% 165M 0s\n", " 39400K .......... .......... .......... .......... .......... 69% 244M 0s\n", " 39450K .......... .......... .......... .......... .......... 69% 270M 0s\n", " 39500K .......... .......... .......... .......... .......... 69% 214M 0s\n", " 39550K .......... .......... .......... .......... .......... 69% 108M 0s\n", " 39600K .......... .......... .......... .......... .......... 69% 201M 0s\n", " 39650K .......... .......... .......... .......... .......... 69% 212M 0s\n", " 39700K .......... .......... .......... .......... .......... 69% 186M 0s\n", " 39750K .......... .......... .......... .......... .......... 69% 152M 0s\n", " 39800K .......... .......... .......... .......... .......... 69% 214M 0s\n", " 39850K .......... .......... .......... .......... .......... 69% 215M 0s\n", " 39900K .......... .......... .......... .......... .......... 69% 143M 0s\n", " 39950K .......... .......... .......... .......... .......... 70% 308M 0s\n", " 40000K .......... .......... .......... .......... .......... 70% 342M 0s\n", " 40050K .......... .......... .......... .......... .......... 70% 344M 0s\n", " 40100K .......... .......... .......... .......... .......... 70% 277M 0s\n", " 40150K .......... .......... .......... .......... .......... 70% 211M 0s\n", " 40200K .......... .......... .......... .......... .......... 70% 206M 0s\n", " 40250K .......... .......... .......... .......... .......... 70% 356M 0s\n", " 40300K .......... .......... .......... .......... .......... 70% 371M 0s\n", " 40350K .......... .......... .......... .......... .......... 70% 298M 0s\n", " 40400K .......... .......... .......... .......... .......... 70% 367M 0s\n", " 40450K .......... .......... .......... .......... .......... 70% 307M 0s\n", " 40500K .......... .......... .......... .......... .......... 71% 343M 0s\n", " 40550K .......... .......... .......... .......... .......... 71% 292M 0s\n", " 40600K .......... .......... .......... .......... .......... 71% 362M 0s\n", " 40650K .......... .......... .......... .......... .......... 71% 236M 0s\n", " 40700K .......... .......... .......... .......... .......... 71% 230M 0s\n", " 40750K .......... .......... .......... .......... .......... 71% 157M 0s\n", " 40800K .......... .......... .......... .......... .......... 71% 175M 0s\n", " 40850K .......... .......... .......... .......... .......... 71% 194M 0s\n", " 40900K .......... .......... .......... .......... .......... 71% 176M 0s\n", " 40950K .......... .......... .......... .......... .......... 71% 170M 0s\n", " 41000K .......... .......... .......... .......... .......... 71% 210M 0s\n", " 41050K .......... .......... .......... .......... .......... 71% 198M 0s\n", " 41100K .......... .......... .......... .......... .......... 72% 197M 0s\n", " 41150K .......... .......... .......... .......... .......... 72% 186M 0s\n", " 41200K .......... .......... .......... .......... .......... 72% 165M 0s\n", " 41250K .......... .......... .......... .......... .......... 72% 169M 0s\n", " 41300K .......... .......... .......... .......... .......... 72% 197M 0s\n", " 41350K .......... .......... .......... .......... .......... 72% 172M 0s\n", " 41400K .......... .......... .......... .......... .......... 72% 200M 0s\n", " 41450K .......... .......... .......... .......... .......... 72% 205M 0s\n", " 41500K .......... .......... .......... .......... .......... 72% 204M 0s\n", " 41550K .......... .......... .......... .......... .......... 72% 171M 0s\n", " 41600K .......... .......... .......... .......... .......... 72% 198M 0s\n", " 41650K .......... .......... .......... .......... .......... 73% 43.5M 0s\n", " 41700K .......... .......... .......... .......... .......... 73% 287M 0s\n", " 41750K .......... .......... .......... .......... .......... 73% 193M 0s\n", " 41800K .......... .......... .......... .......... .......... 73% 16.8M 0s\n", " 41850K .......... .......... .......... .......... .......... 73% 279M 0s\n", " 41900K .......... .......... .......... .......... .......... 73% 359M 0s\n", " 41950K .......... .......... .......... .......... .......... 73% 317M 0s\n", " 42000K .......... .......... .......... .......... .......... 73% 13.9M 0s\n", " 42050K .......... .......... .......... .......... .......... 73% 185M 0s\n", " 42100K .......... .......... .......... .......... .......... 73% 206M 0s\n", " 42150K .......... .......... .......... .......... .......... 73% 152M 0s\n", " 42200K .......... .......... .......... .......... .......... 73% 166M 0s\n", " 42250K .......... .......... .......... .......... .......... 74% 254M 0s\n", " 42300K .......... .......... .......... .......... .......... 74% 228M 0s\n", " 42350K .......... .......... .......... .......... .......... 74% 175M 0s\n", " 42400K .......... .......... .......... .......... .......... 74% 184M 0s\n", " 42450K .......... .......... .......... .......... .......... 74% 177M 0s\n", " 42500K .......... .......... .......... .......... .......... 74% 165M 0s\n", " 42550K .......... .......... .......... .......... .......... 74% 127M 0s\n", " 42600K .......... .......... .......... .......... .......... 74% 168M 0s\n", " 42650K .......... .......... .......... .......... .......... 74% 182M 0s\n", " 42700K .......... .......... .......... .......... .......... 74% 143M 0s\n", " 42750K .......... .......... .......... .......... .......... 74% 166M 0s\n", " 42800K .......... .......... .......... .......... .......... 75% 201M 0s\n", " 42850K .......... .......... .......... .......... .......... 75% 204M 0s\n", " 42900K .......... .......... .......... .......... .......... 75% 353M 0s\n", " 42950K .......... .......... .......... .......... .......... 75% 104M 0s\n", " 43000K .......... .......... .......... .......... .......... 75% 289M 0s\n", " 43050K .......... .......... .......... .......... .......... 75% 285M 0s\n", " 43100K .......... .......... .......... .......... .......... 75% 303M 0s\n", " 43150K .......... .......... .......... .......... .......... 75% 227M 0s\n", " 43200K .......... .......... .......... .......... .......... 75% 198M 0s\n", " 43250K .......... .......... .......... .......... .......... 75% 197M 0s\n", " 43300K .......... .......... .......... .......... .......... 75% 256M 0s\n", " 43350K .......... .......... .......... .......... .......... 76% 141M 0s\n", " 43400K .......... .......... .......... .......... .......... 76% 162M 0s\n", " 43450K .......... .......... .......... .......... .......... 76% 203M 0s\n", " 43500K .......... .......... .......... .......... .......... 76% 307M 0s\n", " 43550K .......... .......... .......... .......... .......... 76% 179M 0s\n", " 43600K .......... .......... .......... .......... .......... 76% 173M 0s\n", " 43650K .......... .......... .......... .......... .......... 76% 198M 0s\n", " 43700K .......... .......... .......... .......... .......... 76% 182M 0s\n", " 43750K .......... .......... .......... .......... .......... 76% 169M 0s\n", " 43800K .......... .......... .......... .......... .......... 76% 301M 0s\n", " 43850K .......... .......... .......... .......... .......... 76% 292M 0s\n", " 43900K .......... .......... .......... .......... .......... 76% 297M 0s\n", " 43950K .......... .......... .......... .......... .......... 77% 273M 0s\n", " 44000K .......... .......... .......... .......... .......... 77% 226M 0s\n", " 44050K .......... .......... .......... .......... .......... 77% 292M 0s\n", " 44100K .......... .......... .......... .......... .......... 77% 314M 0s\n", " 44150K .......... .......... .......... .......... .......... 77% 248M 0s\n", " 44200K .......... .......... .......... .......... .......... 77% 238M 0s\n", " 44250K .......... .......... .......... .......... .......... 77% 179M 0s\n", " 44300K .......... .......... .......... .......... .......... 77% 210M 0s\n", " 44350K .......... .......... .......... .......... .......... 77% 224M 0s\n", " 44400K .......... .......... .......... .......... .......... 77% 268M 0s\n", " 44450K .......... .......... .......... .......... .......... 77% 150M 0s\n", " 44500K .......... .......... .......... .......... .......... 78% 237M 0s\n", " 44550K .......... .......... .......... .......... .......... 78% 228M 0s\n", " 44600K .......... .......... .......... .......... .......... 78% 253M 0s\n", " 44650K .......... .......... .......... .......... .......... 78% 216M 0s\n", " 44700K .......... .......... .......... .......... .......... 78% 137M 0s\n", " 44750K .......... .......... .......... .......... .......... 78% 162M 0s\n", " 44800K .......... .......... .......... .......... .......... 78% 229M 0s\n", " 44850K .......... .......... .......... .......... .......... 78% 360M 0s\n", " 44900K .......... .......... .......... .......... .......... 78% 194M 0s\n", " 44950K .......... .......... .......... .......... .......... 78% 276M 0s\n", " 45000K .......... .......... .......... .......... .......... 78% 315M 0s\n", " 45050K .......... .......... .......... .......... .......... 78% 342M 0s\n", " 45100K .......... .......... .......... .......... .......... 79% 371M 0s\n", " 45150K .......... .......... .......... .......... .......... 79% 301M 0s\n", " 45200K .......... .......... .......... .......... .......... 79% 232M 0s\n", " 45250K .......... .......... .......... .......... .......... 79% 345M 0s\n", " 45300K .......... .......... .......... .......... .......... 79% 344M 0s\n", " 45350K .......... .......... .......... .......... .......... 79% 182M 0s\n", " 45400K .......... .......... .......... .......... .......... 79% 195M 0s\n", " 45450K .......... .......... .......... .......... .......... 79% 190M 0s\n", " 45500K .......... .......... .......... .......... .......... 79% 278M 0s\n", " 45550K .......... .......... .......... .......... .......... 79% 254M 0s\n", " 45600K .......... .......... .......... .......... .......... 79% 369M 0s\n", " 45650K .......... .......... .......... .......... .......... 80% 363M 0s\n", " 45700K .......... .......... .......... .......... .......... 80% 305M 0s\n", " 45750K .......... .......... .......... .......... .......... 80% 266M 0s\n", " 45800K .......... .......... .......... .......... .......... 80% 221M 0s\n", " 45850K .......... .......... .......... .......... .......... 80% 200M 0s\n", " 45900K .......... .......... .......... .......... .......... 80% 225M 0s\n", " 45950K .......... .......... .......... .......... .......... 80% 134M 0s\n", " 46000K .......... .......... .......... .......... .......... 80% 270M 0s\n", " 46050K .......... .......... .......... .......... .......... 80% 344M 0s\n", " 46100K .......... .......... .......... .......... .......... 80% 246M 0s\n", " 46150K .......... .......... .......... .......... .......... 80% 304M 0s\n", " 46200K .......... .......... .......... .......... .......... 81% 197M 0s\n", " 46250K .......... .......... .......... .......... .......... 81% 336M 0s\n", " 46300K .......... .......... .......... .......... .......... 81% 355M 0s\n", " 46350K .......... .......... .......... .......... .......... 81% 289M 0s\n", " 46400K .......... .......... .......... .......... .......... 81% 329M 0s\n", " 46450K .......... .......... .......... .......... .......... 81% 331M 0s\n", " 46500K .......... .......... .......... .......... .......... 81% 291M 0s\n", " 46550K .......... .......... .......... .......... .......... 81% 324M 0s\n", " 46600K .......... .......... .......... .......... .......... 81% 356M 0s\n", " 46650K .......... .......... .......... .......... .......... 81% 377M 0s\n", " 46700K .......... .......... .......... .......... .......... 81% 371M 0s\n", " 46750K .......... .......... .......... .......... .......... 81% 235M 0s\n", " 46800K .......... .......... .......... .......... .......... 82% 42.1M 0s\n", " 46850K .......... .......... .......... .......... .......... 82% 148M 0s\n", " 46900K .......... .......... .......... .......... .......... 82% 325M 0s\n", " 46950K .......... .......... .......... .......... .......... 82% 312M 0s\n", " 47000K .......... .......... .......... .......... .......... 82% 355M 0s\n", " 47050K .......... .......... .......... .......... .......... 82% 97.9M 0s\n", " 47100K .......... .......... .......... .......... .......... 82% 217M 0s\n", " 47150K .......... .......... .......... .......... .......... 82% 160M 0s\n", " 47200K .......... .......... .......... .......... .......... 82% 135M 0s\n", " 47250K .......... .......... .......... .......... .......... 82% 205M 0s\n", " 47300K .......... .......... .......... .......... .......... 82% 228M 0s\n", " 47350K .......... .......... .......... .......... .......... 83% 213M 0s\n", " 47400K .......... .......... .......... .......... .......... 83% 183M 0s\n", " 47450K .......... .......... .......... .......... .......... 83% 332M 0s\n", " 47500K .......... .......... .......... .......... .......... 83% 373M 0s\n", " 47550K .......... .......... .......... .......... .......... 83% 320M 0s\n", " 47600K .......... .......... .......... .......... .......... 83% 290M 0s\n", " 47650K .......... .......... .......... .......... .......... 83% 341M 0s\n", " 47700K .......... .......... .......... .......... .......... 83% 221M 0s\n", " 47750K .......... .......... .......... .......... .......... 83% 190M 0s\n", " 47800K .......... .......... .......... .......... .......... 83% 314M 0s\n", " 47850K .......... .......... .......... .......... .......... 83% 360M 0s\n", " 47900K .......... .......... .......... .......... .......... 83% 376M 0s\n", " 47950K .......... .......... .......... .......... .......... 84% 323M 0s\n", " 48000K .......... .......... .......... .......... .......... 84% 20.6M 0s\n", " 48050K .......... .......... .......... .......... .......... 84% 232M 0s\n", " 48100K .......... .......... .......... .......... .......... 84% 297M 0s\n", " 48150K .......... .......... .......... .......... .......... 84% 264M 0s\n", " 48200K .......... .......... .......... .......... .......... 84% 294M 0s\n", " 48250K .......... .......... .......... .......... .......... 84% 39.5M 0s\n", " 48300K .......... .......... .......... .......... .......... 84% 211M 0s\n", " 48350K .......... .......... .......... .......... .......... 84% 149M 0s\n", " 48400K .......... .......... .......... .......... .......... 84% 154M 0s\n", " 48450K .......... .......... .......... .......... .......... 84% 237M 0s\n", " 48500K .......... .......... .......... .......... .......... 85% 243M 0s\n", " 48550K .......... .......... .......... .......... .......... 85% 216M 0s\n", " 48600K .......... .......... .......... .......... .......... 85% 264M 0s\n", " 48650K .......... .......... .......... .......... .......... 85% 188M 0s\n", " 48700K .......... .......... .......... .......... .......... 85% 244M 0s\n", " 48750K .......... .......... .......... .......... .......... 85% 219M 0s\n", " 48800K .......... .......... .......... .......... .......... 85% 212M 0s\n", " 48850K .......... .......... .......... .......... .......... 85% 176M 0s\n", " 48900K .......... .......... .......... .......... .......... 85% 306M 0s\n", " 48950K .......... .......... .......... .......... .......... 85% 221M 0s\n", " 49000K .......... .......... .......... .......... .......... 85% 204M 0s\n", " 49050K .......... .......... .......... .......... .......... 85% 271M 0s\n", " 49100K .......... .......... .......... .......... .......... 86% 187M 0s\n", " 49150K .......... .......... .......... .......... .......... 86% 207M 0s\n", " 49200K .......... .......... .......... .......... .......... 86% 247M 0s\n", " 49250K .......... .......... .......... .......... .......... 86% 294M 0s\n", " 49300K .......... .......... .......... .......... .......... 86% 226M 0s\n", " 49350K .......... .......... .......... .......... .......... 86% 188M 0s\n", " 49400K .......... .......... .......... .......... .......... 86% 300M 0s\n", " 49450K .......... .......... .......... .......... .......... 86% 340M 0s\n", " 49500K .......... .......... .......... .......... .......... 86% 358M 0s\n", " 49550K .......... .......... .......... .......... .......... 86% 287M 0s\n", " 49600K .......... .......... .......... .......... .......... 86% 206M 0s\n", " 49650K .......... .......... .......... .......... .......... 87% 341M 0s\n", " 49700K .......... .......... .......... .......... .......... 87% 350M 0s\n", " 49750K .......... .......... .......... .......... .......... 87% 329M 0s\n", " 49800K .......... .......... .......... .......... .......... 87% 319M 0s\n", " 49850K .......... .......... .......... .......... .......... 87% 273M 0s\n", " 49900K .......... .......... .......... .......... .......... 87% 286M 0s\n", " 49950K .......... .......... .......... .......... .......... 87% 244M 0s\n", " 50000K .......... .......... .......... .......... .......... 87% 354M 0s\n", " 50050K .......... .......... .......... .......... .......... 87% 345M 0s\n", " 50100K .......... .......... .......... .......... .......... 87% 373M 0s\n", " 50150K .......... .......... .......... .......... .......... 87% 326M 0s\n", " 50200K .......... .......... .......... .......... .......... 88% 372M 0s\n", " 50250K .......... .......... .......... .......... .......... 88% 305M 0s\n", " 50300K .......... .......... .......... .......... .......... 88% 369M 0s\n", " 50350K .......... .......... .......... .......... .......... 88% 317M 0s\n", " 50400K .......... .......... .......... .......... .......... 88% 375M 0s\n", " 50450K .......... .......... .......... .......... .......... 88% 319M 0s\n", " 50500K .......... .......... .......... .......... .......... 88% 335M 0s\n", " 50550K .......... .......... .......... .......... .......... 88% 331M 0s\n", " 50600K .......... .......... .......... .......... .......... 88% 260M 0s\n", " 50650K .......... .......... .......... .......... .......... 88% 265M 0s\n", " 50700K .......... .......... .......... .......... .......... 88% 148M 0s\n", " 50750K .......... .......... .......... .......... .......... 88% 142M 0s\n", " 50800K .......... .......... .......... .......... .......... 89% 325M 0s\n", " 50850K .......... .......... .......... .......... .......... 89% 351M 0s\n", " 50900K .......... .......... .......... .......... .......... 89% 338M 0s\n", " 50950K .......... .......... .......... .......... .......... 89% 320M 0s\n", " 51000K .......... .......... .......... .......... .......... 89% 342M 0s\n", " 51050K .......... .......... .......... .......... .......... 89% 368M 0s\n", " 51100K .......... .......... .......... .......... .......... 89% 27.0M 0s\n", " 51150K .......... .......... .......... .......... .......... 89% 182M 0s\n", " 51200K .......... .......... .......... .......... .......... 89% 159M 0s\n", " 51250K .......... .......... .......... .......... .......... 89% 325M 0s\n", " 51300K .......... .......... .......... .......... .......... 89% 334M 0s\n", " 51350K .......... .......... .......... .......... .......... 90% 319M 0s\n", " 51400K .......... .......... .......... .......... .......... 90% 338M 0s\n", " 51450K .......... .......... .......... .......... .......... 90% 100M 0s\n", " 51500K .......... .......... .......... .......... .......... 90% 215M 0s\n", " 51550K .......... .......... .......... .......... .......... 90% 126M 0s\n", " 51600K .......... .......... .......... .......... .......... 90% 208M 0s\n", " 51650K .......... .......... .......... .......... .......... 90% 43.7M 0s\n", " 51700K .......... .......... .......... .......... .......... 90% 154M 0s\n", " 51750K .......... .......... .......... .......... .......... 90% 145M 0s\n", " 51800K .......... .......... .......... .......... .......... 90% 217M 0s\n", " 51850K .......... .......... .......... .......... .......... 90% 200M 0s\n", " 51900K .......... .......... .......... .......... .......... 90% 221M 0s\n", " 51950K .......... .......... .......... .......... .......... 91% 115M 0s\n", " 52000K .......... .......... .......... .......... .......... 91% 159M 0s\n", " 52050K .......... .......... .......... .......... .......... 91% 159M 0s\n", " 52100K .......... .......... .......... .......... .......... 91% 235M 0s\n", " 52150K .......... .......... .......... .......... .......... 91% 223M 0s\n", " 52200K .......... .......... .......... .......... .......... 91% 304M 0s\n", " 52250K .......... .......... .......... .......... .......... 91% 299M 0s\n", " 52300K .......... .......... .......... .......... .......... 91% 307M 0s\n", " 52350K .......... .......... .......... .......... .......... 91% 229M 0s\n", " 52400K .......... .......... .......... .......... .......... 91% 296M 0s\n", " 52450K .......... .......... .......... .......... .......... 91% 185M 0s\n", " 52500K .......... .......... .......... .......... .......... 92% 169M 0s\n", " 52550K .......... .......... .......... .......... .......... 92% 183M 0s\n", " 52600K .......... .......... .......... .......... .......... 92% 149M 0s\n", " 52650K .......... .......... .......... .......... .......... 92% 239M 0s\n", " 52700K .......... .......... .......... .......... .......... 92% 248M 0s\n", " 52750K .......... .......... .......... .......... .......... 92% 237M 0s\n", " 52800K .......... .......... .......... .......... .......... 92% 298M 0s\n", " 52850K .......... .......... .......... .......... .......... 92% 229M 0s\n", " 52900K .......... .......... .......... .......... .......... 92% 233M 0s\n", " 52950K .......... .......... .......... .......... .......... 92% 169M 0s\n", " 53000K .......... .......... .......... .......... .......... 92% 88.6M 0s\n", " 53050K .......... .......... .......... .......... .......... 92% 53.7M 0s\n", " 53100K .......... .......... .......... .......... .......... 93% 139M 0s\n", " 53150K .......... .......... .......... .......... .......... 93% 217M 0s\n", " 53200K .......... .......... .......... .......... .......... 93% 287M 0s\n", " 53250K .......... .......... .......... .......... .......... 93% 209M 0s\n", " 53300K .......... .......... .......... .......... .......... 93% 195M 0s\n", " 53350K .......... .......... .......... .......... .......... 93% 269M 0s\n", " 53400K .......... .......... .......... .......... .......... 93% 313M 0s\n", " 53450K .......... .......... .......... .......... .......... 93% 267M 0s\n", " 53500K .......... .......... .......... .......... .......... 93% 260M 0s\n", " 53550K .......... .......... .......... .......... .......... 93% 157M 0s\n", " 53600K .......... .......... .......... .......... .......... 93% 267M 0s\n", " 53650K .......... .......... .......... .......... .......... 94% 301M 0s\n", " 53700K .......... .......... .......... .......... .......... 94% 281M 0s\n", " 53750K .......... .......... .......... .......... .......... 94% 144M 0s\n", " 53800K .......... .......... .......... .......... .......... 94% 212M 0s\n", " 53850K .......... .......... .......... .......... .......... 94% 310M 0s\n", " 53900K .......... .......... .......... .......... .......... 94% 299M 0s\n", " 53950K .......... .......... .......... .......... .......... 94% 261M 0s\n", " 54000K .......... .......... .......... .......... .......... 94% 219M 0s\n", " 54050K .......... .......... .......... .......... .......... 94% 310M 0s\n", " 54100K .......... .......... .......... .......... .......... 94% 310M 0s\n", " 54150K .......... .......... .......... .......... .......... 94% 279M 0s\n", " 54200K .......... .......... .......... .......... .......... 95% 281M 0s\n", " 54250K .......... .......... .......... .......... .......... 95% 309M 0s\n", " 54300K .......... .......... .......... .......... .......... 95% 250M 0s\n", " 54350K .......... .......... .......... .......... .......... 95% 254M 0s\n", " 54400K .......... .......... .......... .......... .......... 95% 318M 0s\n", " 54450K .......... .......... .......... .......... .......... 95% 248M 0s\n", " 54500K .......... .......... .......... .......... .......... 95% 245M 0s\n", " 54550K .......... .......... .......... .......... .......... 95% 158M 0s\n", " 54600K .......... .......... .......... .......... .......... 95% 297M 0s\n", " 54650K .......... .......... .......... .......... .......... 95% 307M 0s\n", " 54700K .......... .......... .......... .......... .......... 95% 292M 0s\n", " 54750K .......... .......... .......... .......... .......... 95% 40.0M 0s\n", " 54800K .......... .......... .......... .......... .......... 96% 135M 0s\n", " 54850K .......... .......... .......... .......... .......... 96% 217M 0s\n", " 54900K .......... .......... .......... .......... .......... 96% 261M 0s\n", " 54950K .......... .......... .......... .......... .......... 96% 127M 0s\n", " 55000K .......... .......... .......... .......... .......... 96% 196M 0s\n", " 55050K .......... .......... .......... .......... .......... 96% 343M 0s\n", " 55100K .......... .......... .......... .......... .......... 96% 363M 0s\n", " 55150K .......... .......... .......... .......... .......... 96% 245M 0s\n", " 55200K .......... .......... .......... .......... .......... 96% 312M 0s\n", " 55250K .......... .......... .......... .......... .......... 96% 118M 0s\n", " 55300K .......... .......... .......... .......... .......... 96% 237M 0s\n", " 55350K .......... .......... .......... .......... .......... 97% 281M 0s\n", " 55400K .......... .......... .......... .......... .......... 97% 313M 0s\n", " 55450K .......... .......... .......... .......... .......... 97% 270M 0s\n", " 55500K .......... .......... .......... .......... .......... 97% 359M 0s\n", " 55550K .......... .......... .......... .......... .......... 97% 285M 0s\n", " 55600K .......... .......... .......... .......... .......... 97% 357M 0s\n", " 55650K .......... .......... .......... .......... .......... 97% 360M 0s\n", " 55700K .......... .......... .......... .......... .......... 97% 347M 0s\n", " 55750K .......... .......... .......... .......... .......... 97% 8.13M 0s\n", " 55800K .......... .......... .......... .......... .......... 97% 42.2M 0s\n", " 55850K .......... .......... .......... .......... .......... 97% 53.0M 0s\n", " 55900K .......... .......... .......... .......... .......... 97% 152M 0s\n", " 55950K .......... .......... .......... .......... .......... 98% 245M 0s\n", " 56000K .......... .......... .......... .......... .......... 98% 330M 0s\n", " 56050K .......... .......... .......... .......... .......... 98% 338M 0s\n", " 56100K .......... .......... .......... .......... .......... 98% 362M 0s\n", " 56150K .......... .......... .......... .......... .......... 98% 276M 0s\n", " 56200K .......... .......... .......... .......... .......... 98% 320M 0s\n", " 56250K .......... .......... .......... .......... .......... 98% 274M 0s\n", " 56300K .......... .......... .......... .......... .......... 98% 333M 0s\n", " 56350K .......... .......... .......... .......... .......... 98% 285M 0s\n", " 56400K .......... .......... .......... .......... .......... 98% 343M 0s\n", " 56450K .......... .......... .......... .......... .......... 98% 364M 0s\n", " 56500K .......... .......... .......... .......... .......... 99% 239M 0s\n", " 56550K .......... .......... .......... .......... .......... 99% 285M 0s\n", " 56600K .......... .......... .......... .......... .......... 99% 329M 0s\n", " 56650K .......... .......... .......... .......... .......... 99% 282M 0s\n", " 56700K .......... .......... .......... .......... .......... 99% 324M 0s\n", " 56750K .......... .......... .......... .......... .......... 99% 307M 0s\n", " 56800K .......... .......... .......... .......... .......... 99% 267M 0s\n", " 56850K .......... .......... .......... .......... .......... 99% 290M 0s\n", " 56900K .......... .......... .......... .......... .......... 99% 370M 0s\n", " 56950K .......... .......... .......... .......... .......... 99% 287M 0s\n", " 57000K .......... .......... .......... .......... .......... 99% 342M 0s\n", " 57050K .......... .......... .......... .......... ........ 100% 342M=0.4s\n", "\n", "2022-09-16 19:45:23 (155 MB/s) - ‘Miniconda3-4.5.4-Linux-x86_64.sh’ saved [58468498/58468498]\n", "\n", "Python 3.6.5 :: Anaconda, Inc.\n" ] } ], "source": [ "%%bash\n", "MINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.sh\n", "MINICONDA_PREFIX=/usr/local\n", "wget https://repo.continuum.io/miniconda/$MINICONDA_INSTALLER_SCRIPT\n", "chmod +x $MINICONDA_INSTALLER_SCRIPT\n", "./$MINICONDA_INSTALLER_SCRIPT -b -f -p $MINICONDA_PREFIX" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "g-8IlDZAd7Jx", "outputId": "d90d7c98-994a-427d-f597-71eb5d4aef88" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Solving environment: - \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\bdone\n", "\n", "\n", "==> WARNING: A newer version of conda exists. <==\n", " current version: 4.5.4\n", " latest version: 4.14.0\n", "\n", "Please update conda by running\n", "\n", " $ conda update -n base conda\n", "\n", "\n", "\n", "## Package Plan ##\n", "\n", " environment location: /usr/local\n", "\n", " added / updated specs: \n", " - viennarna\n", "\n", "\n", "The following packages will be downloaded:\n", "\n", " package | build\n", " ---------------------------|-----------------\n", " sqlite-3.39.2 | h5082296_0 1.5 MB\n", " wheel-0.37.1 | pyhd3eb1b0_0 31 KB\n", " xz-5.2.5 | h7f8727e_1 389 KB\n", " libgcc-ng-11.2.0 | h1234567_1 8.5 MB\n", " python-3.7.13 | h12debd9_0 53.5 MB\n", " ncurses-6.3 | h5eee18b_3 1.1 MB\n", " pip-22.1.2 | py37h06a4308_0 2.9 MB\n", " viennarna-2.4.14 | py37h8b12597_0 14.1 MB bioconda\n", " libffi-3.3 | he6710b0_2 54 KB\n", " ld_impl_linux-64-2.38 | h1181459_1 732 KB\n", " setuptools-63.4.1 | py37h06a4308_0 1.4 MB\n", " readline-8.1.2 | h7f8727e_1 423 KB\n", " zlib-1.2.12 | h5eee18b_3 124 KB\n", " tk-8.6.12 | h1ccaba5_0 3.3 MB\n", " ca-certificates-2022.07.19 | h06a4308_0 131 KB\n", " certifi-2022.6.15 | py37h06a4308_0 156 KB\n", " libstdcxx-ng-11.2.0 | h1234567_1 6.1 MB\n", " openssl-1.1.1q | h7f8727e_0 3.8 MB\n", " ------------------------------------------------------------\n", " Total: 98.1 MB\n", "\n", "The following NEW packages will be INSTALLED:\n", "\n", " ld_impl_linux-64: 2.38-h1181459_1 \n", " viennarna: 2.4.14-py37h8b12597_0 bioconda\n", "\n", "The following packages will be UPDATED:\n", "\n", " ca-certificates: 2018.03.07-0 --> 2022.07.19-h06a4308_0 \n", " certifi: 2018.4.16-py36_0 --> 2022.6.15-py37h06a4308_0\n", " libffi: 3.2.1-hd88cf55_4 --> 3.3-he6710b0_2 \n", " libgcc-ng: 7.2.0-hdf63c60_3 --> 11.2.0-h1234567_1 \n", " libstdcxx-ng: 7.2.0-hdf63c60_3 --> 11.2.0-h1234567_1 \n", " ncurses: 6.1-hf484d3e_0 --> 6.3-h5eee18b_3 \n", " openssl: 1.0.2o-h20670df_0 --> 1.1.1q-h7f8727e_0 \n", " pip: 10.0.1-py36_0 --> 22.1.2-py37h06a4308_0 \n", " python: 3.6.5-hc3d631a_2 --> 3.7.13-h12debd9_0 \n", " readline: 7.0-ha6073c6_4 --> 8.1.2-h7f8727e_1 \n", " setuptools: 39.2.0-py36_0 --> 63.4.1-py37h06a4308_0 \n", " sqlite: 3.23.1-he433501_0 --> 3.39.2-h5082296_0 \n", " tk: 8.6.7-hc745277_3 --> 8.6.12-h1ccaba5_0 \n", " wheel: 0.31.1-py36_0 --> 0.37.1-pyhd3eb1b0_0 \n", " xz: 5.2.4-h14c3975_4 --> 5.2.5-h7f8727e_1 \n", " zlib: 1.2.11-ha838bed_2 --> 1.2.12-h5eee18b_3 \n", "\n", "\n", "Downloading and Extracting Packages\n", "sqlite-3.39.2 | 1.5 MB | : 100% 1.0/1 [00:00<00:00, 2.94it/s] \n", "wheel-0.37.1 | 31 KB | : 100% 1.0/1 [00:00<00:00, 20.12it/s]\n", "xz-5.2.5 | 389 KB | : 100% 1.0/1 [00:00<00:00, 5.52it/s] \n", "libgcc-ng-11.2.0 | 8.5 MB | : 100% 1.0/1 [00:01<00:00, 1.59s/it] \n", "python-3.7.13 | 53.5 MB | : 100% 1.0/1 [00:10<00:00, 10.24s/it] \n", "ncurses-6.3 | 1.1 MB | : 100% 1.0/1 [00:01<00:00, 1.07s/it] \n", "pip-22.1.2 | 2.9 MB | : 100% 1.0/1 [00:01<00:00, 1.26s/it] \n", "viennarna-2.4.14 | 14.1 MB | : 100% 1.0/1 [00:03<00:00, 3.84s/it] \n", "libffi-3.3 | 54 KB | : 100% 1.0/1 [00:00<00:00, 18.44it/s]\n", "ld_impl_linux-64-2.3 | 732 KB | : 100% 1.0/1 [00:00<00:00, 5.07it/s] \n", "setuptools-63.4.1 | 1.4 MB | : 100% 1.0/1 [00:00<00:00, 1.53it/s] \n", "readline-8.1.2 | 423 KB | : 100% 1.0/1 [00:00<00:00, 5.77it/s] \n", "zlib-1.2.12 | 124 KB | : 100% 1.0/1 [00:00<00:00, 14.88it/s]\n", "tk-8.6.12 | 3.3 MB | : 100% 1.0/1 [00:00<00:00, 1.11it/s] \n", "ca-certificates-2022 | 131 KB | : 100% 1.0/1 [00:00<00:00, 17.71it/s]\n", "certifi-2022.6.15 | 156 KB | : 100% 1.0/1 [00:00<00:00, 16.72it/s]\n", "libstdcxx-ng-11.2.0 | 6.1 MB | : 100% 1.0/1 [00:01<00:00, 1.26s/it] \n", "openssl-1.1.1q | 3.8 MB | : 100% 1.0/1 [00:00<00:00, 1.16it/s] \n", "Preparing transaction: | \b\b/ \b\b- \b\b\\ \b\b| \b\bdone\n", "Verifying transaction: - \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\bdone\n", "Executing transaction: \\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\b\\ \b\b| \b\b/ \b\b- \b\bdone\n" ] } ], "source": [ "!conda install -c bioconda -y viennarna" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "id": "9PIMhlfJgp4M" }, "outputs": [], "source": [ "#import RNA" ] }, { "cell_type": "markdown", "source": [ "#### Now we can build functions for making calculations" ], "metadata": { "id": "zebI95yk77lH" } }, { "cell_type": "code", "execution_count": 43, "metadata": { "id": "wSDcrIwJh6en" }, "outputs": [], "source": [ "import subprocess\n", "def rna_fold_rnafold(frag, temperature):\n", " args = [\"RNAfold\", \"-p\", \"-T\", str(temperature)]\n", " fc = subprocess.run(args, input=str(frag), check=True, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " out = str(fc.stdout)\n", " test = out.splitlines()\n", " structure = test[1].split()[0]\n", " centroid = test[3].split()[0]\n", " MFE = test[1].split(\" \", 1)[1]\n", " try:\n", " MFE = float(re.sub('[()]', '', MFE))\n", " except:\n", " print(\"Error parsing MFE values\", test)\n", " ED = float(test[4].split()[-1])\n", "\n", " return (structure, centroid, MFE, ED)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "id": "N7d2GiWVYoXg" }, "outputs": [], "source": [ "def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=32):\n", " def input_function(): # inner function, this will be returned\n", " ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df)) # create tf.data.Dataset object with data and its label\n", " if shuffle:\n", " ds = ds.shuffle(1000) # randomize order of data\n", " ds = ds.batch(batch_size).repeat(num_epochs) # split dataset into batches of 32 and repeat process for number of epochs\n", " return ds # return a batch of the dataset\n", " return input_function # return a function object for use\n", "\n" ] }, { "cell_type": "markdown", "source": [ "### Making a single prediction using model. You can input any sequence you want after \"frag\"" ], "metadata": { "id": "oPLejdZq4sjg" } }, { "cell_type": "code", "source": [ "#vegfa frag: \n", "frag = \"GACTCTGCGCAGAGCACTTTGGGTCCGGAGGGCGAGACTCCGGCGGAAGCATTCCCGGGCGGGTGACCCAGCACGGTCCCTCTTGGAATTGGATTCGCCATTTTATTTTTCTTGCTGCTAAATCACCGAGCCCGGAAGATTAGAGAGTTTTATTTCTGGGATTCCTGTAGACACACCCACCCACATACATACATTTATATATATATATATTATATATATATAAAAATAAATATCTCTATTTTATATATATAAAATATATATATTCTTTTTTTAAATTAACAGTGCTAATGTTATTGGTGTCTTCACTGGATGTATTTGACTGCTGTGGACTTGAGTTGGGAGGGGAATGTTC\"\n", "#rag = input('Input sequence for testing:')\n", "frag = frag.replace(\"T\", \"U\")\n", "\n", "\n", "# Calculate frag features\n", "GCpercent = get_gc_content(frag)\n", "CGratio = get_cg_ratio(frag)\n", "AUratio = get_au_ratio(frag)\n", "di_freqs = get_di_freqs(frag)\n", "\n", "# use function (rna_fold_rnafold) to get MFE (can use python binding method if available)\n", "structure, centroid, MFE, ED = rna_fold_rnafold(frag, 37)\n", "MFE = MFE.replace(\")\", \"\")\n", "MFE = float(MFE.replace(\"(\", \"\"))\n", "MFE = float(MFE)\n", "\n", "# put features in a list\n", "full_features = [float(len(frag)), float(GCpercent), float(CGratio), float(AUratio)]\n", "\n", "# Append the dinucleotide frequencies\n", "for freq in di_freqs:\n", " full_features.append(freq)\n", "\n", "# convert feature list to pandas dataframe AND TRANSPOSE to give correct shape (1,20)\n", "full_predict = pd.DataFrame(full_features).transpose()\n", "full_predict.columns = [\"Length\", \"GCpercent\",\"CGratio\", \"AUratio\", \"AA\",\"AU\",\"AG\",\"AC\",\"UA\",\"UU\",\"UG\",\"UC\",\"GA\",\"GU\",\"GG\",\"GC\",\"CA\",\"CU\",\"CG\", \"CC\"]\n", "\n", "# Predict mean MFE and standard deviation based on features\n", "meanMFE_result = mean_mfe_model.predict(full_predict)\n", "stddev_result = std_dev_model.predict(full_predict)\n", "\n", "# Extract values and calculate z-score\n", "meanMFE = meanMFE_result[0][0]\n", "stddev = stddev_result[0][0]\n", "zscore = round((MFE-meanMFE)/(stddev), 2)\n", "print(f'\\n\\n\\nSequence analyzed:\\n{frag}\\n\\nSequence Length: {str(len(frag))} nt\\nMeanMFE prediction: {round(float(meanMFE), 2)}\\nPredicted MFE Standard Deviation: {round(float(stddev), 2)}\\nRNAfold MFE: {round(float(MFE), 2)}\\n\\nCalculated z-score: {round(zscore, 2)}')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LuD-58X74ukh", "outputId": "c2b9f3c4-9e06-44ee-9053-f84b07da4abe" }, "execution_count": 104, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Error parsing MFE values ['GACUCUGCGCAGAGCACUUUGGGUCCGGAGGGCGAGACUCCGGCGGAAGCAUUCCCGGGCGGGUGACCCAGCACGGUCCCUCUUGGAAUUGGAUUCGCCAUUUUAUUUUUCUUGCUGCUAAAUCACCGAGCCCGGAAGAUUAGAGAGUUUUAUUUCUGGGAUUCCUGUAGACACACCCACCCACAUACAUACAUUUAUAUAUAUAUAUAUUAUAUAUAUAUAAAAAUAAAUAUCUCUAUUUUAUAUAUAUAAAAUAUAUAUAUUCUUUUUUUAAAUUAACAGUGCUAAUGUUAUUGGUGUCUUCACUGGAUGUAUUUGACUGCUGUGGACUUGAGUUGGGAGGGGAAUGUUC', '((((((((.....)))....)))))(((((.......))))).....(((((((((((((.(((((..(((((.((.......((((((.((.....))))))))....)).))))).....)))))..))))((((..(((((((......)))))))..))))(((....)))((((((((((..((..((..((((((((((((((((.(((((((((((((.((........))))))))))))))).))))))))))).............(((((.......)))))..((((....))))..)))))..))..)).)))))......).))))..))))))))). (-95.00)', ',,(((({(..,,,)}}.,,,}||}((((((.......)))))},.||{((((((((((((.(((((..{((((.((.......{{(((.{((.....)))})))}.....}.))})),,...)))))..))))((((..(((((((......)))))))..)))),{,....}},(((({(((((,,,({{(({{({,,,(((((((((((.(((((((((((({{((........))))))))))))))).))))))))))).............{{(((,,.....})))),}|(((....)))))))))))}.))..,,.)))))......),}))).,))))))))}. [-103.06]', '.........................(((((.......)))))......((((((((((((.(((((..(((((..........(((((.(((.....)))))))).......))))).....)))))..))))((((..(((((((......)))))))..))))..........(((..(((((...............(((((((((((.(((((((((((..(((........))).))))))))))).))))))))))).............(((((.......)))))...(((....))).................))))).........)))..)))))))).. {-77.30 d=65.02}', ' frequency of mfe structure in ensemble 2.1041e-06; ensemble diversity 98.73 ']\n", "\n", "\n", "\n", "Sequence analyzed:\n", "GACUCUGCGCAGAGCACUUUGGGUCCGGAGGGCGAGACUCCGGCGGAAGCAUUCCCGGGCGGGUGACCCAGCACGGUCCCUCUUGGAAUUGGAUUCGCCAUUUUAUUUUUCUUGCUGCUAAAUCACCGAGCCCGGAAGAUUAGAGAGUUUUAUUUCUGGGAUUCCUGUAGACACACCCACCCACAUACAUACAUUUAUAUAUAUAUAUAUUAUAUAUAUAUAAAAAUAAAUAUCUCUAUUUUAUAUAUAUAAAAUAUAUAUAUUCUUUUUUUAAAUUAACAGUGCUAAUGUUAUUGGUGUCUUCACUGGAUGUAUUUGACUGCUGUGGACUUGAGUUGGGAGGGGAAUGUUC\n", "\n", "Sequence Length: 352 nt\n", "MeanMFE prediction: -63.41\n", "Predicted MFE Standard Deviation: 5.09\n", "RNAfold MFE: -95.0\n", "\n", "Calculated z-score: -6.2\n" ] } ] }, { "cell_type": "markdown", "source": [ "##Questions or suggestions?\n", "\n", "Email:\n", "Ryan J. Andrews ryan.j.rna@gmail.com\n", "Warren B. Rouse wbrouse@iastate.edu\n", "Walter N. Moss wmoss@iastate.edu\n" ], "metadata": { "id": "YlcioH8vBF8y" } } ], "metadata": { "accelerator": "TPU", "colab": { "collapsed_sections": [ "bMr7MPVmoiHf", "xchnxAsaKKqO", "SIpsyJITPcbG", "Ak_TMAzGOIFq", "_JAG5JYytnTr", "vStvuHK_t1hs", "NixZHwDBGPid", "q03hC506k96D" ], "machine_shape": "hm", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.13" } }, "nbformat": 4, "nbformat_minor": 0 }