-dao-chu-SingleR-xu-yao-de-shu-ju.html 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744
  1. <!DOCTYPE html>
  2. <html lang="en" data-default-color-scheme=auto>
  3. <head><!-- hexo injector head_begin start -->
  4. <script defer src="https://api.limour.top/vue/0d2f95c1-755d-436b-adf8-eee12a80ed32/script.js"></script>
  5. <!-- hexo injector head_begin end -->
  6. <meta charset="UTF-8">
  7. <link rel="apple-touch-icon" sizes="76x76" href="https://img.limour.top/2023/08/29/64ee07361815a.webp">
  8. <link rel="icon" href="https://img.limour.top/2023/08/29/64ee07361815a.webp">
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  10. <meta http-equiv="x-ua-compatible" content="ie=edge">
  11. <meta name="theme-color" content="#2f4154">
  12. <meta name="author" content="Limour">
  13. <meta name="keywords" content="">
  14. <meta name="description" content="loom文件使用记录 随着单细胞数据量的增长,计算要求成指数增长,当数据量大于10万个细胞的时候,seurat包分析就显得非常有压力了,因为在实时内存中储存数据就变得非常困难,HDF5数据格式提供了高效的磁盘存储,而不是在内存中存储数据,这就将分析扩展到大规模数据集,甚至可以达到大于100万细胞的级别 ,Linnarson实验室开发了一种基于hdf5的数据结构,loom,可以方便地存储单细胞基因组">
  15. <title>【迁移】导出SingleR需要的数据 - Limour&#39;s Blog</title>
  16. <link rel="stylesheet" href="https://jscdn.limour.top/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" />
  17. <link rel="stylesheet" href="https://jscdn.limour.top/npm/github-markdown-css@4.0.0/github-markdown.min.css" />
  18. <link rel="stylesheet" href="https://jscdn.limour.top/npm/hint.css@2.7.0/hint.min.css" />
  19. <!-- 主题依赖的图标库,不要自行修改 -->
  20. <!-- Do not modify the link that theme dependent icons -->
  21. <link rel="stylesheet" href="//at.alicdn.com/t/c/font_1749284_5i9bdhy70f8.css">
  22. <link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_lbnruvf0jn.css">
  23. <link rel="stylesheet" href="/css/main.css" />
  24. <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" />
  25. <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" />
  26. <link rel="stylesheet" href="/theme-inject/custom.css">
  27. <link rel="stylesheet" href="/theme-inject/iconfont.css">
  28. <script id="fluid-configs">
  29. var Fluid = window.Fluid || {};
  30. Fluid.ctx = Object.assign({}, Fluid.ctx)
  31. var CONFIG = {"hostname":"hexo.limour.top","root":"/","version":"1.9.8","typing":{"enable":false,"typeSpeed":70,"cursorChar":"_","loop":false,"scope":[]},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":"§"},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":false,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":true,"loading_img":"https://jscdn.limour.top/gh/Limour-dev/Sakurairo_Vision/load_svg/inload.svg","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"follow_dnt":true,"baidu":null,"google":{"measurement_id":null},"tencent":{"sid":null,"cid":null},"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname","ignore_local":false},"umami":{"src":null,"website_id":null,"domains":null,"start_time":"2024-01-01T00:00:00.000Z","token":null,"api_server":null},"woyaola":null,"cnzz":null},"search_path":"/local-search.xml","include_content_in_search":true};
  32. if (CONFIG.web_analytics.follow_dnt) {
  33. var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
  34. Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
  35. }
  36. </script>
  37. <script src="/js/utils.js" ></script>
  38. <script src="/js/color-schema.js" ></script>
  39. <link rel="canonical" href="https://hexo.limour.top/-dao-chu-SingleR-xu-yao-de-shu-ju"/>
  40. <meta name="generator" content="Hexo 7.1.1"><link rel="alternate" href="/atom.xml" title="Limour's Blog" type="application/atom+xml">
  41. <link rel="alternate" href="/rss2.xml" title="Limour's Blog" type="application/rss+xml">
  42. </head>
  43. <body>
  44. <header>
  45. <div class="header-inner" style="height: 70vh;">
  46. <nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar">
  47. <div class="container">
  48. <a class="navbar-brand" href="/">
  49. <strong>Limour&#39;s Blog</strong>
  50. </a>
  51. <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
  52. data-target="#navbarSupportedContent"
  53. aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  54. <div class="animated-icon"><span></span><span></span><span></span></div>
  55. </button>
  56. <!-- Collapsible content -->
  57. <div class="collapse navbar-collapse" id="navbarSupportedContent">
  58. <ul class="navbar-nav ml-auto text-center">
  59. <li class="nav-item">
  60. <a class="nav-link" href="https://hexo.limour.top/" target="_self">
  61. <i class="iconfont icon-home-fill"></i>
  62. <span>Home</span>
  63. </a>
  64. </li>
  65. <li class="nav-item">
  66. <a class="nav-link" href="/archives/" target="_self">
  67. <i class="iconfont icon-archive-fill"></i>
  68. <span>Archive1</span>
  69. </a>
  70. </li>
  71. <li class="nav-item">
  72. <a class="nav-link" href="https://occdn.limour.top/archives/" target="_self">
  73. <i class="iconfont icon-archive-fill"></i>
  74. <span>Archive2</span>
  75. </a>
  76. </li>
  77. <li class="nav-item">
  78. <a class="nav-link" href="https://b.limour.top/archives/" target="_self">
  79. <i class="iconfont icon-archive-fill"></i>
  80. <span>Archive3</span>
  81. </a>
  82. </li>
  83. <li class="nav-item">
  84. <a class="nav-link" href="https://od.limour.top/" target="_self">
  85. <i class="iconfont icon-onedrive"></i>
  86. <span>Alist</span>
  87. </a>
  88. </li>
  89. <li class="nav-item">
  90. <a class="nav-link" href="https://orcid.org/0000-0001-8897-1685" target="_self">
  91. <i class="iconfont icon-orcid"></i>
  92. <span>Orcid</span>
  93. </a>
  94. </li>
  95. <li class="nav-item">
  96. <a class="nav-link" href="/links/" target="_self">
  97. <i class="iconfont icon-link-fill"></i>
  98. <span>Links</span>
  99. </a>
  100. </li>
  101. <li class="nav-item">
  102. <a class="nav-link" href="/atom.xml" target="_self">
  103. <i class="iconfont icon-rss"></i>
  104. <span>RSS</span>
  105. </a>
  106. </li>
  107. <li class="nav-item" id="search-btn">
  108. <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
  109. <i class="iconfont icon-search"></i>
  110. </a>
  111. </li>
  112. <li class="nav-item" id="color-toggle-btn">
  113. <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">
  114. <i class="iconfont icon-dark" id="color-toggle-icon"></i>
  115. </a>
  116. </li>
  117. </ul>
  118. </div>
  119. </div>
  120. </nav>
  121. <div id="banner" class="banner" parallax=true
  122. style="background: url('https://img.limour.top/2023/08/29/64ee08e108638.webp') no-repeat center center; background-size: cover;">
  123. <div class="full-bg-img">
  124. <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
  125. <div class="banner-text text-center fade-in-up">
  126. <div class="h2">
  127. <span id="subtitle">【迁移】导出SingleR需要的数据</span>
  128. </div>
  129. <div class="mt-3">
  130. <span class="post-meta mr-2">
  131. <i class="iconfont icon-author" aria-hidden="true"></i>
  132. Limour
  133. </span>
  134. <span class="post-meta">
  135. <i class="iconfont icon-date-fill" aria-hidden="true"></i>
  136. <time datetime="2022-10-04 17:20" pubdate>
  137. October 4, 2022 pm
  138. </time>
  139. </span>
  140. </div>
  141. <div class="mt-1">
  142. <span class="post-meta mr-2">
  143. <i class="iconfont icon-chart"></i>
  144. 732 words
  145. </span>
  146. <span class="post-meta mr-2">
  147. <i class="iconfont icon-clock-fill"></i>
  148. 7 mins
  149. </span>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. </header>
  157. <main>
  158. <div class="container-fluid nopadding-x">
  159. <div class="row nomargin-x">
  160. <div class="side-col d-none d-lg-block col-lg-2">
  161. </div>
  162. <div class="col-lg-8 nopadding-x-md">
  163. <div class="container nopadding-x-md" id="board-ctn">
  164. <div id="board">
  165. <article class="post-content mx-auto">
  166. <h1 id="seo-header">【迁移】导出SingleR需要的数据</h1>
  167. <p id="updated-time" class="note note-info" style="">
  168. Last updated on March 19, 2024 pm
  169. </p>
  170. <div class="markdown-body">
  171. <h2 id="loom文件使用记录">loom文件使用记录</h2>
  172. <p>随着单细胞数据量的增长,计算要求成指数增长,当数据量大于10万个细胞的时候,seurat包分析就显得非常有压力了,因为在实时内存中储存数据就变得非常困难,HDF5数据格式提供了高效的磁盘存储,而不是在内存中存储数据,这就将分析扩展到大规模数据集,甚至可以达到大于100万细胞的级别 ,Linnarson实验室开发了一种基于hdf5的数据结构,loom,可以方便地存储单细胞基因组数据集和元数据。他们发布了一个名为loompy的Python API来与loom文件交互,而<a href="https://hexo.limour.top/go/#aHR0cHM6Ly9zYXRpamFsYWIub3JnL2xvb21yL2xvb21yX3R1dG9yaWFs" rel="noopener external nofollow noreferrer">loomR</a>能基于R的与loom交互(<a href="https://hexo.limour.top/go/#aHR0cHM6Ly93d3cuamlhbnNodS5jb20vcC83MDY3ZTBlYzZlZDg=" rel="noopener external nofollow noreferrer">Merlin_cd6c</a>)</p>
  173. <h3 id="安装补充包">安装补充包</h3>
  174. <ul>
  175. <li>
  176. <p><a href="/ji-yu-NMF-fen-jie-de-jiang-wei-ju-lei">conda activate seurat</a></p>
  177. </li>
  178. <li>
  179. <p>conda install -c conda-forge r-hdf5r -y</p>
  180. </li>
  181. <li>
  182. <p># conda install -c bioconda r-loom=0.2.0.2 -y</p>
  183. </li>
  184. <li>
  185. <p>wget <a href="https://hexo.limour.top/go/#aHR0cHM6Ly9naXRodWIuY29tL21vamF2ZWF6dXJlL2xvb21SL2FyY2hpdmUvcmVmcy9oZWFkcy9kZXZlbG9wLnppcA==" rel="noopener external nofollow noreferrer">https://github.com/mojaveazure/loomR/archive/refs/heads/develop.zip</a> -O loomR-develop.zip</p>
  186. </li>
  187. <li>
  188. <p>devtools::install_local(‘loomR-develop.zip’)</p>
  189. </li>
  190. <li>
  191. <p>conda install -c conda-forge binutils_impl_linux-64 -y</p>
  192. </li>
  193. <li>
  194. <p>BiocManager::install(“hdf5r”)</p>
  195. </li>
  196. <li>
  197. <p>conda create -n loom -c conda-forge loompy=3.0.6 -y</p>
  198. </li>
  199. <li>
  200. <p>conda activate loom</p>
  201. </li>
  202. </ul>
  203. <h3 id="下载数据">下载数据</h3>
  204. <p><a href="https://hexo.limour.top/go/#aHR0cHM6Ly93d3cuaHVtYW5jZWxsYXRsYXMub3JnLw==" rel="noopener external nofollow noreferrer">The Human Cell Atlas</a> is an international collaborative consortium that charts the cell types in the healthy body, across time from development to adulthood, and eventually to old age. This enormous undertaking, larger even than the Human Genome Project, will transform our understanding of the 37.2 trillion cells in the human body.</p>
  205. <p><a href="https://hexo.limour.top/go/#aHR0cHM6Ly9kYXRhLmh1bWFuY2VsbGF0bGFzLm9yZy8=" rel="noopener external nofollow noreferrer">The HCA Data Portal</a> stores and provides single-cell data contributed by labs around the world. Anyone can contribute data, find data, or access community tools and applications.</p>
  206. <ul>
  207. <li><code>wget 'xxx' -O ProstateCellAtlas-human-prostate-gland-10xv2.loom</code></li>
  208. </ul>
  209. <p>类似的网站:<a href="https://hexo.limour.top/go/#aHR0cHM6Ly9jZWxseGdlbmUuY3ppc2NpZW5jZS5jb20v" rel="noopener external nofollow noreferrer">CZ CELLxGENE</a>;可以<a href="https://hexo.limour.top/go/#aHR0cHM6Ly9jZWxseGdlbmUuY3ppc2NpZW5jZS5jb20vZGF0YXNldHM=" rel="noopener external nofollow noreferrer">检索需要的数据集</a>,下载rds格式的文件</p>
  210. <ul>
  211. <li><code>curl -o local.rds &quot;xxx&quot;</code></li>
  212. <li>mv local.rds cellxgene_Human_prostate.rds</li>
  213. </ul>
  214. <h3 id="使用记录">使用记录</h3>
  215. <p>公共的集群是真难用,一堆包装半天装不上,磁盘IO慢的一批。。。。。</p>
  216. <figure class="highlight r"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs R">conda activate seurat<br>.libPaths<span class="hljs-punctuation">(</span><span class="hljs-string">&#x27;&#x27;</span><span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> loomR<span class="hljs-operator">::</span>connect<span class="hljs-punctuation">(</span>filename <span class="hljs-operator">=</span> <span class="hljs-string">&quot;./HumanCellAtlas/ProstateCellAtlas/ProstateCellAtlas-human-prostate-gland-10xv2.loom&quot;</span><span class="hljs-punctuation">,</span> mode <span class="hljs-operator">=</span> <span class="hljs-string">&quot;r&quot;</span><span class="hljs-punctuation">,</span> skip.validate <span class="hljs-operator">=</span> <span class="hljs-built_in">T</span><span class="hljs-punctuation">)</span><br>mat <span class="hljs-operator">&lt;-</span> sce<span class="hljs-punctuation">[[</span><span class="hljs-string">&quot;matrix&quot;</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">[</span><span class="hljs-punctuation">,</span><span class="hljs-punctuation">]</span><br>gene <span class="hljs-operator">&lt;-</span> sce<span class="hljs-operator">$</span>row.attrs<span class="hljs-operator">$</span>Gene<span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><br><span class="hljs-comment"># barcode &lt;- sce$col.attrs$CellID[]</span><br>barcode <span class="hljs-operator">&lt;-</span> sce<span class="hljs-operator">$</span>col.attrs<span class="hljs-operator">$</span>cell_names<span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><br>mat <span class="hljs-operator">&lt;-</span> t<span class="hljs-punctuation">(</span>mat<span class="hljs-punctuation">)</span><br>colnames<span class="hljs-punctuation">(</span>mat<span class="hljs-punctuation">)</span><span class="hljs-operator">=</span> barcode<br>rownames<span class="hljs-punctuation">(</span>mat<span class="hljs-punctuation">)</span><span class="hljs-operator">=</span> gene<br>sce<span class="hljs-operator">$</span>close_all<span class="hljs-punctuation">(</span><span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>CreateSeuratObject<span class="hljs-punctuation">(</span>counts <span class="hljs-operator">=</span> mat<span class="hljs-punctuation">,</span> project <span class="hljs-operator">=</span> <span class="hljs-string">&#x27;prostate&#x27;</span><span class="hljs-punctuation">,</span> min.cells <span class="hljs-operator">=</span> <span class="hljs-number">3</span><span class="hljs-punctuation">,</span> min.features <span class="hljs-operator">=</span> <span class="hljs-number">200</span><span class="hljs-punctuation">)</span><br>rm<span class="hljs-punctuation">(</span>mat<span class="hljs-punctuation">)</span><br>gc<span class="hljs-punctuation">(</span><span class="hljs-punctuation">)</span><br><span class="hljs-comment"># used (Mb) gc trigger (Mb) max used (Mb)</span><br><span class="hljs-comment"># Ncells 3611333 192.9 6136950 327.8 6136950 327.8</span><br><span class="hljs-comment"># Vcells 287451723 2193.1 45703419996 348689.5 57126196661 435838.3</span><br>sce<br><span class="hljs-comment"># An object of class Seurat </span><br><span class="hljs-comment"># 39879 features across 128673 samples within 1 assay </span><br><span class="hljs-comment"># Active assay: RNA (39879 features, 0 variable features)</span><br></code></pre></td></tr></table></figure>
  217. <h2 id="构造Pseudo-bulk的表达量矩阵加速SingleR运行">构造Pseudo-bulk的表达量矩阵加速SingleR运行</h2>
  218. <p><a href="https://hexo.limour.top/go/#aHR0cHM6Ly93d3cuaHVtYW5jZWxsYXRsYXMub3JnLw==" rel="noopener external nofollow noreferrer">The Human Cell Atlas</a> 和 <a href="https://hexo.limour.top/go/#aHR0cHM6Ly9jZWxseGdlbmUuY3ppc2NpZW5jZS5jb20v" rel="noopener external nofollow noreferrer">CZ CELLxGENE</a> 的单细胞数据集有些metadata里有细胞类型注释。我们使用前面下载的数据集来构建一个SingleR的参考集。</p>
  219. <figure class="highlight r"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><code class="hljs R">sce <span class="hljs-operator">&lt;-</span> readRDS<span class="hljs-punctuation">(</span><span class="hljs-string">&#x27;~/HumanCellAtlas/ProstateCellAtlas/cellxgene_Human_prostate.rds&#x27;</span><span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>tissue<span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> SeuratObject<span class="hljs-operator">::</span>UpdateSeuratObject<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">)</span><br>saveRDS<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">@</span>meta.data<span class="hljs-punctuation">,</span> <span class="hljs-string">&#x27;meta.rds&#x27;</span><span class="hljs-punctuation">)</span><br>sce<span class="hljs-operator">@</span>assays<span class="hljs-operator">$</span>RNA<span class="hljs-operator">@</span>counts<br>umi <span class="hljs-operator">&lt;-</span> sce<span class="hljs-operator">@</span>assays<span class="hljs-operator">$</span>RNA<span class="hljs-operator">@</span>counts<br>sce <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>CreateSeuratObject<span class="hljs-punctuation">(</span>counts <span class="hljs-operator">=</span> umi<span class="hljs-punctuation">,</span> project <span class="hljs-operator">=</span> <span class="hljs-string">&#x27;prostate&#x27;</span><span class="hljs-punctuation">,</span> min.cells <span class="hljs-operator">=</span> <span class="hljs-number">3</span><span class="hljs-punctuation">,</span> min.features <span class="hljs-operator">=</span> <span class="hljs-number">200</span><span class="hljs-punctuation">)</span><br>sce<span class="hljs-operator">@</span>meta.data <span class="hljs-operator">&lt;-</span> readRDS<span class="hljs-punctuation">(</span><span class="hljs-string">&#x27;meta.rds&#x27;</span><span class="hljs-punctuation">)</span><br><span class="hljs-built_in">all</span><span class="hljs-punctuation">(</span>colnames<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">)</span> <span class="hljs-operator">==</span> rownames<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">@</span>meta.data<span class="hljs-punctuation">)</span><span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> subset<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">,</span> tissue <span class="hljs-operator">==</span> <span class="hljs-string">&#x27;prostate gland&#x27;</span><span class="hljs-punctuation">)</span><br>gc<span class="hljs-punctuation">(</span><span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Broad cell type`<span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Granular cell type`<span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Granular cell type`<span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Tissue composition`<span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Cell types level 2`<span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Cell types level 3`<span class="hljs-punctuation">)</span><br>sce<span class="hljs-operator">$</span>cell_t_1 <span class="hljs-operator">&lt;-</span> droplevels<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Tissue composition`<span class="hljs-punctuation">)</span><br><span class="hljs-built_in">all</span><span class="hljs-punctuation">(</span><span class="hljs-built_in">as.character</span><span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>cell_t_1<span class="hljs-punctuation">)</span> <span class="hljs-operator">==</span> <span class="hljs-built_in">as.character</span><span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Tissue composition`<span class="hljs-punctuation">)</span><span class="hljs-punctuation">)</span><br>sce<span class="hljs-operator">$</span>cell_t_2 <span class="hljs-operator">&lt;-</span> droplevels<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Cell types level 2`<span class="hljs-punctuation">)</span><br>sce<span class="hljs-operator">$</span>cell_t_3 <span class="hljs-operator">&lt;-</span> droplevels<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>`Cell types level 3`<span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>NormalizeData<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">)</span><br>ref <span class="hljs-operator">&lt;-</span> <span class="hljs-built_in">list</span><span class="hljs-punctuation">(</span><span class="hljs-punctuation">)</span><br>ref<span class="hljs-operator">$</span>cell_t_1 <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>AverageExpression<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">,</span><br> group.by <span class="hljs-operator">=</span> <span class="hljs-string">&quot;cell_t_1&quot;</span><span class="hljs-punctuation">,</span><br> assays <span class="hljs-operator">=</span> <span class="hljs-string">&quot;RNA&quot;</span><span class="hljs-punctuation">)</span><span class="hljs-operator">$</span>RNA<br>ref<span class="hljs-operator">$</span>cell_t_2 <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>AverageExpression<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">,</span><br> group.by <span class="hljs-operator">=</span> <span class="hljs-string">&quot;cell_t_2&quot;</span><span class="hljs-punctuation">,</span><br> assays <span class="hljs-operator">=</span> <span class="hljs-string">&quot;RNA&quot;</span><span class="hljs-punctuation">)</span><span class="hljs-operator">$</span>RNA<br>ref<span class="hljs-operator">$</span>cell_t_3 <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>AverageExpression<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">,</span><br> group.by <span class="hljs-operator">=</span> <span class="hljs-string">&quot;cell_t_3&quot;</span><span class="hljs-punctuation">,</span><br> assays <span class="hljs-operator">=</span> <span class="hljs-string">&quot;RNA&quot;</span><span class="hljs-punctuation">)</span><span class="hljs-operator">$</span>RNA<br>saveRDS<span class="hljs-punctuation">(</span>ref<span class="hljs-punctuation">,</span> <span class="hljs-string">&#x27;singleR_prostate.rds&#x27;</span><span class="hljs-punctuation">)</span><br></code></pre></td></tr></table></figure>
  220. <h2 id="导出SingleR需要的数据">导出SingleR需要的数据</h2>
  221. <figure class="highlight r"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs R">tp_samples <span class="hljs-operator">&lt;-</span> list.files<span class="hljs-punctuation">(</span><span class="hljs-string">&#x27;~/GEO/GSE193337&#x27;</span><span class="hljs-punctuation">)</span><br>tp_dir <span class="hljs-operator">&lt;-</span> file.path<span class="hljs-punctuation">(</span><span class="hljs-string">&#x27;~/GEO/GSE193337&#x27;</span><span class="hljs-punctuation">,</span> tp_samples<span class="hljs-punctuation">)</span><br><span class="hljs-built_in">names</span><span class="hljs-punctuation">(</span>tp_dir<span class="hljs-punctuation">)</span> <span class="hljs-operator">&lt;-</span> tp_samples<br>counts <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>Read10X<span class="hljs-punctuation">(</span>data.dir <span class="hljs-operator">=</span> tp_dir<span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>CreateSeuratObject<span class="hljs-punctuation">(</span>counts<span class="hljs-punctuation">,</span> project <span class="hljs-operator">=</span> <span class="hljs-string">&#x27;prostate&#x27;</span><span class="hljs-punctuation">,</span><br> min.cells <span class="hljs-operator">=</span> <span class="hljs-number">3</span><span class="hljs-punctuation">,</span> min.features <span class="hljs-operator">=</span> <span class="hljs-number">200</span><span class="hljs-punctuation">)</span><br>rm<span class="hljs-punctuation">(</span>counts<span class="hljs-punctuation">)</span><br>gc<span class="hljs-punctuation">(</span><span class="hljs-punctuation">)</span><br>table<span class="hljs-punctuation">(</span>sce<span class="hljs-operator">$</span>orig.ident<span class="hljs-punctuation">)</span><br>sce <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>NormalizeData<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">)</span><br>logumi <span class="hljs-operator">&lt;-</span> Seurat<span class="hljs-operator">::</span>GetAssayData<span class="hljs-punctuation">(</span>sce<span class="hljs-punctuation">,</span> slot<span class="hljs-operator">=</span><span class="hljs-string">&quot;data&quot;</span><span class="hljs-punctuation">)</span><br>saveRDS<span class="hljs-punctuation">(</span>logumi<span class="hljs-punctuation">,</span> <span class="hljs-string">&#x27;logumi.rds&#x27;</span><span class="hljs-punctuation">)</span><br></code></pre></td></tr></table></figure>
  222. </div>
  223. <hr/>
  224. <div>
  225. <div class="post-metas my-3">
  226. <div class="post-meta">
  227. <i class="iconfont icon-tags"></i>
  228. <a href="/tags/singler/" class="print-no-link">#SingleR</a>
  229. </div>
  230. </div>
  231. <div class="license-box my-3">
  232. <div class="license-title">
  233. <div>【迁移】导出SingleR需要的数据</div>
  234. <div>https://hexo.limour.top/-dao-chu-SingleR-xu-yao-de-shu-ju</div>
  235. </div>
  236. <div class="license-meta">
  237. <div class="license-meta-item">
  238. <div>Author</div>
  239. <div>Limour</div>
  240. </div>
  241. <div class="license-meta-item license-meta-date">
  242. <div>Posted on</div>
  243. <div>October 4, 2022</div>
  244. </div>
  245. <div class="license-meta-item license-meta-date">
  246. <div>Updated on</div>
  247. <div>March 19, 2024</div>
  248. </div>
  249. <div class="license-meta-item">
  250. <div>Licensed under</div>
  251. <div>
  252. <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  253. <span class="hint--top hint--rounded" aria-label="BY - Attribution">
  254. <i class="iconfont icon-cc-by"></i>
  255. </span>
  256. </a>
  257. <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  258. <span class="hint--top hint--rounded" aria-label="NC - Non-commercial">
  259. <i class="iconfont icon-cc-nc"></i>
  260. </span>
  261. </a>
  262. <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  263. <span class="hint--top hint--rounded" aria-label="SA - Share-alike">
  264. <i class="iconfont icon-cc-sa"></i>
  265. </span>
  266. </a>
  267. </div>
  268. </div>
  269. </div>
  270. <div class="license-icon iconfont"></div>
  271. </div>
  272. <div class="post-prevnext my-3">
  273. <article class="post-prev col-6">
  274. <a href="/19-ji-lin-ba-yao-li-di-yi-ci-xiao-ce" title="【迁移】19级临八药理第一次小测">
  275. <i class="iconfont icon-arrowleft"></i>
  276. <span class="hidden-mobile">【迁移】19级临八药理第一次小测</span>
  277. <span class="visible-mobile">Previous</span>
  278. </a>
  279. </article>
  280. <article class="post-next col-6">
  281. <a href="/gei-VMware-xu-ni-ji-jia-ying-pan" title="【迁移】给VMware虚拟机加硬盘">
  282. <span class="hidden-mobile">【迁移】给VMware虚拟机加硬盘</span>
  283. <span class="visible-mobile">Next</span>
  284. <i class="iconfont icon-arrowright"></i>
  285. </a>
  286. </article>
  287. </div>
  288. </div>
  289. <article id="comments" lazyload>
  290. <div id="waline"></div>
  291. <script type="text/javascript">
  292. Fluid.utils.loadComments('#waline', function() {
  293. Fluid.utils.createCssLink('https://cdn.staticfile.org/waline/2.15.5/waline.css')
  294. Fluid.utils.createScript('https://cdn.staticfile.org/waline/2.15.5/waline.js', function() {
  295. var options = Object.assign(
  296. {"serverURL":"https://comments.limour.top","path":"window.location.pathname","meta":["nick","mail","link"],"requiredMeta":["nick"],"lang":"zh-CN","emoji":["https://jscdn.limour.top/gh/walinejs/emojis/weibo"],"dark":"html[data-user-color-scheme=\"dark\"]","wordLimit":0,"pageSize":10},
  297. {
  298. el: '#waline',
  299. path: window.location.pathname
  300. }
  301. )
  302. Waline.init(options);
  303. Fluid.utils.waitElementVisible('#waline .vcontent', () => {
  304. var imgSelector = '#waline .vcontent img:not(.vemoji)';
  305. Fluid.plugins.imageCaption(imgSelector);
  306. Fluid.plugins.fancyBox(imgSelector);
  307. })
  308. });
  309. });
  310. </script>
  311. <noscript>Please enable JavaScript to view the comments</noscript>
  312. </article>
  313. </article>
  314. </div>
  315. </div>
  316. </div>
  317. <div class="side-col d-none d-lg-block col-lg-2">
  318. <aside class="sidebar" style="margin-left: -1rem">
  319. <div id="toc">
  320. <p class="toc-header">
  321. <i class="iconfont icon-list"></i>
  322. <span>Table of Contents</span>
  323. </p>
  324. <div class="toc-body" id="toc-body"></div>
  325. </div>
  326. </aside>
  327. </div>
  328. </div>
  329. </div>
  330. <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
  331. <i class="iconfont icon-arrowup" aria-hidden="true"></i>
  332. </a>
  333. <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
  334. aria-hidden="true">
  335. <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
  336. <div class="modal-content">
  337. <div class="modal-header text-center">
  338. <h4 class="modal-title w-100 font-weight-bold">Search</h4>
  339. <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
  340. <span aria-hidden="true">&times;</span>
  341. </button>
  342. </div>
  343. <div class="modal-body mx-3">
  344. <div class="md-form mb-5">
  345. <input type="text" id="local-search-input" class="form-control validate">
  346. <label data-error="x" data-success="v" for="local-search-input">Keyword</label>
  347. </div>
  348. <div class="list-group" id="local-search-result"></div>
  349. </div>
  350. </div>
  351. </div>
  352. </div>
  353. </main>
  354. <footer>
  355. <div class="footer-inner">
  356. <div class="footer-content">
  357. <a target="_blank" rel="nofollow noopener" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43130202000203"><img src="https://img.limour.top/2023/08/27/64eadeb81d6a0.webp" srcset="https://jscdn.limour.top/gh/Limour-dev/Sakurairo_Vision/load_svg/inload.svg" lazyload>湘公网安备43130202000203号 </a> <a target="_blank" rel="nofollow noopener" href="https://beian.miit.gov.cn/">湘ICP备20008299号 </a> <a target="_blank" rel="nofollow noopener" href="https://icp.gov.moe/?keyword=20210128">萌ICP备20210128号</a> <br> <a href="https://www.foreverblog.cn/" target="_blank"> <img src="https://img.foreverblog.cn/logo_en_default.png" srcset="https://jscdn.limour.top/gh/Limour-dev/Sakurairo_Vision/load_svg/inload.svg" lazyload alt="" style="width:auto;height:24px"> </a> <br> <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/limour-blog/limour-blog.github.io" target="_blank" rel="nofollow noopener"><span>SRC</span></a> <i class="iconfont icon-love"></i> <a href="https://web.archive.org/web/20231130095837/https://effectiveacceleration.tech/" target="_blank" rel="nofollow noopener"><span>e/Acc</span></a>
  358. </div>
  359. </div>
  360. </footer>
  361. <!-- Scripts -->
  362. <script src="https://jscdn.limour.top/npm/nprogress@0.2.0/nprogress.min.js" ></script>
  363. <link rel="stylesheet" href="https://jscdn.limour.top/npm/nprogress@0.2.0/nprogress.min.css" />
  364. <script>
  365. NProgress.configure({"showSpinner":false,"trickleSpeed":100})
  366. NProgress.start()
  367. window.addEventListener('load', function() {
  368. NProgress.done();
  369. })
  370. </script>
  371. <script src="https://jscdn.limour.top/npm/jquery@3.6.4/dist/jquery.min.js" ></script>
  372. <script src="https://jscdn.limour.top/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" ></script>
  373. <script src="/js/events.js" ></script>
  374. <script src="/js/plugins.js" ></script>
  375. <script src="/js/img-lazyload.js" ></script>
  376. <script>
  377. Fluid.utils.createScript('https://jscdn.limour.top/npm/tocbot@4.20.1/dist/tocbot.min.js', function() {
  378. var toc = jQuery('#toc');
  379. if (toc.length === 0 || !window.tocbot) { return; }
  380. var boardCtn = jQuery('#board-ctn');
  381. var boardTop = boardCtn.offset().top;
  382. window.tocbot.init(Object.assign({
  383. tocSelector : '#toc-body',
  384. contentSelector : '.markdown-body',
  385. linkClass : 'tocbot-link',
  386. activeLinkClass : 'tocbot-active-link',
  387. listClass : 'tocbot-list',
  388. isCollapsedClass: 'tocbot-is-collapsed',
  389. collapsibleClass: 'tocbot-is-collapsible',
  390. scrollSmooth : true,
  391. includeTitleTags: true,
  392. headingsOffset : -boardTop,
  393. }, CONFIG.toc));
  394. if (toc.find('.toc-list-item').length > 0) {
  395. toc.css('visibility', 'visible');
  396. }
  397. Fluid.events.registerRefreshCallback(function() {
  398. if ('tocbot' in window) {
  399. tocbot.refresh();
  400. var toc = jQuery('#toc');
  401. if (toc.length === 0 || !tocbot) {
  402. return;
  403. }
  404. if (toc.find('.toc-list-item').length > 0) {
  405. toc.css('visibility', 'visible');
  406. }
  407. }
  408. });
  409. });
  410. </script>
  411. <script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>
  412. <script>Fluid.plugins.codeWidget();</script>
  413. <script>
  414. Fluid.utils.createScript('https://jscdn.limour.top/npm/anchor-js@4.3.1/anchor.min.js', function() {
  415. window.anchors.options = {
  416. placement: CONFIG.anchorjs.placement,
  417. visible : CONFIG.anchorjs.visible
  418. };
  419. if (CONFIG.anchorjs.icon) {
  420. window.anchors.options.icon = CONFIG.anchorjs.icon;
  421. }
  422. var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
  423. var res = [];
  424. for (var item of el) {
  425. res.push('.markdown-body > ' + item.trim());
  426. }
  427. if (CONFIG.anchorjs.placement === 'left') {
  428. window.anchors.options.class = 'anchorjs-link-left';
  429. }
  430. window.anchors.add(res.join(', '));
  431. Fluid.events.registerRefreshCallback(function() {
  432. if ('anchors' in window) {
  433. anchors.removeAll();
  434. var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
  435. var res = [];
  436. for (var item of el) {
  437. res.push('.markdown-body > ' + item.trim());
  438. }
  439. if (CONFIG.anchorjs.placement === 'left') {
  440. anchors.options.class = 'anchorjs-link-left';
  441. }
  442. anchors.add(res.join(', '));
  443. }
  444. });
  445. });
  446. </script>
  447. <script>Fluid.plugins.imageCaption();</script>
  448. <script src="/js/local-search.js" ></script>
  449. <!-- 主题的启动项,将它保持在最底部 -->
  450. <!-- the boot of the theme, keep it at the bottom -->
  451. <script src="/js/boot.js" ></script>
  452. <noscript>
  453. <div class="noscript-warning">Blog works best with JavaScript enabled</div>
  454. </noscript>
  455. <!-- hexo injector body_end start -->
  456. <script defer src="/theme-inject/timeliness.js"></script>
  457. <!-- hexo injector body_end end --></body>
  458. </html>