{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# auto reload modules\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Examples: Data Processing\n", "\n", "This is a trivial example of how to create data for CNSistent, fill missing segments, impute missing values, create consistent segmentation, aggregate the values and plot the results.\n", "\n", "We will go through the following steps:\n", "1. Create data\n", "2. Fill missing segments\n", "3. Infer missing values\n", "4. Create consistent segmentation\n", "5. Aggregate the values" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import io\n", "import pandas as pd\n", "\n", "# Import the cns module\n", "import cns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Firs we create two SCNA profiles for samples s1, s2 with copy number columns CN1, CN2.\n", "\n", "For the tutorial we will limit ourselves to chr19." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", "
sample_idchromstartendCN1CN2
0s1chr19100000030000001.0NaN
1s1chr193000000120000001.01.0
2s1chr191200000014000000NaN1.0
3s1chr1914000000210000003.01.0
4s1chr1921000000250000003.0NaN
\n", "
" ], "text/plain": [ " sample_id chrom start end CN1 CN2\n", "0 s1 chr19 1000000 3000000 1.0 NaN\n", "1 s1 chr19 3000000 12000000 1.0 1.0\n", "2 s1 chr19 12000000 14000000 NaN 1.0\n", "3 s1 chr19 14000000 21000000 3.0 1.0\n", "4 s1 chr19 21000000 25000000 3.0 NaN" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cns_source = \"\"\"sample_id, chrom, start, end, CN1, CN2\n", "s1, chr19, 1000000, 3000000, 1,\n", "s1, chr19, 3000000, 12000000, 1, 1\n", "s1, chr19, 12000000, 14000000, , 1\n", "s1, chr19, 14000000, 21000000, 3, 1\n", "s1, chr19, 21000000, 25000000, 3, \n", "s1, chr19, 28000000, 58500000, 3,\n", "s2, chr19, 1000000, 24000000, 2,\n", "s2, chr19, 29000000, 58000000, 0,\n", "\"\"\"\n", "raw_cns_df = pd.read_csv(io.StringIO(cns_source.strip()), sep=',\\s*', engine='python')\n", "raw_cns_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We plot heatmaps of the above values, note that the positions are on the linear genome." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
,\n", " array([, ], dtype=object))" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAFRCAYAAAC/ufz0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIP9JREFUeJzt3XlU1XX+x/HXhZEtVFTCLRA1UxTEpSzHX2knRjJb1PJMzqQ1LaZlblMaDWpqBdriltWM1WgnHVtMm8nCOi7HLLVJpRpFSsUwAZXGLVkU+P7+MO9EIHEv98v3fvL5OIdz5H6/9/N93/uul1+/28dlWZYlAIARApwuAABQe4Q2ABiE0AYAgxDaAGAQQhsADEJoA4BBCG0AMMhvnC7gpyoqKpSXl6eGDRvK5XI5XQ6qYVmWTp48qVatWikgwHd/59N7/2dX7+EZvwrtvLw8RUdHO10GauHAgQO65JJLfDYevTeHr3sPz/hVaDds2FDS2f8oGjVq5JMx09LSKv2enp7ik3HPefTRtCqv+Xob/uWEpGh3r3zl3HgTJkxQcHCwUlKc/w5//t/Oha60tFRz5szxee/hGb8K7XP/LG7UqJHPQjskJORnr/hm3POP7/tt+CNfH8I4N15wcLBCQkJ81v+6qL634PCVszgwBQAGIbQBwCCENgAYxK+OaQMwX3l5uc6cOeN0GUZp0KCBAgMDa7UuoQ3AJyzLUkFBgY4dO+Z0KUaKiIhQixYtfvFEL6ENwCfOBXZUVJTCwsK4yqSWLMtSUVGRDh8+LElq2bJljesT2gDqrLy83B3YzZo1c7oc44SGhkqSDh8+rKioqBoPlXAiEkCdnTuGHRYW5nAl5jr33f3S+QBCG4DPcEjEe7X97ghtADAIx7QB2Co3N1eFhYX1tr3IyEjFxMTU2/bqG6ENwDa5ubnq2DFOJSVF9bbNkJAwZWdn/WqDm8MjAGxTWFj4Y2C/LmlbPfy8rpKSIo/27F988UV17drV/aC63r1764MPPqjxPW+99ZY6deqkkJAQJSQk6P3336+03LIsTZ06VS1btlRoaKiSkpL0zTff1LqmmrCnDaAexEnq4XQR1brkkkuUnp6uDh06yLIsLVmyRLfccot27NihLl26VFn/008/1bBhw5SWlqYbb7xRy5Yt06BBg7R9+3bFx8dLkmbPnq358+dryZIlatu2raZMmaLk5GTt2rWrzk+PZE8bwAXtpptu0g033KAOHTrosssu05NPPqnw8HBt2bKl2vXnzZun66+/Xo888oji4uI0c+ZM9ejRQ88//7yks3vZc+fOVWpqqm655RZ17dpVr732mvLy8rRq1ao610toA8CPysvLtXz5cp06dUq9e/eudp3NmzcrKSmp0mvJycnavHmzJCknJ0cFBQWV1mncuLGuvPJK9zp1weERABe8r776Sr1791ZJSYnCw8O1cuVKde7cudp1CwoK1Lx580qvNW/eXAUFBe7l51473zp1wZ42gAtex44dlZmZqa1bt2r06NG68847tWvXLqfLqhahDeCCFxQUpEsvvVQ9e/ZUWlqaEhMTNW/evGrXbdGihQ4dOlTptUOHDqlFixbu5edeO986dUFoA8DPVFRUqLS0tNplvXv31tq1ayu99tFHH7mPgbdt21YtWrSotM6JEye0devW8x4n9wTHtAHUgyy/3U5KSooGDBigmJgYnTx5UsuWLdOGDRu0Zs0aSdKIESPUunVrpaWlSZLGjRunvn376tlnn9XAgQO1fPlyff755/rb3/4m6ewzRMaPH68nnnhCHTp0cF/y16pVKw0aNKjOn5DQBmCbyMhIhYSEqaTkjnrbZkhImCIjI2u9/uHDhzVixAjl5+ercePG6tq1q9asWaPf/e53ks7e1RkQ8L+DEr/97W+1bNkypaam6rHHHlOHDh20atUq9zXakjRp0iSdOnVKI0eO1LFjx/R///d/ysjIqPM12hKhDcBGMTExys7O8utnj7zyyis1Lt+wYUOV14YOHaqhQ4ee9z0ul0szZszQjBkzal1HbRHaAGwVExPzq30OiBM4EQkABiG0AcAghDYAGITQBgCDENoAYBBCGwAMQmgDgEG4ThuArZjY17cIbQC2yc3NVVxcnIqK6m9i37CwMGVl1X5i340bN+rpp5/Wtm3blJ+fr5UrV/7iM0I2bNigiRMnaufOnYqOjlZqaqruuuuuSussXLhQTz/9tAoKCpSYmKgFCxaoV69eXn6q/yG0AdimsLBQRUVFev311xUXF2f79rKysnTHHXeosLCw1qF96tQpJSYm6u6779aQIUN+cf2cnBwNHDhQo0aN0tKlS7V27Vrde++9atmypZKTkyVJb7zxhiZOnKiXXnpJV155pebOnavk5GRlZ2crKiqqTp+R0AZgu7i4OPXo4Z8T+w4YMEADBgyo9fovvfSS2rZtq2effVbS2c+2adMmzZkzxx3azz33nO677z796U9/cr9n9erVevXVV/Xoo4/WqV5ORAKAB35pjsjTp09r27ZtldYJCAhQUlKST+aIJLQBwAPnmyPyxIkTKi4uVmFhocrLy5kjEgDAMW0A8Mj55ohs1KiRQkNDFRgYqMDAQOaIBAB/8EtzRAYFBalnz56V1qmoqNDatWt9MkckoQ3ggvbDDz8oMzNTmZmZks5e0peZmanc3FxJZ+eQHDFihHv9UaNGad++fZo0aZJ2796tF154QW+++aYmTJjgXmfixIlatGiRlixZoqysLI0ePVqnTp1yX01SFxweAWC7rKz6mdjXm+18/vnnuvbaa92/T5w4UZJ05513avHixcrPz3cHuHR2tvXVq1drwoQJmjdvni655BK9/PLL7sv9JOn3v/+9jhw5oqlTp6qgoEDdunVTRkZGlZOT3iC0AdgmMjJSYWFhuuOO+pvYNyzMs4l9+/XrJ8uyzrt88eLF1b5nx44dNY47ZswYjRkzptZ11BahDcA2MTExysry74l9TUNoA7AVE/v6FiciAcAghDYAGITQBgCDENoAYBBCGwAMQmgDgEF8Fto7d+7UrbfeqtjYWLlcLs2dO9dXQwMAfuSz67SLiorUrl07DR06tNI9+AAubEzs61seh/bbb7+t6dOna8+ePQoLC1P37t317rvv6oorrtAVV1whSXWeTgfAr0Nubq7iOnZUUUlJvW0zLCREWdnZHgW3XZPw2sGj0M7Pz9ewYcM0e/ZsDR48WCdPntTHH39c4337NSktLVVpaan79xMnTng1DsxD7y8MhYWFKiop0euS7J/WV8qSdEdJiUcT+9o5Ca8dPA7tsrIyDRkyRG3atJEkJSQkeL3xtLQ0TZ8+3ev3w1z0/sISJ8k/p/W1dxJeO3h0IjIxMVHXXXedEhISNHToUC1atEhHjx71euMpKSk6fvy4++fAgQNejwWz0Hv4A7sn4bWDR6EdGBiojz76SB988IE6d+6sBQsWqGPHjsrJyfFq48HBwWrUqFGlH1wY6D38gd2T8NrB40v+XC6X+vTpo+nTp2vHjh0KCgrSypUr7agNAPAzHh3T3rp1q9auXav+/fsrKipKW7du1ZEjRxQXF6fTp09r165dks7+k+PgwYPKzMxUeHi4Lr30UluKB4C6iIyMtHUSXjt4tKfdqFEjbdy4UTfccIMuu+wypaam6tlnn9WAAQOUl5en7t27q3v37srPz9czzzyj7t27695777WrdgCoE7sn4bWDR3vacXFxysjIqHZZbGys15f+Afh1q58ZIr3bzsSJE3XnnXfq8ssvV69evTR37lyfTcJrB2auAWCbyMhIhYWE6I56vrnGkzki7ZyE1w6ENgDbxMTEKCs72+9vY7drEl47ENoAbMUckb7Fo1kBwCCENgAYhNAGAIMQ2gBgEEIbAAxCaAOAQQhtADAIoQ0ABuHmGgC2YmJf3yK0AdgmNzdXnTp1UnFxcb1tMzQ0VLt37651cN91111asmSJ0tLSKk0vtmrVKg0ePLjWD8Lz1Ti/hNAGYJvCwkIVFxdryJAhHj3EqS7be+eddzya2FeSQkJCNGvWLN1///1q0qSJ19v31Tg1IbQB2C4yMlKtWrVyuozzSkpK0p49e5SWlqbZs2dXWf79999rzJgx2rhxo44ePar27dvrscce07Bhwzwaxxc4EQngghcYGKinnnpKCxYs0HfffVdleUlJiXr27KnVq1frP//5j0aOHKnhw4frs88+82gcXyC0AUDS4MGD1a1bN02bNq3KstatW+vhhx9Wt27d1K5dOz300EO6/vrr9eabb3o0ji8Q2gDwo1mzZmnJkiXKyqo8B055eblmzpyphIQENW3aVOHh4VqzZo1yc3M9GscXCG0A+NE111yj5ORkpaSkVHr96aef1rx58zR58mStX79emZmZSk5O1unTpz0axxc4EQkAP5Genq5u3bqpY8eO7tc++eQT3XLLLbrjjjsknZ389+uvv1bnzp09GscXCG0Atquvm2t8sZ2EhAT98Y9/1Pz5892vdejQQW+//bY+/fRTNWnSRM8995wOHTpUY2hXN44vENoAbBMZGanQ0FC988479bbN0NDQOl8TPmPGDL3xxhvu31NTU7Vv3z4lJycrLCxMI0eO1KBBg3T8+HGPxvEFQhuAbWJiYrR7926/vo198eLFVV6LjY1VaWmp+/emTZtq1apVdR7HFwhtALZiYl/f4uoRADAIoQ0ABiG0AcAghDYAn/HV40cvRLX97ghtAHXWoEEDSVJRUZHDlZjr3Hd37rs8H64eAVBngYGBioiI0OHDhyVJYWFhcrlcDldlBsuyVFRUpMOHDysi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_heatmap(raw_cns_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For real datasets we would need to limit ourselves to a subset of a data for visualization purposes, e.g.:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
,\n", " array([,\n", " ],\n", " dtype=object))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAFRCAYAAACSZxELAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALk1JREFUeJzt3XdYFNf+P/D3grRVQBQpGikq4qIIQiyoVzQWRE0sueZqrImimBgssWFsaBLUREUJ5l5NotiuaZZvohGNSrBELIgmgChYMAELPlioCpzfH17250pd2sDO+/U8PI/MmT3zGdblzcyZmaMQQggQEZEs6UldABERSYchQEQkYwwBIiIZYwgQEckYQ4CISMYYAkREMsYQICKSsQZSF1BTCgsLkZqaClNTUygUCqnLIaKXCCHw5MkTNG/eHHp6/HtUKjobAqmpqWjZsqXUZRBROW7fvo1XXnlF6jJkS2dDwNTUFMDz/2BmZmYSV1NxwcHBZbavXBlYS5VUjwULyt6fl9W3/aOqeAygpfqzStLQ2RAoOgVkZmZWr0LA2Ni4nDXqz74AFdmfl9Wv/aOq4+laafFEHBGRjDEEiIhkjCFARCRjDAEiIhljCBARyRhDgIhIxhgCREQyxhAgIpIxhgARkYwxBIiIZIwhQEQkYwwBIiIZYwgQEckYQ4CISMYYAkREMsYQICKSMYYAEZGMMQSIiGSMIUBEJGMMASIiGWMIEBHJGEOAiEjGGAJERDLGECAikjGGABGRjDEEiIhkjCFARCRjDAEiIhljCBARyRhDgIhIxhgCREQyxhAgIpIxhgARkYwxBIiIZIwhQEQkYwwBIiIZYwgQEckYQ4CISMYYAkREMlatIZCcnIzXXnutOrskIqIaVK0hkJmZid9++606uyQiohrUQJuVN2zYUGb733//XaViiIiodmkVAjNnzoStrS0MDQ1LbH/69Gm1FEVERLVDqxCwt7fHqlWr8NZbb5XYHhsbC09Pz2opjIiIap5WYwKenp64cOFCqe0KhQJCiCoXRUREtUOrI4Hly5cjOzu71HYXFxfcuHGjykUREVHt0OpIwMXFBa+++mqp7QYGBrC3t69yUXFxcXjzzTfh4OAAhUKBkJCQKvdJRETF1cmbxbKzs9GqVSusXLkSNjY2UpdDRKSztDod1KdPHygUijLXUSgUOHr0aIX6++GHHxAUFISkpCQolUp06tQJ+/fvR+fOndG5c2cAwIIFC7QpkYiItKBVCLi7u5fa9uTJE+zatQt5eXkV6istLQ2jR4/G6tWrMXz4cDx58gQnTpyo9MByXl6exrYfP35cqX6IiOREqxBYt25dsWX5+fkICwvDJ598ghYtWmDFihUV6istLQ35+fkYMWKEehzB1dVVm3I0BAcHIygoqNKvJyKSoyqNCezcuRPOzs5YtWoVli1bhoSEBIwaNapCr3Vzc0Pfvn3h6uqKkSNHYvPmzcjIyKh0LYGBgXj06JH66/bt25Xui4hILioVAocOHYK7uzvee+89TJw4EdeuXcN7772HBg0qfmChr6+PI0eO4JdffoGLiwtCQ0Ph7Oxc6UtMjYyMYGZmpvFFRERl0yoEzp49iz59+mD48OHo06cPkpOTsXjxYjRs2LBSG1coFOjRoweCgoJw8eJFGBoaYu/evZXqi4iItKfVmEC3bt1gYmICf39/ODo6YteuXSWuFxAQUG5f0dHROHr0KAYMGAArKytER0fj/v37UKlUePr0KeLj4wE8fx7R33//jdjYWDRq1Aht2rTRpmQiIiqDViFgZ2cHhUKBffv2lbqOQqGoUAiYmZkhKioKISEhePz4Mezt7bFmzRr4+vri5s2b6NSpk3rdzz//HJ9//jm8vb0RGRmpTclERFQGrULg5s2b1bZhlUqFQ4cOldjm4ODAZxAREdUCrcYEjh07BhcXlxKvwX/06BHat2+PEydOVFtxRERUs7QKgZCQEPj5+ZV45Y25uTmmTp2KtWvXVltxRERUs7QKgUuXLmHgwIGltg8YMKDMR00TEVHdolUI3L17FwYGBqW2N2jQAPfv369yUUREVDu0CoEWLVrgzz//LLX98uXLsLW1rXJRRERUO7QKgUGDBmHx4sXIzc0t1paTk4OlS5diyJAh1VYcERHVLK0uEV20aBH27NmDtm3bYvr06XB2dgYAXLlyBWFhYSgoKMBHH31UI4USEVH10yoErK2tcfr0aUybNg2BgYHqa/kVCgV8fHwQFhYGa2vrGimUiIiqn1YhAAD29vY4ePAgMjIykJSUBCEEnJycYGFhURP1ERFRDdI6BIpYWFioZ/8iIqL6qU7OMUxERLWDIUBEJGMMASIiGWMIEBHJGEOAiEjGGAJERDLGECAikjGGABGRjDEEiIhkjCFARCRjDAEiIhljCBARyRhDgIhIxhgCREQyxhAgIpIxhgARkYwxBIiIZIwhQEQkYwwBIiIZYwgQEckYQ4CISMYYAkREMsYQICKSMYYAEZGMMQSIiGSMIUBEJGMMASIiGWMIEBHJGEOAiEjGGAJERDLGECAikjGGABGRjDEEiIhkjCFARCRjDaQuoKYIIQAAjx8/lrgS7eTm5pazhq7tz8vq1/5RVTx/r4s+qyQNhdDRd+D69eto3bq11GUQUTmSk5PRqlUrqcuQLZ09EmjSpAkAICUlBebm5hJXQ0Qve/ToEezs7NSfVZKGzoaAnt7z4Q5zc3OYmZlJXA0Rlabos0rS4E+fiEjGGAJERDKmsyFgZGSEpUuXwsjISOpSiKgE/IzWDTp7dRAREZVPZ48EiIiofAwBIiIZYwgQEckYQ4CISMYYAkREMsYQICKSMYYAEZGMMQSIiGSMIUBEJGMMASIiGWMIEBHJGEOAiEjGGAJERDKmszOLFRYWIjU1FaamplAoFFKXQ0QvEULgyZMnaN68OWcXk5DOhkBqaipatmwpdRlEVI7bt2/jlVdekboM2dLZEDA1NQUAzJo1q9RJKwIDA2uzpHopODhY6hJIR+Xl5WHdunXqzypJQ2dDoOgUkJGREYyNjUtchxPQl6+0nx1RdeHpWmnxRBwRkYwxBIiIZIwhQEQkYzo7JkBEuqGgoADPnj2Tuox6xdDQsMKX3TIEiKhOEkLgzp07ePjwodSl1Dt6enpwdHSEoaFhuesyBIioTioKACsrKyiVSl5FVEFFN8qmpaXBzs6u3J8bQ4CI6pyCggJ1ADRt2lTqcuqdZs2aITU1Ffn5+TAwMChzXQ4ME1GdUzQGoFQqJa6kfio6DVRQUFDuugwBIqqzeAqocrT5uTEEiIhkjGMCRFRvpKSkID09vda2Z2lpCTs7u1rbnhQYAkRUL6SkpMDZWYXc3Oxa26axsRKJiQk6HQQ8HURE9UJ6evr/AmAHgAu18LUDubnZWh15fPnll+jYsSPMzMxgZmYGLy8v/PLLL2W+5vvvv0e7du1gbGwMV1dXHDx4UKNdCIElS5bA1tYWJiYm6NevH65du1bhmsrDIwEiqmdUADykLqJEr7zyClauXAknJycIIRAeHo6hQ4fi4sWLaN++fbH1T58+jdGjRyM4OBhDhgzBrl27MGzYMMTExKBDhw4AgNWrV2PDhg0IDw+Ho6MjFi9eDB8fH8THx1fLU355JEBEVE1ef/11DBo0CE5OTmjbti0++eQTNGrUCGfOnClx/fXr12PgwIGYO3cuVCoVVqxYAQ8PD3zxxRcAnh8FhISEYNGiRRg6dCg6duyIbdu2ITU1Ffv27auWmhkCREQ1oKCgALt370ZWVha8vLxKXOf3339Hv379NJb5+Pjg999/BwDcuHEDd+7c0VjH3NwcXbt2Va9TVTwdRERUjf744w94eXkhNzcXjRo1wt69e+Hi4lLiunfu3IG1tbXGMmtra9y5c0fdXrSstHWqikcCRETVyNnZGbGxsYiOjsa0adMwYcIExMfHS11WqRgCRETVyNDQEG3atIGnpyeCg4Ph5uaG9evXl7iujY0N7t69q7Hs7t27sLGxUbcXLSttnapiCBAR1aDCwkLk5eWV2Obl5YWjR49qLDty5Ih6DMHR0RE2NjYa6zx+/BjR0dGljjNoi2MCRFTPJNTZ7QQGBsLX1xd2dnZ48uQJdu3ahcjISERERAAAxo8fjxYtWiA4OBgAMGPGDHh7e2PNmjUYPHgwdu/ejfPnz2PTpk0Anj8DaObMmfj444/h5OSkvkS0efPmGDZsWLXsJUOAiOoFS0tLGBsrkZs7tta2aWyshKWlZYXXv3fvHsaPH4+0tDSYm5ujY8eOiIiIQP/+/QE8v+v5xRm/unfvjl27dmHRokVYuHAhnJycsG/fPvU9AgAwb948ZGVlYcqUKXj48CF69uyJQ4cOVcs9AgBDgIjqCTs7OyQmJtTpZwd9/fXXZbZHRkYWWzZy5EiMHDmy1NcoFAosX74cy5cvr3Ad2mAIEFG9YWdnp9PP8ZECB4aJiGSMIUBEJGMMASIiGWMIEBHJGEOAiEjGGAJERDLGECAikjHeJ0BE9QYnmq9+DAEiqhdSUlKgUqmQnV17E80rlUokJGg30XxUVBQ+++wzXLhwAWlpadi7d2+5z/mJjIzE7NmzERcXh5YtW2LRokWYOHGixjphYWH47LPPcOfOHbi5uSE0NBRdunSpxF5pYggQUb2Qnp6O7Oxs7NixAyqVqsa3l5CQgLFjxyI9PV2rEMjKyoKbmxveffddjBgxotz1b9y4gcGDB8Pf3x87d+7E0aNHMXnyZNja2sLHxwcA8O2332L27Nn497//ja5duyIkJAQ+Pj5ITEyElZVVpfcRYAgQUT2jUqng4VE3J5oHAF9fX/j6+lZ4/X//+99wdHTEmjVrADzfv5MnT2LdunXqEFi7di38/PzwzjvvqF9z4MABfPPNN1iwYEGV6uXAMBGRhMqbZ/jp06e4cOGCxjp6enro169ftcwzzBAgIpJQafMMP378GDk5OUhPT0dBQUGNzTPMECAikjGOCRARSai0eYbNzMxgYmICfX196Ovr19g8w1ofCaSlpWHHjh04ePAgnj59qtGWlZVVYxMfEBHpovLmGTY0NISnp6fGOoWFhTh69Gi1zDOsVQicO3cOLi4ueP/99/HPf/4T7du3R1xcnLo9MzMTQUFBVS6KiKi+yszMRGxsLGJjYwE8vwQ0NjYWKSkpAJ7PQzx+/Hj1+v7+/rh+/TrmzZuHK1euYOPGjfjuu+8wa9Ys9TqzZ8/G5s2bER4ejoSEBEybNg1ZWVnqq4WqQqvTQQsXLsTw4cPx1VdfISsrC/Pnz4e3tzeOHDmCTp06VbkYIqLyJCTUzkTzld3O+fPn0adPH/X3s2fPBgBMmDABW7duRVpamjoQAMDR0REHDhzArFmzsH79erzyyiv46quv1JeHAsC//vUv3L9/H0uWLMGdO3fg7u6OQ4cOFRssrgytQuDChQsICwuDnp4eTE1NsXHjRtjZ2aFv376IiIjQ+duriUg6lpaWUCqVGDu29iaaVyq1m2geAHr37g0hRKntW7duLfE1Fy9eLLPf6dOnY/r06VrVUhFaDwzn5uZqfL9gwQI0aNAAAwYMwDfffFNthRERvcjOzg4JCXV7ovn6SKsQ6NChA06fPo2OHTtqLJ8zZw4KCwsxevToai2OiOhFnGi++mk1MDx+/HicOnWqxLZ58+YhKCiIbxARUT2iVQhMnjwZ27dvL7V9/vz5uHHjRpWLiouLw5tvvgkHBwcoFAqEhIRUuU8iIiquTt4xnJ2djVatWmHlypXVcjMEERGVTKsxgT59+kChUJS5jkKhKHbjQ2l++OEHBAUFISkpCUqlEp06dcL+/fvRuXNndO7cGQCq/IQ8IiIqnVYh4O7uXmrbkydPsGvXLuTl5VWor7S0NIwePRqrV6/G8OHD8eTJE5w4caLMS6vKkpeXp7Htx48fV6ofIiI50SoE1q1bV2xZfn4+wsLC8Mknn6BFixZYsWJFhfpKS0tDfn4+RowYAXt7ewCAq6urNuVoCA4O5t3KRERaqtKYwM6dO+Hs7IxVq1Zh2bJlSEhIwKhRoyr0Wjc3N/Tt2xeurq4YOXIkNm/ejIyMjErXEhgYiEePHqm/bt++Xem+iIjkolJPET106BAWLFiAGzduYM6cOZg9ezYaNmyoVR/6+vo4cuQITp8+jcOHDyM0NBQfffQRoqOj4ejoqHVNRkZGMDIy0vp1RFR/cKL56qdVCJw9exbz58/HmTNn4O/vj19//VXrW6pfpFAo0KNHD/To0QNLliyBvb099u7dq37WBhFRkZSUFKicnZH90lMLapLS2BgJiYlaB0FNTQpfE7QKgW7dusHExAT+/v5wdHTErl27SlwvICCg3L6io6Nx9OhRDBgwAFZWVoiOjsb9+/ehUqnw9OlTxMfHA3g+tdrff/+N2NhYNGrUCG3atNGmZCLSEenp6cjOzcUOADU/zTyQAGBsbq7WE83X5KTwNUGrELCzs4NCocC+fftKXUehUFQoBMzMzBAVFYWQkBA8fvwY9vb2WLNmDXx9fXHz5k2Np5J+/vnn+Pzzz+Ht7Y3IyEhtSiYiHaMCUHenma/ZSeFrglYhcPPmzWrbsEqlwqFDh0psc3BwqPSlokREUimaFD4wMFC9rDonha8JWl0ddOzYMbi4uJR4Df6jR4/Qvn17nDhxotqKIyKqT2p6UviaoFUIhISEwM/PD2ZmZsXazM3NMXXqVKxdu7baiiMiopqlVQhcunQJAwcOLLV9wIABuHDhQpWLIiKqjywtLWt0UviaoFUI3L17FwYGBqW2N2jQAPfv369yUURE9VFNTwpfE7QaGG7RogX+/PPPUi/TvHz5MmxtbaulMCKiktTODMOV387s2bMxYcIEvPrqq+jSpQtCQkKqbVL4mqBVCAwaNAiLFy/GwIEDYWxsrNGWk5ODpUuXYsiQIdVaIBER8L85ho2NMbaWbxbT9obYmpwUviZoFQKLFi3Cnj170LZtW0yfPh3Ozs4AgCtXriAsLAwFBQX46KOPaqRQIpI3Ozs7JCQm1ovHRtTUpPA1QasQsLa2xunTpzFt2jQEBgaqr+VXKBTw8fFBWFhYnU07Iqr/OMdw9dP6AXL29vY4ePAgMjIykJSUBCEEnJycYGFhURP1ERFRDarUU0QBwMLCQj37FxER1U91co5hIiKqHQwBIiIZYwgQEckYQ4CISMYYAkREMsYQICKSsUpfIkpEVNs40Xz1YwgQUb2QkpKCdu3aIScnp9a2aWJigitXrmgVBBMnTkR4eDiCg4M1ppPct28fhg8fXuFZE6urn/IwBIioXkhPT0dOTg5GjBih9UPdKru9PXv2aD3RPAAYGxtj1apVmDp1apWeplBd/ZSFIUBE9YqlpSWaN28udRll6tevH5KSkhAcHIzVq1cXa3/w4AGmT5+OqKgoZGRkoHXr1li4cCFGjx6tVT/VgQPDRETVTF9fH59++ilCQ0Px119/FWvPzc2Fp6cnDhw4gD///BNTpkzBuHHjcPbsWa36qQ4MASKiGjB8+HC4u7tj6dKlxdpatGiBOXPmwN3dHa1atcIHH3yAgQMH4rvvvtOqn+rAECAiqiGrVq1CeHg4EhI05ykrKCjAihUr4OrqiiZNmqBRo0aIiIhASkqKVv1UB4YAEVEN6dWrF3x8fBAYGKix/LPPPsP69esxf/58HD9+HLGxsfDx8cHTp0+16qc6cGCYiKgGrVy5Eu7u7uqZGAHg1KlTGDp0KMaOHQvg+WT0V69ehYuLi1b9VAeGABHVK7V1s1h1bcfV1RVjxozBhg0b1MucnJzwww8/4PTp07CwsMDatWtx9+7dMkOgpH6qA0OAiOoFS0tLmJiYYM+ePbW2TRMTk2q5J2H58uX49ttv1d8vWrQI169fh4+PD5RKJaZMmYJhw4bh0aNHWvVTHRgCRFQv2NnZ4cqVK3X+sRFbt24ttszBwQF5eXnq75s0aYJ9+/ZVuZ/qwBAgonqDE81XP14dREQkYwwBIiIZYwgQEckYQ4CI6qzqelyy3Gjzc2MIEFGdY2BgAADIzs6WuJL6qejOY319/XLX5dVBRFTn6Ovro3Hjxrh37x4AQKlUQqFQSFxV/VBYWIj79+9DqVSiQYPyf8UzBIioTrKxsQEAdRBQxenp6cHOzq5CwckQIKI6SaFQwNbWFlZWVnj27JnU5dQrhoaG0NOr2Nl+hgAR1Wn6+voVOrdNlcOBYSIiGWMIEBHJGEOAiEjGGAJERDLGECAikjGGABGRjOnsJaJFz84oawKGx48f11Y59VZubq7UJZCOKvps8vlA0lIIHX0Hrl+/jtatW0tdBhGVIzk5Ga1atZK6DNnS2SOBJk2aAABSUlJgbm4ucTVE9LJHjx7Bzs5O/VklaehsCBTdMm1ubg4zMzOJqyGi0lT08QZUM/jTJyKSMYYAEZGM6WwIGBkZYenSpTAyMpK6FCIqAT+jdYPOXh1ERETl09kjASIiKh9DgIhIxhgCREQyxhAgIpIxhgARkYwxBIiIZEznHhuRmJiI0NBQJCQkAABUKhU++OADODs7S1wZEQFARkYGvv76a43P6LvvvstnCElEp44EfvzxR3To0AEXLlyAm5sb3NzcEBMTgw4dOuDHH3+Uujwi2YuKioKjoyM2bNiAjIwMZGRkIDQ0FI6OjoiKipK6PFnSqZvFWrdujTFjxmD58uUay5cuXYodO3YgOTlZosqICABcXV3h5eWFL7/8Evr6+gCAgoICvPfeezh9+jT++OMPiSuUH50KAaVSicuXL6NNmzYay69duwY3NzdkZ2dLVBkRAYCJiQliY2OLnZ5NTEyEu7s7cnJyJKpMvnTqdFDv3r1x4sSJYstPnjyJf/zjHxJUREQv8vDwUI8FvCghIQFubm4SVET1fmD4//7v/9T/fuONNzB//nxcuHAB3bp1AwCcOXMG33//PYKCgqQqkUjWLl++rP53QEAAZsyYgaSkJI3PaFhYGFauXClVibJW708HVXRCCoVCgYKCghquhohepqenB4VCUe5cwvyMSqPeHwkUFhZKXQIRleHGjRtSl0BlqPdHAkREVHn1/kjgZefOncPx48dx7969YkcJa9eulagqIiqSmpqKkydPlvgZDQgIkKgq+dKpI4FPP/0UixYtgrOzM6ytraFQKNRtCoUCx44dk7A6Itq6dSumTp0KQ0NDNG3atNhn9Pr16xJWJ086FQLW1tZYtWoVJk6cKHUpRFSCli1bwt/fH4GBgRW+qINqlk69C3p6eujRo4fUZRBRKbKzszFq1CgGQB2iU+/ErFmzEBYWJnUZRFSKSZMm4fvvv5e6DHqBTp0OKiwsxODBg3H16lW4uLjAwMBAo33Pnj0SVUZEwPPnBA0ZMgQ5OTlwdXUt9hnlxRu1T6euDgoICMDx48fRp0+fYoNORCS94OBgREREqJ8d9PLAMNU+nToSMDU1xe7duzF48GCpSyGiElhYWGDdunW8eKMO0akxgSZNmqB169ZSl0FEpTAyMuLFG3WMToXAsmXLsHTpUj4ymqiOmjFjBkJDQ6Uug16gU6eDOnXqhOTkZAgh4ODgUGzQKSYmRqLKiAgAhg8fjmPHjqFp06Zo3749L96oA3RqYHjYsGFSl0BEZWjcuDFGjBghdRn0Ap06EiAiIu3o1JFAfn4+4uLicOfOHQCAjY1NifcLEBHRczoxMFxYWIhFixahWbNm6NSpE3x9feHr64tOnTrBysoKixcv5rwDRBIyNTXFpEmTcPr0aalLoZfoRAgsWLAAmzZtwsqVK3H9+nVkZWUhKysL169fx6pVq7Bp0yYEBgZKXSaRbGVlZSE6Oho9e/aESqXCmjVrcP/+fanLIujImICNjQ3Cw8Ph4+NTYntERATGjx+Pu3fv1nJlRAQ8f7jjnTt3kJaWhq+++gq7du1CZmYmhgwZgsmTJ2PgwIG8Y1giOnEk8OTJEzRv3rzUdltbW2RlZdViRURUEjc3N4SGhiI1NRVbt27Fo0ePMGTIENjZ2WHJkiVSlydLOnEkMHjwYOTn52Pnzp2wtLTUaEtPT8e4ceOgr6+Pn3/+WaIKieRNX18faWlpsLKyKtZ28+ZNfP311wgPD0dKSooE1cmbToTA7du3MWjQIFy5cgWurq6wtrYGANy9exd//PEHXFxc8PPPP6Nly5YSV0okT0Wng0oKgSJCCJ4SkoBOhADw/AqhiIgInDlzRuMSUS8vLwwYMICTWBBJKCgoCHPnzoVSqZS6FHqJzoQAERFpT6duFivy8OFDfP/990hJSYG9vT1GjhwJc3NzqcsiolLk5+cjNTUVdnZ2UpciOzpxJDBixAi8/fbb+Oc//4m4uDj07t0bCoUCrVq1ws2bN6FQKHDs2DGoVCqpSyWiEly6dAkeHh4oKCiQuhTZ0YkT5ZGRkejQoQMAYO7cuRgwYAD++usvnDlzBrdv38bgwYMxc+ZMaYskIqqDdOJ0UG5urvr5QLGxsThw4AAMDQ0BAAYGBpg3bx66dOkiZYlEsubh4VFme05OTi1VQi/TiRDo2LEjjh07htatW8PGxga3bt1Cp06d1O23bt2CiYmJhBUSyVt8fDxGjRoFR0fHEtvT0tJw9erVWq6KAB0JgcWLF2P8+PEwMDBAQEAAZs2ahQcPHkClUiExMRFLly7FuHHjpC6TSLY6dOiArl27Ytq0aSW2x8bGYvPmzbVcFQE6EgKDBw/Gpk2bMHPmTKSmpkIIAT8/PwDP5zT19/dHcHCwxFUSyVePHj2QmJhYarupqSl69epVixVREZ24OqhIQUEBYmJicP36dRQWFsLW1haenp4wNTWVujQiojpJp0KAiIi0oxOng/Ly8qCnp6e+Qig5ORnffPON+maxSZMmlTogRUQ178cff4Svry8fG1EH6cR9Aj4+Pti/fz8A4NSpU2jfvj1+/vlnPHv2DAcPHkSHDh3w+++/S1wlkXyNHDkStra2mDJlCqKjo6Uuh16gE6eDzM3Ncf78eTg5OaF3797w8PDA2rVr1e2LFy/G8ePHcfLkSQmrJJIvPT09BAUFYe/evYiNjYWLiwsmT56McePGoWnTplKXJ2s6cSRQUFCgvt38ypUrmDBhgkb7xIkTcenSJSlKI6L/mTp1KmJiYnDu3Dn06tULQUFBaNGiBd566y0cOXJE6vJkSydCoGvXrvjpp58AAK1bty72Cz82NhZNmjSRojQieomnpyc2btyItLQ0bN68Gffv38fAgQM5bicRnRgY/vjjj+Hr64usrCyMHj0aH374Ia5du6a+WWzDhg2caJ5IQiVNFmNsbIxx48Zh3LhxSEpKwpYtWySojHRiTAAAfv/9d8yePbvYoFPz5s0xd+5czJgxQ6LKiKgiM4uRNHQmBIrcv39f42YxBwcHqUsikr1bt27Bzs6O00fWQToXAkREVHE6MTAMPH8U7cmTJxEfH1+sLTc3F9u2bZOgKiIqws9o3aQTRwJXr17FgAEDkJKSAoVCgZ49e2L37t2wtbUFANy9exfNmzfnrEVEEuFntO7SiSOB+fPno0OHDrh37x4SExNhamqKHj16ICUlRerSiAj8jNZlOnEkYG1tjV9//RWurq4AACEE3nvvPRw8eBDHjx9Hw4YN+VcGkYT4Ga27dOJIICcnBw0a/P9bHhQKBb788ku8/vrr8Pb25oxFRBLjZ7Tu0ombxdq1a4fz589DpVJpLP/iiy8AAG+88YYUZRHR//AzWnfpxJHA8OHD8d///rfEti+++AKjR4+GDpz1Iqq3+Bmtu3RiTICIiCpHJ44EiIiochgCREQyxhAgIpIxhgARkYwxBGpZZGQkFAoFHj58WOZ6Dg4OCAkJqZWaakNF91tbEydOxLBhw9Tf9+7dGzNnzqzWbRDpMp24T6A+6d69O9LS0mBubg4A2Lp1K2bOnFnsl+O5c+fQsGFDCSqsut69e8Pd3V2SENuzZw8MDAxqfbtE9RVDoJYZGhrCxsam3PWaNWtWC9XonroyjeizZ88YRlQv8HTQS3r37o3p06dj+vTpMDc3h6WlJRYvXqxxI0tGRgbGjx8PCwsLKJVK+Pr64tq1a+r2W7du4fXXX4eFhQUaNmyI9u3b4+DBgwA0T4tERkbinXfewaNHj6BQKKBQKLBs2TIAxU8HpaSkYOjQoWjUqBHMzMzw1ltv4e7du+r2ZcuWwd3dHdu3b4eDgwPMzc0xatQoPHnypMz9/fHHH9G+fXsYGRnBwcEBa9as0Wh3cHDAp59+infffRempqaws7PDpk2bSu1v4sSJ+O2337B+/Xr1Pt28eVPdfuHCBbz66qtQKpXo3r07EhMTNV6/f/9+eHh4wNjYGK1atUJQUBDy8/PL3IcXvXw6qCL13759G2+99RYaN26MJk2aYOjQoRo1nzt3Dv3794elpSXMzc3h7e2NmJgYjT6KHoPwxhtvoGHDhvjkk09KrC8tLQ2DBw+GiYkJHB0dsWvXrmLv9cOHDzF58mQ0a9YMZmZmeO211zTmza7Ie52Xl4eAgABYWVnB2NgYPXv2xLlz59TtRf8PIyIi0KlTJ5iYmOC1117DvXv38Msvv0ClUsHMzAxvv/02srOz1a8rLCxEcHAwHB0dYWJiAjc3N/zwww8Vem+ojhKkwdvbWzRq1EjMmDFDXLlyRezYsUMolUqxadMm9TpvvPGGUKlUIioqSsTGxgofHx/Rpk0b8fTpUyGEEIMHDxb9+/cXly9fFsnJyeKnn34Sv/32mxBCiOPHjwsAIiMjQ+Tl5YmQkBBhZmYm0tLSRFpamnjy5IkQQgh7e3uxbt06IYQQBQUFwt3dXfTs2VOcP39enDlzRnh6egpvb291TUuXLhWNGjUSI0aMEH/88YeIiooSNjY2YuHChaXu6/nz54Wenp5Yvny5SExMFFu2bBEmJiZiy5Yt6nXs7e1FkyZNRFhYmLh27ZoIDg4Wenp64sqVKyX2+fDhQ+Hl5SX8/PzU+5Sfn6/e765du4rIyEgRFxcn/vGPf4ju3burXxsVFSXMzMzE1q1bRXJysjh8+LBwcHAQy5YtK3UfJkyYIIYOHarx/s2YMaPC9T99+lSoVCrx7rvvisuXL4v4+Hjx9ttvC2dnZ5GXlyeEEOLo0aNi+/btIiEhQcTHx4tJkyYJa2tr8fjxY/V2AAgrKyvxzTffiOTkZHHr1q0S6+3Xr59wd3cXZ86cERcuXBDe3t7CxMRE/V4XrfP666+Lc+fOiatXr4oPP/xQNG3aVDx48EAIUbH3OiAgQDRv3lwcPHhQxMXFiQkTJggLCwt1H0XvR7du3cTJkydFTEyMaNOmjfD29hYDBgwQMTExIioqSjRt2lSsXLlS3e/HH38s2rVrJw4dOiSSk5PFli1bhJGRkYiMjCz1PaK6jSHwEm9vb6FSqURhYaF62fz584VKpRJCCHH16lUBQJw6dUrdnp6eLkxMTMR3330nhBDC1dW11F9cL4aAEEJs2bJFmJubF1vvxRA4fPiw0NfXFykpKer2uLg4AUCcPXtWCPH8F4NSqdT4xTR37lzRtWvXUvf17bffFv3799dYNnfuXOHi4qJRx9ixY9XfFxYWCisrK/Hll1+W2u/Lv4hf3O9ff/1VvezAgQMCgMjJyRFCCNG3b1/x6aefarxu+/btwtbWttRtVSQEyqp/+/btwtnZWeP9zsvLEyYmJiIiIqLEbRYUFAhTU1Px008/qZcBEDNnziy1TiGESEhIEADEuXPn1MuuXbsmAKjf6xMnTggzMzORm5ur8drWrVuL//znP0KI8t/rzMxMYWBgIHbu3Kluf/r0qWjevLlYvXq1EKLk9yM4OFgAEMnJyeplU6dOFT4+PkIIIXJzc4VSqRSnT5/WqG3SpEli9OjRZe471V08HVSCbt26acyF6uXlhWvXrqGgoAAJCQlo0KABunbtqm5v2rQpnJ2dkZCQAAAICAjAxx9/jB49emDp0qW4fPlylepJSEhAy5Yt0bJlS/UyFxcXNG7cWL1N4PmpD1NTU/X3tra2uHfvXpn99ujRQ2NZjx491PtapGPHjup/KxQK2NjYlNlvWV7sq2hCkaK+Ll26hOXLl6NRo0bqLz8/P6SlpWmckqjKNl+u/9KlS0hKSoKpqal6m02aNEFubi6Sk5MBPJ/wxM/PD05OTjA3N4eZmRkyMzOLPQv/1VdfLbOOxMRENGjQAB4eHuplbdq0gYWFhfr7S5cuITMzE02bNtX4Ody4cUNdD1D2e52cnIxnz55pvLcGBgbo0qWLxv+Xl3821tbWUCqVaNWqlcayon6TkpKQnZ2N/v37a9S2bds2jdqofuHAcA2YPHkyfHx8cODAARw+fBjBwcFYs2YNPvjggxrd7ssDkQqFAoWFhXWq3xf7Kgraor4yMzMRFBSEESNGFHudsbFxpbb38jaLtvviNj09PbFz585irysanJ8wYQIePHiA9evXw97eHkZGRvDy8sLTp0811q+Oq7kyMzNha2uLyMjIYm2NGzdW/7u63pOX34/yflYAcODAAbRo0UJjPSMjI623TXUDQ6AE0dHRGt+fOXMGTk5O0NfXh0qlQn5+PqKjo9G9e3cAwIMHD5CYmAgXFxf1a1q2bAl/f3/4+/sjMDAQmzdvLjEEDA0Ny51IQ6VS4fbt27h9+7b6aCA+Ph4PHz7U2Ka2VCoVTp06pbHs1KlTaNu2LfT19Svdb0X2qSQeHh5ITExEmzZtKr3tymzz22+/hZWVFczMzEpc59SpU9i4cSMGDRoE4PlAcnp6utbbcnZ2Rn5+Pi5evAhPT08Az/+6zsjI0Kjnzp07aNCgARwcHLTfIQCtW7eGoaEhTp06BXt7ewDPr1Y6d+5cle6hcHFxgZGREVJSUuDt7V3pfqhu4emgEqSkpGD27NlITEzEf//7X4SGhmLGjBkAACcnJwwdOhR+fn44efIkLl26hLFjx6JFixYYOnQoAGDmzJmIiIjAjRs3EBMTg+PHjxd7jnoRBwcHZGZm4ujRo0hPTy/xtEe/fv3g6uqKMWPGICYmBmfPnsX48ePh7e1d7imIsnz44Yc4evQoVqxYgatXryI8PBxffPEF5syZU+k+gef7FB0djZs3byI9Pb3Cf6EuWbIE27ZtQ1BQEOLi4pCQkIDdu3dj0aJFVaqnLGPGjIGlpSWGDh2KEydO4MaNG4iMjERAQAD++usvAM/f8+3btyMhIQHR0dEYM2YMTExMtN5Wu3bt0K9fP0yZMgVnz57FxYsXMWXKFJiYmKiPivr16wcvLy8MGzYMhw8fxs2bN3H69Gl89NFHOH/+fIW207BhQ0ybNg1z587FoUOHEB8fDz8/P2RnZ2PSpEla113E1NQUc+bMwaxZsxAeHo7k5GTExMQgNDQU4eHhle6XpMUQKMH48eORk5ODLl264P3338eMGTMwZcoUdfuWLVvg6emJIUOGwMvLC0IIHDx4UH0oXVBQgPfffx8qlQoDBw5E27ZtsXHjxhK31b17d/j7++Nf//oXmjVrhtWrVxdbR6FQYP/+/bCwsECvXr3Qr18/tGrVCt9++22V9tPDwwPfffcddu/ejQ4dOmDJkiVYvnw5Jk6cWKV+58yZA319fbi4uKBZs2YVnkfWx8cHP//8Mw4fPozOnTujW7duWLdunfqv2ZqgVCoRFRUFOzs7jBgxAiqVCpMmTUJubq76yODrr79GRkYGPDw8MG7cOPWll5Wxbds2WFtbo1evXhg+fDj8/PxgamqqPt2lUChw8OBB9OrVC++88w7atm2LUaNG4datW7C2tq7wdlauXIk333wT48aNg4eHB5KSkhAREaEx/lAZK1aswOLFixEcHKz+/33gwAE4OjpWqV+SDucTeImUd7uS/Pz1119o2bIlfv31V/Tt21fqckiGOCZAVIuOHTuGzMxMuLq6Ii0tDfPmzYODgwN69eoldWkkUwwBolr07NkzLFy4ENevX4epqSm6d++OnTt38hETJBmeDiIikjEODBMRyRhDgIhIxhgCREQyxhAgIpIxhgARkYwxBIiIZIwhQEQkYwwBIiIZ+3+jum5X9hvGQAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_heatmap(cns.cns_head(raw_cns_df, 1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Coverage and filling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we will analyze missing segments and fill them with the average value of the surrounding segments.\n", "\n", "Since we are only focusing on chr19, we create a mask for chr19 only." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'chr19': [(0, 59128983, 'chr19')]}\n" ] } ], "source": [ "chr19_seg = cns.make_segments(\"chr19\")\n", "print(chr19_seg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we calculate the proportion of missing segments:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", "
sexchrom_countchrom_missingcover_any_autcover_any_sexcover_any_allcover_both_autcover_both_sexcover_both_all
sample_id
s1xx1[]0.92171400.9217140.27059500.270595
s2xx1[]0.87943300.8794330.00000000.000000
\n", "
" ], "text/plain": [ " sex chrom_count chrom_missing cover_any_aut cover_any_sex \\\n", "sample_id \n", "s1 xx 1 [] 0.921714 0 \n", "s2 xx 1 [] 0.879433 0 \n", "\n", " cover_any_all cover_both_aut cover_both_sex cover_both_all \n", "sample_id \n", "s1 0.921714 0.270595 0 0.270595 \n", "s2 0.879433 0.000000 0 0.000000 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cover_df = cns.main_coverage(raw_cns_df, segs=chr19_seg)\n", "cover_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we fill the missing segments with NaN values:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sample_idchromstartendCN1CN2name
0s1chr1901000000NaNNaNchr19
1s1chr19100000030000001.0NaNchr19
2s1chr193000000120000001.01.0chr19
3s1chr191200000014000000NaN1.0chr19
4s1chr1914000000210000003.01.0chr19
\n", "
" ], "text/plain": [ " sample_id chrom start end CN1 CN2 name\n", "0 s1 chr19 0 1000000 NaN NaN chr19\n", "1 s1 chr19 1000000 3000000 1.0 NaN chr19\n", "2 s1 chr19 3000000 12000000 1.0 1.0 chr19\n", "3 s1 chr19 12000000 14000000 NaN 1.0 chr19\n", "4 s1 chr19 14000000 21000000 3.0 1.0 chr19" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chr19_seg[\"chr19\"] = cns.genome_to_segments()[\"chr19\"]\n", "align_cns_df = cns.main_align(raw_cns_df, segs=chr19_seg)\n", "align_cns_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When plotting we can see that the data are now extended to the boundaries of chromosome 19" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_heatmap(align_cns_df, cn_columns=['CN1', 'CN2']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imputation and aneuploidy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we fill values into the missing segments. \n", "\n", "Leading and trailing NaN values are filled with the first and last non-NaN value, respectively. \n", "\n", "The remaining NaN values are filled with the mean of the non-NaN values." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "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", "
sample_idchromstartendCN1CN2
0s1chr190130000001.01.0
1s1chr1913000000591289833.01.0
2s2chr190265000002.00.0
3s2chr1926500000591289830.00.0
\n", "
" ], "text/plain": [ " sample_id chrom start end CN1 CN2\n", "0 s1 chr19 0 13000000 1.0 1.0\n", "1 s1 chr19 13000000 59128983 3.0 1.0\n", "2 s2 chr19 0 26500000 2.0 0.0\n", "3 s2 chr19 26500000 59128983 0.0 0.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "imp_cns_df = cns.main_infer(align_cns_df)\n", "imp_cns_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the number of segments decreased considerably, to only 2 actual breakpoints, which we can see on the imputed plot." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_heatmap(imp_cns_df, cn_columns=['CN1', 'CN2']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We expect that the imputed data are more representative of the actual genome, therefore we preferably analyze the imputed data further." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "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", "
sexloh_both_autloh_any_autane_any_autane_both_autimb_CN1_autimb_CN2_autploidy_CN1ploidy_CN2
sample_id
s1xx0.0000000.0000000.0160110.0000000.0160110.02.5602831.0
s2xx0.0113250.0205240.0205240.0205240.0091980.00.8963460.0
\n", "
" ], "text/plain": [ " sex loh_both_aut loh_any_aut ane_any_aut ane_both_aut \\\n", "sample_id \n", "s1 xx 0.000000 0.000000 0.016011 0.000000 \n", "s2 xx 0.011325 0.020524 0.020524 0.020524 \n", "\n", " imb_CN1_aut imb_CN2_aut ploidy_CN1 ploidy_CN2 \n", "sample_id \n", "s1 0.016011 0.0 2.560283 1.0 \n", "s2 0.009198 0.0 0.896346 0.0 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ploidy_df = cns.main_ploidy(imp_cns_df)\n", "ploidy_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, we can calculate information about breakpoints. \n", "Note that the \"total_cn\" column is added to the data for the calculation:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "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", "
sexbreaks_CN1_autstep_CN1_autbreaks_CN2_autstep_CN2_autbreaks_total_cn_autstep_total_cn_aut
sample_id
s1xx12.00012.0
s2xx12.00012.0
\n", "
" ], "text/plain": [ " sex breaks_CN1_aut step_CN1_aut breaks_CN2_aut step_CN2_aut \\\n", "sample_id \n", "s1 xx 1 2.0 0 0 \n", "s2 xx 1 2.0 0 0 \n", "\n", " breaks_total_cn_aut step_total_cn_aut \n", "sample_id \n", "s1 1 2.0 \n", "s2 1 2.0 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "breakage_df = cns.main_breakage(imp_cns_df)\n", "breakage_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Segment and aggregate\n", "\n", "First we create a consistent segmentation of the data. Since there are two breakpoints, we will have three segments." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'chr19': [(0, 13000000, 'chr19_0'),\n", " (13000000, 26500000, 'chr19_1'),\n", " (26500000, 59128983, 'chr19_2')]}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mcs_segs = cns.cns_df_to_segments(imp_cns_df, process=\"unify\")\n", "mcs_segs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the segmentation, we can aggregate the values of the segments." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sample_idchromstartendCN1CN2name
0s1chr190130000001.01.0chr19_0
1s1chr1913000000265000003.01.0chr19_1
2s1chr1926500000591289833.01.0chr19_2
3s2chr190130000002.00.0chr19_0
4s2chr1913000000265000002.00.0chr19_1
5s2chr1926500000591289830.00.0chr19_2
\n", "
" ], "text/plain": [ " sample_id chrom start end CN1 CN2 name\n", "0 s1 chr19 0 13000000 1.0 1.0 chr19_0\n", "1 s1 chr19 13000000 26500000 3.0 1.0 chr19_1\n", "2 s1 chr19 26500000 59128983 3.0 1.0 chr19_2\n", "3 s2 chr19 0 13000000 2.0 0.0 chr19_0\n", "4 s2 chr19 13000000 26500000 2.0 0.0 chr19_1\n", "5 s2 chr19 26500000 59128983 0.0 0.0 chr19_2" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mcs_agg_df = cns.main_aggregate(imp_cns_df, mcs_segs)\n", "mcs_agg_df\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then use fig_bars as it shows the exact segmentation points." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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yCPG+q5du+rBBx/Ub37zG8XGxiolJUXz58+v9/5uuOEGrV69Wn/+8599z2nXrl2+9Zs3b9bAgQPlcDg0ZMgQ7dixw9j/jTfeUP/+/RUdHa0zzzxTubm5qq6uPulz+KEfv5TUkPn37NmjX/ziF2rXrp3i4+N11VVXGTNv3LhRl1xyiTp06CCXy6Xhw4dry5Ytxn3YbDY98cQTuvLKK9WmTRs98MADdc5XXFysyy+/XDExMerWrZsWLVp0wtf64MGDuummm9SxY0c5nU5ddNFF2rp1q299Q77WXq9Xt912mxISEhQdHa0LLrhAGzdu9K0//u/w7bffVr9+/RQTE6OLLrpIe/fu1T//+U+lpaXJ6XTqV7/6lSorK3371dbWKi8vT926dVNMTIz69u2rv//97w362oQlCy3C8OHDrbZt21pTpkyxvvzyS+uFF16wHA6HNX/+fN82V155pZWWlmatWbPGKigosEaOHGl1797dqqqqsizLsi6//HLrkksusT799FOrqKjIevPNN63Vq1dblmVZK1eutCRZ5eXlltfrtebNm2c5nU6ruLjYKi4utg4dOmRZlmWlpqZajz76qGVZllVTU2NlZGRYF1xwgbVp0ybr448/tgYMGGANHz7cN9OMGTOstm3bWtdcc4312WefWWvWrLGSkpKsu+++u97numnTJisiIsK6//77rR07dljPPvusFRMTYz377LO+bVJTU634+HgrPz/f+vrrr628vDwrIiLC+vLLL+u8z4MHD1qZmZnWxIkTfc+purra97wHDx5srVq1ytq2bZv1//7f/7OGDBni23fNmjWW0+m0FixYYBUVFVnvvPOO1bVrV2vmzJn1Pofx48dbV111lfH1mzJlSoPnr6qqstLS0qzf/OY31qeffmp98cUX1q9+9SurR48eltfrtSzLslasWGEtXLjQ2r59u/XFF19YN954o5WYmGh5PB7f40iyEhISrGeeecYqKiqyvvnmmzrnzcrKsjIyMqyPP/7Y2rx5szV8+HArJibG97U+vs0VV1xhbdy40frqq6+sadOmWe3bt7f2799vWVbDvta33Xab1alTJ2vZsmXWtm3brPHjx1txcXG++zj+9Tj//POttWvXWlu2bLG6d+9uDR8+3Lr00kutLVu2WGvWrLHat29v/elPf/Ld7x//+EerZ8+e1vLly62ioiLr2Weftex2u7Vq1ap6v0bhjDC0EMOHD7fS0tKs2tpa37I777zTSktLsyzLsr766itLkvXhhx/61u/bt8+KiYmxXnnlFcuyLKt37971fjP7YRgsy7KeffZZy+VynbDdD8PwzjvvWJGRkdbu3bt967dt22ZJsjZs2GBZ1vffLBwOh/HN6o477rAGDx5c73P91a9+ZV1yySXGsjvuuMNKT0835rj++ut9t2tra62EhATriSeeqPd+f/zN+YfP+7333vMtW7p0qSXJOnLkiGVZlnXxxRdbDz74oLHfwoULreTk5HofqyFhONn8CxcutHr06GF8vb1erxUTE2O9/fbbdT5mTU2NFRsba7355pu+ZZKsqVOn1junZVnW9u3bLUnWxo0bfcu+/vprS5Lva/3BBx9YTqfTOnr0qLHvWWedZT311FOWZf3017qiosJq3bq19eKLL/rWV1VVWZ06dbJmz55tWVbdX4+8vDxLklVUVORb9tvf/tYaOXKkZVmWdfToUcvhcFgfffSRMduNN95o/fKXvzzpcw9XvJTUgpx//vmy2Wy+25mZmfr6669VU1Oj7du3q1WrVho8eLBvffv27dWjRw9t375dknTbbbfpj3/8o4YOHaoZM2bo008/Pa15tm/fri5duqhLly6+Zenp6WrXrp3vMaXvXzaJjY313U5OTtbevXtPer9Dhw41lg0dOtT3XI/r06eP779tNpuSkpJOer8n88P7Sk5OliTffW3dulX333+/2rZt6/uYOHGiiouLjZczTucxfzz/1q1bVVhYqNjYWN9jxsfH6+jRoyoqKpIklZaWauLEiTr77LPlcrnkdDpVUVGh3bt3G48zcODAk86xY8cOtWrVSv379/ct6969u+Li4ny3t27dqoqKCrVv3974POzcudM3j3Tyr3VRUZGOHTtmfG1bt26t8847z/j38uPPTWJiohwOh84880xj2fH7LSwsVGVlpS655BJjtueff96YrSXh5DMa7KabbtLIkSO1dOlSvfPOO8rLy9Mjjzyi3//+93593B+f7LTZbKqtrW1W9/vD+zoe3+P3VVFRodzcXF1zzTUn7BcdHX1Kj/fjxzz+uD98zAEDBujFF188Yb/jFwCMHz9e+/fv15///GelpqbKbrcrMzNTVVVVxvZNcRVZRUWFkpOTtWrVqhPWtWvXzvffTfU1+fHX46c+V5K0dOlSde7c2djObrc3+rHDAWFoQdavX2/c/vjjj3X22WcrMjJSaWlpqq6u1vr16zVkyBBJ0v79+7Vjxw6lp6f79unSpYtuueUW3XLLLcrJydHf/va3OsMQFRVl/HRel7S0NO3Zs0d79uzxHTV88cUXOnjwoPGYjZWWlqYPP/zQWPbhhx/qnHPOUWRk5Cnfb0OeU1369++vHTt2qHv37qf82KfymC+//LISEhLkdDrr3ObDDz/U448/rssuu0zS9yer9+3b1+jH6tGjh6qrq/XJJ59owIABkr7/Kby8vNyYp6SkRK1atVLXrl0b/4QknXXWWYqKitKHH36o1NRUSd9fJbVx48bTeo9Henq67Ha7du/ereHDh5/y/YQTXkpqQXbv3q3s7Gzt2LFD//M//6O//OUvmjJliiTp7LPP1lVXXaWJEydq7dq12rp1q66//np17txZV111lSRp6tSpevvtt7Vz505t2bJFK1euVFpaWp2P1bVrV1VUVGjFihXat29fnS+ZZGVlqXfv3rruuuu0ZcsWbdiwQePGjdPw4cN/8uWLk5k2bZpWrFihWbNm6auvvtJzzz2nv/71r7r99ttP+T6l75/T+vXrtWvXLu3bt6/BP8lOnz5dzz//vHJzc7Vt2zZt375dL730ku69997TmudkrrvuOnXo0EFXXXWVPvjgA+3cuVOrVq3Sbbfdpn//+9+Svv+aL1y4UNu3b9f69et13XXXKSYmptGP1bNnT2VlZenmm2/Whg0b9Mknn+jmm29WTEyM7+gpKytLmZmZGjNmjN555x3t2rVLH330ke655x5t2rSpQY/Tpk0b3Xrrrbrjjju0fPlyffHFF5o4caIqKyt14403Nnru42JjY3X77bfrv/7rv/Tcc8+pqKhIW7Zs0V/+8hc999xzp3y/oYwwtCDjxo3TkSNHdN5552nSpEmaMmWKbr75Zt/6Z599VgMGDNDPfvYzZWZmyrIsLVu2zHcYXlNTo0mTJiktLU2jRo3SOeeco8cff7zOxxoyZIhuueUWjR07Vh07dtTs2bNP2MZms+mNN95QXFychg0bpqysLJ155pl6+eWXT+t59u/fX6+88opeeuklnXvuuZo+fbruv/9+3XDDDad1v7fffrsiIyOVnp6ujh07nvBafH1Gjhypt956S++8844GDRqk888/X48++qjvp15/cDgcWrNmjVJSUnTNNdcoLS1NN954o44ePeo7gvjv//5vlZeXq3///vr1r3/tuwz0VDz//PNKTEzUsGHDdPXVV2vixImKjY31vVRms9m0bNkyDRs2TBMmTNA555yja6+9Vt98840SExMb/Dh/+tOf9POf/1y//vWv1b9/fxUWFurtt982zmecilmzZum+++5TXl6e79/30qVL1a1bt9O631Bls6wfXMiOsBXMd+2i5fn3v/+tLl266L333tPFF18c7HHQSJxjAHDa3n//fVVUVKh3794qLi7WH/7wB3Xt2lXDhg0L9mg4BYQBwGk7duyY7r77bv3rX/9SbGyshgwZohdffJFfnxGieCkJAGDg5DMAwEAYAAAGwgAAMBAGAICBMAAADIQBAGAgDAAAA2EAABgIAwDA8P8BOZJ+rysSa0wAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_bars(mcs_agg_df);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Splitting and filtering\n", "\n", "Here we further explore the segmentation by removing regions of low mappability (gaps) and splitting the segments into smaller ones.\n", "\n", "First we load the gap regions." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 10000, 'telomere'),\n", " (10000, 60000, 'contig'),\n", " (7346004, 7396004, 'contig'),\n", " (8687198, 8737198, 'contig'),\n", " (20523415, 20573415, 'clone'),\n", " (24631782, 24681782, 'heterochromatin'),\n", " (24681782, 27681782, 'centromere'),\n", " (27681782, 27731782, 'heterochromatin'),\n", " (59118983, 59128983, 'telomere')]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gap_segs = cns.make_segments(\"gaps\")\n", "gap_segs[\"chr19\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then conduct the segmentation with the following:\n", "\n", "* 10 kb filtering will ignore gaps below this size\n", "* applying the gaps will remove the regions that overlap with the gaps\n", "* the remainder is split into segments of 3 mb" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 3250000, 'chr19_0_0'),\n", " (3250000, 6500000, 'chr19_0_1'),\n", " (6500000, 9750000, 'chr19_0_2'),\n", " (9750000, 13000000, 'chr19_0_3'),\n", " (13000000, 15907946, 'chr19_1_0')]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "complex_segs = cns.main_segment(mcs_segs, remove_segs=gap_segs, split_size=3*10**6, filter_size=10**5)\n", "complex_segs[\"chr19\"][:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We again aggregated the CNs into the segments." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sample_idchromstartendCN1CN2name
0s1chr19032500001.01.0chr19_0_0
1s1chr19325000065000001.01.0chr19_0_1
2s1chr19650000097500001.01.0chr19_0_2
3s1chr199750000130000001.01.0chr19_0_3
4s1chr1913000000159079463.01.0chr19_1_0
\n", "
" ], "text/plain": [ " sample_id chrom start end CN1 CN2 name\n", "0 s1 chr19 0 3250000 1.0 1.0 chr19_0_0\n", "1 s1 chr19 3250000 6500000 1.0 1.0 chr19_0_1\n", "2 s1 chr19 6500000 9750000 1.0 1.0 chr19_0_2\n", "3 s1 chr19 9750000 13000000 1.0 1.0 chr19_0_3\n", "4 s1 chr19 13000000 15907946 3.0 1.0 chr19_1_0" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "complex_agg_df = cns.main_aggregate(imp_cns_df, complex_segs)\n", "complex_agg_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And display the segmentation. This time we first add a sum column to the data and only plot that one (total copy number)." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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55+bRYsWGWOMWbBggZFk8vPzjdfrNc8995xxu90mNzfX5ObmmgMHDhhjjElJSTF//etfjTHGlJeXm86dO5tLLrnErFq1yixbtsx07drV9O7d21fT+PHjTWxsrLnmmmvMunXrzOLFi03z5s3NI4888qvbumrVKlOvXj3z2GOPmU2bNpnp06ebmJgYM336dN86KSkpJj4+3kydOtVs2bLFZGZmmnr16pl//etfVfZZUFBg0tPTzfDhw33bdOTIEd92d+/e3SxcuNCsX7/e/O53vzM9evTwtV28eLFxu91mxowZJjs723z11VcmNTXVTJgw4Ve3YejQoWbgwIHW6zdixIhq119WVmbS0tLMbbfdZn744QezYcMGc8MNN5g2bdoYr9drjDFm/vz5ZubMmWbjxo1mw4YN5vbbbzfNmjUzRUVFvnEkmaZNm5o33njDZGdnm+3bt1dZb79+/Uznzp3NsmXLzOrVq03v3r1NTEyM77U+ts5VV11lVq5caTZv3mxGjx5tGjdubPLy8owx1XutH3jgAZOYmGjmzJlj1q9fb4YOHWoaNWrk6+PY63HxxRebJUuWmKysLNO6dWvTu3dvc9lll5msrCyzePFi07hxY/PUU0/5+n388cdN27Ztzdy5c012draZPn26cTqdZuHChb/6Gp2JCIYw07t3b5OWlmYqKip88x5++GGTlpZmjDFm8+bNRpJZunSpb/m+fftMTEyM+eCDD4wxxnTo0OFX38yODwZjjJk+fbrxeDyV1js+GL766isTERFhduzY4Vu+fv16I8msWLHCGHP0zcLlcllvVg8++KDp3r37r27rDTfcYPr372/Ne/DBB027du2sOm666SbfdEVFhWnatKmZNm3ar/Z74pvz8dv9zTff+ObNnj3bSDKHDh0yxhhz6aWXmieffNJqN3PmTNOiRYtfHas6wXCy+mfOnGnatGljvd5er9fExMSYefPmVTlmeXm5iYuLM59//rlvniQzcuTIX63TGGM2btxoJJmVK1f65m3ZssVI8r3W3377rXG73aa0tNRqe84555hXXnnFGPPbr3VxcbGpX7++eeedd3zLy8rKTGJiopk8ebIxpurXIzMz00gy2dnZvnl/+tOfzOWXX26MMaa0tNS4XC7z3XffWbXdfvvt5vrrrz/ptp9pOJQUhi6++GI5HA7fdHp6urZs2aLy8nJt3LhRkZGR6t69u29548aN1aZNG23cuFGS9MADD+jxxx9Xz549NX78eP3www+1qmfjxo1KSkpSUlKSb167du3UsGFD35jS0cMmcXFxvukWLVpoz549J+23Z8+e1ryePXv6tvWYjh07+v7vcDjUvHnzk/Z7Msf31aJFC0ny9bV27Vo99thjio2N9T2GDx+u3Nxc63BGbcY8sf61a9dq69atiouL840ZHx+v0tJSZWdnS5J2796t4cOH69xzz5XH45Hb7VZxcbF27NhhjdOtW7eT1rFp0yZFRkaqS5cuvnmtW7dWo0aNfNNr165VcXGxGjdubD0P27Zt89Ujnfy1zs7O1uHDh63Xtn79+rrooousv5cTn5tmzZrJ5XLp7LPPtuYd63fr1q0qKSlR//79rdreeustqzZw8hlVuOOOO3T55Zdr9uzZ+uqrr5SZmalnn31W999//ykd98STnQ6HQxUVFadVv8f3dSx8j/VVXFysiRMn6pprrqnULjo62q/xThzz2LjHj9m1a1e98847ldoduwBg6NChysvL0/PPP6+UlBQ5nU6lp6errKzMWj8QV5EVFxerRYsWWrhwYaVlDRs29P0/UK/Jia/Hbz1XkjR79my1bNnSWs/pdNZ47HBGMISh5cuXW9PLli3Tueeeq4iICKWlpenIkSNavny5evToIUnKy8vTpk2b1K5dO1+bpKQk3XXXXbrrrruUkZGhv//971UGQ1RUlPXpvCppaWnKyclRTk6Ob69hw4YNKigosMasqbS0NC1dutSat3TpUp133nmKiIjwu9/qbFNVunTpok2bNql169Z+j+3PmO+//76aNm0qt9td5TpLly7Vyy+/rD/84Q+Sjp6s3rdvX43HatOmjY4cOaLvv/9eXbt2lXT0U3h+fr5Vz65duxQZGanU1NSab5Ckc845R1FRUVq6dKlSUlIkHb1KauXKlbX6jke7du3kdDq1Y8cO9e7d2+9+zgQcSgpDO3bs0KhRo7Rp0yb993//t1588UWNGDFCknTuuedq4MCBGj58uJYsWaK1a9fqpptuUsuWLTVw4EBJ0siRIzVv3jxt27ZNWVlZWrBggdLS0qocKzU1VcXFxZo/f7727dtX5SGTfv36qUOHDrrxxhuVlZWlFStW6JZbblHv3r1/8/DFyYwePVrz58/XpEmTtHnzZr355pt66aWXNGbMGL/7lI5u0/Lly/Xzzz9r37591f4kO27cOL311luaOHGi1q9fr40bN+q9997Tf/3Xf9WqnpO58cYb1aRJEw0cOFDffvuttm3bpoULF+qBBx7Qzp07JR19zWfOnKmNGzdq+fLluvHGGxUTE1Pjsdq2bat+/frpzjvv1IoVK/T999/rzjvvVExMjG/vqV+/fkpPT9egQYP01Vdf6eeff9Z3332nRx99VKtWrarWOA0aNNDdd9+tBx98UHPnztWGDRs0fPhwlZSU6Pbbb69x3cfExcVpzJgx+vOf/6w333xT2dnZysrK0osvvqg333zT737DEcEQhm655RYdOnRIF110ke69916NGDFCd955p2/59OnT1bVrV/3Hf/yH0tPTZYzRnDlzfLvh5eXluvfee5WWlqYrrrhC5513nl5++eUqx+rRo4fuuusuXXfddUpISNDkyZMrreNwOPTZZ5+pUaNG6tWrl/r166ezzz5b77//fq22s0uXLvrggw/03nvv6fzzz9e4ceP02GOP6dZbb61Vv2PGjFFERITatWunhISESsfif83ll1+uL774Ql999ZUuvPBCXXzxxfrrX//q+9R7KrhcLi1evFjJycm65pprlJaWpttvv12lpaW+PYjXX39d+fn56tKli26++WbfZaD+eOutt9SsWTP16tVLgwcP1vDhwxUXF+c7VOZwODRnzhz16tVLw4YN03nnnachQ4Zo+/btatasWbXHeeqpp3Tttdfq5ptvVpcuXbR161bNmzfPOp/hj0mTJmns2LHKzMz0/X3Pnj1brVq1qlW/4cZhzHEXuCPkBfNbuzjz7Ny5U0lJSfrmm2906aWXBrscBAjnGABU2z/+8Q8VFxerQ4cOys3N1UMPPaTU1FT16tUr2KUhgAgGANV2+PBhPfLII/rpp58UFxenHj166J133uH2GWGGQ0kAAAsnnwEAFoIBAGAhGAAAFoIBAGAhGAAAFoIBAGAhGAAAFoIBAGAhGAAAlv8FSH+LFl5HB9oAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with_total_cn_df = cns.add_total_cn(complex_agg_df)\n", "cns.fig_bars(with_total_cn_df, cn_columns='total_cn');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more fine grained segmentations we can also plot CN lines. Note the interpolation between neighbours." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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V2Vl5Wnfw4lOvpRUm/q3bdumm266SY0aNVJKSooGDBhgqXnZsmXq27evmjRpIqfTqV69emnlypWWfdhsNr322mu6/vrr1bBhQ02YMKHG+lwul6699lrFx8erefPmeu+996p91qWlpbrnnnuUmpoqh8OhPn36aPXq1f7ltfmsvV6vHn74YaWlpSkuLk5XXnmlli1b5l9+/N/hzJkzdemllyo+Pl59+vTR7t279cUXXyg/P18Oh0O33HKLDh8+7N/O5/OpqKhIzZs3V3x8vDp27KgPP/ywVp9NRDEIK7169TKJiYlm+PDh5rvvvjN/+tOfTEJCgnnjjTf861x//fUmPz/fzJs3z6xatcr069fP5OXlmfLycmOMMddee63p27ev+fbbb83mzZvNX//6V/P1118bY4yZM2eOkWQOHDhgvF6veemll4zD4TAul8u4XC5z8OBBY4wxOTk55je/+Y0xxpiqqirTqVMnc+WVV5rly5ebxYsXmy5duphevXr5axo7dqxJTEw0N9xwg1mzZo2ZN2+eadq0qfnFL35xyve6fPlyExUVZZ566imzYcMGM3nyZBMfH28mT57sXycnJ8ekpKSYSZMmmU2bNpmioiITFRVlvvvuuxr3WVpaagoKCsywYcP876mystL/vrt162bmzp1r1q5da/7rv/7LdO/e3b/tvHnzjMPhMFOmTDGbN282X375pcnNzTXjxo075XsYMmSIGTBggOXzGz58eK3rLy8vN/n5+eauu+4y3377rVm3bp255ZZbTOvWrY3X6zXGGDN79mwzdepUs379erNu3Tpz9913m/T0dOPxePzHkWTS0tLMW2+9ZTZv3mx++OGHGustLCw0nTp1MosXLzYrVqwwvXr1MvHx8f7P+vg61113nVm2bJnZuHGjefTRR03jxo3Nvn37jDG1+6wffvhhk5mZaT7//HOzdu1aM2TIEJOcnOzfx/HP44orrjALFiwwK1euNHl5eaZXr17m6quvNitXrjTz5s0zjRs3Ns8995x/v88884xp06aNmTFjhtm8ebOZPHmysdvtZu7cuaf8jCIRwRBmevXqZfLz843P5/PPe+KJJ0x+fr4xxpiNGzcaSWbhwoX+5Xv37jXx8fHmgw8+MMYY0759+1N+mZ0YDMYYM3nyZON0Oqutd2IwfPnllyY6OtqUlJT4l69du9ZIMkuXLjXGHPuySEhIsHxZPf7446Zbt26nfK+33HKL6du3r2Xe448/btq2bWup47bbbvNP+3w+k5aWZl577bVT7vfkL+cT3/esWbP886ZPn24kmSNHjhhjjLnqqqvMs88+a9lu6tSpJiMj45THqk0wnK7+qVOnmtatW1s+b6/Xa+Lj483MmTNrPGZVVZVJSkoyf/3rX/3zJJkRI0acsk5jjFm/fr2RZJYtW+aft2nTJiPJ/1nPnz/fOBwOc/ToUcu2LVu2NK+//rox5syfdVlZmWnQoIF59913/cvLy8tNZmammThxojGm5s+jqKjISDKbN2/2z/vpT39q+vXrZ4wx5ujRoyYhIcEsWrTIUtvdd99tbr755tO+90jDpaQwdMUVV8hms/mnCwoKtGnTJlVVVWn9+vWKiYlRt27d/MsbN26s1q1ba/369ZKkhx9+WM8884x69OihsWPH6ttvvz2netavX6+srCxlZWX557Vt21aNGjXyH1M6dtkkKSnJP52RkaHdu3efdr89evSwzOvRo4f/vR7XoUMH/59tNpuaNm162v2ezon7ysjIkCT/vlavXq2nnnpKiYmJ/tewYcPkcrkslzPO5Zgn17969WoVFxcrKSnJf8yUlBQdPXpUmzdvliTt2rVLw4YNU6tWreR0OuVwOFRWVqaSkhLLcbp27XraOjZs2KCYmBh17tzZPy8vL0/Jycn+6dWrV6usrEyNGze2/D1s2bLFX490+s968+bNqqiosHy2DRo00OWXX27593Ly3016eroSEhLUokULy7zj+y0uLtbhw4fVt29fS23vvPOOpTbQ+Iwa3HPPPerXr5+mT5+uL7/8UkVFRfr1r3+thx566Lwe9+TGTpvNJp/Pd0Ht98R9HQ/f4/sqKyvT+PHjdcMNN1TbLi4urk7HO/mYx4974jG7dOmid999t9p2xzsADBkyRPv27dPLL7+snJwc2e12FRQUqLy83LJ+IHqRlZWVKSMjQ3Pnzq22rFGjRv4/B+ozOfnzONPflSRNnz5dF110kWU9u91+1scOZwRDGFqyZIllevHixWrVqpWio6OVn5+vyspKLVmyRN27d5ck7du3Txs2bFDbtm3922RlZem+++7Tfffdp1GjRukPf/hDjcEQGxtr+XVek/z8fG3btk3btm3znzWsW7dOpaWllmOerfz8fC1cuNAyb+HChbr44osVHR1d5/3W5j3VpHPnztqwYYPy8vLqfOy6HPP9999XWlqaHA5HjessXLhQv/vd7/TjH/9Y0rHG6r179571sVq3bq3Kykp988036tKli6Rjv8IPHDhgqWfnzp2KiYlRbm7u2b8hSS1btlRsbKwWLlyonJwcScd6SS1btuyc7vFo27at7Ha7SkpK1KtXrzrvJxJwKSkMlZSUaOTIkdqwYYP+7//+T7/97W81fPhwSVKrVq00YMAADRs2TAsWLNDq1at122236aKLLtKAAQMkSSNGjNDMmTO1ZcsWrVy5UnPmzFF+fn6Nx8rNzVVZWZlmz56tvXv31njJpLCwUO3bt9ett96qlStXaunSpbrjjjvUq1evM16+OJ1HH31Us2fP1tNPP62NGzfq7bff1quvvqrHHnuszvuUjr2nJUuWaOvWrdq7d2+tf8mOGTNG77zzjsaPH6+1a9dq/fr1mjZtmp588slzqud0br31VjVp0kQDBgzQ/PnztWXLFs2dO1cPP/ywtm/fLunYZz516lStX79eS5Ys0a233qr4+PizPlabNm1UWFioe++9V0uXLtU333yje++9V/Hx8f6zp8LCQhUUFGjgwIH68ssvtXXrVi1atEi//OUvtXz58lodp2HDhrr//vv1+OOPa8aMGVq3bp2GDRumw4cP6+677z7ruo9LSkrSY489pkceeURvv/22Nm/erJUrV+q3v/2t3n777TrvNxwRDGHojjvu0JEjR3T55ZfrgQce0PDhw3Xvvff6l0+ePFldunTRf//3f6ugoEDGGH3++ef+0/Cqqio98MADys/P1zXXXKOLL75Yv/vd72o8Vvfu3XXfffdp8ODBSk1N1cSJE6utY7PZ9Nlnnyk5OVk9e/ZUYWGhWrRooffff/+c3mfnzp31wQcfaNq0abrkkks0ZswYPfXUU7rzzjvPab+PPfaYoqOj1bZtW6Wmpla7Fn8q/fr109/+9jd9+eWXuuyyy3TFFVfoN7/5jf9X7/mQkJCgefPmKTs7WzfccIPy8/N199136+jRo/4ziDfffFMHDhxQ586ddfvtt/u7gdbFO++8o/T0dPXs2VODBg3SsGHDlJSU5L9UZrPZ9Pnnn6tnz54aOnSoLr74Yv3kJz/RDz/8oPT09Fof57nnntONN96o22+/XZ07d1ZxcbFmzpxpac+oi6efflqjR49WUVGR/9/39OnT1bx583Pab7ixGXNCB3eEvGDetYvIs337dmVlZWnWrFm66qqrgl0OAoQ2BgC19ve//11lZWVq3769XC6Xfv7znys3N1c9e/YMdmkIIIIBQK1VVFToF7/4hb7//nslJSWpe/fuevfddxk+I8xwKQkAYEHjMwDAgmAAAFgQDAAAC4IBAGBBMAAALAgGAIAFwQAAsCAYAAAWBAMAwOL/A/T3FdBBubh1AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cns.fig_lines(with_total_cn_df, cn_columns=\"total_cn\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conversions\n", "\n", "Below we show conversions between data formats.\n", "\n", "This is in particular useful for data processing pipelines, where we might want to have our data as feature sets. \n", "These can be then fed into machine learning models." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2, 3, 18)\n", "['s1', 's2']\n" ] }, { "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", "
chromstartend
name
chr19_0_0chr1903250000
chr19_0_1chr1932500006500000
chr19_0_2chr1965000009750000
chr19_0_3chr19975000013000000
chr19_1_0chr191300000015907946
\n", "
" ], "text/plain": [ " chrom start end\n", "name \n", "chr19_0_0 chr19 0 3250000\n", "chr19_0_1 chr19 3250000 6500000\n", "chr19_0_2 chr19 6500000 9750000\n", "chr19_0_3 chr19 9750000 13000000\n", "chr19_1_0 chr19 13000000 15907946" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features, samples, positions = cns.bins_to_features(complex_agg_df)\n", "print(features.shape)\n", "print(samples)\n", "positions.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Conversions between segments and CNS_df:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 3250000, 'chr19_0_0'),\n", " (3250000, 6500000, 'chr19_0_1'),\n", " (6500000, 9750000, 'chr19_0_2'),\n", " (9750000, 13000000, 'chr19_0_3'),\n", " (13000000, 15907946, 'chr19_1_0'),\n", " (15907946, 18815891, 'chr19_1_1'),\n", " (18815891, 21723837, 'chr19_1_2'),\n", " (21723837, 24631782, 'chr19_1_3'),\n", " (27731782, 30871502, 'chr19_2_0'),\n", " (30871502, 34011222, 'chr19_2_1'),\n", " (34011222, 37150942, 'chr19_2_2'),\n", " (37150942, 40290662, 'chr19_2_3'),\n", " (40290662, 43430383, 'chr19_2_4'),\n", " (43430383, 46570103, 'chr19_2_5'),\n", " (46570103, 49709823, 'chr19_2_6'),\n", " (49709823, 52849543, 'chr19_2_7'),\n", " (52849543, 55989263, 'chr19_2_8'),\n", " (55989263, 59128983, 'chr19_2_9'),\n", " (0, 3250000, 'chr19_0_0'),\n", " (3250000, 6500000, 'chr19_0_1'),\n", " (6500000, 9750000, 'chr19_0_2'),\n", " (9750000, 13000000, 'chr19_0_3'),\n", " (13000000, 15907946, 'chr19_1_0'),\n", " (15907946, 18815891, 'chr19_1_1'),\n", " (18815891, 21723837, 'chr19_1_2'),\n", " (21723837, 24631782, 'chr19_1_3'),\n", " (27731782, 30871502, 'chr19_2_0'),\n", " (30871502, 34011222, 'chr19_2_1'),\n", " (34011222, 37150942, 'chr19_2_2'),\n", " (37150942, 40290662, 'chr19_2_3'),\n", " (40290662, 43430383, 'chr19_2_4'),\n", " (43430383, 46570103, 'chr19_2_5'),\n", " (46570103, 49709823, 'chr19_2_6'),\n", " (49709823, 52849543, 'chr19_2_7'),\n", " (52849543, 55989263, 'chr19_2_8'),\n", " (55989263, 59128983, 'chr19_2_9')]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cns.cns_df_to_segments(complex_agg_df)[\"chr19\"]" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", "
sample_idchromstartendnamecn
0segmentchr1010000telomere2
1segmentchr1177417227417clone2
2segmentchr1267719317719contig2
3segmentchr1471368521368contig2
4segmentchr126342202684220clone2
\n", "
" ], "text/plain": [ " sample_id chrom start end name cn\n", "0 segment chr1 0 10000 telomere 2\n", "1 segment chr1 177417 227417 clone 2\n", "2 segment chr1 267719 317719 contig 2\n", "3 segment chr1 471368 521368 contig 2\n", "4 segment chr1 2634220 2684220 clone 2" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cns.segments_to_cns_df(gap_segs).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Conversion between segments and breakpoints:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 10000, 60000, 7346004, 7396004]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cns.segments_to_breaks(gap_segs)[\"chr19\"][:5]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'chr19': [(0, 10000, 'chr19_0'), (10000, 30000, 'chr19_1')]}" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cns.breaks_to_segments({\"chr19\" : [0, 10000, 30000]})" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }