目录

  • 实验设计
  • TCGA数据库简介
  • TCGA数据的获取
  • 数据预处理
    • 三阴性乳腺癌患者(TNBC)筛选
      • 读取文件
      • 列出三项指标的列表,方便筛选
      • TNBC的筛选
    • 基因表达矩阵的构建
      • 基因表达矩阵的读取和读取后格式修改
      • 对表达矩阵进行筛选构建
      • 对构建的表达矩阵进行数据筛选
      • 癌症组织和正常组织的区分和标记
      • 表达矩阵的筛选(应该在上一步一起进行)
  • 患者的癌症组织和正常组织的基因差异表达分析

实验设计

实验目的决定试验方法和途径。
试验目的 :获取三阴性乳腺癌的正常组织和癌症组织的基因表达差异情况,比较三阴性乳腺癌中的基因表达变化情况。
试验设计 :通过TCGA获取乳腺癌的RNA-seq表达数据,筛选出三阴性乳腺癌的样本,通过比较癌症和正常组织的表达差异。

TCGA数据库简介

一句话介绍:TCGA数据库是一个由国家癌症研究所(National Cancer Institute)和美国人类基因组研究所(National Human Genome Research Institute)共同监督的一个项目。使用对患者样本的高通量基因组测序和分析技术来试图提供括基因表达谱,拷贝数变异分析,SNP基因分型,全基因组DNA甲基化分析,微RNA分析等信息。收录了33种癌症基因组测序数据。TCGA数据处理和整理比Oncoman和GEO困难一些。但是针对肿瘤和癌症所能提供的信息是很完善和可靠的。
TCGA和GEO存在的区别是,GEO存在各种研究领域和研究方向的NGC数据和分析。TCGA是专门针对肿瘤和癌症设立的。TCGA优势是丰富且规范的临床数据,以及针对每种癌型的大样本量。

TCGA数据的获取

背景介绍:
三阴性乳腺癌是指癌组织免疫组织化学检查结果为雌激素受体(ER)、孕激素受体(PR)和原癌基因Her-2均为阴性的乳腺癌。这类乳腺癌占所有乳腺癌病理类型的10.0%~20.8%,具有特殊的生物学行为和临床病理特征,预后较其他类型差。–from:百度百科:三阴性乳腺癌

实验设计:
三阴性乳腺癌的筛选标准是根据pheotype来确定的,表达量是通过RNAseq结果确定的,正常组织和癌症组织是通过病例号确定的。

  1. TCGA项目的数据可以通过Genomic Data Commons Data Portal获取,即通过GDC来访问,访问地址:https://portal.gdc.cancer.gov/。
  2. TCGA数据库公开免费,所以有许多针对TCGA数据进行整合的网站。还可以通过UCSC Xena进行下载:https://xena.ucsc.edu/public。试验数据的选择和目的息息相关,试验设计:

    点击BRCA(乳腺癌)进入数据选择界面。
  3. 选择gene expression RNAseq>HTSeq - Counts。注意不要用RPKM等经过了normlization的表达矩阵来分析。要使用Counts来进行差异分析,因为在差异分析时候会自动进行标准化。如果数据经过处理例如log2+1,则可以下载后逆运算转变回来。
  4. 选择phenotype>Phenotype这里面有病人的病例信息等,可以通过统计筛选出三阴性乳腺癌的患者。
  5. 点击连接进去会看到详细的信息如下载地址、样品数、数据处理方法等。

数据预处理

实验设计:筛选出三阴性乳腺癌的患者ID,再筛选出同时有癌症组织样本和癌旁组织样本,计算初始Count值。

三阴性乳腺癌患者(TNBC)筛选

实验设计:在R语言中处理数据,选择breast_carcinoma_estrogen_receptor_status(ER)、PR、HER2受体一栏全为隐形(Negative)的患者。
原始的phenotype文件如下图,信息量巨大

R语言实现

读取文件

phenotype_file <- read.table("TCGA-BRCA.GDC_phenotype.tsv",header = T, sep = '\t', quote = "")
phenotype_colnames <- as.data.frame(colnames(phenotype_file))
#读取文件并去读列名(penotype的类型)
table(phenotype_file$breast_carcinoma_estrogen_receptor_status)
#查看雌激素受体(ER)的表达状态。
table(phenotype_file$breast_carcinoma_progesterone_receptor_status)
#查看孕激素受体(PR)状态
table(phenotype_file$lab_proc_her2_neu_immunohistochemistry_receptor_status)
#查看原癌基因Her-2状态

列出三项指标的列表,方便筛选

实验设计:查找三项指标的列并列出

colnames_num <- grep("receptor_status",colnames(phenotype_file))
#在phenotype_file列中检索“receptor_status”,grep返回值是列名的列表中包含有“receptor_status”的列序号,因为三阴性乳腺癌的三项指标在这里都有phenotype_file字段#>colnames_num
#[1] 20 25 67 77 87 93
phenotype_colnames <- colnames(phenotype_file)[colname_num]
#利用匹配的返回值取列名到phenotype_colnames中,phenotype_colnames中存储的是含有“receptor_status”字段的列名
eph <- phenotype_file[,colnames_num[1:3]]
#把三项指标筛选出来,建立一个新的表格。方便筛选全阴的行(ID号)


函数学习:

?apply
# b为:
# first second
# one       1      4
# two       2      5
# three     3      6
# apply(b,1,sum)
# 上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:
# 第一个参数是指要参与计算的矩阵;
# 第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;
# 第三个参数是指具体的运算参数。
# 上述指令的返回结果为:
# one   two three
# 5     7     9

TNBC的筛选

实验设计:查找指标的状态并统计;列出三阴性并筛选出来这些数据

tnbc_rownum <- apply(eph,1,function(x)sum(x=="Negative"))
#eph:记录三项指标类型的矩阵
#将eph按照列执行sum(x=="Negative"):统计各行中,eph列中有Negative的数量
#通过查看阴性的数量,函数返回结果是一个数字向量。内容是0或1、2、3。注意数字的排列顺序是对应病人ID的行。
tnbc_rownum
tnbc_sample <- phenotype_file[tnbc_rownum == 3, 1]
#通过让 tnbc_rownum==3 判别,如果成立,会返回一个logical向量,logical向量是可以直接被矩阵引用的,只会读取TURE的行或着列
#统计每一行中数值是3的(即全为“Negative”)并取第一列即病人ID
#tnbc_sample:存储着三阴性乳腺癌的
tnbc_sample
save(tnbc_sample,file = 'tnbc_sample.Rdata')
#保存Rdata

基因表达矩阵的构建

基因表达矩阵的读取和读取后格式修改

实验设计:转换data.frame ;行名修改;Count值还原

library(data.table)
#?data.table
#R中的data.table包提供了一个data.frame的高级版本,让你的程序做数据整型的运算速度大大的增加。
a <- fread("TCGA-BRCA.htseq_counts.tsv.gz",sep = '\t',header = T)
#读取表达矩阵文件
a <- as.data.frame(a)
#转换为数据框,读取后,转换前的a的类型是"data.table" "data.frame"
a[1:4,1:4]
rownames(a) <- a[,1]
a <- a[,-1]
#去除第一列,行名修改。
genes <- row.names(a)
genes[1:10]
##接下来还原counts数,网站使用了log2(count+1)进行counts数转换,接下来进行还原
a <- a^2-1
#a存储的全是数值型向量,可以直接通过数学处理进行全表修改。

对表达矩阵进行筛选构建

实验设计:列出TNBC的ID(前半部分),所有病人ID,有双样品类型的seq的病人ID,取TNBC的ID和双样品类型的seq病人ID交集作为目的病人ID。最后用 all_p %in% need_p 构建logical向量,被原始表达矩阵引用,构建符合目的要求的表达矩阵

##接下来是取样本,需要取118个三阴性乳腺癌的样本,并且是成对的样本,即既有癌组织又有癌旁组织。
tnbc_p <- substring(tnbc_sample,1,12)
#取tnbc的每个元素的第一个到第12个字符
#tnbc是TNBC患者的ID前部分
all_p <- substring(colnames(a),1,12)
head(all_p)
#取表达矩阵的病理号前12位
table(all_p)
#这里如果病人号前12位相同,说明是即既有癌组织又有癌旁组织。
table(all_p) == 2
paired_p <- names(table(all_p)[table(all_p) == 2])
#去除所有有两个组织类型的病人ID前部分赋值给paired_id
need_p <- intersect(tnbc_p,paired_p)
#need_p是118个是成对的样本。即既有癌组织又有癌旁组织exprSet <- a[,all_p %in% need_p]
#构建表达矩阵:三阴性乳腺癌的样本,并且是成对的样本,即既有癌组织又有癌旁组织
#这里通过 all_p %in% need_p 处理返回一个 logical向量,logical和第一个数据元素all_p一一对应,元素个数和顺序和all_P相同。向量可以在在data.frame中引用,只会读取 TRUE

对构建的表达矩阵进行数据筛选

实验设计:利用apply函数统计条件符合情况,然后保存为logical向量,然后利用logical的被引用来筛选

table(apply(exprSet, 1, function(x){sum(x==0)<10}))
tmp <- apply(exprSet, 1, function(x){sum(x==0)<10})
#对exprSet进行按行执行函数function:
#如果表达矩阵是0则取1,在18个样本中,如果这个基因的表达矩阵超过10个样本都是空值,则舍弃这个基因
#tmp是一个logical向量
exprSet <- exprSet[tmp,]
save(exprSet,file = 'tnbc_paired_exprSet.Rdata')
#保存三阴性乳腺癌的双样本表达矩阵

癌症组织和正常组织的区分和标记

实验设计:利用substr()函数截取患者ID的有效信息位置,用ifelse()函数进行判断,并用factor()函数生成因子型变量。最后赋值得到患者的样品类型

Tips:TCGA可以根据第14和第15位判断是癌组织还是癌旁组织。01表示癌症组织,11表示正常组织

#TCGA可以根据第14和第15位判断是癌组织还是癌旁组织。01表示癌症组织,11表示正常组织
colnames(exprSet)
#提取列名
substr(colnames(exprSet),14,15)
#提取列名字符串的第14和15位置字符
as.numeric(substr(colnames(exprSet),14,15))
#现在提取的字符变成数字 '11'和 11不等同
ifelse(as.numeric(substr(colnames(exprSet),14,15)) < 10,'tumor','normal')
#判断第14和15号位的数值<10 即等于01时候,返回tumor 否则返回normal
factor(ifelse(as.numeric(substr(colnames(exprSet),14,15)) < 10,'tumor','normal'))
#question 把它变成因子型,因子型是有顺序的。这里需要变换成因子型
group_list=factor(ifelse(as.numeric(substr(colnames(exprSet),14,15)) < 10,'tumor','normal'))
#group_list记录了表达矩阵中患者ID的对应的组织类型,和表达矩阵的顺序一样。
table(group_list)

表达矩阵的筛选(应该在上一步一起进行)

实验设计:修正小于0的(因为变换过程中可能会产生-1,会影响实验),检查并去除na值。

exprSet <- ceiling(exprSet)
#?ceiling()取整,不小于变量本身
#round()以四舍五入形式保存指定小数位数
#floor()不大于变量本身最大整数
#table(is.na(exprSet))
#pmax(),使得矩阵最小值是0?
save <- exprSet
exprSet[exprSet<0] <- 0
table(exprSet<0)
table(is.na(exprSet))

患者的癌症组织和正常组织的基因差异表达分析

library(DESeq2)
#构建一个病例号和肿瘤分类的对应关系
colData <- data.frame(row.names = colnames(exprSet),group_list= group_list)
#colData:是患者ID号和组织类型的对应关系#构建DESeq()函数要求的表达式
dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = colData,design = ~ group_list)
#countData = exprSet,指出DESeq的表达矩阵
#colData = colData,知名每个表达矩阵的分类,比如实验组&对照组,正常组织&癌症组织
#question
#design= ~group_list,因子型,指出不同组的区别,是有顺序的。
dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = colData,design = ~group_list)
dds <- DESeq(dds)
#进行差异基因分析
resultsNames(dds)
res <-  results(dds, contrast=c("group_list","tumor","normal"))
#用group_list来做引导文件,用tumor来比较normal组织resOrdered <- res[order(res$padj),]
#把res差异分析文件通过padj来排序
head(resOrdered)
resOrdered=as.data.frame(resOrdered)
#把resOrdered变成数据框,
write.table(resOrdered, file="single cell DGE order.xls", sep="\t",quote=F)
#写出差异基因文件

我想建立并管理一个高质量的生信&统计相关的微信讨论群,如果你想参与讨论,可以添加微信:veryqun 。我会拉你进群,当然有问题也可以微信咨询我。

通过整理TCGA数据,探索某癌症的癌组织和正常组织的差异基因。相关推荐

  1. TCGA数据下载方法简介

    TCGA数据,指癌症测序数据,TCGA的全称为The Cancer Genome Atlas,癌症基因组图谱(TCGA)是美国国家癌症研究所(NCI)和国家人类基因组研究所(NHGRI)已生成的33种 ...

  2. 数据库数据 | TCGA数据库33种癌症的 miRNA Isoform Expression数据

    该数据是我自己下载整理过的数据. 下载日期:2021年8月25日 下载方式:TCGAbiolinks包 数据类型:RData 变量名称:mir_Count:mir_RPM path <- dir ...

  3. tcga数据下载_TCGA数据挖掘(二):数据下载与整理

    关于TCGA数据库中的数据下载,我们之前有介绍过R语言下载包:R语言TCGA-Assembler包下载TCGA数据,同时在介绍数据库的使用教程中也介绍了在线下载以及官方下载工具下载:TCGA数据库使用 ...

  4. tcga样本编号_数据挖掘专题 | 一文搞懂TCGA数据整理

    原标题:数据挖掘专题 | 一文搞懂TCGA数据整理 本文经授权转载自生信控 我们已经通过前两期数据下载(一)和数据下载(二)介绍了TCGA数据下载方法,并最终得到每个样本一个独立文件夹形式的数据,整理 ...

  5. R语言---使用cgdsr包下载TCGA数据---笔记整理

    原文链接:https://mp.weixin.qq.com/s?__biz=MzAxMDkxODM1Ng==&mid=2247486492&idx=1&sn=3a7251244 ...

  6. tcga数据下载_给你tcga数据库过万病人的原始测序数据你可以做什么

    最近有两年前的学生过来寻求合作,让我想想给我tcga数据库过万病人的原始测序数据,我可以做什么方法学的创新.我想把这个问题抛给粉丝: 假设给你tcga数据库过万病人的原始测序数据你可以做什么??? 大 ...

  7. 新版TCGA数据库学习:批量下载新版TCGA数据

    众所周知,TCGA数据库改版了!!改的比之前更好用了! 对于常规转录组数据,主要是以下几点改变: 下载一次即可获得counts.TPM.FPKM三种类型的表达矩阵,再也不用单独下载了 自带gene s ...

  8. tcga数据下载_TCGA数据库免疫相关文件下载大全

    本文首发于生信技能树公众号,直达链接是:https://mp.weixin.qq.com/s/-amtbxvk0mC2Nv-bwt1BeQ 2018年4月Immunity杂志上发表了文章The Imm ...

  9. linux下载TCGA数据,如何下载TCGA数据/TCGA数据下载小教程

    1. 什么是TCGA?TCGA中有哪些数据? TCGA的全称是The Cancer Genome Atlas, 这个项目始于2005年,它旨在使用基因测序和生物信息学编目与癌症有关的基因突变.TCGA ...

最新文章

  1. pymsql学习笔记
  2. 项目展示文案生成设计
  3. CList 点击表头排序 (1)SortItems函数
  4. c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍
  5. C语言数据类型从计算机原理的角度是怎样看待的?
  6. 二值化图像是什么?图像如何二值化?
  7. Apache虚拟主机配置详细教程
  8. 千万不要急着 返城上班!
  9. SpringBoot的@Value注解设置默认值
  10. C语言 生成随机数 srand用法 伪随机函数rand srand需不需要重新播种问题 srand该不该放在循环里
  11. Squared Error 数学
  12. 手写数字识别的小优化
  13. 贵金属软件MT4好不好用?MT4软件有什么优势特点?
  14. 小米2s Android pie,Android 9.0 Pie正式版发布,小米MIX 2S率先升级,国内第一款!
  15. 前端鼠标点击出现动画大全
  16. DOM常用操作与Demo
  17. python_爬虫_七麦网
  18. java毕业设计创新创业竞赛管理系统2021Mybatis+系统+数据库+调试部署
  19. java calendar转string_Date、String、long、Calendar类型之间的转化及时间加减
  20. 青龙-快手极速版(3/2更新)

热门文章

  1. powerbi电商客户分析案例练习
  2. 4、从软件角度看PCIe设备的硬件结构
  3. springboot个人网站系统毕业设计源码261620
  4. dwg批量删除自定义范围内指定地物的工具,CAD快速批量删除指定地物,基于FME实现批量删除CAD数据的指定地物
  5. 头歌实践教学平台数据结构与算法:02线性表
  6. 乐高制作的写字机器人夹笔机构,可快速装卸更换
  7. thinkpad win10 莫名卡死的可能原因
  8. 解释C语言中的字符串数组(详细解析)
  9. 编程实践-逻辑回归分类算法--马的疝气病症分类
  10. 《计算机体系结构量化研究方法第六版》1.2 计算机的分类