RNASeq——AAV-NDNF(ALS治疗文献复现)

数据来源:https://ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE226291

避雷指南(希望我真的记住:)

 0.很多命令用的不熟练,但是熟能生巧,还是希望你能多多多多练习——算我求你了。1. 数据下载:确定好control和treat分别对应的SRR号,千万别搞反了;2. 基因注释文件下载:NCBI或ENDNOTE或gencote下载的注释文件里id不一样,需要提前查看文件确定是ensembl id还是gene id,这个决定了下游分析是是否要id转换,最好是不要这一步,费时费力还容易报错;3. 比对软件的选择:hisat2最好不用,一方面他的结果是sam文件,后面还需要转bam文件,这个耕费时间,同时他自身比对也比较慢;STAR虽然需要自己建索引,但是人和小鼠的建好了以后也可以用,整体耗费的时间比hisat2少太多;4. 计数软件:htseq软件也是很慢,可以不用;featureCounts非常迅速,同时可以将几个文件的计数结果放在一个文件里,最后就省去了合并,好用;RSEM一般,用起来也麻烦,建议还是featureCounts;5. 下游分析如果不需要id转换,就方便一些,按步骤整理好count矩阵,用DESeq2分析就好,分析过程中切记看好control组和treat组,不能写反;6. 最好时刻查看数据框是否是自己想要的样子,有问题及时解决;7. 报错后如果gpt无法解决,就直接放进浏览器,在CSDN、简书、gitub上搜寻;8. 火山图绘制时可以添加的东西很多,可以结合实际需要做选择;9. GO分析只需要找出差异基因,可以选择网站也可以直接r语言。

下载数据(3小时)

#!/bin/bash
for i in 1 2 3 4 5 6
do
prefetch SRR2364187${i}
done#下载注释文件的时候最好查看一下 选择gene id 要不然后面还需要id转换
wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M25/GRCm38.p6.genome.fa.gz
wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_mouse/release_M25/gencode.vM25.annotation.gtf.gz

格式转换(5-6小时)

#!/bin/bash
for i in 1 2 3 4 5 6
do
echo SRR2364187${i}
fastq-dump --gzip --split-files SRR2364187${i}
done

数据质控(0.5小时)

#!/bin/bash
for i in 1 2 3 4 5 6
do
fastp -i /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_1.fastq.gz -I /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_2.fastq.gz -o SRR2364187${i}_1_clean.fastq.gz -O SRR2364187${i}_2_clean.fastq.gz -h report.html -j report.json
done

hisat2序列比对(5.5小时)

索引文件可以自己建,也可以下载,STAR需要自己建索引,hisat2可以直接用官网的索引。

#!/bin/bash
for i in 1 2 3 4 5 6
do
hisat2 -t -x /home/hemiaomiao/NDNFrnaseq/genome/mm10/genome -1 /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_1_clean.fastq.gz -2 /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_2_clean.fastq.gz -S /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}.sam
done

STAR比对(1小时 +1小时)

#建索引
STAR --runMode genomeGenerate --runThreadN 16 --genomeDir /home/hemiaomiao/NDNFrnaseq/genome/mm10_index --genomeFastaFiles /home/hemiaomiao/NDNFrnaseq/genome/GRCm38.p6.genome.fa --sjdbGTFfile /home/hemiaomiao/NDNFrnaseq/genome/gencode.vM25.annotation.gtf --sjdbOverhang 100#比对
#!/bin/bash
for i in 1 2 3 4 5 6
doSTAR --genomeDir /home/hemiaomiao/NDNFrnaseq/genome/mm10_index \--readFilesIn /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_1_clean.fastq.gz /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_2_clean.fastq.gz \--runThreadN 16 \--runMode alignReads \--readFilesCommand zcat \--quantMode TranscriptomeSAM GeneCounts \--outFileNamePrefix SRR2364187${i}_ \--outSAMtype BAM SortedByCoordinate
done
chmod 777 star.sh
./star.sh

samtools文件格式转换(1.5-2小时)(针对hisat2的结果)

#!/bin/bash
for i in 1 2 3 4 5 6
do
samtools view -S SRR2364187${i}.sam -b > SRR2364187${i}.bam
samtools sort SRR2364187${i}.bam -o SRR2364187${i}_sorted.bam #将所有的bam文件按默认的染色体位置进行排序
samtools index SRR2364187${i}_sorted.bam
done

htseq计数(9小时)

#!/bin/bash
for i in 1 2 3 4 5 6
do
samtools sort -n SRR2364187${i}.bam -o SRR2364187${i}_nsorted.bam #上一步是按照染色体位置排序的 这里需要按照reads数重新排序(read name排序)
htseq-count -r name -f bam /home/hemiaomiao/NDNFrnaseq/data/SRR2364187${i}_nsorted.bam /home/hemiaomiao/NDNFrnaseq/genome/gencode.vM25.annotation.gtf > /home/hemiaomiao/NDNFrnaseq/matrix/SRR2364187${i}.count 
done

featureCounts计数(10分钟左右)

这一步的结果第一列是ensembl_gene_id而不是gene_symbol,但上次用STAR比对后统计是gene,这个不确定原因。

#计数hisat2比对结果
featureCounts -g gene_id -a /home/hemiaomiao/NDNFrnaseq/genome/gencode.vM25.annotation.gtf -o /home/hemiaomiao/NDNFrnaseq/matrix/gene_exp.txt -p /home/hemiaomiao/NDNFrnaseq/data/SRR23641871_nsorted.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641872_nsorted.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641873_nsorted.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641874_nsorted.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641875_nsorted.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641876_nsorted.bam#计数STAR比对结果
featureCounts -g gene_id -a /home/hemiaomiao/NDNFrnaseq/genome/gencode.vM25.annotation.gtf -o /home/hemiaomiao/NDNFrnaseq/matrix/gene_count.txt -p /home/hemiaomiao/NDNFrnaseq/data/SRR23641871_Aligned.sortedByCoord.out.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641872_Aligned.sortedByCoord.out.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641873_Aligned.sortedByCoord.out.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641874_Aligned.sortedByCoord.out.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641875_Aligned.sortedByCoord.out.bam /home/hemiaomiao/NDNFrnaseq/data/SRR23641876_Aligned.sortedByCoord.out.bam

下游分析

#featureCounts计数
raw_gene_exp <- read.table("D:/R/NDNF/NDNF-RNAseq/gene_count.txt",header = T,row.names = 1)
gene_exp <- raw_gene_exp[,6:11]
colnames(gene_exp) <- c("treat1","treat2","treat3","control1","control2","control3")library(DESeq2)
library(ggrepel)
library(ggplot2)#行名去除小数点
ENSEMBL <- gsub("\\.\\d*", "", row.names(gene_exp)) 
row.names(gene_exp) <- ENSEMBL #去除表达量为0的行
gene_exp_filt <- gene_exp[rowSums(gene_exp == 0) != ncol(gene_exp), ]#gene名转换
ensembl <- useMart("ensembl", dataset = "mmusculus_gene_ensembl")
my_ensembl_gene_id<-row.names(gene_exp_filt)
options(timeout=4000000)
devtools::install_version("dbplyr", version = "2.3.4")
mms_symbols<-biomaRt::getBM(attributes=c('ensembl_gene_id','external_gene_name'),filters='ensembl_gene_id',values=list(ensembl_gene_id =my_ensembl_gene_id),mart=ensembl)#合并表达矩阵
gene_exp_filt$gene_id <- rownames(gene_exp_filt)
colnames(gene_exp_filt) <- c("treat1","treat2","treat3","control1","control2","control3","ensembl_gene_id")
readcount<-merge(gene_exp_filt,mms_symbols,by="ensembl_gene_id")
readcount <- readcount[,-1]#合并重复行
library(dplyr)
merged_readcount <- readcount %>%group_by(external_gene_name) %>%summarise(treat1 = sum(treat1, na.rm = TRUE),treat2 = sum(treat2, na.rm = TRUE),treat3 = sum(treat3, na.rm = TRUE),control1 = sum(control1, na.rm = TRUE),  # 对control1求和control2 = sum(control2, na.rm = TRUE),control3 = sum(control3, na.rm = TRUE),)
merged_readcount <- merged_readcount[-1,]
row.names(merged_readcount) <- merged_readcount$external_gene_name
rowname <- row.names(merged_readcount)
merged_readcount <- merged_readcount[,-1]
row.names(merged_readcount) <- rowname#构建DDS对象 开始DES分析
#countData差异基因列表 colData
condition <- factor(c(rep("treat",times=3),rep("control",times=3)))
colData = data.frame(row.names = colnames(merged_readcount), condition)
dds <- DESeqDataSetFromMatrix(merged_readcount,colData,design = ~condition)
dds <- DESeq(dds)#提取结果(dds和dds_resuil都是package result从dds分析结果里提取出对比结果)
dds_results <- results(dds, contrast = c("condition","treat","control"))
dds_results <- as.data.frame(dds_results[order(dds_results$pvalue),])
table(dds_results$pvalue<0.05)#绘图进阶
library(RColorBrewer)
library(ggrepel)
dds_results$name <- rownames(dds_results)
dds_results <- dds_results[,c(1,2,3,4,5,7)]
#画的火山图标签有NA 所以需要去除 这一步之前dds_results是29808行 去除后是29806行
dds_results <- na.omit(dds_results)
dds_results$change <- factor(ifelse(dds_results$pvalue < 0.05 & abs(dds_results$log2FoldChange) >= 1,ifelse(dds_results$log2FoldChange >= 1, 'Up', 'Down'),'Stable'),levels = c('Up', 'Down', 'Stable')
)
table(dds_results$change)#上一步的另一种写法
dds_results$change <- "Stable"
dds_results[dds_results$pvalue<0.05 & dds_results$log2FoldChange >= 1,]$change <- "Up"
dds_results[dds_results$pvalue<0.05 & dds_results$log2FoldChange <= -1,]$change <- "Down"ggplot(dds_results,aes(x=log2FoldChange,y= -log10(pvalue),color=change))+geom_point(data = dds_results[dds_results$pvalue<0.05&abs(dds_results$log2FoldChange)>=1,],size = 5)+ #上调或下调的基因圆点大小为5geom_point(data = dds_results[dds_results$pvalue>0.05|abs(dds_results$log2FoldChange)<1,],size = 4)+ #没有变化的大小为4scale_color_manual(values=c("#f38db0","#7eadc9","#d9d9d9"))+ #确定点的颜色geom_text_repel(data = dds_results[dds_results$pvalue<0.05&abs(dds_results$log2FoldChange)>1,],aes(label = name),size = 4.5,color = "black",segment.color = "black", show.legend = FALSE )+ #添加关注的点的基因名ylab('-log10 (pvalue)')+ #修改y轴名称xlab('log2 (FoldChange)')+ #修改x轴名称geom_vline(xintercept=c(-1,1),lty=3,col="black",lwd=0.5) + #添加横线|logFoldChange|>1geom_hline(yintercept = -log10(0.05),lty=3,col="black",lwd=0.5) + #添加竖线padj<0.05theme_bw(base_line_size = 1 )+ #主题设置和坐标轴的粗细geom_label(label = "Down 207 genes", hjust = 0, size = 4, color = "#7eadc9")+theme(axis.title.x = element_text(size = 15, color = "black",face = "bold"),axis.title.y = element_text(size = 15,color = "black",face = "bold", vjust = 1.9, hjust = 0.5, angle = 90),legend.title = element_blank(),legend.text = element_text(color="black", # 设置图例标签文字size = 10, face = "bold"),axis.text.x = element_text(size = 13,  # 修改X轴上字体大小,color = "black", # 颜色face = "bold", #  face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗vjust = 0.5, # 位置hjust = 0.5, angle = 0), #角度axis.text.y = element_text(size = 13,  color = "black",face = "bold", vjust = 0.5, hjust = 0.5, angle = 0) )
table(dds_results$change)#普通火山图
p <- ggplot(data = dds_results, aes(x=log2FoldChange,y= -log10(pvalue))) +  geom_point(alpha = 0.4, size = 3.5, aes(color = change)) +      # 添加散点,根据change列着色ylab("-log10(Pvalue)") +               # 设置y轴标签scale_color_manual(values = c("#f38db0","#7eadc9","#d9d9d9")) +  geom_vline(xintercept=c(-1,1),lty=3,col="black",lwd=0.5) + #添加横线|logFoldChange|>1geom_hline(yintercept = -log10(0.05),lty=3,col="black",lwd=0.5) + #添加竖线padj<0.05theme_bw()+  # 使用网格白底主题geom_text_repel(data = dds_results[dds_results$pvalue<0.05&abs(dds_results$log2FoldChange)>1,],aes(label = name),size = 4.5,color = "black",segment.color = "black", show.legend = FALSE )+ #添加关注的点的基因名theme(axis.title.x = element_text(size = 15, color = "black",face = "bold"),axis.title.y = element_text(size = 15,color = "black",face = "bold", vjust = 1.9, hjust = 0.5, angle = 90),legend.title = element_blank(),legend.text = element_text(color="black", # 设置图例标签文字size = 10, face = "bold"),axis.text.x = element_text(size = 13,  # 修改X轴上字体大小,color = "black", # 颜色face = "bold", #  face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗vjust = 0.5, # 位置hjust = 0.5, angle = 0), #角度axis.text.y = element_text(size = 13,  color = "black",face = "bold", vjust = 0.5, hjust = 0.5, angle = 0) )
table(dds_results$change)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞米仕智能门锁:以科技之名,重塑未来家居安全新篇章

在智能科技日新月异的今天&#xff0c;家居安全已悄然迈入了一个全新的智能化时代。近日&#xff0c;飞米仕智能门锁在杭州未来科技城举办了一场盛大的新品发布会&#xff0c;正式推出了其高端旗舰产品——飞米仕智能门锁K10系列。K10系列分为尊享版和旗舰版&#xff0c;售价分…

基于Java Springboot旅游民宿信息管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

SpringBoot - spring.profiles.active最佳实践

文章目录 Pre概述为什么需要多环境配置多环境配置实现步骤1. 配置文件准备2. 激活特定环境方法1&#xff1a;命令行参数方法2&#xff1a;环境变量方法3&#xff1a;IDE 配置方法4&#xff1a;全局配置文件默认设置 3. 配置文件加载顺序配置生效的原理 4. 常见问题多个配置文件…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

03 —— Webpack 自动生成 html 文件

HtmlWebpackPlugin | webpack 中文文档 | webpack中文文档 | webpack中文网 安装 npm install --save-dev html-webpack-plugin 下载html-webpack-plugin本地软件包 npm i html-webpack-plugin --save-dev 配置webpack.config.js让webpack拥有插件功能 const HtmlWebpack…

如何控制自己玩手机的时间?两台苹果手机帮助自律

对一些人来说&#xff0c;被智能手机“绑架”是一件心甘情愿的事&#xff0c;和它相处的一天中&#xff0c;不必面对现实的压力&#xff0c;它就像个“舒适区”。这是因为在使用手机的过程中&#xff0c;应用程序&#xff08;尤其是游戏和社交媒体应用&#xff09;会不断刺激大…

解决“400 Bad RequestThe plain HTTP request was sent to HTTPS portnginx/1.23.1”

目录 一、问题描述 二、问题解决 三、问题原因 &#xff08;1&#xff09;问题成因 &#xff08;2&#xff09;那为什么访问其他网站的时候&#xff0c;其不会出错呢&#xff1f;而且自己会用https协议&#xff1f; 一、问题描述 在浏览器直接输入&#xff1a;“xxx.xxx.x…

有趣的跳马问题与最优路径

献给皮鞋&#x1f45e;经理 有一个无限大的棋盘&#xff0c;在某个点有一个只能走日的马&#xff0c;计算马到达棋盘上任意一个点 P(x, y) 最小步数。 “走日” 规则下&#xff0c;任意坐标的 “马” 是否可达任意其它坐标需要证明。按照递归原则&#xff0c;只需证明 “马” …

IDEA自定义文件打开格式

介绍在IDEA中自定义文件打开格式的方法&#xff0c;比如一个文件&#xff0c;可以选择用txt格式打开&#xff0c;也可以选择用xml格式打开&#xff0c;也可以用java格式打开等等&#xff0c;通过这个方法可以方便的用任意格式在idea中打开想要打开的文件。 下面分别讨论三种不…

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容&#xff0c;请访问&#xff1a; https://baiduworld.baidu.com 首先&#xff0c;跟大家分享一张图&#xff0c;这个是我们目前大模型应用落地的场景分布。可以看到&#xff0c;大模型…

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 &#x1f4af;题目&#x1f4af;问题分析解法一&#xff1a;减法法解法二&#xff1a;位运算解法解法三&#xff1a;逻辑非解法解法四&#xff1a;条件运算符解法解法五&#xff1a;数组映射法不同解法的比较…

第二十一章 Spring之假如让你来写AOP——Weaver(织入器)篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

04 - Clickhouse-21.7.3.14-2单机版安装

目录 一、准备工作 1、确定防火墙处于关闭状态 2、CentOS 取消打开文件数限制 3、安装依赖 4、CentOS取消SELINUX 二、单机安装 2.1、下载安装 2.2、安装这4个rpm包 2.3、修改配置文件 2.4、启动服务 2.5、关闭开机自启 2.6、使用Client连接server 一、准备工作 1…

Python脚本-linux远程安装某个服务

需求&#xff1a; 某公司因为网站服务经常出现异常&#xff0c;需要你开发一个脚本对服务器上的服务进行监控&#xff1b;检测目标服务器上是否存在nginx软件(提供web服务的软件)&#xff0c;如果不存在则安装(服务器可能的操作系统Ubuntu24/RedHat9)&#xff1b;如果nginx软件…

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号) 本期是平台君和您分享的第113期内容 前一段时间,高通公司(Qualcomm)发布安全警告称,提供的60多款芯片潜在严重的“零日漏洞”,芯片安全再一次暴露在大众视野。 那什么是“零日漏洞”?平台君从网上找了一段…

x-cmd mod | x pixi - 兼容 Conda 生态的极速包管理器,conda 和 mamba 用户的另一选择

目录 介绍使用语法参数子命令 介绍 x pixi 模块是由 x-cmd 团队使用 posix shell 实现的 pixi 命令增强工具。它能优化 pixi 命令的安装和使用体验&#xff0c;具体如下&#xff1a; 提供带有 advise 的自动补全功能。对于中国区用户&#xff0c;我们还提供了汉化版的 advise…

Rust derive macro(Rust #[derive])Rust派生宏

参考文章&#xff1a;附录 D&#xff1a;派生特征 trait 文章目录 Rust 中的派生宏 #[derive]基础使用示例&#xff1a;派生 Debug 派生其他常用特征示例&#xff1a;派生 Clone 和 Copy 派生宏的限制和自定义派生自定义派生宏上面代码运行时报错了&#xff0c;以下是解释 结论…

Node.js | npm下载安装及环境配置教程

前言&#xff1a; npm 是 Nodejs 下的包管理器&#xff0c;在下载 Node.js 后自动安装&#xff0c;因此本文同时适合 Node.js / npm 的下载安装及环境配置。 一、软件安装 Node.js中文网官网下载页&#xff1a;Node.js 中文网 (nodejs.com.cn) 1&#xff09;进入下载页&#xf…

pytorch奇怪错误

ValueError: At least one stride in the given numpy array is negative, and tensors with negative strides are not currently supported. (You can probably work around this by making a copy of your array with array.copy().) 今天在这里遇到了一个奇怪的bug impor…

EDA实验设计-led灯管动态显示;VHDL;Quartus编程

EDA实验设计-led灯管动态显示&#xff1b;VHDL&#xff1b;Quartus编程 引脚配置实现代码RTL引脚展示现象记录效果展示 引脚配置 #------------------GLOBAL--------------------# set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" set_…