R语言Python GEO DataSets多个Series进行差异基因表达分析以及导入Excel到R的问题

本文主要是介绍R语言Python GEO DataSets多个Series进行差异基因表达分析以及导入Excel到R的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引入

GEO DataSets上,某些Series是由多个series组成的,比如GSE6834,由六个Series组成:

This SuperSeries is composed of the following SubSeries:
Less… Less…
GSE6771 Temporal Cortex Control (mesial temporal lobe epilepsy control)
GSE6773 Temporal neocortex mesial temporal lobe epilepsy
GSE6774 Temporal Cortex Control (Alzheimer’s disease control)
GSE6774 Temporal Cortex Alzheimer’s Disease
GSE6777 Cerebellum Alzheimer’s Disease
GSE6778 Cerebellum Control (Alzheimer’s disease control)

每个Series又包括10个GSM,要知道一般都是实验组对照组在同一个矩阵中才能进行差异表达分析。那么举个例子,GSE6774和GSE6774,一个对照一个实验,两个矩阵怎么分析呢?

txt转为xlsx

很多人第一反应可能是将两个TXT合二为一,这样做可以,尤其是多个Series,这样还可以利用批处理减轻工作量,但是中间涉及到对齐、插入制表符等问题,很可能出错。不如借助Excel,直接在Excel中复制粘贴即可完成(Series比较少的话)。首先将txt转为xlsx,利用Java或者Python等脚本都可以完成,下面给出Python版的:

# coding=utf-8
import xlsxwriter
import pandas as pdworkbook = xlsxwriter.Workbook(r'D:\Alzheimer\Series\GSE6834\6780.xlsx') 
worksheet= workbook.add_worksheet(u'matrix')
txt=open(r'D:\Alzheimer\Series\GSE6834\6778.txt')m=0
n=0for m in range(1,8690):print(m);line=txt.readline()data=line.split('\t')for n in range(1,11):worksheet.write(m-1,n-1,data[n-1])worksheet.write(m-1,10,data[10][0:-1]) workbook.close()

注意worksheet.write(m-1,10,data[10][0:-1])这一行,由于每个数据带一个\t,但每一行最后一个还额外多一个\n,所以这一个\n要特殊处理。
转化为TXT后,直接复制粘贴便可合二为一。

在这里插入图片描述

xlsx到R中的数据框

xlsx做好了,怎么将其变成我们需要的数据框呢?
思路一:将其转化为txt,也就是再变回去。但是转化时,需要加入\t, \n等符号,也是比较麻烦,容易出错。
思路二:在R中直接用readxl包导入xlsx为数据框。乍一看貌似这个方法最简单,但是有一个问题:xlsx里的数据是文本格式,不能直接用于数据分析。否则,就会出现报错:

> fit=lmFit(exp_matrix, design)
Error in rowMeans(y$exprs, na.rm = TRUE) : 'x' must be numeric

要想批量将Excel中文本格式的数字转化成数字格式,一般的办法是转成csv,然后再转回来。不过,既然转成csv了,不如直接用R导入就可以了。
思路三:将xlsx转成csv,然后用read.csv()导入。
导入之后观察实验矩阵:在这里插入图片描述
发现数据框第一列居然是探针名字,而不是想象中探针名字作为数据框的行名。所以我们还需要一步,修改下这个数据框。

更改数据框行名(rownames)

首先,我们需要知道更改数据框行名的函数是row.names()。这个函数的参数是向量,所以我们需要把数据框第一列转化成向量;如果直接将数据框或者矩阵作为行名会报错Error in `.rowNamesDF<-`(x, value = value) : 'row.names'的长度不对。那么,数据框怎么转化为向量呢?中间必要的一步是矩阵。所以正确的方法是连续用两个函数as.matrix()as.vector()
另外我们还需要将第一列删除,注意删除是在赋rownames之前,否则刚刚赋好的rownames也会被删除!
这一部分代码如下:

m=as.matrix(exp_matrix[, 1])
v=as.vector(m)
exp_matrix<-exp_matrix[, -1]
row.names(exp_matrix) <- v

处理后的数据框如下:在这里插入图片描述

差异表达分析

最后贴一下这个例子中,从导入到差异表达分析的全过程:

library("reshape2")
library("hgu133plus2.db")
library("limma")setwd("D:/Alzheimer/Series/GSE6834")exp_matrix<-read.csv("6774&6775.csv",header = TRUE)
m=as.matrix(exp_matrix[, 1])
v=as.vector(m)
exp_matrix<-exp_matrix[, -1]
row.names(exp_matrix) <- v#TC_Control	Temporal Cortex Control (AD)
#TC_AD Temporal Cortex Alzheimer's disease
type <-c('TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_Control','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD','TC_AD')
design <- model.matrix(~ -1+factor(type,levels=c('TC_Control','TC_AD'),ordered=TRUE)) 
colnames(design) <- c('TC_Control','TC_AD')
rownames(design)=colnames(exp_matrix)fit=lmFit(exp_matrix, design)contrast.matrix=makeContrasts(TC_ControlVSTC_AD=TC_Control-TC_AD,levels=design) 
fit2 = contrasts.fit(fit, contrast.matrix) 
fit2 = eBayes(fit2)
results <- decideTests(fit2) 
vennDiagram(results)diff1 = topTreat(fit2, coef=1,p.value=0.05, n=Inf, adjust.method='BH')write.table(diff1, "diff.TC_ControlVSTC_AD.GSE6834.txt",sep = '\t',quote = F)

这篇关于R语言Python GEO DataSets多个Series进行差异基因表达分析以及导入Excel到R的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943736

相关文章

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推