
谢大飞
V1
2023/04/29阅读:16主题:默认主题
转录组数据整理、导入及处理
转录组数据整理
转录组数据整理的话,主要就是获得read counts数
公司返回来的数据,一般是一个整体的表,全部的counts数都在这个表格里面,基因(列)和测序的时间及生物学重复(行)及其对应的counts值

那我们在进行处理之前,需要将其按照基因和每个时期的生物学重复进行整理,整理成一个个单独的表格

整理方法是将其传输到服务器中,然后使用cut命令取出相应的列,再保存为相应的文件
cut -f 1,2 >> MD1_1.mappedCount.txt
还需要整理样品的信息表,其中“files”指明文件的存放位置(相对位置即可),“stages”指明其所处的时期,因为每个时期都有四个生物学重复,所以按照每个时期将其整理在一起

加载R包
需要用到的R包主要有edgeR、RColorBrewer、limma
#下载安装R包
install.packages("edgeR")
install.packages("RColorBrewer")
install.packages("limma")
library(edgeR)
library(RColorBrewer)
library(limma)
options(digits=3) #指定只保留小数点后面三位

导入需要的数据
根据样品信息表将全部的数据进行导入
#导入样本信息表
MD.targets <- read.delim("./male/fileDesc_MD.txt", stringsAsFactors=F)
MD.targets #查看一下样本信息表
#根据样本信息表导入所有的样本信息文件,因为使用readEDG函数导入的,所以再查看的时候有一系列DGEList列表的内容
MD.orig <- readDGE(MD.targets, header=T)
MD.orig #确认MD.roig
## DGEList至少需要的元素:counts、samples(包含group分组信息和lib.size文库大小),counts用来存放表达矩阵,samples用来标记样本信息和库的大小,group声明组别
# 拷贝一份拿来进行处理,并计算一下里面的reads数
MD <- MD.orig
dim(MD)

读取counts数
MD.rawCount <- MD$counts #取出所有的原始的counts数
colnames(MD.rawCount) <- c("MD1_1","MD1_2","MD1_3","MD1_4","MD2_1","MD2_2","MD2_3","MD2_4","MD3_1","MD3_2","MD3_3","MD3_4") #根据样本信息来更改列名
write.table(MD.rawCount, file="./output/MD.rawCount.txt", sep="\t", quote=F)
#将表格写出存储

将counts数转变cpm指数
用来消除测序深度的影响,可以去除低表达量的基因,以及探索样本的分组信息,有助于挖掘潜在的差异样本
MD.allCPM <- cpm(calcNormFactors(MD))
colnames(MD.allCPM) <- c("MD1_1","MD1_2","MD1_3","MD1_4","MD2_1","MD2_2","MD2_3","MD2_4","MD3_1","MD3_2","MD3_3","MD3_4")
View(MD.allCPM)
write.table(MD.allCPM, file="./output/MD.norm_allCPM.txt", sep="\t", quote=F)
手动过滤cpm
MD.keep4 <- rowSums(cpm(MD)>4) >=4
table(MD.keep4)
MD$samples$lib.size
MD$samples
MD <- MD[MD.keep4,]
colSums(MD$counts)
dim(MD)
[1] 19078 12
MD$samples$lib.size <- colSums(MD$counts)
MD$samples
MD <- calcNormFactors(MD) #有效库大小——原始库大小与缩放因子的乘积称为有效库大小,会替换掉原始库的大小
MD$samples #样本的相关性信息 可以根据样本之间的相关性来画热图

不同的过滤系数得到的不同的值,选择合适的过滤系数,我这边过滤选择的系数是4(尝试之后选定一个合适的过滤系数即可,然后按照上面的流程走完)
MD.keep4 <- rowSums(cpm(MD)>4) >=4
> table(MD.keep4)
MD.keep4
FALSE TRUE
14041 19078
> MD.keep5 <- rowSums(cpm(MD)>5) >=4
> table(MD.keep5)
MD.keep5
FALSE TRUE
14671 18448
> MD.keep6 <- rowSums(cpm(MD)>6) >=4
> table(MD.keep6)
MD.keep6
FALSE TRUE
15234 17885
> MD.keep7 <- rowSums(cpm(MD)>7) >=4
> table(MD.keep7)
MD.keep7
FALSE TRUE
15750 17369
> MD.keep8 <- rowSums(cpm(MD)>8) >=4
> table(MD.keep8)
MD.keep8
FALSE TRUE
16210 16909
> MD.keep9 <- rowSums(cpm(MD)>9) >=4
> table(MD.keep9)
MD.keep9
FALSE TRUE
16699 16420
小声明:
-
命名方式按照自己的习惯来即可。 -
图片和代码中命名不一致是因为我有两个样品,刚开始是分开处理的,找不到MD处理的R脚本了,所以截图中显示的是FD。emmm,问题不大就是一个名字而已
作者介绍

谢大飞
V1