万能代码:从Bam文件一键生成包含基因名、TPM表达量的基因表达矩阵

文摘   2024-11-05 22:06   以色列  

热门免费资源:

一、国自然类:


1 2023历年国自然标书全文

3 国自然项目答辩PPT

5 标书写作模板

7 GraphPad 9安装包

2 2018-24年国自然清单

4 基金插图素材(可编辑)

6 近10年国自然标书全文

二、SCI生信+实验类:

1 160套SCI实验操作视频

3 Meta分析范文+教程

5 泛癌分析万能代码

7 130套SCI实验视频

9 单细胞数据挖掘课

11 统计分析万能模板

2 100个SCI实验Protocol

4 miRNA预测靶基因代码

6 动物实验操作视频汇总

GEO/TCGA数据挖掘课

10 SCI写作万能模板

三、科研绘图类:

PPT科研绘图素材合集

3 Adobe illustrator绘图素材

5 动物实验矢量图素材

7 PS修各种SCI实验图视频

资源共享群

PPT科研绘图插件VIP版

4 各种实验仪器矢量图素材

6 细胞实验矢量图素材

AI科研绘图视频课

10 亲交友微信群


一、今日推送:

前面我们给大家分享了基因组文件和基因组注释文件的下载(点击查看)。给大家分享了怎么用基因组文件构建索引,和用注释文件构建基因长度文件,和bam文件定量得到raw count和TPM文件(点击查看)


但是最终的基因表达文件中有Raw count和TPM数据,但是没有基因的名字,只有ENSG。


今天,我们又给大家分享万能代码。一键从bam文件得到基因表达文件,含基因名,TPM表达量:



这样你就可以用这个表达矩阵做很多事情了,用Raw count进行DEseq2的差异分析,也可以用TPM的表达矩阵进行单基因GSEA分析预测基因的靶基因及功能


万能代码如下:


#!/bin/bash
# 加载必要的模块module load subreadmodule load multiqc
# 定义目录和文件路径,公众号:科研部,都是万能代码,请关注WORK_DIR="改为你的工作目录"GTF_FILE="改为你的路径/gencode.v38.annotation.gtf"BAM_DIR="改为你的路径"OUTPUT_FILE="all.id.txt"GENE_LENGTH_FILE="改为你的路径/gene_lengths.txt"RAW_COUNTS_FILE="raw_counts.txt"TPM_COUNTS_FILE="tpm_counts.txt"COMBINED_OUTPUT_FILE="rawcount_TPM.txt"
# 切换到工作目录cd $WORK_DIR
# 使用 featureCounts 生成原始计数数据featureCounts -T 40 -t exon -g gene_id -a $GTF_FILE -o $OUTPUT_FILE $BAM_DIR/*.bam
# 使用 multiqc 对定量结果进行质控multiqc $OUTPUT_FILE.summary
# 提取原始计数数据,跳过前两行注释tail -n +3 $OUTPUT_FILE | cut -f1,7- > $RAW_COUNTS_FILE
# 从GTF文件中提取gene_id和symbol信息awk -F'\t' '$3 == "gene"' $GTF_FILE | awk -F';' '{ gid = ""; gname = ""; for (i = 1; i <= NF; i++) { if ($i ~ /gene_id/) { split($i, arr, "\""); gid = arr[2]; } if ($i ~ /gene_name/) { split($i, arr, "\""); gname = arr[2]; } } if (gid != "" && gname != "") print gid "\t" gname;}' > gene_id_symbol.txt
# 输出 gene_id_symbol.txt 文件的内容echo "gene_id_symbol.txt 文件内容:"cat gene_id_symbol.txt
# 计算TPM值的脚本python3 << EOFimport pandas as pd
# 读取原始计数数据,指定列名raw_counts = pd.read_csv("$RAW_COUNTS_FILE", sep='\t', header=0, names=["gene_id", "count"])print("Raw counts file head:\n", raw_counts.head())
# 读取基因长度和symbol数据gene_lengths = pd.read_csv("$GENE_LENGTH_FILE", sep='\t')print("Gene lengths file head:\n", gene_lengths.head())
# 读取gene_id和symbol对应关系gene_id_symbol = pd.read_csv("gene_id_symbol.txt", sep='\t', header=None, names=["gene_id", "symbol"])print("Gene ID to symbol mapping head:\n", gene_id_symbol.head())
# 转换gene_id列的数据类型,确保一致性raw_counts['gene_id'] = raw_counts['gene_id'].astype(str)gene_lengths['gene_id'] = gene_lengths['gene_id'].astype(str)gene_id_symbol['gene_id'] = gene_id_symbol['gene_id'].astype(str)
# 检查gene_id_symbol中是否有缺失值print("Missing values in gene_id_symbol:\n", gene_id_symbol[gene_id_symbol.isna().any(axis=1)])
# 合并基因长度和symbol到原始计数数据merged_data = pd.merge(raw_counts, gene_lengths, on='gene_id', how='inner')merged_data = pd.merge(merged_data, gene_id_symbol, on='gene_id', how='left')print("Merged data head:\n", merged_data.head())
# 计算TPMdef calculate_tpm(df): df = df.copy() gene_lengths_kb = df['gene_length'] / 1000 # 转换为kb reads_per_kb = df['count'] / gene_lengths_kb per_million_scaling_factor = reads_per_kb.sum() / 1e6 tpm = reads_per_kb / per_million_scaling_factor return tpm
# 计算TPM值tpm_values = calculate_tpm(merged_data)tpm_df = pd.DataFrame({ 'gene_id': merged_data['gene_id'], 'tpm': tpm_values})print("TPM values head:\n", tpm_df.head())
# 保存TPM值tpm_df.to_csv("$TPM_COUNTS_FILE", sep='\t', index=False)
# 读取TPM数据,指定列名tpm_counts = pd.read_csv("$TPM_COUNTS_FILE", sep='\t')print("TPM counts file head:\n", tpm_counts.head())
# 转换TPM数据中的gene_id列的数据类型,确保一致性tpm_counts['gene_id'] = tpm_counts['gene_id'].astype(str)
# 合并原始计数、TPM值和基因symbolmerged_counts = pd.merge(merged_data, tpm_counts, on='gene_id')print("Merged counts with symbol head:\n", merged_counts.head())
# 保存合并后的文件,并确保gene_id、symbol、count和tpm列的顺序final_counts = merged_counts[['gene_id', 'symbol', 'count', 'tpm']]final_counts.to_csv("$COMBINED_OUTPUT_FILE", sep='\t', index=False)EOF
echo "基因表达矩阵生成完毕,文件保存为 $COMBINED_OUTPUT_FILE"


脚本概述

以下是一个用于从BAM文件生成基因表达矩阵的脚本。该脚本利用了常用的生物信息学工具和编程语言(如subread和Python),通过以下步骤实现:

  • 使用featureCounts从BAM文件计算原始计数(Raw count)。

  • 使用GTF文件构建基因长度文件。

  • 从GTF文件中提取基因名(symbol)信息。

  • 计算每个基因的TPM(Transcripts Per Million)值。

  • 将原始计数、TPM值和基因名合并到一个最终的基因表达矩阵文件中。

这个脚本不仅自动化了数据处理过程,还确保了数据的准确性和一致性,使研究人员能够专注于转录组数据的后续分析和解释。


最后生成文件,Rawcount_TPM内容如下:



好了,希望能帮到大家。


结果解析


通过这个脚本,你将得到一个包含基因名、Raw count和TPM值的基因表达矩阵文件。这个文件可以直接用于后续的生物统计学分析(如差异表达分析)和功能注释。具体来说,这个脚本实现了以下关键步骤:

  • 原始计数数据生成:使用featureCounts从BAM文件计算每个基因的原始计数。

  • 基因长度和基因名提取:从GTF文件中提取基因的长度信息和基因名(symbol)。

  • TPM值计算:根据原始计数和基因长度计算每个基因的TPM值,这是一种归一化方法,考虑了不同基因长度对表达量的影响。

  • 数据合并和输出:将原始计数、TPM值和基因名合并到最终的基因表达矩阵文件中,并保存为指定格式的文本文件。

 应用和进一步分析


得到基因表达矩阵后,你可以使用不同的生物信息学工具和统计学软件进行进一步分析,例如:

  • 差异表达分析:使用DESeq2、edgeR等工具比较不同样本或条件下基因的表达水平差异。

  • 功能富集分析:根据表达差异的基因进行GO分析、KEGG通路分析等,揭示生物过程中的功能变化和调控网络。

  • 基因集富集分析:使用GSEA(基因集富集分析)等方法,探索基因在特定生物学过程或疾病中的相关性和功能。

这些分析不仅有助于理解基因在生物学过程中的功能和调控机制,还能为后续实验设计和临床应用提供重要的理论支持和指导。


结论


通过自动化的转录组数据处理流程,研究人员可以高效地从原始数据到最终的解释性结果,为基因功能研究和疾病机制探索提供强大的工具和支持。这种一键生成基因表达矩阵的方法不仅节省了时间和精力,还确保了数据处理的准确性和一致性,是当前转录组学研究不可或缺的重要步骤之一。


对于RNA测序,现在很多数据都是上传到GEO数据库了。所以我们做实验的时候还是要会下载别人的数据分析别人的数据。所以,今天,我们还要给大家免费分享:


RNAseq数据分析全流程(入门到精通,原价7688元)

如下免费获取:

🔽①长按下方二维码关注🔽

②输入关键词:7688

②输入关键词:7688


原价几千块的培训班,还在等什么,现在免费送。入门到精通,这一套就足够,非常详细,懂了原理和步骤后,直接用视频的代码即可,非常方便:



RNAseq数据分析全流程(入门到精通,原价7688元)

如下免费获取:

🔽①长按下方二维码关注🔽

②输入关键词:7688

②输入关键词:7688

二、免费资源:

顶级CNS插图如下:



但是自己画一只小鼠可能需要花一整天的时间。


所以,今天小编给大家免费赠送:


“生物医学之家CNS插图可编辑素材永久VIP账户”


生物医学之家CNS插图素材部分截图如下:



这些素材都是用Adobe illustrator绘制的,打开后可以继续编辑修改,这些素材原价是9999元的,现在免费给大家送永久账户。如下免费获取永久VIP账户:


🔽①长按下方二维码关注🔽

②输入关键词:永久VIP

②输入关键词:永久VIP

②输入关键词:永久VIP


免费发送1万个永久VIP账户,有了这个账号之后,你可以无限、永久下载生物医学之家的CNS插图素材。共有1万张素材,囊括了各种生物、人体组织、细胞、病毒、植物等。素材首页如下:



一、比如我需要用到小鼠插图来描述自己的小鼠动物实验模型,那就直接搜索鼠,有几百张小鼠插图就出现了:



有了VIP账号之后就可以随意下载。下载下来是AI绘制的可编辑图:



可以随意修改颜色:



也可以随意修改大小:



Ctrl+c和V复制粘贴到自己的画板中,并对齐:



随后画一条线,示意要D369打药:



随后添加字体,这样审稿人一看就知道你做了什么动物模型。



最后保存和导出,一定要记得保存,保存就是矢量图了,以后还能修改。导出就是导出为图片,用来讲PPT或者投稿。



还在等什么?赶快免费获取账号呀,发SCI、作图的时候肯定用得着。


“生物医学之家CNS插图可编辑素材永久VIP账户”

如下免费获取:

🔽①长按下方二维码关注🔽

②输入关键词:永久VIP

②输入关键词:永久VIP

②输入关键词:永久VIP


还有,我们下载的素材,也可以右键取消分组:



然后修改任何一个你想要修改的元素,比如修改液体的颜色:



也可以将注射器放在背上,模拟皮下注射:



还可以将小鼠变为黑色:



还在等什么?赶快免费获取账号呀,发SCI、作图的时候肯定用得着。


“生物医学之家CNS插图可编辑素材永久VIP账户”

如下免费获取:

🔽①长按下方二维码关注🔽

②输入关键词:永久VIP

②输入关键词:永久VIP

②输入关键词:永久VIP


二、比如我需要绘制细胞机制图。那就搜索细胞:



有了这些素材,分分钟就可以绘制如下这种高分插图:



三、各种Nature插图原图:



下载下来之后每个细微的元素都可以修改:




我们一共上传1万张Nature插图。大家赶紧获取永久VIP账户吧,投稿绘图的时候用得着:


“生物医学之家CNS插图可编辑素材永久VIP账户”

如下免费获取:

🔽①长按下方二维码关注🔽

②输入关键词:永久VIP

②输入关键词:永久VIP

②输入关键词:永久VIP

更多免费资源:

三、科研绘图类:

1 GraphPad绘图模板

50套R绘图万能代码

直装版PS+AI安装包

医学统计分析R版

9 单样本RNAseq分析

11 SnapGene序列比对

13 Endnnote安装包

15 R语言绘图模板

17 中文版RNAseq教程

19 Image J图片处理视频

21 更多资源在更新中.....

2 600套PPT模板

4Origin绘图模板

SPSS统计分析模板

8 铜铁死亡分析代码

10 m6A甲基化分析代码

12 qPCR计算模板

14 英文简历模板

16 R各种统计分析模板

18 46套生信分析代码

20 Sigma plot绘图软件和视频

四、生信和写作类:

1 ChIPqPCR引物设计

3 过表达引物设计

零代码复现6分SCI教程

零代码复现4分SCI教程

WGCNA分析课程

11 GO分析傻瓜式教程

13 GSEA分析傻瓜式教程

15 渐变火山图傻瓜式教程图

17 GEO+TCGA数据挖掘课

19 41GB的生信分析+实验资源

2 shRNA设计

4 Crispr-csa9素材

零代码复现5分SCI教程

8分SCI零代码复现步骤

10 超全生信数据库使用教程

12 KEGG富集分析教程

14 Meta分析范文+实操课

16 交集基因筛选高级教程

18 生信软件合集

辛苦整理,全文无任何广告!

觉得有用的话,您就点个在看、点赞!

科研大亨
请给我发信息,我24小时在线,领取资源请发有效截图哦!
 最新文章