生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)

news2024/11/16 2:25:37

前置环境

macOS系统,已安装homebrew且会相关命令。

近期在整理草稿区,所以放出该贴。

R语言、RStudio、R包安装

R语言安装

brew install r

RStudio安装

官网地址:https://posit.co/download/rstudio-desktop/

R包下载

注意R语言环境自带的install语法没有内置对于已安装包的检查(这点真的……太乐了
所以建议任何包的下载都包含在require里面。
下载方式有如下几种,这里以dplyr为例:

# r代码实现官网下载
# 打开RStudio运行如下命令即可:
if (!require("dplyr")) {
  install.packages("dplyr")
}
# Bioconductor下载,注意需要先用r代码下载BiocManager包本身
if (!require("BiocManager")) {
  install.packages("BiocManager")
}
BiocManager::install("dplyr")
# Github下载,注意需要先用r代码下载devtools包本身
if (!require("devtools")) {
  install.packages("devtools")
}
devtools::install_github("dplyr")
# 手动安装R包

其中最推荐官网下载,其次为Bioconductor。
为了下载个R包下载devtools本身太不值了,可以看出来R语言并没有兼容github。
而手动安装R包存在需要同时安装该R包的依赖包的情况,过于麻烦(建议R语言出个好点的包管理工具和环境管理工具)

R语言常用语法和RStudio常用快捷键

R语言常用语法

# 引入R包
library("dplyr")

RStudio常用快捷键

ctrl+enter执行命令
ctrl+shift+c注释单行/多行

新版TCGA相关页面操作

TCGA在24年2月中旬更新过一次,现在页面操作建议先看https://www.bilibili.com/video/BV1b34y1g7RM的p3到p5
注意的是这个网站没有做国际化配置,使用浏览器自带的翻译可能会导致页面报错。

Cohort Builder

我们需要关注的是首先需要选取Cohort Builder这个标签页。将鼠标悬停到该标签上,可以看到提示:

Build and define your custom cohorts using a variety of clinical and biospecimen features.

翻译过来就是

使用各种临床和生物样本功能建立和定义您的定制队列。

也就是选一些筛查条件,选中了Cohort Builder这个标签页下,会出现几个可供筛选的表单:

  • Program(计划):表示研究计划的名称或标签。
  • Project(项目):表示一个具体的研究项目,通常是在特定的研究计划下进行的。
  • Disease Type(疾病类型):表示样本与哪种类型的疾病相关。选项如癌症、心血管疾病、神经系统疾病等。
  • Primary Diagnosis(主要诊断):表示样本的主要疾病诊断,即医生根据病理学、临床表现和其他检查结果所做的初步诊断。
  • Primary Site(主要部位):表示样本中主要病变或疾病发生的部位或组织。选项如肺、乳腺、结肠等。
  • Tissue or Organ of Origin(起源组织或器官):表示样本中疾病起源的具体组织或器官。

一般我们只需要关注前两个即可,即Program和Project。Program我们选择TCGA。Project以TCGA-LUSC为例。然后点击Repository。

Repository

将鼠标悬停到该标签上,可以看到提示:

Browse and download the files associated with your cohort for more sophisticated analysis.

翻译过来就是

浏览和下载与您的队列相关的文件,以进行更复杂的分析。

也就是进一步筛查,选中了Repository这个标签页下,会出现几个可供筛选的表单:

  • Data Category(数据类别):biospecimen生物胺、clinical临床、copy number variation拷贝数变化、dna methylationDNA甲基化、proteome profiling蛋白质组谱分析、sequencing reads测序读数、simple nucleotide variation简单核苷酸变异、somatic structural variation体细胞结构变异、structural variation结构变化、transcriptome profiling转录组图谱分析。
  • Data Type(数据类型):Gene Expression Quantification基因表达量化、Isoform Expression Quantification异构体表达的量化、miRNA Expression QuantificationMiRNA表达的量化、Splice Junction Quantification拼接接头的量化

一般Data Category选中transcriptome profiling转录组图谱分析, Data Type选中Gene Expression Quantification基因表达量化。

Cart

类似购物车的概念,将要下载的所有文件都放在了这里面,注意每次下载新的数据时要把老的数据全部清除掉。

一般下载两个文件:

  • Cart文件,存储基因表达的文件压缩包,下载所需比较久,两三百MB要下几分钟,推荐用我之后的方式下载。
  • Metadata文件,存储文件名称和样本名的对应关系的json文件。
    在这里插入图片描述

在这里插入图片描述

TCGA数据处理流程

查看癌症/肿瘤名称

https://blog.csdn.net/u010608296/article/details/112740418

在TCGA下载数据集

见如上新版TCGA页面操作

文件处理步骤

我们需要对下载下来的Cart文件和Metadata文件进行处理,得到列名为样本名,行名为基因名的文件。

自己写的脚本(R语言)

R语言代码如下:

# 安装jsonlite包,用于处理json相关
if (!require("jsonlite")) {
  install.packages("jsonlite")
}
library(jsonlite)

# 安装 tidyverse 包,它包含了一系列用于数据科学的 R 包,如dplyr、ggplot2 等工具
if (!require("tidyverse")) {
  install.packages("tidyverse")
}
library(tidyverse)


# 设置工作目录到 "F:/35P/3TCGA"或者"F:\\35P\\3TCGA",即meta.data所在的路径
setwd("/Users/shanshan/生信/test3")

# 读入 meta.data 文件
json <- fromJSON("metadata.cart.2024-05-12.json")

# 如果需要查看 json 对象的内容,可以取消注释以下行
# View(json)

# 获取样本名称及文件名称
# 假设 json 对象中的 associated_entities 字段是一个列表,每个元素都是一个数据框
sample_id <- sapply(json$associated_entities, function(x) x[,1])

# 如果需要查看 sample_id 的前 10 个元素,可以取消注释以下行
# sample_id[1:10]

# 创建一个数据框 file_sample,包含样本 ID 和文件名
file_sample <- data.frame(sample_id, file_name = json$file_name)

# 查看 file_sample 数据框的内容
View(file_sample)

# 获取 counts 文件所在的位置
# 注意:pattern 参数的值应该用双引号包围
count_file <- list.files('gdc_download_20240512_165220.387861/', pattern = "*.tsv", recursive = TRUE)

# 如果需要查看 count_file 的前 10 个元素,可以取消注释以下行
# count_file[1:10]

# 获取每个文件的名称
# 使用 strsplit 函数按照 '/' 分割每个文件路径
count_file_name <- strsplit(count_file, split = '/')
# 使用 sapply 函数提取每个分割结果的最后一个元素作为文件名称
# 注意:这里假设文件名是路径的最后一个部分
count_file_name <- sapply(count_file_name, function(x) x[length(x)])

# 如果需要查看 count_file_name 的前 10 个元素,可以取消注释以下行
# count_file_name[1:10]

# 构建一个空的数据框
# 注意:这里的 matrix 应该是 matrix,ncol 应该是 ncol
matrix <- data.frame(matrix(nrow = 60660, ncol = 0))

# 逐个读取及合并
for (i in 1:length(count_file)) {
  # 拼接文件路径
  # 注意:这里的 paste 应该是 paste0,'//' 应该是 '/'
  path <- paste0('gdc_download_20240512_165220.387861/', count_file[i])
  
  # 读取 Counts 文件
  # 注意:这里的 read.delim 的 fill 参数应该是 fill,header 参数应该是 header
  data <- read.delim(path, fill = TRUE, header = FALSE, row.names = 1)
  
  # 设置列名
  # 注意:这里的 data[2, ] 应该是 data[2, ],假设第二行包含列名
  colnames(data) <- data[2, ]
  
  # 移除前 6 行
  data <- data[-c(1:6), ]
  
  # 选择特定的列
  # 注意:这里的 data[3]、data[6]、data[7] 应该是 data[, 3]、data[, 6]、data[, 7]
  # data <- data[, 3]  # 选择 unstranded counts
  data <- data[6]  # 选择 tpm_unstranded
  # data <- data[, 7]  # 选择 fpkm_unstranded
  
  # 设置列名为对应的样本 ID
  # 注意:这里的 file_samples 应该是 file_sample,file_samples$file_name 应该是 file_sample$file_name
  colnames(data) <- file_sample$sample_id[which(file_sample$file_name == count_file_name[i])]
  
  # 将数据绑定到 matrix 数据框
  # 注意:这里的 cbind 应该是 cbind,matrix 应该是 matrix
  matrix <- cbind(matrix, data)
}

# 转化为 gene_symbol
# 拼接文件路径
# 注意:这里的 paste0 应该是 paste0,'//' 应该是 '/'
path <- paste0('gdc_download_20240512_165220.387861/', count_file[1])

# 读取数据并转换为矩阵
# 注意:这里的 as.matrix 和 read.delim 应该是正确的函数名
data <- as.matrix(read.delim(path, fill = TRUE, header = FALSE, row.names = 1))

# 提取基因名称
gene_name <- data[-c(1:6), 1]

# 如果需要查看 gene_name 的前 10 个元素,可以取消注释以下行
gene_name[1:10]

# 将基因名称绑定到矩阵
# 注意:这里的 matrix 应该是之前创建的 matrix 变量
matrix <- cbind(gene_name, matrix)

# 提取基因类型
gene_type <- data[-c(1:6), 2]

# 如果需要查看 gene_type 的前 10 个元素,可以取消注释以下行
# gene_type[1:10]

# 将基因类型绑定到矩阵
matrix <- cbind(gene_type, matrix)

# 将 gene_name 列去除重复的基因,保留基因最大表达量结果
# 注意:这里的 aggregate 函数应该使用正确的公式和数据框
matrix <- aggregate(. ~ gene_name, data = matrix, max)

# 查看 gene_name 的分布
table(gene_name)


# 保留 protein_coding 类型的基因
# 注意:这里的 subset 函数应该使用正确的数据框和条件
matrix0 <- subset(matrix, gene_type == "protein_coding")

# 查看 gene_type 的分布
table(gene_type)

# 将 gene_name 列设置为行名,并转换为导出格式
# 注意:这里的 matrix 应该是之前创建的 matrix 变量
rownames(matrix) <- matrix[, 1]
matrix <- matrix[, -c(1, 2)]

# 创建一个新的数据框,包含 ID 和之前的矩阵
# 注意:这里的 data.frame 创建应该是正确的
matrix1 <- data.frame(ID = rownames(matrix), matrix)

# 替换列名中的非法字符
# 注意:这里的 gsub 函数应该使用正确的模式和替换字符串
colnames(matrix1) <- gsub('[.]', '_', colnames(matrix1))

# 导出数据
# 注意:这里的 write.table 函数应该使用正确的文件名和参数
write.table(matrix1, 'TCGA_LUSC_TPM.txt', sep = "\t", quote = FALSE, row.names = FALSE)

# 如果需要导出 count 数据,可以取消注释以下行
# write.table(matrix1, 'TCGA_LUSC_count.txt', sep = "\t", quote = FALSE, row.names = FALSE)

医学概念

TPM和FPKM

TPM和FPKM是两种常用的基因表达量计算方法。它们用于衡量基因在不同样本中的表达水平,并在转录组分析和基因表达研究中广泛使用。

TPM(Transcripts Per Million):TPM是一种归一化的基因表达量表示方法,它考虑了样本中基因表达的总量,并将其转换为每百万个转录本的表达量。TPM的计算方法可根据基因的Read Counts和基因的长度来进行,以考虑到测序深度和基因长度对表达量的影响。TPM值反映了基因在样本中相对的表达水平,且可比较不同样本中基因的表达量变化[2]。

FPKM(Fragments Per Kilobase of transcript per Million mapped reads):FPKM是基因表达量的另一种归一化表示方法,它也考虑了样本的测序深度和基因长度对表达量的影响。FPKM是将基因的Read Counts除以基因长度(以千碱基对为单位),然后乘以每百万个测序reads的比例缩放到一定大小的值。FPKM常用于RNA-Seq数据分析中,并且对于单个基因的表达量而言,FPKM值可以表示其相对的表达水平[1]。

总之,TPM和FPKM都是用于衡量基因表达水平的归一化方法,可以解决测序深度和基因长度对表达量的影响。TPM计算基于转录本的表达水平,而FPKM则根据测序reads的映射情况计算。

旧版TCGA相关

·因为现在大多数教程用的都是官网1.0版本的页面,所以建议进入1.0的官网地址:https://portal.gdc.cancer.gov/v1/repository

页面操作

Cases用来筛选。Primary Site意味着疾病或者病人种类。在这里以胰腺癌pancreas为例下载。
如果只有一个选项则默认勾选,即使前面的勾选框没有勾选。

Data Category中可以筛选是转录组还是其他。在这勾选Transcriptome Profiling。
Data Type中可以筛选是基因表达水平还是其他。在这勾选Gene Expression Quantification。
Experimental Strategy可以筛选是RNA序列还是其他。在这勾选Experimental Strategy。
Workflow Type可以筛选数据处理的类型。在这勾选Counts。

然后勾选页面上的Add All Files to Cart。

编号

在这里插入图片描述

主要看Sample样品编号。01-09意味着癌症组织。10-19意味着正常组织。20-29意味着正常人的组织。

在这里插入图片描述
Counts意味着无矫正。FPKM意味着用FPKM进行矫正。FPKM-UQ意味着用两种方法:FPKM和UQ进行矫正。
一般下载Counts即可。

这五个都是要下载下来的。其中

  • Clinical意味着临床数据。下载JSON格式的。
  • Biospecimen意味着生物多样性数据。下载JSON格式的。
  • File Metadata用于TCGA编号文件和病人的对应关系。
  • Manifest意味着样本信息,即要下载的TCGA数据文件的详细信息,包括文件名、大小、类型、数据格式等。
  • Cart意味着基因文件。下载是需要最久的。

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

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

相关文章

Vue3集成搜索引擎智能提示API

需求&#xff1a; 如何在项目中实现像百度搜索框一样的智能提示效果&#xff0c;如下图所示&#xff1a; 相关知识&#xff1a; 下面是各厂商提供的免费API 厂商请求百度http://suggestion.baidu.com/su?wd中国&cbwindow.baidu.sug必应http://api.bing.com/qsonhs.as…

大数据技术在智慧医疗中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 大数据技术在智慧医疗中的应用 大数据技术在智慧医疗中的应用 大数据技术在智慧医疗中的应用 引言 大数据技术概述 定义与原理 发…

游戏引擎学习第10天

视频参考:https://www.bilibili.com/video/BV1LyU3YpEam/ 介绍intel architecture reference manual 地址:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html RDTS&#xff08;读取时间戳计数器&#xff09;指令是 x86/x86_64 架构中的…

「QT」文件类 之 QTemporaryDir 临时目录类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

Kettle配置数据源错误“Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found”解决记录

问题描述 错误提示&#xff1a;“Driver class ‘org.gjt.mm.mysql.Driver’ could not be found, make sure the ‘MySQL’ driver (jar file) is installed.” 原因分析&#xff1a; 根据错误提示是缺少了相关的数据源连接jar包。 解决方案&#xff1a; 安装对应的Mysql…

C++《继承》

在之前学习学习C类和对象时我们就初步了解到了C当中有三大特性&#xff0c;分别是封装、继承、多态&#xff0c;通过之前的学习我们已经了解了C的封装特性&#xff0c;那么接下来我们将继续学习另外的两大特性&#xff0c;在此将分为两个章节来分别讲解继承和多态。本篇就先来学…

力扣(LeetCode)283. 移动零(Java)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:雾失楼台&#xff0c;月迷津渡&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…

运算放大器的学习(一)输入阻抗

输入阻抗 最近需要对运算放大器进行学习&#xff0c;我们后面逐一对其参数进行了解。 首先了解下输入阻抗。 放大电路技术指标测试示意图&#xff1a; 输入电阻&#xff1a; 从放大电路的输入端看进去的等效电阻称为放大电路的输入电阻&#xff0c;如上图&#xff0c;此处考虑…

Python3.11.9下载和安装

一、Python3.11.9下载和安装 1、下载 下载地址&#xff1a;https://www.python.org/downloads/windows/ 选择版本下载&#xff0c;例如&#xff1a;Python 3.11.9 - April 2, 2024 2、安装 双击exe安装 3、配置环境变量 pathD:\Program Files\python3.11.9 pathD:\Progr…

大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载

随着生成算法、预训练模型、多模态数据分析等AI技术的聚集融合&#xff0c;AIGC技术的实践效用迎来了行业级大爆发。通用大模型技术的成熟推动了新一轮行业生产力变革&#xff0c;在投入提升与政策扶植的双重作用下&#xff0c;以大模型技术为底座、结合专业化金融能力的金融大…

杰控通过 OPCproxy 获取数据发送到服务器

把数据从 杰控 取出来发到服务器 前提你在杰控中已经有变量了&#xff08;wincc 也适用&#xff09; 打开你的opcproxy 软件包 opcvarFile 添加变量 写文件就写到 了 opcproxy.ini中 这个文件里就是会读取到的数据 然后 opcproxy.exe发送到桌面快捷方式再考回来 &#…

Vue3 -- 环境变量的配置【项目集成3】

环境&#xff1a; 在项目开发过程中&#xff0c;至少会经历开发环境、测试环境和生产环境(即正式环境)三个阶段。 开发环境 .env.development测试环境 .env.test生产环境 .env.production 不同阶段请求的状态(如接口地址等)不一样&#xff0c;开发项目的时候要经常配置代理跨…

vxe-table 分享实现无限滚动行方式

Vxe UI vue vxe-table 分享无限滚动行方式 实现无限滚动加载有多种方式&#xff0c;可以使用 scroll 事件&#xff0c;也可以使用 scroll-boundary 事件&#xff0c;能满足不同的需求场景。 以下是分享使用 scroll-boundary 事件的用法。 原理 通过 scrollY.threshold 设置阈…

C++中的栈(Stack)和堆(Heap)

在C中&#xff0c;堆&#xff08;heap&#xff09;和栈&#xff08;stack&#xff09;是两种用于存储数据的内存区域。理解它们的原理和区别&#xff0c;对于优化代码性能和确保代码的安全性至关重要。以下是对C中堆栈的详细解析&#xff0c;包括它们的分配方式、优缺点、应用场…

outlook邮箱关闭垃圾邮件——PowerAutomate自动化任务

微软邮箱反垃圾已经很强大了非常敏感&#xff0c;自家的域名的邮件都能给扔到垃圾邮箱里&#xff0c;但还是在本地增加了一层垃圾邮箱功能&#xff0c;然后垃圾邮箱并没有提示&#xff0c;导致错过很多通知&#xff0c;本身并没有提供关闭的功能&#xff0c;但微软有个Microsof…

FFmpeg的基本结构

FFmpeg框架可以简单分为两层&#xff0c;上层是以ffmpeg、ffplay、ffprobe为代表的命令行工具&#xff1b;其底层支撑是一些基础库&#xff0c;包含AVFormat、AVCodec、AVFilter、AVDevices、AVUtils等模块库。 常用函数如下&#xff1a; 1. AVFormat 封装/解封装模块 avf…

Web性能优化:从基础到高级

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Web性能优化&#xff1a;从基础到高级 Web性能优化&#xff1a;从基础到高级 Web性能优化&#xff1a;从基础到高级 引言 基础优…

MATLAB实战 利用1D-DCGAN生成光谱或信号数据

0.前言 在光谱学或信号处理领域&#xff0c;获取大量高质量的数据可能是一项挑战。利用DCGAN进行“迁移学习”&#xff0c;对抗性地生成光谱或信号数据&#xff0c;具有强化、泛化样本特征的应用潜力。 该实战项目提供了所有源代码与测试数据&#xff0c;旨在帮助学者快速地掌握…

react + ts定义接口类型写法

接口&#xff08;未进行ts定义&#xff09; export async function UserList(params: {// keyword?: string;current?: number;pageSize?: number;},// options?: { [key: string]: any }, ) {return request<API1.UserList>(http://geek.itheima.net/v1_0/mp/artic…

uniapp luch-request 使用教程+响应对象创建

1. 介绍 luch-request 是一个基于 Promise 开发的 uni-app 跨平台、项目级别的请求库。它具有更小的体积、易用的 API 和方便简单的自定义能力。luch-request 支持请求和响应拦截、全局挂载、多个全局配置实例、自定义验证器、文件上传/下载、任务操作、自定义参数以及多拦截器…