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

> 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.mzph.cn/pingmian/11484.shtml

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

相关文章

Vulnhub-wp 获取vulnhub靶机wp搜索工具

项目地址:https://github.com/MartinxMax/vulnhub-wp 简介 搜索Vulnhub平台的解题文章,之过滤返回出正确可访问的页面 使用 $ python3 vulnhubwp.py 支持模糊搜索 [] Query: kiop 进入选项4,获取wp地址 [] Choice options: 4

DML之操作数据表

1. 插入数据 (1). 前言 前文我们实现了如果创建表&#xff0c;接下来我们将学习如何向数据表中插入数据.插入有两种方式. (2). 方式1 : 情况1 : 使用该语法一次只能向表中插入一条记录.为表中的任意字段按默认的顺序插入数据.值列表中需要为表的每一个字段指定值.并且值…

网络库-libevent介绍

1.简介 libevent是一个事件驱动的网络库&#xff0c;主要用于构建可扩展的网络服务器。它提供了跨平台的API&#xff0c;支持多种事件通知机制&#xff0c;如select、poll、epoll、kqueue等。 主要组件 event: 表示一个具体的事件&#xff0c;包括事件类型、事件回调等。eve…

【网络安全入门】你必须要有的学习工具(附安装包)零基础入门到进阶,看这一篇就够了!

工欲善其事必先利其器 在新入门网络安全的小伙伴而言。这些工具你必须要有所了解。本文我们简单说说这些网络安全工具吧&#xff01; Web安全类 Web类工具主要是通过各种扫描工具&#xff0c;发现web站点存在的各种漏洞如sql注入、xss等。从而获取系统权限&#xff0c;常用的…

iZotope RX 11 for Mac:音频修复的终极利器

在音频制作的浩瀚星海中&#xff0c;每一份声音都是珍贵的宝石&#xff0c;但往往被各种噪音、杂音所掩盖。此刻&#xff0c;iZotope RX 11 for Mac犹如一位专业的匠人&#xff0c;以其精湛的技术&#xff0c;将每一份声音雕琢至完美。 iZotope RX 11 for Mac&#xff0c;这是…

创新点!CNN与LSTM结合,实现更准预测、更快效率、更高性能!

推荐一个能发表高质量论文的好方向&#xff1a;LSTM结合CNN。 LSTM擅长捕捉序列数据中的长期依赖关系&#xff0c;而CNN则擅长提取图像数据的局部特征。通过结合两者的优势&#xff0c;我们可以让模型同时考虑到数据的时序信息和空间信息&#xff0c;减少参数降低过拟合风险&a…

MySQL—子查询

目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询&#xff0c;即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询&#xff0c;结…

远程终端协议TELNET

一、概述 TELNET是一个简单的远程终端协议&#xff0c;是互联网正式标准。 实现在本地对远程计算机进行操作&#xff1b;在本地键盘输入的字符通过应用层TELNET协议传输到远程服务器上&#xff0c;同时远程服务器把字符传送过来显示在本地的显示器上&#xff1b;TELNET协议采…

智能制造装备业项目数字化管理之项目模板管理

智能制造装备&#xff0c;作为工业4.0的核心组成部分&#xff0c;正日益受到全球制造业的关注。这类装备融合了信息技术和制造技术&#xff0c;旨在提高生产效率、降低成本并增强产品的个性化。然而&#xff0c;随着智能制造装备行业的飞速发展&#xff0c;项目管理复杂性也在不…

软件文档-总体测试计划书(Word原件2024)

软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解决…

Spring事件分析以及多种使用方式实践 使用场景 附可执行demo

我们先说说它的特点&#xff0c;优缺点&#xff0c;以及使用场景&#xff0c;然后再说具体是怎么做的 Spring事件驱动的优点 松耦合 事件驱动模型通过发布-订阅机制促进组件间的解耦&#xff0c;发送者和接收者不需要直接知道对方的存在&#xff0c;只需关注事件本身&#xff…

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

[猫头虎分享21天微信小程序基础入门教程]第7天:小程序的权限与API使用

第7天&#xff1a;小程序的权限与API使用 &#x1f510; 自我介绍 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师。今天我们将继续微信小程序的学习&#xff0c;重点了解如何使用微信小程序的API&#xff0c;以及如何管理和请求小程序的权限。通过这些知识&am…

可视化:智慧能源解决方案,降本增效,运筹帷幄。

智慧能源可视化解决方案是一种利用先进的技术和工具&#xff0c;将能源数据以直观、可视的方式呈现出来&#xff0c;帮助企业更好地管理能源使用&#xff0c;降低成本&#xff0c;提高效率的解决方案。 以下是一些智慧能源可视化解决方案可以帮助企业降本增效、智连未来的方式&…

js前端获取农历日期

对于公历来说&#xff0c;直接 new 一个 Date 就能获取到&#xff0c;而对于农历来讲可就很难了&#xff0c;因为农历需要有许多复杂计算&#xff0c;虽然一般用的甚少&#xff0c;但对于某些场景来说还是会需要的&#xff0c;那么怎样获取农历日期呢&#xff1f; 这里推荐一个…

Linux:进程信号

生活角度的信号 a.信号在生活中&#xff0c;随时可以产生(信号的产生和我是异步的) b.你能认识这个信号 c.我们知道信号产生了&#xff0c;我能识别这个信号&#xff0c;信号该怎么处理 d.我们可能正在做着更重要的事情&#xff0c;把到来的信号暂不处理(1.我记得这个事 2.…

要不还是别搞Google Play了

​好消息&#xff1a;误导性条款合规了 坏消息: 应用被暂停了&#xff0c;太难玩了 5.13日收到邮件&#xff0c;被告知应用因为应用内体验问题被暂停上架了 邮件大意是由于违反执行流程政策(Violation of Enforcement Process policy)。 这个政策主要是讲Google Play会对账户/…

求四个整数中的最大值(函数)(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int a, b, c, d, max;//获取用户输入的数据&#xff1b;printf("请输入4个整数&#x…

你知道在 TS 中判断两个类型相等有多难吗?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ TypeScript 中的类型相等 如果我们想判断两个变量是否相等&#xff0c;可以简单的通过 或 来进行比较&#xff0c;但是对比两个类型则不行。 在 TypeScript 中&#xff0c;类型是静态的&#xff0c;只会在编译时…

【Esp32S3 | Arduino】在Arduino中使用C++的高级特性

文章目录 前言一、Arduino中的Vector示例代码二、Arduino中的Map示例代码前言 最近在玩Arduino,自上次发现Arduino可以用Template,能使用高级宏后,这次发现Arduino竟可以使用C++中的一些STL容器,这属实令人震惊。起因是我打算做一个动态的数组,但是手动实现一些操作属实麻烦…