{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Adjust AP-DV Plane" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import anndata as ad" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "prefix='10dpa2'\n", "adata = ad.read_h5ad(f\"D:/wochong_2023/body_axis/h5ad_SPC/SPC.{prefix}.h5ad\")\n", "radata = ad.read_h5ad(f'D:/wochong_2023/body_axis/APML/{prefix}.apadj.h5ad')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import scipy.linalg as sl\n", "import matplotlib.pyplot as plt\n", "from skimage import io as skio\n", "\n", "def polyfix(x, y, xfix, yfix, n=3):\n", " \"\"\"\n", " This code is copy from https://github.com/jbae11/polyfix.py with minor changes \n", " Fits polynomial p with degree n to data with constrains\n", " \n", " param (x,y): 2D coordinates of all training data.\n", " param n: degree of polynomial.\n", " param (xfix,yfix): 2D coordinates of all constrain points.\n", " \"\"\"\n", " nfit = len(x)\n", " if len(y) != nfit:\n", " raise ValueError('x and y must have the same size')\n", " nfix = len(xfix)\n", " if len(yfix) != nfix:\n", " raise ValueError('xfit adn yfit must have the same size')\n", " x = np.vstack(x)\n", " y = np.vstack(y)\n", " if nfix > 1 :\n", " xfix = np.vstack(xfix)\n", " yfix = np.vstack(yfix)\n", "\n", " nspec = nfix\n", " specval = yfix\n", " # first find A and pc such that A*pc = specval\n", " A = np.zeros((nspec, n+1))\n", " # specified y values\n", " for i in range(n+1):\n", " A[:nfix, i] = np.hstack(np.ones((nfix, 1)) * xfix**(n+1-(i+1)))\n", "\n", " if nfix > 0:\n", " lastcol = n+1\n", " nmin = nspec - 1\n", " else:\n", " lastcol = n\n", " nmin = nspec\n", "\n", " if n < nmin:\n", " raise ValueError('Polynomial degree too low, cannot match all constraints')\n", " # find unique polynomial of degree nmin that fits the constraints\n", " firstcol = n-nmin\n", " pc0 = np.linalg.solve(A[:, firstcol:lastcol], specval)\n", " pc = np.zeros((n+1, 1))\n", " pc[firstcol:lastcol] = pc0\n", " \n", " X = np.zeros((nfit, n+1))\n", " for i in range(n+1):\n", " X[:, i] = (np.ones((nfit, 1)) * x**(n+1-(i+1))).flatten()\n", "\n", " yfit = y - np.polyval(pc, x)\n", "\n", " B = sl.null_space(A)\n", " #z = np.linalg.lstsq(X @ B, yfit,rcond=None)[0]\n", " z = np.linalg.lstsq(X @ B, yfit)[0]\n", " if len(z) == 0:\n", " z = z[0]\n", " p0 = B*z\n", " else:\n", " p0 = B@z\n", " p = np.transpose(p0) + np.transpose(pc)\n", " return p\n", "\n", "def getMidline(f1, x_max, x_min, y_max, y_min,w):\n", " xvals = np.array(range(0,w))\n", " yvals = np.polyval(f1[0], xvals)\n", " line_df = pd.DataFrame(columns=['x','y'])\n", " line_df['x'] = xvals\n", " # half adjust\n", " line_df['x'] = (line_df['x']+0.5).astype('int')\n", " line_df['y'] = yvals\n", " # half adjust \n", " line_df['y'] = (line_df['y']+0.5).astype('int')\n", " line_df = line_df[line_df['y']y_min]\n", " line_df = line_df[line_df['x']>x_min]\n", " return line_df\n", "\n", "def drawImageWithLine(x,y,line_df,w,h,prefix='draw01'):\n", " line = np.zeros((h,w))\n", " line[y,x]=200\n", " line[line_df['y'],line_df['x']]=255\n", " skio.imsave(f'{prefix}.png',line)\n", "\n", "def scatterWithLine(x,y,line_df):\n", " plt.figure()\n", " plt.scatter(x,y,s=2)\n", " plt.plot(line_df['x'],line_df['y'],c='r')\n", " plt.gca().set_aspect('equal')\n", " #plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "adata.obsm['spatial']\n", "adata.obs['new_x'] = adata.obsm['spatial'][:,0]\n", "adata.obs['new_y'] = adata.obsm['spatial'][:,1]\n", "adata.obs['new_z'] = adata.obsm['spatial'][:,2]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 285 × 21579\n", " obs: 'seurat_clusters.r1.6', 'cell_number', 'hood', 'x', 'y', 'z', 'min_radius', 'max_radius', 'Batch', 'nCount_RNA', 'nFeature_RNA', 'nCount_SCT', 'nFeature_SCT', 'seurat_clusters', 'SPC_cluster', 'SPC_name', 'sample', 'new_x', 'new_y', 'new_z'\n", " obsm: 'spatial'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c33 = adata[adata.obs['SPC_cluster']=='c33'].copy()\n", "c33" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def update_np_APML(the_raw_pos, the_midline, f1):\n", " def Yinline(f1,xvals):\n", " return np.polyval(f1[0], xvals)\n", " the_result = pd.DataFrame()\n", " the_result['raw_x'] = the_raw_pos[:,0]\n", " the_result['raw_y'] = the_raw_pos[:,1]\n", " the_result['raw_yline'] = Yinline(f1,the_raw_pos[:,0])\n", "\n", " def Ytag(item):\n", " if item['raw_y']>item['raw_yline']:\n", " return 1;\n", " elif item['raw_y']" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.scatter(radata.obs['new_x'],radata.obs['new_y'],c='gray',s=1)\n", "plt.scatter(c33.obs['new_x'],c33.obs['new_y'],c='green',s=1)\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.scatter(radata.obs['new_x'],radata.obs['new_z'],c='gray',s=1)\n", "plt.scatter(c33.obs['new_x'],c33.obs['new_z'],c='green',s=1)\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 285 × 21579\n", " obs: 'seurat_clusters.r1.6', 'cell_number', 'hood', 'x', 'y', 'z', 'min_radius', 'max_radius', 'Batch', 'nCount_RNA', 'nFeature_RNA', 'nCount_SCT', 'nFeature_SCT', 'seurat_clusters', 'SPC_cluster', 'SPC_name', 'sample', 'new_x', 'new_y', 'new_z', 'AP_adj_x', 'AP_adj_y'\n", " obsm: 'spatial'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "APML_f1 = np.array([[-1.40596268e-12, 9.81619394e-09, 4.52222132e-05, -4.61221827e-01, 2.83054135e+03]])\n", "APML_midline = getMidline(APML_f1,7500, 1500, 3500, 500,8000)\n", "update_adata_APML(c33,APML_midline,APML_f1)\n", "c33" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.scatter(radata.obs['AP_adj_x'],radata.obs['AP_adj_y'],c='gray',s=1)\n", "plt.scatter(c33.obs['AP_adj_x'],c33.obs['AP_adj_y'],c='green',s=1)\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.scatter(radata.obs['AP_adj_x'],radata.obs['new_z'],c='gray',s=1)\n", "plt.scatter(c33.obs['AP_adj_x'],c33.obs['new_z'],c='green',s=1)\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\guolidong\\AppData\\Local\\Temp\\ipykernel_19712\\727444766.py:59: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n", "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n", " z = np.linalg.lstsq(X @ B, yfit)[0]\n" ] } ], "source": [ "\n", "fixx = [100 ,6000]\n", "fixy = [550,700]\n", "#f1 = polyfix(used_adata.obs['new_x'].to_list(),used_adata.obs['new_y'].to_list(),fixx,fixy,n=4)\n", "f1 = polyfix(c33.obs['AP_adj_x'].to_list(),c33.obs['new_z'].to_list(),fixx,fixy,n=2)\n", "#f1 = polyfix(slit1_data.obs['new_x'].to_list(),slit1_data.obs['new_y'].to_list(),fixx,fixy,n=4)\n", "midline = getMidline(f1, 6500, 0, 850, 0,6500)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.figure()\n", "plt.scatter(radata.obs['AP_adj_x'],radata.obs['new_z'],c='gray',s=1)\n", "plt.scatter(c33.obs['AP_adj_x'],c33.obs['new_z'],c='green',s=1)\n", "plt.plot(midline['x'],midline['y'],c='r')\n", "plt.gca().set_aspect('equal')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-1.40816034e-05, 1.11321510e-01, 5.39008665e+02]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f1" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def update_np(the_raw_pos, the_midline, f1):\n", " def Yinline(f1,xvals):\n", " return np.polyval(f1[0], xvals)\n", " the_result = pd.DataFrame()\n", " the_result['raw_x'] = the_raw_pos[:,0]\n", " the_result['raw_z'] = the_raw_pos[:,1]\n", " the_result['raw_yline'] = Yinline(f1,the_raw_pos[:,0])\n", "\n", " def Ytag(item):\n", " if item['raw_z']>item['raw_yline']:\n", " return 1;\n", " elif item['raw_z']" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "import matplotlib.pyplot as plt\n", "plt.figure()\n", "plt.scatter(radata.obs['AP_adj_x'],radata.obs['new_z'],c='gray',s=3)\n", "plt.scatter(c33.obs['AP_adj_x'],c33.obs['new_z'],c='green',s=3)\n", "plt.gca().set_aspect('equal')\n", "plt.scatter(fixx,fixy,s=25,c='cyan' ,marker='^')\n", "#plt.plot(line_df['x'],line_df['y'])\n", "plt.plot(midline['x'],midline['y'],c='cyan')\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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KjQ0VDcK3xtVVVWpvXv3qr179ypA/elPf1J79+5VhYWFSqmmaYShoaHqww8/VPv371e33nqry2mE48ePVzt37lTbtm1Tw4cP100jrKioUFFRUerOO+9UOTk5au3atSooKKhHTiNcuHChCgkJUVu2bNFNN71w4YJWZsGCBSouLk5t2rRJZWVlqbS0NJWWlqatt083/cEPfqD27dunNmzYoPr16+dyuukjjzyicnNz1SuvvNIjp5suXbpUbd26VeXn56v9+/erpUuXKoPBoP73v/8ppXwrFu44zmZSyrdi8vDDD6stW7ao/Px8lZmZqWbMmKEiIiJUaWmpUsq3YqFU03R9s9ms/vCHP6jDhw+rt99+WwUFBal//vOfWhlf+07tLpLMXIKVK1equLg4ZbFY1KRJk9SOHTs8XaVLtnnzZgW0+Juenq6UappK+NRTT6moqCjl7++vpk+frvLy8nT7OHv2rLr99ttV7969VXBwsLrnnntUVVWVrsy3336rrr76auXv768GDBignnnmmcvVxA5xFQtAvfXWW1qZmpoadf/996uwsDAVFBSkfvzjH6tTp07p9lNQUKBuvvlmFRgYqCIiItTDDz+s6uvrdWU2b96sxo0bpywWixoyZIjuGD3FL37xCxUfH68sFovq16+fmj59upbIKOVbsXDHOZnxpZjMmzdP9e/fX1ksFjVgwAA1b9483TNVfCkWdv/973/VmDFjlL+/vxo5cqR6/fXXdet97Tu1uxiUUsozfUJCCCGEEJdOxswIIYQQwqtJMiOEEEIIrybJjBBCCCG8miQzQgghhPBqkswIIYQQwqtJMiOEEEIIrybJjBBCCCG8miQzQgghhPBqkswIIYQQwqtJMiOEEEIIrybJjBBCCCG82v8HKXapzCyREisAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.figure()\n", "plt.scatter(radata.obs['DV_adj_x'],radata.obs['DV_adj_z'],c='gray',s=3)\n", "plt.scatter(c33.obs['DV_adj_x'],c33.obs['DV_adj_z'],c='green',s=3)\n", "plt.gca().set_aspect('equal')\n", "plt.scatter(fixed_ret['nx'],fixed_ret['ny'],s=25,c='cyan' ,marker='^')\n", "plt.plot(mid_ret['nx'],mid_ret['ny'],c='cyan')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "radata.obsm['spatial_DVadj'] = radata.obs[['DV_adj_x','AP_adj_y','DV_adj_z']].to_numpy()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "radata.write(f'{prefix}.apdvadj.h5ad',compression='gzip')" ] } ], "metadata": { "kernelspec": { "display_name": "stereopy1", "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.16" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }