R语言:肿瘤突变负荷分析

news2025/1/22 21:09:34

> merge_maf <- function(metadata, path){
  #通过合并path,还有sample sheet前两列得到每一个文件的完整路径
  filenames <- file.path(path, metadata$file_id, metadata$file_name,
                         fsep = .Platform$file.sep)

  message ('############### Merging maf data ################\n',
           '### This step may take a few minutes ###\n')
    #通过lapply循环去读每一个样本的maf,然后通过rbind合并成矩阵,按行来合并
    #colClasses指定所有列为字符串
    mafMatrix <- do.call("rbind", lapply(filenames, function(fl)
      read.table(gzfile(fl),header=T,sep="\t",quote="",fill=T,colClasses="character")))
    return (mafMatrix)
}
#定义去除重复样本的函数FilterDuplicate
> FilterDuplicate <- function(metadata) {
  filter <- which(duplicated(metadata[,'sample']))
  if (length(filter) != 0) {
    metadata <- metadata[-filter,]
  }
  message (paste('Removed', length(filter), 'samples', sep=' '))
  return (metadata)
}
 

#读入maf的sample sheet文件
> metaMatrix.maf=read.table("maf_sample_sheet.tsv",sep="\t",header=T)
#替换.为下划线,转换成小写,sample_id替换成sample
>names(metaMatrix.maf)=gsub("sample_id","sample",gsub("\\.","_",tolower(names(metaMatrix.maf))))
#删掉最后一列sample_type中的空格
> metaMatrix.maf$sample_type=gsub(" ","",metaMatrix.maf$sample_type)

#删掉重复的样本
> metaMatrix.maf <- FilterDuplicate(metaMatrix.maf)
#调用merge_maf函数合并maf的矩阵
> maf_value=merge_maf(metadata=metaMatrix.maf, 
                     path="maf_data"
                     )

> #查看前三行前十列
> maf_value[1:3,1:10]
  Hugo_Symbol Entrez_Gene_Id Center NCBI_Build Chromosome Start_Position End_Position Strand Variant_Classification Variant_Type
1       PLOD1           5351  WUGSC     GRCh38       chr1       11957858     11957858      +      Missense_Mutation          SNP
2         IVL           3713  WUGSC     GRCh38       chr1      152910652    152910652      +      Nonsense_Mutation          SNP
3       OBSCN          84033  WUGSC     GRCh38       chr1      228256740    228256740      +      Missense_Mutation          SNP

#保存合并后的maf文件
> write.table(file="combined_maf_value.txt",maf_value,row.names=F,quote=F,sep="\t")

#TMB打分

> BiocManager::install("maftools")
> library(maftools)
> laml <- read.maf(maf = "combined_maf_value.txt")
> tmb_table_wt_log = tmb(maf = laml)

#tmb_table_wt_log = tmb(maf = laml): 这行代码调用了 tmb() 函数,计算了基于 MAF 数据的肿瘤突变负荷(TMB)。参数 maf 接受了之前读取的 laml 数据框作为输入,然后将结果赋值给了 tmb_table_wt_log 变量。

write.table(tmb_table_wt_log,file="TMB_log.txt",sep="\t",row.names=F)

#突变负荷分析

> library(limma)
> library(ggplot2)
#install.packages("ggpubr")
> library(ggpubr)
#install.packages("ggExtra")
> library(ggExtra)

> expFile="geneExp.txt"    
> tmbFile="TMB.txt"     

> rt=read.table(expFile, header=T, sep="\t", check.names=F, row.names=1)
> gene=colnames(rt)[1]


> tumorData=rt[rt$Type=="Tumor",1,drop=F]
> tumorData=as.matrix(tumorData)
> rownames(tumorData)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3\\", rownames(tumorData))
> data=avereps(tumorData)


> tmb=read.table(tmbFile, header=T, sep="\t", check.names=F, row.names=1)
> rownames(tmb)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3\\", rownames(tmb))
> tmb=avereps(tmb)

> sameSample=intersect(row.names(data), row.names(tmb))
> data=data[sameSample,,drop=F]
> tmb=tmb[sameSample,,drop=F]
> rt=cbind(data, tmb)


> x=as.numeric(rt[,gene])
> y=log2(as.numeric(rt[,"total_perMB_log"])+1)
> df1=as.data.frame(cbind(x,y))
> corT=cor.test(x, y, method="spearman")

> p1=ggplot(df1, aes(x, y)) + 
            xlab(paste0(gene, " expression"))+ylab("Tumor mutation burden")+
            geom_point()+ geom_smooth(method="lm",formula = y ~ x) + theme_bw()+
            stat_cor(method = 'spearman', aes(x =x, y =y))
p1

> p2=ggMarginal(p1, type = "density", xparams = list(fill = "orange"),yparams = list(fill = "blue"))

> p2

学习交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis——MyBatis查询语句

一、返回Car 当查询的结果&#xff0c;有对应的实体类&#xff0c;并且查询结果只有一条时&#xff1a; &#xff08;查询结果只有一条也可以用 List 集合接收&#xff09; package org.qiu.mybatis.mapper;import org.qiu.mybatis.pojo.Car;/*** author 秋玄* version 1.0*…

WHAT - 支持小程序的跨端框架(一)

一、背景 在 WHAT - Hybrid App 详解系列&#xff08;一&#xff09; 中我们介绍过 React Native、weex 以及 flutter 等跨平台开发技术。 随着微信小程序、百度小程序、支付宝小程序、字节跳动小程序、快应用等场景的流行&#xff0c;支持小程序或快应用的跨端诉求也促进了一…

【HarmonyOS】综合应用-《校园通》

概念 本文结合之前的笔记文章知识点&#xff0c;做一个综合性的小应用。 创建一个ArkTS语言的鸿蒙项目&#xff0c;搭建首页面 其界面代码如下&#xff0c;该界面使用了垂直布局&#xff0c;相对布局&#xff0c;轮播布局&#xff0c;以及图片&#xff0c;文本等组件的综合运…

Python API和微服务的测试库之httpretty使用详解

概要 在现代软件开发中,API和微服务的测试是确保应用稳定性和功能正确性的关键环节。Python的HTTPretty库提供了一个强大的工具,允许开发者在不实际发起网络请求的情况下模拟HTTP请求和响应。本文将全面介绍HTTPretty的安装、特性、基本与高级功能,并结合实际应用场景,展示…

Leetcode—287. 寻找重复数【中等】(快慢指针算法)

2024每日刷题&#xff08;136&#xff09; Leetcode—287. 寻找重复数 快慢指针算法思想 low fast 时&#xff0c;快慢指针相遇&#xff0c;low 走过的距离是初始点&#xff08;0&#xff09;到环状开始的点 &#xff08;x&#xff09; 加上 环状开始的点&#xff08;x&…

如何规划数据中台

1. 数据中台是一套解决方案 在数聚看来&#xff0c;数据中台是一套可持续“让企业数据用起来”的机制&#xff0c;是一套解决方案&#xff0c;不仅是一个平台。让数据更加灵活地支撑前端业务&#xff0c;通过持续沉淀企业数据复用能力形成数据从采集、治理、开发到数据服务的一…

运维安全管理系统:“四集中”管理 解决迫切问题

日前&#xff0c;国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全产品解决方案与相关技术研究开发的领军企业——国联易安依托自身强大的研发能力&#xff0c;丰富的行业经验&#xff0c;自主研发了新一代软硬件一体化统一安全运维平台——国联易安…

leetcode.环形链表问题

目录 题目1 示例 解题思路 代码实现 补充 题目2 示例 解题思路 代码实现 题目1 该题链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle/description/ 示例 解题思路 要创建两个指针一个是快指针(fast)&#xff0c;另一个慢指针(slow)。快指针走两步慢指…

JSP相关题目练习

一、前置知识 【eclipse/IDEA】如何在IDE里创建一个Java Web项目&#xff1f; 1. 实现Bean类的User实例 以一个实现Bean类User的实例。在Eclipse里调用Tomcat服务器运行。 Javabean是一种Java类&#xff0c; 通过封装属性和方法成为具有某种功能或者处理某个业务的对象&…

MyBatis-Plus核心功能详解:条件构造器、自定义SQL与Service接口

在Java的Web开发中&#xff0c;MyBatis-Plus作为MyBatis的增强工具&#xff0c;提供了许多实用的功能&#xff0c;极大地简化了数据库操作的开发过程。下面&#xff0c;我们将详细探讨MyBatis-Plus的三大核心功能&#xff1a;条件构造器、自定义SQL以及Service接口。 一、条件…

用掼蛋的智慧优化图形化编程体验

周末的午后&#xff0c;阳光透过卧龙家庭院的树叶&#xff0c;在地上洒下一片斑驳的光影。微风轻拂&#xff0c;树叶沙沙作响&#xff0c;为这个宁静的庭院增添了一丝生机。 在庭院的一角&#xff0c;有一张专门用于掼蛋的桌子。桌子周围摆放着几把舒适的椅子&#xff0c;此时&…

Human Serum Albumin ELISA kit(人血清白蛋白HSA)

人血清白蛋白&#xff08;Human Serum Albumin, HSA&#xff09;是人体血液中的血清白蛋白。它约占血清蛋白的一半&#xff0c;由肝脏产生。白蛋白具有运输荷尔蒙、脂肪酸和其他化合物、缓冲pH值和维持血管压力等功能。人血清白蛋白是一种高水溶性球状单体血浆蛋白&#xff0c;…

[AWS] stepfunctions-local

本质是本地docker,只支持异步调用 run aws-stepfunctions-localdocker run -p 8083:8083 \ --mount type=bind,readonly,source=/path/MockConfigFile.json,destination=/home/StepFunctionsLocal/MockConfigFile.json \ -e SFN_MOCK_CONFIG="/home/StepFunctionsLocal/…

ranger 队列划分和权限管控方法

创建用户 创建用户ngk【KDE首页->租户管理->集群用户->添加用户】: 创建用户组ngk_group并绑定 ngk用户【KDE首页->租户管理->集群用户->添加用户组】: 创建角色,并绑定用户组 ngk_group 【KDE首页->租户管理->集群用户->添加角色】: 创建队列…

备忘录怎么改字体样式、字号和颜色?

在日常的工作和生活中&#xff0c;备忘录扮演着举足轻重的角色。每当灵感闪现&#xff0c;或是工作事项需要记录&#xff0c;我总是习惯性地打开我的备忘录&#xff0c;将这些宝贵的想法和任务一一记下 然而&#xff0c;随着使用频率的增加&#xff0c;我发现自己越来越渴望能…

PHP笔记

1. 搭建运行环境 1.1 挂载光盘 [rootredhat200 ~]# mount /dev/sr0 /mnt 1.2 配置仓库 # 查看仓库列表 [rootredhat200 ~]# dnf repolist# 进入到仓库目录 [rootredhat200 ~]# cd /etc/yum.repos.d/ # 编辑仓库文件 [rootredhat200 yum.repos.d]# vim base.repo # 查看仓库…

【antd + vue】Failed to resolve component: a-select-option

一、问题说明 1、出现情况&#xff1a; <a-select>嵌套<a-select-option>&#xff0c;其中<a-select-option>循环&#xff0c;能正常使用&#xff0c;但是控制台警告。 2、控制台警告&#xff1a; [Vue warn]: Failed to resolve component: a-select-op…

【电商API接口】网上商城接口/电商数据接口详情

比价接口背景&#xff1a;电商运营中&#xff0c;数据分析这项工作越来越重要&#xff0c;许多品牌方也越来越热衷去做电商数据分析。不过&#xff0c;全面的数据该如何获取呢&#xff0c;此时&#xff0c;电商数据接口的重要性便凸显出来了。 数据接口主要有以下特点&#xf…

GPT4o速测:约0.5秒延迟的多模态能力

文章目录 1. 测评2. IntroReference 没有剪辑&#xff0c;约0.5秒延迟的多模态能力。 1. 测评 推理速度异常快&#xff0c;比之前快了大概两三倍&#xff0c;对产品端来说是个很好的事情&#xff0c;想用gpt4级别性能终于可以少讨论几句时延影响用户体验了模型指令遵从能力变强…

哔哩哔哩直播通用榜单系统

榜单系统的定位和业务价值 榜单遍布B站直播相关业务的各个角落&#xff0c;直播打赏、直播间互动、付费玩法、互动玩法、活动、主播PK、语聊房、人气主播排名、高价值用户排名、增值集卡、up主充电等等&#xff0c;在这众多的业务场景中&#xff0c;我们能看到各种各样的榜单。…