<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>R Markdown on TPOW Lab</title><link>https://tpow-001.netlify.app/tags/r-markdown/</link><description>Recent content in R Markdown on TPOW Lab</description><generator>Hugo</generator><language>en</language><copyright>Copyright &amp;copy; 2025-2026 TPOW-001. All Rights Reserved.</copyright><lastBuildDate>Mon, 30 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://tpow-001.netlify.app/tags/r-markdown/index.xml" rel="self" type="application/rss+xml"/><item><title>ClusterProfiler 分析教學：從差異基因表現到功能富集分析</title><link>https://tpow-001.netlify.app/post/20250625-msc-2d3d_deg_top500_ora_tutorial-v2/</link><pubDate>Mon, 30 Jun 2025 00:00:00 +0000</pubDate><guid>https://tpow-001.netlify.app/post/20250625-msc-2d3d_deg_top500_ora_tutorial-v2/</guid><description><![CDATA[<h1 id="前言" data-numberify>前言<a class="anchor ms-1" href="#前言"></a></h1>
<p>這份文件是一個完整的生物資訊分析流程教學，主要目標是利用 <code>Seurat</code> 套件進行差異基因表現 (Differentially Expressed Genes, DEGs) 分析，並接著使用 <code>clusterProfiler</code> 套件對找出的差異基因進行基因功能富集分析 (Gene Ontology, GO)。</p>]]></description></item><item><title>微陣列數據(Microarray)分析教學</title><link>https://tpow-001.netlify.app/post/20250627-msc_2d_3d_crc_tutorial/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>https://tpow-001.netlify.app/post/20250627-msc_2d_3d_crc_tutorial/</guid><description><![CDATA[<h1 id="前言" data-numberify>前言<a class="anchor ms-1" href="#前言"></a></h1>
<p>本教學文件旨在詳細解說一份用於分析人類間質幹細胞 (Mesenchymal Stem Cells, MSCs) 在 2D 與 3D 培養環境下基因表現差異的 R 腳本。我們將使用 Affymetrix HTA 2.0 微陣列平台的數據，並透過一系列生物資訊學工具，從原始數據讀取、標準化、註解，到最終的數據可視化，一步步完成整個分析流程。</p>]]></description></item><item><title>Seurat PBMC3K tutorial</title><link>https://tpow-001.netlify.app/post/20250626/</link><pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate><guid>https://tpow-001.netlify.app/post/20250626/</guid><description><![CDATA[<h1 id="教學來源" data-numberify>教學來源<a class="anchor ms-1" href="#教學來源"></a></h1>
<p><a href="https://satijalab.org/seurat/articles/pbmc3k_tutorial" target="_blank" rel="noopener noreferrer">https://satijalab.org/seurat/articles/pbmc3k_tutorial<i class="fas fa-external-link-square-alt ms-1"></i></a></p>
<p>本教學以 PBMC3K 資料為例，介紹 Seurat 進行單細胞 RNA 分析的完整流程。</p>

<h2 id="1-建立-seurat-物件" data-numberify>1. 建立 Seurat 物件<a class="anchor ms-1" href="#1-建立-seurat-物件"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 清除環境變數，避免影響後續分析</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nf">rm</span><span class="p">(</span><span class="n">list</span> <span class="o">=</span> <span class="nf">ls</span><span class="p">(</span><span class="n">all</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"># 載入必要套件</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">dplyr</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## Attaching package: &#39;dplyr&#39;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## The following objects are masked from &#39;package:stats&#39;:</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">##     filter, lag</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">## The following objects are masked from &#39;package:base&#39;:</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">##     intersect, setdiff, setequal, union</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">Seurat</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">## Loading required package: SeuratObject</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">## Warning: package &#39;SeuratObject&#39; was built under R version 4.4.3</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">## Loading required package: sp</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">## Warning: package &#39;sp&#39; was built under R version 4.4.2</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="c1">## Attaching package: &#39;SeuratObject&#39;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="c1">## The following objects are masked from &#39;package:base&#39;:</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="c1">##     intersect, t</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">patchwork</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="c1">## Warning: package &#39;patchwork&#39; was built under R version 4.4.3</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">ggplot2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="c1">## Warning: package &#39;ggplot2&#39; was built under R version 4.4.3</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="c1"># 設定資料目錄並載入 10X 格式的資料</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="nf">setwd</span><span class="p">(</span><span class="s">&#34;C:/Users/TPOW31714/Desktop/20250224 Human microarray for CY_add cell/4. RDS/filtered_gene_bc_matrices/hg19/&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="n">data_dir</span> <span class="o">&lt;-</span> <span class="s">&#34;C:/Users/TPOW31714/Desktop/20250224 Human microarray for CY_add cell/4. RDS/filtered_gene_bc_matrices/hg19/&#34;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="n">pbmc.data</span> <span class="o">&lt;-</span> <span class="nf">Read10X</span><span class="p">(</span><span class="n">data.dir</span> <span class="o">=</span> <span class="n">data_dir</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="c1"># 建立 Seurat 物件，並過濾掉少於 200 個基因表現或出現在少於 3 個細胞的基因</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">CreateSeuratObject</span><span class="p">(</span><span class="n">counts</span> <span class="o">=</span> <span class="n">pbmc.data</span><span class="p">,</span> <span class="n">project</span> <span class="o">=</span> <span class="s">&#34;pbmc3k&#34;</span><span class="p">,</span> <span class="n">min.cells</span> <span class="o">=</span> <span class="m">3</span><span class="p">,</span> <span class="n">min.features</span> <span class="o">=</span> <span class="m">200</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="c1">## Warning: Feature names cannot have underscores (&#39;_&#39;), replacing with dashes</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="c1">## (&#39;-&#39;)</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="c1"># 可選：轉換原始 count 矩陣與 metadata 為 data.frame 形式</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="n">X1</span> <span class="o">&lt;-</span> <span class="n">pbmc</span><span class="o">@</span><span class="n">assays[[</span><span class="s">&#34;RNA&#34;</span><span class="n">]]</span><span class="o">@</span><span class="n">layers[[</span><span class="s">&#34;counts&#34;</span><span class="n">]]</span> <span class="o">%&gt;%</span> <span class="nf">as.data.frame</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="n">X2</span> <span class="o">&lt;-</span> <span class="n">pbmc</span><span class="o">@</span><span class="n">meta.data</span>
</span></span></code></pre></div>
<h2 id="2-品質控制與細胞篩選" data-numberify>2. 品質控制與細胞篩選<a class="anchor ms-1" href="#2-品質控制與細胞篩選"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 計算每個細胞的粒線體基因比例 (以 MT- 開頭的基因表示)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">pbmc[[</span><span class="s">&#34;percent.mt&#34;</span><span class="n">]]</span> <span class="o">&lt;-</span> <span class="nf">PercentageFeatureSet</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">=</span> <span class="s">&#34;^MT-&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"># 使用 VlnPlot 觀察 nFeature、nCount 與 percent.mt 分布</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nf">VlnPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;nFeature_RNA&#34;</span><span class="p">,</span> <span class="s">&#34;nCount_RNA&#34;</span><span class="p">,</span> <span class="s">&#34;percent.mt&#34;</span><span class="p">),</span> <span class="n">ncol</span> <span class="o">=</span> <span class="m">3</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">## Warning: Default search for &#34;data&#34; layer in &#34;RNA&#34; assay yielded no results;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## utilizing &#34;counts&#34; layer instead.</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## Warning: The `slot` argument of `FetchData()` is deprecated as of SeuratObject 5.0.0.</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## ℹ Please use the `layer` argument instead.</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">## ℹ The deprecated feature was likely used in the Seurat package.</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">##   Please report the issue at &lt;https://github.com/satijalab/seurat/issues&gt;.</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## This warning is displayed once every 8 hours.</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1">## generated.</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">## Warning: `PackageCheck()` was deprecated in SeuratObject 5.0.0.</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">## ℹ Please use `rlang::check_installed()` instead.</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">## ℹ The deprecated feature was likely used in the Seurat package.</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">##   Please report the issue at &lt;https://github.com/satijalab/seurat/issues&gt;.</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1">## This warning is displayed once every 8 hours.</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="c1">## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="c1">## generated.</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-2-1.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl">
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 使用 FeatureScatter 檢查 feature 之間的相關性</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">plot1</span> <span class="o">&lt;-</span> <span class="nf">FeatureScatter</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">feature1</span> <span class="o">=</span> <span class="s">&#34;nCount_RNA&#34;</span><span class="p">,</span> <span class="n">feature2</span> <span class="o">=</span> <span class="s">&#34;percent.mt&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">plot2</span> <span class="o">&lt;-</span> <span class="nf">FeatureScatter</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">feature1</span> <span class="o">=</span> <span class="s">&#34;nCount_RNA&#34;</span><span class="p">,</span> <span class="n">feature2</span> <span class="o">=</span> <span class="s">&#34;nFeature_RNA&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">plot1</span> <span class="o">+</span> <span class="n">plot2</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-2-2.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl">
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 篩選細胞：去除少於 200 或大於 2500 基因表現 &amp; 粒線體比例 &gt; 5% 的細胞</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">subset</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">subset</span> <span class="o">=</span> <span class="n">nFeature_RNA</span> <span class="o">&gt;</span> <span class="m">200</span> <span class="o">&amp;</span> <span class="n">nFeature_RNA</span> <span class="o">&lt;</span> <span class="m">2500</span> <span class="o">&amp;</span> <span class="n">percent.mt</span> <span class="o">&lt;</span> <span class="m">5</span><span class="p">)</span>
</span></span></code></pre></div>
<h2 id="3-正規化資料" data-numberify>3. 正規化資料<a class="anchor ms-1" href="#3-正規化資料"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 將每個細胞表現值進行 LogNormalize</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">NormalizeData</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">normalization.method</span> <span class="o">=</span> <span class="s">&#34;LogNormalize&#34;</span><span class="p">,</span> <span class="n">scale.factor</span> <span class="o">=</span> <span class="m">10000</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1">## Normalizing layer: counts</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="c1"># 轉出正規化後的資料矩陣</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="n">X3</span> <span class="o">&lt;-</span> <span class="n">pbmc</span><span class="o">@</span><span class="n">assays[[</span><span class="s">&#34;RNA&#34;</span><span class="n">]]</span><span class="o">@</span><span class="n">layers[[</span><span class="s">&#34;data&#34;</span><span class="n">]]</span> <span class="o">%&gt;%</span> <span class="nf">as.data.frame</span><span class="p">()</span>
</span></span></code></pre></div>
<h2 id="4-高變異基因篩選" data-numberify>4. 高變異基因篩選<a class="anchor ms-1" href="#4-高變異基因篩選"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 尋找 2000 個高變異基因 (用於 PCA 分析)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">FindVariableFeatures</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">selection.method</span> <span class="o">=</span> <span class="s">&#34;vst&#34;</span><span class="p">,</span> <span class="n">nfeatures</span> <span class="o">=</span> <span class="m">2000</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">## Finding variable features for layer counts</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># 顯示最變異的前 10 個基因</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">top10</span> <span class="o">&lt;-</span> <span class="nf">head</span><span class="p">(</span><span class="nf">VariableFeatures</span><span class="p">(</span><span class="n">pbmc</span><span class="p">),</span> <span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">plot1</span> <span class="o">&lt;-</span> <span class="nf">VariableFeaturePlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">plot2</span> <span class="o">&lt;-</span> <span class="nf">LabelPoints</span><span class="p">(</span><span class="n">plot</span> <span class="o">=</span> <span class="n">plot1</span><span class="p">,</span> <span class="n">points</span> <span class="o">=</span> <span class="n">top10</span><span class="p">,</span> <span class="n">repel</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## When using repel, set xnudge and ynudge to 0 for optimal results</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">plot1</span> <span class="o">+</span> <span class="n">plot2</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">## Warning in scale_x_log10(): log-10 transformation introduced infinite values.</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## log-10 transformation introduced infinite values.</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-4-1.png" width="672" />

<h2 id="5-資料標準化scaling" data-numberify>5. 資料標準化（scaling）<a class="anchor ms-1" href="#5-資料標準化scaling"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 對所有基因進行中心化與標準差轉換</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">all.genes</span> <span class="o">&lt;-</span> <span class="nf">rownames</span><span class="p">(</span><span class="n">pbmc</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">ScaleData</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="n">all.genes</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1">## Centering and scaling data matrix</span>
</span></span></code></pre></div>
<h2 id="6-pca-降維分析" data-numberify>6. PCA 降維分析<a class="anchor ms-1" href="#6-pca-降維分析"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 使用高變異基因進行 PCA</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">RunPCA</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="nf">VariableFeatures</span><span class="p">(</span><span class="n">object</span> <span class="o">=</span> <span class="n">pbmc</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">## PC_ 1 </span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">## Positive:  CST3, TYROBP, LST1, AIF1, FTL, FTH1, LYZ, FCN1, S100A9, TYMP </span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1">## 	   FCER1G, CFD, LGALS1, S100A8, CTSS, LGALS2, SERPINA1, IFITM3, SPI1, CFP </span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">## 	   PSAP, IFI30, SAT1, COTL1, S100A11, NPC2, GRN, LGALS3, GSTP1, PYCARD </span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## Negative:  MALAT1, LTB, IL32, IL7R, CD2, B2M, ACAP1, CD27, STK17A, CTSW </span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## 	   CD247, GIMAP5, AQP3, CCL5, SELL, TRAF3IP3, GZMA, MAL, CST7, ITM2A </span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## 	   MYC, GIMAP7, HOPX, BEX2, LDLRAP1, GZMK, ETS1, ZAP70, TNFAIP8, RIC3 </span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">## PC_ 2 </span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">## Positive:  CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1, HLA-DRA, LINC00926, CD79B, HLA-DRB1, CD74 </span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## 	   HLA-DMA, HLA-DPB1, HLA-DQA2, CD37, HLA-DRB5, HLA-DMB, HLA-DPA1, FCRLA, HVCN1, LTB </span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">## 	   BLNK, P2RX5, IGLL5, IRF8, SWAP70, ARHGAP24, FCGR2B, SMIM14, PPP1R14A, C16orf74 </span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1">## Negative:  NKG7, PRF1, CST7, GZMB, GZMA, FGFBP2, CTSW, GNLY, B2M, SPON2 </span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">## 	   CCL4, GZMH, FCGR3A, CCL5, CD247, XCL2, CLIC3, AKR1C3, SRGN, HOPX </span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">## 	   TTC38, APMAP, CTSC, S100A4, IGFBP7, ANXA1, ID2, IL32, XCL1, RHOC </span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">## PC_ 3 </span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">## Positive:  HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1, HLA-DPA1, CD74, MS4A1, HLA-DRB1, HLA-DRA </span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1">## 	   HLA-DRB5, HLA-DQA2, TCL1A, LINC00926, HLA-DMB, HLA-DMA, CD37, HVCN1, FCRLA, IRF8 </span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="c1">## 	   PLAC8, BLNK, MALAT1, SMIM14, PLD4, P2RX5, IGLL5, LAT2, SWAP70, FCGR2B </span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="c1">## Negative:  PPBP, PF4, SDPR, SPARC, GNG11, NRGN, GP9, RGS18, TUBB1, CLU </span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="c1">## 	   HIST1H2AC, AP001189.4, ITGA2B, CD9, TMEM40, PTCRA, CA2, ACRBP, MMD, TREML1 </span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="c1">## 	   NGFRAP1, F13A1, SEPT5, RUFY1, TSC22D1, MPP1, CMTM5, RP11-367G6.3, MYL9, GP1BA </span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="c1">## PC_ 4 </span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="c1">## Positive:  HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1, CD74, HIST1H2AC, HLA-DPB1, PF4, SDPR </span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="c1">## 	   TCL1A, HLA-DRB1, HLA-DPA1, HLA-DQA2, PPBP, HLA-DRA, LINC00926, GNG11, SPARC, HLA-DRB5 </span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="c1">## 	   GP9, AP001189.4, CA2, PTCRA, CD9, NRGN, RGS18, CLU, TUBB1, GZMB </span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="c1">## Negative:  VIM, IL7R, S100A6, IL32, S100A8, S100A4, GIMAP7, S100A10, S100A9, MAL </span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="c1">## 	   AQP3, CD2, CD14, FYB, LGALS2, GIMAP4, ANXA1, CD27, FCN1, RBP7 </span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="c1">## 	   LYZ, S100A11, GIMAP5, MS4A6A, S100A12, FOLR3, TRABD2A, AIF1, IL8, IFI6 </span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="c1">## PC_ 5 </span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="c1">## Positive:  GZMB, NKG7, S100A8, FGFBP2, GNLY, CCL4, CST7, PRF1, GZMA, SPON2 </span>
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="c1">## 	   GZMH, S100A9, LGALS2, CCL3, CTSW, XCL2, CD14, CLIC3, S100A12, RBP7 </span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="c1">## 	   CCL5, MS4A6A, GSTP1, FOLR3, IGFBP7, TYROBP, TTC38, AKR1C3, XCL1, HOPX </span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="c1">## Negative:  LTB, IL7R, CKB, VIM, MS4A7, AQP3, CYTIP, RP11-290F20.3, SIGLEC10, HMOX1 </span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="c1">## 	   LILRB2, PTGES3, MAL, CD27, HN1, CD2, GDI2, CORO1B, ANXA5, TUBA1B </span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="c1">## 	   FAM110A, ATP1A1, TRADD, PPA1, CCDC109B, ABRACL, CTD-2006K23.1, WARS, VMO1, FYB</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="c1"># 輸出 PCA 結果，檢視前 5 個主成分</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="nf">print</span><span class="p">(</span><span class="n">pbmc[[</span><span class="s">&#34;pca&#34;</span><span class="n">]]</span><span class="p">,</span> <span class="n">dims</span> <span class="o">=</span> <span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">,</span> <span class="n">nfeatures</span> <span class="o">=</span> <span class="m">5</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="c1">## PC_ 1 </span>
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="c1">## Positive:  CST3, TYROBP, LST1, AIF1, FTL </span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="c1">## Negative:  MALAT1, LTB, IL32, IL7R, CD2 </span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="c1">## PC_ 2 </span>
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="c1">## Positive:  CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1 </span>
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="c1">## Negative:  NKG7, PRF1, CST7, GZMB, GZMA </span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="c1">## PC_ 3 </span>
</span></span><span class="line"><span class="ln">48</span><span class="cl"><span class="c1">## Positive:  HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1 </span>
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="c1">## Negative:  PPBP, PF4, SDPR, SPARC, GNG11 </span>
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="c1">## PC_ 4 </span>
</span></span><span class="line"><span class="ln">51</span><span class="cl"><span class="c1">## Positive:  HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1 </span>
</span></span><span class="line"><span class="ln">52</span><span class="cl"><span class="c1">## Negative:  VIM, IL7R, S100A6, IL32, S100A8 </span>
</span></span><span class="line"><span class="ln">53</span><span class="cl"><span class="c1">## PC_ 5 </span>
</span></span><span class="line"><span class="ln">54</span><span class="cl"><span class="c1">## Positive:  GZMB, NKG7, S100A8, FGFBP2, GNLY </span>
</span></span><span class="line"><span class="ln">55</span><span class="cl"><span class="c1">## Negative:  LTB, IL7R, CKB, VIM, MS4A7</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl">
</span></span><span class="line"><span class="ln">57</span><span class="cl"><span class="c1"># 顯示載重圖、降維圖與熱圖</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl"><span class="nf">VizDimLoadings</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">dims</span> <span class="o">=</span> <span class="m">1</span><span class="o">:</span><span class="m">2</span><span class="p">,</span> <span class="n">reduction</span> <span class="o">=</span> <span class="s">&#34;pca&#34;</span><span class="p">)</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-6-1.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="nf">DimPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">reduction</span> <span class="o">=</span> <span class="s">&#34;pca&#34;</span><span class="p">)</span> <span class="o">+</span> <span class="nf">NoLegend</span><span class="p">()</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-6-2.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="nf">DimHeatmap</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">dims</span> <span class="o">=</span> <span class="m">1</span><span class="p">,</span> <span class="n">cells</span> <span class="o">=</span> <span class="m">500</span><span class="p">,</span> <span class="n">balanced</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-6-3.png" width="672" />

<h2 id="7-選擇最佳維度數量elbow-plot" data-numberify>7. 選擇最佳維度數量（Elbow Plot）<a class="anchor ms-1" href="#7-選擇最佳維度數量elbow-plot"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="nf">ElbowPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">)</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-7-1.png" width="672" />

<h2 id="8-建立近鄰圖與群集分析" data-numberify>8. 建立近鄰圖與群集分析<a class="anchor ms-1" href="#8-建立近鄰圖與群集分析"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">FindNeighbors</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">dims</span> <span class="o">=</span> <span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">## Computing nearest neighbor graph</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">## Warning: package &#39;future&#39; was built under R version 4.4.3</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">## Computing SNN</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">FindClusters</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">resolution</span> <span class="o">=</span> <span class="m">0.5</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## Number of nodes: 2638</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## Number of edges: 95927</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">## </span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">## Running Louvain algorithm...</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## Maximum modularity in 10 random starts: 0.8728</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">## Number of communities: 9</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1">## Elapsed time: 0 seconds</span>
</span></span></code></pre></div>
<h2 id="9-非線性降維umap" data-numberify>9. 非線性降維：UMAP<a class="anchor ms-1" href="#9-非線性降維umap"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">RunUMAP</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">dims</span> <span class="o">=</span> <span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">## Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">## To use Python UMAP via reticulate, set umap.method to &#39;umap-learn&#39; and metric to &#39;correlation&#39;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">## This message will be shown once per session</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1">## 19:27:19 UMAP embedding parameters a = 0.9922 b = 1.112</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">## 19:27:19 Read 2638 rows and found 10 numeric columns</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## 19:27:19 Using Annoy for neighbor search, n_neighbors = 30</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## 19:27:19 Building Annoy index with metric = cosine, n_trees = 50</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## 0%   10   20   30   40   50   60   70   80   90   100%</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1">## [----|----|----|----|----|----|----|----|----|----|</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">## **************************************************|</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">## 19:27:20 Writing NN index file to temp file C:\Users\TPOW31~1\AppData\Local\Temp\RtmpM1mnaL\file74a4f381b69</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">## 19:27:20 Searching Annoy index using 1 thread, search_k = 3000</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1">## 19:27:20 Annoy recall = 100%</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">## 19:27:20 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">## 19:27:21 Initializing from normalized Laplacian + noise (using RSpectra)</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">## 19:27:21 Commencing optimization for 500 epochs, with 105140 positive edges</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">## 19:27:21 Using rng type: pcg</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1">## 19:27:26 Optimization finished</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="nf">DimPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">reduction</span> <span class="o">=</span> <span class="s">&#34;umap&#34;</span><span class="p">)</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-9-1.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl">
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 儲存結果</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="nf">saveRDS</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">file</span> <span class="o">=</span> <span class="s">&#34;pbmc_tutorial.rds&#34;</span><span class="p">)</span>
</span></span></code></pre></div>
<h2 id="10-差異表現基因分析" data-numberify>10. 差異表現基因分析<a class="anchor ms-1" href="#10-差異表現基因分析"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># cluster 2 與其他 cluster 的差異表現基因</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">cluster2.markers</span> <span class="o">&lt;-</span> <span class="nf">FindMarkers</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">ident.1</span> <span class="o">=</span> <span class="m">2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">## Warning: The `slot` argument of `GetAssayData()` is deprecated as of SeuratObject 5.0.0.</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">## ℹ Please use the `layer` argument instead.</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1">## ℹ The deprecated feature was likely used in the Seurat package.</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">##   Please report the issue at &lt;https://github.com/satijalab/seurat/issues&gt;.</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">## This warning is displayed once every 8 hours.</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">## generated.</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1"># cluster 5 與 cluster 0 與 3 的差異</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">cluster5.markers</span> <span class="o">&lt;-</span> <span class="nf">FindMarkers</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">ident.1</span> <span class="o">=</span> <span class="m">5</span><span class="p">,</span> <span class="n">ident.2</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">0</span><span class="p">,</span> <span class="m">3</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1"># 全部 cluster 的 marker gene</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="n">pbmc.markers</span> <span class="o">&lt;-</span> <span class="nf">FindAllMarkers</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">only.pos</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">## Calculating cluster 0</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">## Calculating cluster 1</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">## Calculating cluster 2</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="c1">## Calculating cluster 3</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="c1">## Calculating cluster 4</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="c1">## Calculating cluster 5</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="c1">## Calculating cluster 6</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="c1">## Calculating cluster 7</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="c1">## Calculating cluster 8</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="n">pbmc.markers_1</span> <span class="o">&lt;-</span> <span class="n">pbmc.markers</span> <span class="o">%&gt;%</span> <span class="nf">group_by</span><span class="p">(</span><span class="n">cluster</span><span class="p">)</span> <span class="o">%&gt;%</span> <span class="nf">filter</span><span class="p">(</span><span class="n">avg_log2FC</span> <span class="o">&gt;</span> <span class="m">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="nf">write.table</span><span class="p">(</span><span class="n">pbmc.markers</span><span class="p">,</span> <span class="s">&#34;pbmc_Findallmarkers_250610.txt&#34;</span><span class="p">,</span> <span class="n">sep</span> <span class="o">=</span> <span class="s">&#34;\t&#34;</span><span class="p">,</span> <span class="n">row.names</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="c1"># 使用不同檢定法，例如 ROC</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="n">cluster0.markers</span> <span class="o">&lt;-</span> <span class="nf">FindMarkers</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">ident.1</span> <span class="o">=</span> <span class="m">0</span><span class="p">,</span> <span class="n">test.use</span> <span class="o">=</span> <span class="s">&#34;roc&#34;</span><span class="p">,</span> <span class="n">only.pos</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="c1"># 可視化 marker gene</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="nf">VlnPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;MS4A1&#34;</span><span class="p">,</span> <span class="s">&#34;CD79A&#34;</span><span class="p">))</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-10-1.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="nf">FeaturePlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;MS4A1&#34;</span><span class="p">,</span> <span class="s">&#34;GNLY&#34;</span><span class="p">,</span> <span class="s">&#34;CD3E&#34;</span><span class="p">,</span> <span class="s">&#34;CD14&#34;</span><span class="p">,</span> <span class="s">&#34;FCER1A&#34;</span><span class="p">,</span> <span class="s">&#34;FCGR3A&#34;</span><span class="p">,</span> <span class="s">&#34;LYZ&#34;</span><span class="p">,</span> <span class="s">&#34;PPBP&#34;</span><span class="p">,</span> <span class="s">&#34;CD8A&#34;</span><span class="p">))</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-10-2.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl">
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 熱圖顯示每群前 10 個基因</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">top10</span> <span class="o">&lt;-</span> <span class="n">pbmc.markers</span> <span class="o">%&gt;%</span> <span class="nf">group_by</span><span class="p">(</span><span class="n">cluster</span><span class="p">)</span> <span class="o">%&gt;%</span> <span class="nf">filter</span><span class="p">(</span><span class="n">avg_log2FC</span> <span class="o">&gt;</span> <span class="m">1</span><span class="p">)</span> <span class="o">%&gt;%</span> <span class="nf">slice_head</span><span class="p">(</span><span class="n">n</span> <span class="o">=</span> <span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="nf">DoHeatmap</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">features</span> <span class="o">=</span> <span class="n">top10</span><span class="o">$</span><span class="n">gene</span><span class="p">)</span> <span class="o">+</span> <span class="nf">NoLegend</span><span class="p">()</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-10-3.png" width="672" />

<h2 id="11-命名各群細胞類型" data-numberify>11. 命名各群細胞類型<a class="anchor ms-1" href="#11-命名各群細胞類型"></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">new.cluster.ids</span> <span class="o">&lt;-</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Naive CD4 T&#34;</span><span class="p">,</span> <span class="s">&#34;CD14+ Mono&#34;</span><span class="p">,</span> <span class="s">&#34;Memory CD4 T&#34;</span><span class="p">,</span> <span class="s">&#34;B&#34;</span><span class="p">,</span> <span class="s">&#34;CD8 T&#34;</span><span class="p">,</span> <span class="s">&#34;FCGR3A+ Mono&#34;</span><span class="p">,</span> <span class="s">&#34;NK&#34;</span><span class="p">,</span> <span class="s">&#34;DC&#34;</span><span class="p">,</span> <span class="s">&#34;Platelet&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nf">names</span><span class="p">(</span><span class="n">new.cluster.ids</span><span class="p">)</span> <span class="o">&lt;-</span> <span class="nf">levels</span><span class="p">(</span><span class="n">pbmc</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">pbmc</span> <span class="o">&lt;-</span> <span class="nf">RenameIdents</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">new.cluster.ids</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="c1"># 畫出標註細胞類型的 UMAP 圖</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="nf">DimPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">reduction</span> <span class="o">=</span> <span class="s">&#34;umap&#34;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">pt.size</span> <span class="o">=</span> <span class="m">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="nf">NoLegend</span><span class="p">()</span>
</span></span></code></pre></div><img src="/post/2025-06-26-r-rmarkdown/20250626_files/figure-html/unnamed-chunk-11-1.png" width="672" />
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="ln">1</span><span class="cl">
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 儲存高解析圖檔</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">plot</span> <span class="o">&lt;-</span> <span class="nf">DimPlot</span><span class="p">(</span><span class="n">pbmc</span><span class="p">,</span> <span class="n">reduction</span> <span class="o">=</span> <span class="s">&#34;umap&#34;</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">label.size</span> <span class="o">=</span> <span class="m">4.5</span><span class="p">)</span> <span class="o">+</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="nf">xlab</span><span class="p">(</span><span class="s">&#34;UMAP 1&#34;</span><span class="p">)</span> <span class="o">+</span> <span class="nf">ylab</span><span class="p">(</span><span class="s">&#34;UMAP 2&#34;</span><span class="p">)</span> <span class="o">+</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">  <span class="nf">theme</span><span class="p">(</span><span class="n">axis.title</span> <span class="o">=</span> <span class="nf">element_text</span><span class="p">(</span><span class="n">size</span> <span class="o">=</span> <span class="m">18</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="nf">ggsave</span><span class="p">(</span><span class="n">filename</span> <span class="o">=</span> <span class="s">&#34;pbmc3k_umap.jpg&#34;</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="m">7</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="m">12</span><span class="p">,</span> <span class="n">plot</span> <span class="o">=</span> <span class="n">plot</span><span class="p">)</span>
</span></span></code></pre></div><p>更多視覺化方法請參考官方文件：<a href="https://satijalab.org/seurat/articles/visualization_vignette" target="_blank" rel="noopener noreferrer">https://satijalab.org/seurat/articles/visualization_vignette<i class="fas fa-external-link-square-alt ms-1"></i></a></p>]]></description></item></channel></rss>