單細胞分析(20)——inferCNV分析

InferCNV分析筆記

1. 分析目標

InferCNV(Inference of Copy Number Variations)是一種基于單細胞轉錄組數據推斷**拷貝數變異(CNV)**的方法,推測其基因組變異情況。


2. 數據準備

2.1 載入數據

library(Seurat)
setwd(here::here())  # 設置工作目錄
scRNA1 = readRDS('./scRNA_harmony_EP.rds')
  • 載入單細胞RNA測序數據(已經過 Harmony 校正)。
  • scRNA1Seurat 對象,包含元數據和表達矩陣。

2.2 選擇分析細胞

2.2.1 細胞類型定義
library(dplyr)meta_data <- scRNA1@meta.data %>%mutate(cell_type = case_when(RNA_snn_res.0.6 %in% c("8", "18") ~ "Normal",  # 參考細胞(正常/免疫)TRUE ~ "Tumor"  # 觀測細胞(腫瘤)))
  • 正常細胞:RNA_snn_res.0.6 細胞亞群 8、18(參考細胞)。
  • 腫瘤細胞:其余亞群。
2.2.2 僅對腫瘤細胞進行采樣,保留所有參考細胞
# 提取細胞名稱
tumor_cells <- meta_data %>% filter(cell_type == "Tumor") %>% pull(rownames)
normal_cells <- meta_data %>% filter(cell_type == "Normal") %>% pull(rownames)# 對腫瘤細胞進行隨機采樣(最多3000個)
set.seed(123)
tumor_sample <- sample(tumor_cells, min(3000, length(tumor_cells)), replace = FALSE)# 合并所有參考細胞(不采樣)與采樣后的腫瘤細胞
selected_cells <- c(tumor_sample, normal_cells)# 構建新的 Seurat 對象
new.scRNA <- subset(scRNA1, cells = selected_cells)
  • 保留所有參考細胞(用于 CNV 歸一化)。
  • 對腫瘤細胞進行采樣(最多3000個),避免計算負擔過大。

3. 構建 InferCNV 對象

3.1 提取表達矩陣和細胞注釋

exprMatrix <- as.matrix(GetAssayData(new.scRNA, slot='counts'))
cellAnnota <- subset(new.scRNA@meta.data, select='RNA_snn_res.0.6')
  • exprMatrix基因表達矩陣(raw counts)
  • cellAnnota細胞分類信息(用于 InferCNV 分組)。

3.2 創建 InferCNV 對象

library(infercnv)infercnv_obj = CreateInfercnvObject(raw_counts_matrix=exprMatrix,annotations_file=cellAnnota,delim="\t",gene_order_file= "/home/jianpeng/yard/BC_TLLZ/TLLZ02_LB/BC-TLLZ02-LB-process/data/gencode_v19_gene_pos.txt",ref_group_names=c("8", "18"))  
  • gene_order_file:基因的染色體位置信息(gencode_v19)。
  • ref_group_names=c("8", "18")
    • 參考組(非惡性細胞)。
    • 僅使用 Normal 細胞 作為參照,提高CNV推斷精度。

4. 運行 InferCNV

infercnv_obj = infercnv::run(infercnv_obj,cutoff=0.1,  # 10X數據推薦0.1,Smart-seq推薦1out_dir=  './output/cnv_epithelial/',cluster_by_groups=F,   # 是否按照組分類再聚類hclust_method="ward.D2", plot_steps=F, HMM = F, denoise=T,  # 去噪write_expr_matrix = T)
  • cutoff=0.1:基因表達閾值,適用于10X數據。
  • denoise=T:啟用去噪處理,提高信噪比。
  • hclust_method="ward.D2":層次聚類方法,適合CNV分析。


5. CNV評分計算

library(tidyverse)# 讀取InferCNV結果
obs <- read.table("./output/cnv_epithelial/infercnv.observations.txt", header=T)
ref <- read.table("./output/cnv_epithelial/infercnv.references.txt", header=T)# 合并參考與觀測細胞
expr <- cbind(obs, ref)
expr.scale <- scale(t(expr))# 歸一化 CNV 評分計算
tmp1 <- sweep(expr.scale, 2, apply(expr.scale, 2, min),'-')
tmp2 <- apply(expr.scale, 2, max) - apply(expr.scale,2,min)
expr_1 <- t(2*sweep(tmp1, 2, tmp2, "/")-1)cnv_score <- as.data.frame(colSums(expr_1 * expr_1))
colnames(cnv_score) = "cnv_score"
cnv_score <- rownames_to_column(cnv_score, var='cell')
cnv_score$cell <- gsub("\\.", "-", cnv_score$cell)
  • 計算 CNV評分(變異程度越高,評分越高)。
  • 標準化后計算平方和 以量化CNV程度。

6. 結果可視化

6.1 關聯 Seurat Meta 數據

scRNA_sample = subset(scRNA1, cells = cnv_score$cell)meta <- scRNA_sample@meta.data %>%rownames_to_column(var='cell') %>%inner_join(cnv_score, by='cell') %>%column_to_rownames(var='cell')
  • 將CNV評分合并到元數據,用于可視化分析。

6.2 可視化 CNV 評分

library(ggpubr)
p = ggboxplot(meta, "RNA_snn_res.0.6", "cnv_score", fill = "RNA_snn_res.0.6") + scale_y_continuous(limits = c(0, 3000)) +  xlab("Cluster") +  ylab("CNV Score") +theme(panel.border = element_rect(colour = "black", fill = NA, size = 0.5)) +theme(legend.position = "none")ggsave(p, filename = './output/epithelial_cell/CNV/CNV_cluster_RNA_snn_res.0.6.pdf', width = 7, height = 4)
  • 箱線圖展示CNV評分與細胞群體的關系
  • 可用于對比不同細胞群體的CNV變異趨勢


7. 結果解讀

  • CNV評分較高的細胞群體可能包含惡性腫瘤細胞
  • 參考細胞(如免疫細胞)應具有較低CNV評分,用于區分正常/腫瘤細胞。
  • 可結合其他單細胞分析方法(NicheNet, SCENIC)深入解析CNV相關的基因調控網絡

8. 總結

  • 優化采樣策略
    • 僅對腫瘤細胞進行采樣(最大 3000 個),避免數據量過大。
    • 保留所有參考細胞(Normal 細胞),確保 InferCNV 計算的準確性。
  • InferCNV 主要流程
    1. 數據篩選與預處理(分層采樣,選擇參考細胞)。
    2. 創建InferCNV對象(設定參考組,載入基因位置信息)。
    3. 運行 InferCNV 分析(聚類,去噪,計算CNV)。
    4. 計算 CNV 評分(標準化,平方和計算)。
    5. 可視化分析(展示 CNV 評分的分布)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71215.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++:多態與虛函數

1.虛函數&#xff0c;在函數前加virtual即可。有虛函數時&#xff0c;父類指針指向父類對象時就會使用父類的成員&#xff0c;指向子類對象時就可以使用子類成員&#xff0c;進而我們引入了多態的概念。 2.多態&#xff1a;父類指針指向子類的對象&#xff0c;通過父類指針調用…

WSL下使用git克隆失敗解決

WSL默認nat模式&#xff0c;別動了防火墻放行&#xff0c;見圖1git導入[bash1]&#xff0c;ip為你wsl上linxu通過ifconfig獲取的本機ip&#xff0c;端口對好某alcsh軟件開啟tun模式【經過測試&#xff0c;不開也行】應該成了&#xff0c;如果不行&#xff0c;修改.wslconfig為下…

開放鴻蒙OpenHarmony 5.0.0 Release 兼容性測試實戰經驗分享

OpenHarmony 5.0版本的發布時間是2024年12月20日至21日。這個版本帶來了許多新特性和改進。現在5.0出了兩個release 版本&#xff0c;分別是5.0.0和5.0.1。 就在5.0版本發布不到2周的時間內&#xff0c;2025年01月01日起&#xff0c;不支持新產品基于老分支&#xff08;OpenHar…

C++中explicit關鍵字的含義以及用法

在C中&#xff0c;explicit關鍵字用于修飾構造函數和轉換運算符&#xff08;C11起&#xff09;&#xff0c;防止編譯器進行隱式類型轉換&#xff0c;要求必須顯式調用構造函數或轉換操作。以下是其核心用法和示例&#xff1a; 1. 修飾構造函數 用途 禁止隱式構造對象&#xf…

Oracle OCP認證考試考點詳解083系列01

題記&#xff1a; 本系列主要講解Oracle OCP認證考試考點&#xff08;題目&#xff09;&#xff0c;適用于19C/21C,跟著學OCP考試必過。 1. 第1題&#xff1a; 題目 解析及答案&#xff1a; 關于自動工作量存儲庫&#xff08;AWR&#xff09;快照&#xff0c;以下哪三個選項…

從DNS到TCP:DNS解析流程和瀏覽器輸入域名訪問流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我們會經常遇到域名&#xff0c;比如說CSDN的域名www.csdn.net&#xff0c;百度的域名www.baidu.com,我們也會碰到IP&#xff0c;現在目前有的是IPV4&#xff0c;IPV6。那這兩個有什么區別呢&#xff1f;IP地址是互聯網上計算機…

《2025軟件測試工程師面試》接口測試篇

基礎概念 什么是接口測試? 接口測試是測試系統組件間接口的一種測試,主要用于檢測外部系統和內部系統之間以及各個子系統之間的交互點。測試的重點是檢查數據的交換、傳遞和控制管理的過程,以及系統間的相互邏輯依賴關系等。 接口測試的優勢是什么? 接口測試具有規范性與擴…

【PHP腳本語言詳解】為什么直接訪問PHP文件會顯示空白?從錯誤示例到正確執行!

前言 作為一名開發者&#xff0c;你是否曾經遇到過這樣的問題&#xff1a;寫了一個PHP腳本&#xff0c;放到服務器根目錄后&#xff0c;直接通過file:///路徑訪問卻顯示空白頁面&#xff1f;而換成http://localhost卻能正常顯示&#xff1f;這篇文章將帶你深入理解PHP腳本語言…

word轉換為pdf后圖片失真解決辦法、高質量PDF轉換方法

1、安裝Adobe Acrobat Pro DC 自行安裝 2、配置Acrobat PDFMaker &#xff08;1&#xff09;點擊word選項卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;點擊“首選項”按鈕&#xff0c;&#xff08;3&#xff09;點擊“高級配置”按鈕&#xff08;4&#xff09;點…

基于PyTorch的深度學習2——逐元素操作,歸并,比較,矩陣

以下為部分逐元素操作代碼實例。 import torcht torch.randn(1, 3) t1 torch.randn(3, 1) t2 torch.randn(1, 3)#t0.1*(t1/t2) torch.addcdiv(t, 0.1, t1, t2)#計算sigmoid torch.sigmoid(t)#將t限制在[0,1]之間 torch.clamp(t,0,1)#t2進行就地運算 t.add_(2) 歸并操作一般…

線程池的工作流程

線程池的工作流程主要包括任務提交、線程分配、任務執行和線程回收等環節&#xff0c;以下是對其詳細的描述&#xff1a; 任務提交 當有任務需要執行時&#xff0c;用戶通過線程池提供的提交方法&#xff0c;如execute()或submit()方法&#xff0c;將任務&#xff08;通常是實現…

C++20 標準化有符號整數:邁向更可預測的整數運算

文章目錄 一、背景&#xff1a;為什么需要標準化&#xff1f;二、2 的補碼&#xff1a;原理與優勢&#xff08;一&#xff09;2 的補碼原理&#xff08;二&#xff09;2 的補碼的優勢 三、C20 的變化&#xff1a;明確 2 的補碼四、如何利用這一特性優化代碼&#xff08;一&…

Libgdx游戲開發系列教程(1)——環境配置及demo運行

目錄 環境 JDK環境 項目創建 1.下載gdx-setup.jar文件 2.填寫信息,創建項目 demo運行步驟 1.修改gradle.properties 2.安裝Build-Tool 3.運行 Libgdx游戲是基于Java的一款游戲引擎,可以發布Android,桌面端,Html,IOS等游戲,出名的《殺戮尖塔》也是用了此引擎制作的 本…

【jenkins配置記錄】

全局工具配置&#xff1a; D:\Program Files\Java\jdk1.8.0_281 D:\Program Files\Git\bin\git.exe E:\allure-2.13.2 2. GIT 3. 定時任務 H 8 * * 1-5 4. 構建觸發器 5. 構建后操作 Allure Report 吐血記錄&#xff1a;報告路徑可以為 workspace 相對路徑 6. 系統配置 em…

C++:內聯函數

內聯函數可以用來降低運行時間&#xff0c;當內聯函數收到編譯器的指示時&#xff0c;即可發生內聯&#xff1a;編譯器會使用函數的定義體來替代函數調用語句&#xff0c;此行為發生在編譯階段。 定義內聯函數涉及的關鍵字為inline&#xff0c;例如&#xff1a; inline void …

Linux網絡相關概念和重要知識(1)(網絡協議、網絡通信)

目錄 1.網絡協議 &#xff08;1&#xff09;網絡的起源 &#xff08;2&#xff09;為什么需要協議 &#xff08;3&#xff09;協議分層及其設計的解耦 &#xff08;4&#xff09;OSI定義的七層網絡模型 ①分層及其功能 ②TCP/IP協議 ③傳輸層協議&#xff08;TCP和UDP&a…

【入門Web安全之前端學習的側重點和針對性的建議】

入門Web安全之前端學習的側重點和針對性的建議 一、HTML&#xff1a;理解攻擊載荷的載體二、CSS&#xff1a;次要但需警惕點擊劫持三、JavaScript&#xff1a;滲透測試的核心重點四、瀏覽器工具&#xff1a;滲透測試的實戰武器五、學習建議與資源六、總結&#xff1a;滲透測試者…

QILSTE H6-C210TCG高亮翠綠光LED燈珠 發光二極管LED

# H6-C210TCG&#xff1a;高亮翠綠光LED的復雜特性解析 在現代電子設備的復雜設計中&#xff0c;H6-C210TCG型號的高亮翠綠光LED以其獨特的光學和電氣特性脫穎而出。這款LED不僅具備緊湊的尺寸&#xff0c;還融合了復雜的參數設計&#xff0c;使其在眾多應用場景中表現出色。然…

Linux操作系統5-進程信號2(信號的4種產生方式,signal系統調用)

上篇文章&#xff1a;Linux操作系統5-進程信號1&#xff08;信號基礎&#xff09;-CSDN博客 本篇Gitee倉庫&#xff1a;myLerningCode/l25 橘子真甜/Linux操作系統與網絡編程學習 - 碼云 - 開源中國 (gitee.com) 本篇重點&#xff1a;信號的4種產生 目錄 一. signal系統調用 …

如何在docker中的mysql容器內執行命令與執行SQL文件

通過 docker ps -a 查詢當前運行的容器&#xff0c;找到想執行命令的容器名稱。 docker ps -a若想執行sql文件&#xff0c;則將sql文件放入當前文件夾下后將項目內的 SQL 文件拷貝到 mysql 容器內部的 root下。 sudo docker cp /root/enterprise.sql mysql:/root/然后進入 my…