生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)
前置环境
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 参数应该是 headerdata <- 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 countsdata <- data[6] # 选择 tpm_unstranded# data <- data[, 7] # 选择 fpkm_unstranded# 设置列名为对应的样本 ID# 注意:这里的 file_samples 应该是 file_sample,file_samples$file_name 应该是 file_sample$file_namecolnames(data) <- file_sample$sample_id[which(file_sample$file_name == count_file_name[i])]# 将数据绑定到 matrix 数据框# 注意:这里的 cbind 应该是 cbind,matrix 应该是 matrixmatrix <- 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意味着基因文件。下载是需要最久的。
相关文章:
生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)
前置环境 macOS系统,已安装homebrew且会相关命令。 近期在整理草稿区,所以放出该贴。 R语言、RStudio、R包安装 R语言安装 brew install rRStudio安装 官网地址:https://posit.co/download/rstudio-desktop/ R包下载 注意R语言环境自带…...
十三、注解配置SpringMVC
文章目录 1. 创建初始化类,代替web.xml2. 创建SpringConfig配置类,代替spring的配置文件3. 创建WebConfig配置类,代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类,代替web.xml 2. 创建SpringConfig配置类,代替spr…...
为什么海外服务器IP会被封
海外服务器因为免备案而备受用户欢迎,近年来租用海外服务器的用户也越来越多,自然也可能会出现一些问题。 如果服务器IP被封,在该服务器下的所有业务都无法访问,对自己和对用户来说都会有较大的影响。因此,我们应做好相…...
图像处理技术椒盐噪声
椒盐噪声,也称为脉冲噪声,是图像中经常见到的一种噪声。它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。这些白点和黑点会在图像中随机分布,导致图像中…...
[笔记]L6599的极限工作条件考量
0.名词 OTP over tempature protect.OCP over current protectOVP over voltage protectBrownout Protection Undervoltage Protection可能需要考虑hysteresis response.因为要考虑一些高频干扰 1.基本的过流保护逻辑 参考:ST L6599 器件手册 LLC开关电源&#…...
机器学习基础04
目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…...
Ubuntu 20.04 配置开发环境(持续更新)
搜狗输入法不能显示中文 sudo apt install libqt5qml5 libgsettings-qt1 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 编译环境配置 sudo apt-get update #base tools of ubuntu sudo apt install net-tools gitk tree vim termina…...
Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
# Rocky9 直接使用pip安装mysqlclient会出现缺少依赖,需要先安装mysql-devel相关依赖。由于rocky9用MariaDB替代了MySQL,所以我们可以通过安装mariadb-devel来安装所需要的依赖。 如果Rocky9已经开启了powertool repo可以直接使用下面命令安装 dnf in…...
探索 HTML 和 CSS 实现的 3D旋转相册
效果演示 这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果,每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画,实现了一个动态的旋转展示效果 HTML <div class"wrapper"><div class"inner" style"-…...
OpenJudge_ 简单英文题_04:0/1 Knapsack
题目 描述 Given the weights and values of N items, put a subset of items into a knapsack of capacity C to get the maximum total value in the knapsack. The total weight of items in the knapsack does not exceed C. 输入 First line: two positive integers N (…...
深入探索离散 Hopfield 神经网络
一、离散 Hopfield 神经网络的起源与发展 离散 Hopfield 神经网络由约翰・霍普菲尔德在 1982 年提出,这一创新性的成果在当时引起了广泛关注,成为早期人工神经网络的重要代表之一。 在那个时期,人工神经网络的发展还处于相对初级的阶段。霍…...
[智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备]
智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备。它们通常包括几个不同类型,如前视摄像头、环视摄像头、行车记录仪等。这些摄像头的主要功能有: 前视摄像头(Forward Camera):用于提供驾驶员前方…...
前端vue 列表中回显并下拉选择修改标签
1,vue数据列表中进行回显状态并可以在下拉框中选择修改,效果如下 2,vue 页面关键代码 <el-table-column label"审核" align"center" class-name"small-padding fixed-width" prop"status" >&…...
hbase未来的发展趋势
HBase 作为一个开源的分布式、可伸缩的 NoSQL 数据库,依托于 Hadoop 生态系统,以处理海量结构化数据为优势。随着大数据技术的发展,HBase 的发展趋势主要体现在以下几个方面: 1. 与云计算深度集成 随着企业向云迁移,HBase 也正在越来越多地部署在云环境中。云服务商(如 …...
Rust 语言学习笔记(二)
再继续快速学习一下 Rust 的以下几个知识点,就可以开始着手做点小工具了 基本数据类型复合数据类型基本的流程控制 Rust 设计为有效使用内存考虑的,它提供了非常细力度的数据类型,如整数分为有无符号,宽度从 8 位到 128 位&…...
【postman】怎么通过curl看请求报什么错
获取现成的curl方式: 1,拿别人给的curl 2,手机app界面通过charles抓包,点击接口复制curl 3,浏览器界面-开发者工具-选中接口复制curl 拿到curl之后打开postman,点击import,粘贴curl点击send&am…...
Python 编程入门指南(一)
1. Python 简介 Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而备受欢迎。Python由Guido van Rossum于20世纪90年代初设计,旨在提供易于阅读和编写的代码,适合从初学者到专业开发者的各个水平。它是一种解释型语言,这意味着在编写和执行代码之间不需要…...
macOS 设置固定IP
文章目录 以太网Wifi 基于 macOS 15.1 以太网 Wifi...
redis实现消息队列的几种方式
一、了解 众所周知,redis是我们日常开发过程中使用最多的非关系型数据库,也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列(大家自己下去研究吧~模式都是通用的),我们也能使用redis实现消息队列。…...
debian 系统更新升级
系统升级能够有效避免漏洞导致的损害 不过需要做好提前和后续的测试,避免现有运行程序的错误。 debian安装参考:链接 一、清理过时和不再使用的源 1.清理源 vi /etc/apt/sources.list2.在下面的文件夹下清理不需要的 cd /etc/apt/sources.list.d二、…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...
