--- a +++ b/.ipynb_checkpoints/SNAREseq_newSCOT-checkpoint.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Notebook for running SCOT on SNARE-seq Cell Mixture Data\n", + "**Note:** This version of the notebook runs a new setting for SCOT, where we use correlation as a metrix for building kNN graphs and use connectivity information from this graph in adjacency matrices fed into the optimal transport algorithm. \n", + "\n", + "Access to the raw dataset: Gene Expression Omnibus accession no GSE126074 \n", + "SNARE-seq data in `/data` folder containes the version with dimensionality reduction techniques applied from the original SNARE-seq paper (https://www.nature.com/articles/s41587-019-0290-0) \n", + "SCOT software has been updated on 20 September 2020. It now outputs error statements for convergence issues. When it runs into numerical instabilities in convergence, it outputs None, None instead of X_new, y_new. If you run into such an error, please try using a larger epsilon value for the entropic regularization. \n", + "\n", + "If you have any questions, e-mail: ritambhara@brown.edu, pinar_demetci@brown.edu, rebecca_santorella@brown.edu " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import src.utils as ut\n", + "import src.evals as evals\n", + "from src.scot import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dimensions of input datasets are: X= (1047, 19) y= (1047, 10)\n" + ] + } + ], + "source": [ + "X=np.load(\"data/scatac_feat.npy\") #Unlike the other notebook, we don't need to correct the log transformation. \n", + "# log transformation makes little difference when considering correlations in kNN graphs as opposed to Euclidean distances.\n", + "y=np.load(\"data/scrna_feat.npy\")\n", + "print(\"Dimensions of input datasets are: \", \"X= \", X.shape, \" y= \", y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "X=ut.unit_normalize(X)\n", + "y=ut.unit_normalize(y)\n", + "\n", + "## If you'd like to apply z-score normalization instead:\n", + "# X=ut.zscore_standardize()\n", + "# y=ut.zscore_standardize()\n", + "# Note that zscore_standardize doesn't yield as good results on this dataset and MMD-MA and UnionCom comparisons \n", + "# also used unit (l-2) normalization" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "It. |Err \n", + "-------------------\n", + " 0|2.152968e-03|\n", + " 10|6.118185e-04|\n", + " 20|8.246992e-05|\n", + " 30|3.894956e-05|\n", + " 40|3.216470e-05|\n", + " 50|3.068255e-05|\n", + " 60|2.850152e-05|\n", + " 70|2.484922e-05|\n", + " 80|2.042939e-05|\n", + " 90|1.618798e-05|\n", + " 100|1.259759e-05|\n", + " 110|9.709774e-06|\n", + " 120|7.426016e-06|\n", + " 130|5.636091e-06|\n", + " 140|4.246817e-06|\n", + " 150|3.179940e-06|\n", + " 160|2.368862e-06|\n", + " 170|1.757536e-06|\n", + " 180|1.299939e-06|\n", + " 190|9.592410e-07|\n", + "It. |Err \n", + "-------------------\n", + " 200|7.066033e-07|\n", + " 210|5.198315e-07|\n", + " 220|3.820633e-07|\n", + " 230|2.806101e-07|\n", + " 240|2.059904e-07|\n", + " 250|1.511563e-07|\n", + " 260|1.108881e-07|\n", + " 270|8.133075e-08|\n", + " 280|5.964305e-08|\n", + " 290|4.373381e-08|\n", + " 300|3.206565e-08|\n", + " 310|2.350916e-08|\n", + " 320|1.723517e-08|\n", + " 330|1.263514e-08|\n", + " 340|9.262639e-09|\n", + " 350|6.790190e-09|\n", + " 360|4.977643e-09|\n", + " 370|3.648897e-09|\n", + " 380|2.674833e-09|\n", + " 390|1.960783e-09|\n", + "It. |Err \n", + "-------------------\n", + " 400|1.437344e-09|\n", + " 410|1.053637e-09|\n", + " 420|7.723608e-10|\n" + ] + } + ], + "source": [ + "# Set hyperparameters of the algorithm:\n", + "k=50\n", + "e=0.0005\n", + "X_new,y_new= scot(X, y, k, e, mode=\"connectivity\", metric=\"correlation\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Evaluate results:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average FOSCTTM score for this alignment is: 0.14902407132460765\n" + ] + } + ], + "source": [ + "fracs=evals.calc_domainAveraged_FOSCTTM(X_new, y_new)\n", + "print(\"Average FOSCTTM score for this alignment is: \", np.mean(fracs))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAA1tUlEQVR4nO3deXhU5fXA8e8hoKwiqyBr2EkIhBAQRMq+uKHIIliVqi1U1IqtCLiAWq2iWLfqT6FsrQoIolBFRVAUBRGCyBJAtgBBQYiA7BByfn+8k2GyMATIzSSZ83meeWbuMveeyyVz7n3vu4iqYowxJnwVCXUAxhhjQssSgTHGhDlLBMYYE+YsERhjTJizRGCMMWGuaKgDOFcVK1bU2rVrhzoMY4wpUBISEvaqaqXslhW4RFC7dm2WL18e6jCMMaZAEZFtZ1pmRUPGGBPmLBEYY0yYs0RgjDFhrsA9I8jOyZMnSU5O5tixY6EOxRiTjeLFi1O9enWKFSsW6lBMNgpFIkhOTqZMmTLUrl0bEQl1OMaYAKpKSkoKycnJREZGhjock41CUTR07NgxKlSoYEnAmHxIRKhQoYLdsedjhSIRAJYEjMnH7O8zfys0icAYY8z5sUSQS55++mmio6Np2rQpsbGxLF26FHAPskeMGEH9+vWJi4ujTZs2fPzxxwAcOHCA22+/nXr16lG3bl1uv/12Dhw4wOrVq4mNjSU2Npby5csTGRlJbGwsXbp0yXE8tWvXZu/evQBceeWVuX/AF2jlypXMnTs322ULFy6kbNmy/n+DwOMeN24cjRo1olGjRrRq1Yqvv/7av+zDDz+kefPmNGvWjKioKN58803/sv/85z80adKEmJgYmjdvztixY7nnnnuIjY0lKiqKEiVK+PcnIsTGxlKvXr0McSxevJgOHTpQs2ZNAsfxuPHGGyldurQH/0rG+OzfDwsXwm+/ebN9VS1QrxYtWmhmiYmJWeblpcWLF2vr1q312LFjqqq6Z88e3blzp6qqDh8+XG+//Xb/sl27dun06dNVVbV37946evRo/3ZGjRqlffr0ybDtgQMH6owZM845plq1aumePXvO53DyxKRJk/See+7JdtkXX3yh1157bZb5//vf/zQuLs5/XAkJCVqjRg39+eef9cSJE1q1alXdsWOHqqoeO3ZM169fr6qqc+fO1ebNm/vPybFjx3TcuHH+7W7dulWjo6NzFEf79u01JiZGFy1apKqq+/bt01atWmmpUqXO9Z8g7IT677RA+/RTVVBduPC8NwEs1zP8rtodQS74+eefqVixIhdffDEAFStW5PLLL+fIkSOMHz+eV1991b/ssssuo1+/fmzatImEhAQee+wx/3ZGjRrF8uXL2bx5c473feONN9KiRQuio6MZN25ctuukX62mpaUxZMgQGjVqRNeuXbnmmmuYOXMm4O4gRo8eTVxcHDExMaxfvx6Axx9/nIEDB9KuXTtq1arFrFmzeOihh4iJiaFHjx6cPHkSgISEBNq3b0+LFi3o3r07P//8MwAdOnRg+PDhtGrVigYNGrBo0SJOnDjBqFGjmD59OrGxsUyfPj1HxzpmzBief/55KlasCEBcXBwDBw7ktdde4+DBg6SmplKhQgUALr74Yho2bAjAM888w9ixY7n88sv9y/70pz/l+N84s/79+zNt2jQAZs2axU033XTe2zImR3budO81a3qyeUsEuaBbt27s2LGDBg0aMGTIEL788ksANm3aRM2aNbnkkkuyfCcxMZHY2FgiIiL88yIiIoiNjWXt2rU53vfEiRNJSEhg+fLlvPLKK6SkpJxx3VmzZpGUlERiYiL//e9/WbJkSYblFStWZMWKFdx9992MHTvWP3/z5s18/vnnzJkzh1tvvZWOHTuyevVqSpQowUcffcTJkye57777mDlzJgkJCdx555088sgj/u+npqby3Xff8dJLL/HEE09w0UUX8eSTT3LzzTezcuVKbr755iyxLlq0yF8k8/TTTwOwdu1aWrRokWG9+Ph41q5dS/ny5enZsye1atViwIABvP3226SlpQGwZs2aLN+7EJ07d+arr77i1KlTTJs2Ldv4jclVvgsufBeUua1QtCMItdKlS5OQkMCiRYv44osvuPnmm3n22WeJi4vzfN+vvPIK77//PgA7duxg48aN/qvizL7++mv69u1LkSJFqFKlCh07dsywPP3KtkWLFsyaNcs//+qrr6ZYsWLExMRw6tQpevToAUBMTAxJSUls2LCBNWvW0LVrVwBOnTpF1apVs91uUlJSjo6rXbt2fPjhhzlaN92///1vVq9ezfz58xk7diyfffYZkydPPqdt5ERERARXXXUV06ZN4+jRo1hvuMZzqanuPeDCMTdZIsglERERdOjQgQ4dOhATE8OUKVPo168f27dv57fffstyVxAVFcXKlStJS0ujSBF3Y5aWlsbKlSuJiorK0T4XLlzI/PnzWbJkCSVLlqRDhw4XVFc7vfgqIiKC1PT/eAHzixQpQrFixfxVAYsUKUJqaiqqSnR0dJY7jLNt91xFRUWRkJBAp06d/PMSEhKIjo72T8fExBATE8Ntt91GZGQkkydPJjo6Osv3LlT//v3p1asXjz/+eK5t05gzOnXKvRf15ifbioZywYYNG9i4caN/euXKldSqVYuSJUty1113cf/993PixAkA9uzZw4wZM6hXrx7Nmzfnqaee8n/vqaeeIi4ujnr16uVovwcOHKBcuXKULFmS9evX8+233wZdv23btrz33nukpaWxe/duFi5ceO4Hm42GDRuyZ88efyI4efLkWYu3ypQpw8GDB89pPw899BDDhw/3F3+tXLmSyZMnM2TIEA4dOpTheNLPAcDIkSMZNmwYu3btAuDEiRP8+9//Pqd9Z9auXTtGjhzJgAEDLmg7xuTIddfBnDlQpownm7c7glxw6NAh7rvvPvbv30/RokWpV6+e/8HtU089xaOPPkpUVBTFixenVKlSPPnkkwBMmDCB++67j7p16wLQpk0bJkyYkOP99ujRgzfeeIPGjRvTsGFDWrduHXT93r17s2DBAqKioqhRowZxcXGULVv2PI/6tIsuuoiZM2fyl7/8hQMHDpCamsrQoUMzXKln1rFjR5599lliY2MZOXJkjsrZe/bsyc6dO7nyyisREcqUKcNbb71F1apVOXjwIM899xyDBw+mRIkSlCpVyl8sdM0117B79266dOmCqiIi3HnnnRd0zCLCgw8+eEHbMCbHIiPdyyOiAfWhC4L4+HjNPDDNunXraNy4cYgiKlgOHTpE6dKlSUlJoVWrVnzzzTdUqVIl1GGZMGB/pxdg40ZYvx6uuea8nxOISIKqxme3zO4Iwsx1113H/v37OXHiBI899pglAWMKghkz4JFH4NgxTx4YF85E0KFD1nn9+sGQIXDkiMuqmf3hD+61dy/06ZNxWS6VpecHufVcwBiTh9IrWdjDYmOMCVPptYaKePSTfaYmx/n1lR+7mAg3XnVfMXnyZK1Xr57Wq1dPJ0+enO067777rkZFRamI6LJly7Is37Ztm5YqVUqff/55/7yXXnpJo6OjNSoqSl988UX//JSUFO3SpYvWq1dPu3Tpor/++quqqr711lsaExOjTZo00TZt2ujKlSsz7CM1NVVjY2MzdD+xZcsWbdWqldatW1f79eunx48fV1XVoUOHarNmzbRZs2Zav359LVu2rP873bt317Jly2bpxuLOO+/Upk2bakxMjPbu3VsPHjyoqqovvPCCNm7cWGNiYrRTp06alJSU4XsHDhzQatWqZei64/jx4/qnP/1J69evrw0bNtSZM2eqqutmo1+/flq3bl1t1aqVbt261X/s6fE2a9ZMRUS///77oNuaNGmSVqxY0f+d8ePHZ3vu7O/0AjzyiGqRIhe0CYJ0MeHpjzbQA9gAbAJGZLO8JvAF8D2wCrjmbNsM10SQmpoa6hD8vEgEKSkpGhkZqSkpKfrrr79qZGSk/4c5UGJioq5fv17bt2+fbSLo3bu39unTx58IVq9erdHR0Xr48GE9efKkdu7cWTdu3KiqqsOGDdNnnnlGVVWfeeYZfeihh1RV9ZtvvvHve+7cudqqVasM+3jhhRd0wIABGX7A+/btq1OnTlVV1cGDB+vrr7+eJbZXXnlF77jjDv/0/Pnzdc6cOVkSwYEDB/yfH3jgAX+Mn3/+uR4+fFhVVV9//XXt169fhu/95S9/0QEDBmRIBKNGjdJHHnlEVVVPnTrlP2+vvfaaDh48WFVVp06dmmVbqqqrVq3SOnXqnHVbwfqNChQOf6eeGTFCtVixC9pEsETgWdGQiEQArwFXA1HAABHJ3FLqUeBdVW0O9Ade9yqevHT33XcTHx9PdHQ0o0ePBuCTTz6hb9++/nUWLlzIddddB8C8efNo06YNcXFx9O3bl0OHDgGu/5/hw4cTFxfHjBkzGD9+PC1btqRZs2b07t2bI0eOAK4LiNatWxMTE8Ojjz6aoSfM559/npYtW9K0aVN/LIHeeOMNhg0b5p+ePHky9957L3D2foySkpJo0qSJf3rs2LH+BlabN2+mR48etGjRgnbt2vn7LjqTTz/9lK5du1K+fHnKlStH165d+eSTT7Ksl15VNjsffPABkZGRGaqtrlu3jiuuuIKSJUtStGhR2rdv7281PXv2bAYOHAjAwIED+eCDDwDXW2u5cuUAaN26NcnJyf7tJScn89FHH/HHP/7RP09V+fzzz+nje7YUuK1AU6dOzdDuoHPnzpTJpl54euNDVeXo0aP+BnwdO3akZMmS2caVkJDA7t276datW4ZtTZw4kZEjRwKuAWB6P02Bx96nTx8WLFiQfnGWId7+/fufdVsmDwwaBPPne7Z5L58RtAI2qeoWVT0BTANuyLSOAulNbssCP3kYT555+umnWb58OatWreLLL79k1apVdOnShaVLl3L48GEApk+fTv/+/dm7dy9PPfUU8+fPZ8WKFcTHx/PPf/7Tv60KFSqwYsUK+vfvz0033cSyZcv44YcfaNy4sb/Nwf3338/999/P6tWrqV69uv+78+bNY+PGjXz33XesXLmShIQEvvrqqwyx9u7d299FRWBccG79GGU2aNAgXn31VRISEhg7dixDhgwBYM6cOYwaNSrL+jt37qRGjRr+6erVq7MzvaOtHDh06BBjxozJkuyaNGnCokWLSElJ4ciRI8ydO5cdO3YAsHv3bn9XGFWqVGH37t1ZtjthwgSuvvpq//TQoUN57rnn/K3BAVJSUrj00ksp6nuQl13s27ZtY+vWrTlu3XzHHXdQpUoV1q9fz3333Rc0rrS0NP72t79l6B8KYP/+/QA89thj/ouM9GMM/PcuWrQoZcuWzXJ+p0+f7k9cwbYF8N5779G0aVP69Onj//c1uSgyEn73O88272UiqAYE/o9I9s0L9Dhwq4gkA3OBrP/jAREZJCLLRWT5nj17vIg1V7377rvExcXRvHlz1q5dS2JiIkWLFqVHjx7873//IzU1lY8++ogbbriBb7/9lsTERNq2bUtsbCxTpkxh27Zt/m0FNrRas2YN7dq1IyYmhrffftvfenfJkiX+u41bbrnFv/68efOYN28ezZs3Jy4ujvXr12doAQ1QqVIl6tSpw7fffktKSgrr16+nbdu2gOvHqFmzZrRu3drfj1FOHDp0iMWLF9O3b19iY2MZPHiwvzfSnj17+hvU5abHH3+cBx54IMu4AI0bN2b48OF069aNHj16ZOnoL52IZBlF64svvmDChAmMGTMGcOMdVK5c+bw6sJs2bRp9+vTJdt/ZmTRpEj/99BONGzfO0jvrW2+9xfLly/13cq+//jrXXHNNhosAcJ39JScnc+WVV7JixQratGmT40ZwS5cupWTJkv47vmDbuv7660lKSmLVqlV07drVf6dhctHy5eDrKdgTZyozutAX0Af4d8D0bcC/Mq3zV+Bvvs9tgESgSLDt5vdnBFu2bNG6dev6y5gHDhyokyZNUlXVBQsWaK9evfTTTz/VXr16qarqnDlztH///tluK3NZfO3atf0PLidNmqQDBw5UVdXy5cvryZMnVdWVL6f3jf/Xv/5V33jjjbPGPGHCBH3ggQf0zTff1AceeEBVXV/8bdu29ZdJt2/fXr/44osMce3YsUMbN27s387f//53HT16tB44cECrVKly1v0Geuedd3TQoEH+6UGDBuk777xzxvUzPyO46qqrtFatWlqrVi0tW7aslitXTl999dUs3xs5cqS+9tprqqraoEED/emnn1RV9aefftIGDRr41/vhhx+0Tp06umHDBv+8ESNGaLVq1bRWrVp62WWXaYkSJfT3v/+9pqWlaYUKFfznYPHixdqtW7cM+42NjdVvvvkmSzxnGnsh3Zdffplh+WeffaaNGjXS3bt3++fdcsstWqNGDa1Vq5ZWqFBBy5Qpo8OHD9e0tDQtWbKknjp1SlVVt2/frlFRUaqq2q1bN128eLGqqp48eVIrVKigaWlp/m0OHTpUn376af90sG0FSk1N1UsuuSTbY8lPf6cFzj33qJYvf0GbIETjEewEagRMV/fNC3QX8C6Aqi4BigMFuuDxt99+o1SpUpQtW5bdu3f7RyMDaN++PStWrGD8+PH+4pfWrVvzzTffsGnTJgAOHz7Mjz/+mO22Dx48SNWqVTl58iRvv/22f37r1q157733APz95AN0796diRMn+p857Ny5k19++SXLdnv16sXs2bMzlAnnpB+jyy67jF9++YWUlBSOHz/u7y30kksuITIykhkzZgDuYuOHH34I+u/WvXt35s2bx759+9i3bx/z5s2je/fuQb8TaNGiRSQlJZGUlMTQoUN5+OGH/c860o95+/btzJo1y3/X1LNnT6ZMmQLAlClTuOGGG/zr3XTTTfz3v/+lQYMG/n0888wzJCcnk5SUxLRp0+jUqRNvvfUWIkLHjh39YzsEbgtg/fr17Nu3jzZt2pz1OFTV/39BVZkzZw6NGjUC4Pvvv2fw4MHMmTOHypUr+7/z9ttvs337dpKSkhg7diy33347zz77LCLC9ddf7287kt69SOZjnzlzJp06dfLfEaWlpfHuu+9meD4QbFvpd3vgiv6s9bAHTp3yrOdRwNM7gqLAFiASuAj4AYjOtM7HwB98nxvjnhFIsO3m9zsCVXcXUL9+fe3UqZP26tXLf0egqnrPPfdoqVKl/Ffa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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "legend_label=\"SCOT alignment FOSCTTM \\n average value: \"+str(np.mean(fracs))\n", + "plt.plot(np.arange(len(fracs)), np.sort(fracs), \"r--\", label=legend_label)\n", + "plt.legend()\n", + "plt.xlabel(\"Cells\")\n", + "plt.ylabel(\"Sorted FOSCTTM\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Visualize Projections" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x1208327c0>" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from sklearn.decomposition import PCA\n", + "\n", + "pca=PCA(n_components=2)\n", + "X_pca=pca.fit_transform(X_new)\n", + "y_pca=pca.fit_transform(y_new)\n", + "\n", + "plt.scatter(X_pca[:,0], X_pca[:,1], c=\"k\", s=25, label=\"Chromatin Accessibility\")\n", + "plt.scatter(y_pca[:,0], y_pca[:,1], c=\"r\", s=10, label=\"Gene Expression\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Performing alignment by projecting RNA-seq (gene expression, y domain) onto ATAC-seq (chromatin accessibility, X domain)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "It. |Err \n", + "-------------------\n", + " 0|2.152968e-03|\n", + " 10|6.118185e-04|\n", + " 20|8.246992e-05|\n", + " 30|3.894956e-05|\n", + " 40|3.216470e-05|\n", + " 50|3.068255e-05|\n", + " 60|2.850152e-05|\n", + " 70|2.484922e-05|\n", + " 80|2.042939e-05|\n", + " 90|1.618798e-05|\n", + " 100|1.259759e-05|\n", + " 110|9.709774e-06|\n", + " 120|7.426016e-06|\n", + " 130|5.636091e-06|\n", + " 140|4.246817e-06|\n", + " 150|3.179940e-06|\n", + " 160|2.368862e-06|\n", + " 170|1.757536e-06|\n", + " 180|1.299939e-06|\n", + " 190|9.592410e-07|\n", + "It. |Err \n", + "-------------------\n", + " 200|7.066033e-07|\n", + " 210|5.198315e-07|\n", + " 220|3.820633e-07|\n", + " 230|2.806101e-07|\n", + " 240|2.059904e-07|\n", + " 250|1.511563e-07|\n", + " 260|1.108881e-07|\n", + " 270|8.133075e-08|\n", + " 280|5.964305e-08|\n", + " 290|4.373381e-08|\n", + " 300|3.206565e-08|\n", + " 310|2.350916e-08|\n", + " 320|1.723517e-08|\n", + " 330|1.263514e-08|\n", + " 340|9.262639e-09|\n", + " 350|6.790190e-09|\n", + " 360|4.977643e-09|\n", + " 370|3.648897e-09|\n", + " 380|2.674833e-09|\n", + " 390|1.960783e-09|\n", + "It. |Err \n", + "-------------------\n", + " 400|1.437344e-09|\n", + " 410|1.053637e-09|\n", + " 420|7.723608e-10|\n", + "Average FOSCTTM score for this alignment is: 0.15649419903174142\n" + ] + } + ], + "source": [ + "# Set hyperparameters of the algorithm:\n", + "k=50\n", + "e=0.0005\n", + "X_new,y_new= scot(X, y, k, e, mode=\"connectivity\", metric=\"correlation\", XontoY=False) \n", + "#Set XontoY to false so it performs Y-onto-X projection\n", + "fracs=evals.calc_domainAveraged_FOSCTTM(X_new, y_new)\n", + "print(\"Average FOSCTTM score for this alignment is: \", np.mean(fracs))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "legend_label=\"SCOT alignment FOSCTTM \\n average value: \"+str(np.mean(fracs))\n", + "plt.plot(np.arange(len(fracs)), np.sort(fracs), \"r--\", label=legend_label)\n", + "plt.legend()\n", + "plt.xlabel(\"Cells\")\n", + "plt.ylabel(\"Sorted FOSCTTM\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Visualize projection:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x1208bf850>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from sklearn.decomposition import PCA\n", + "\n", + "pca=PCA(n_components=2)\n", + "X_pca=pca.fit_transform(X_new)\n", + "y_pca=pca.fit_transform(y_new)\n", + "\n", + "plt.scatter(X_pca[:,0], X_pca[:,1], c=\"k\", s=25, label=\"Chromatin Accessibility\")\n", + "plt.scatter(y_pca[:,0], y_pca[:,1], c=\"r\", s=10, label=\"Gene Expression\")" + ] + } + ], + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}