大家可以看最新版https://blog.csdn.net/qq_26012913/article/details/111939262?spm=1001.2014.3001.5501
首先我们要把gtf文件中的exon抓取出来

grep "exon" genome.gtf > genome_exon.gtf

然后提取genome_exon.gtf文件中的gene的exon的长度和得到我们想要的gene的长度

python count_genelen_from_gft.py genome_exon.gtf gene.len

这其中count_genelen_from_gft.py的代码如下:

import sys,re
file1 = sys.argv[1]
file2 = sys.argv[2]
f1 = open(file1,'r')
f2 = open(file2,'w')
flag = "fuck"
exon = []
for i in f1:a = i.split("\"")if flag == a[-2]:pos = i.split("\t")exon.append(abs(int(pos[4])-int(pos[3]))+1)elif flag == "fuck":flag = a[-2]pos = i.split("\t")exon.append(abs(int(pos[4])-int(pos[3]))+1)else:f2.write("{0}\t{1}\n".format(flag,sum(exon)))exon = []flag = a[-2]pos = i.split("\t")exon.append(abs(int(pos[4])-int(pos[3]))+1)
f1.close()
f2.close()

就此我们得到了单个基因的长度,存在gene.len文件中eg:
MIM04M24Gene00599 2898 MIM04M24Gene00600 1035 MIM04M24Gene08324 588 MIM04M24Gene08325 468 MIM04M26Gene00001 1770 MIM04M26Gene00002 930 MIM04M26Gene00003 594 MIM04M26Gene00004 426 MIM04M26Gene00005 1002 MIM04M26Gene00006 792 MIM04M26Gene00007 1125 MIM04M26Gene00008 4041 MIM04M26Gene00009 6537 MIM04M26Gene00010 309 MIM04M26Gene00011 1293 MIM04M26Gene00012 282 MIM04M26Gene00013 765 MIM04M26Gene00014 1680 MIM04M26Gene00015 1134 MIM04M26Gene00016 648
我们还要提取准备一下我们每个样本的mapped_reads数的文件,内容如下:

Total Mapped reads      reads number
A1A     18836863
A1B     15478037
A1C     19394549
A2A     19976617
A2B     15964986
A2C     19685810
A3A     18080220
A3B     16627794
A3C     20205794
A4A     16867356
A4B     16409921
A4C     19966924
A5A     17322230
A5B     15118648
A5C     19086094
A6A     17352130
A6B     16489332
A6C     19940296

然后我再展示一下我的read_counts矩阵文件,我的文件名为:raw_counts.matrix
文件内容eg:

        A1A     A1B     A1C     A2A     A2B     A2C     A3A     A3B     A3C     A4A     A4B     A4C     A5A     A5B     A5C     A6A     A6B     A6C
MIM04M24Gene00599       334     179     300     532     261     376     238     284     312     306     191     260     105     187     191     204     177
MIM04M24Gene00600       98      58      80      134     84      122     44      47      65      20      23      27      9       16      16      51      12
MIM04M24Gene08324       13      7       16      19      11      16      15      12      30      19      16      16      11      8       15      29      16
MIM04M24Gene08325       18      18      13      18      21      25      37      30      45      26      32      36      23      22      28      56      31
MIM04M26Gene00001       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0

以这三个文件作为输入,我们就能通过脚本得到FPKM矩阵

python Caculate_FPKM.py mapped_gene_number.txt gene.len raw_counts.matrix FPKM.matrix

其中的Caculate_FPKM.py脚本内容贴下:

import sys,re
file1 = sys.argv[1]
file2 = sys.argv[2]
file3 = sys.argv[3]
file4 = sys.argv[4]
f1 = open(file1,'r')
f2 = open(file2,'r')
f3 = open(file3,'r')
f4 = open(file4,'w')
a = []
arrf1 = []
dickf2 = {}
dickf3 = {}
for i in f1:i = i.strip("\n")if re.match('A',i):a = i.split("\t")arrf1.append(int(a[1]))else:continue
f1.close()
for i in f2:i = i.strip("\n")a = i.split("\t")dickf2[a[0]] = int(a[1])
f2.close()
for i in f3:i = i.strip("\n")if re.match("M",i):a = i.split("\t")dickf3[a[0]] = a[1:19]else:f4.write(i)
f3.close()
for i in dickf3.keys():f4.write(i+"\t")for j in range(0,18):a = int(dickf3[i][j])#print(a)try:b = (a*1000000.0)/(arrf1[j]*(dickf2[i]/1000.0))except ZeroDivisionError:b = 0except KeyError:continuef4.write("{}".format(b))f4.write("\t")f4.write("\n")
f4.close()

最后我做一个完整的傻瓜式脚本,只要大家准备好gtf文件、mapped_reads文件、read_counts文件和两个python脚本到一个目录下跑就行了

总脚本如下:

grep "exon" genome.gtf > genome_exon.gtf
python count_genelen_from_gft.py genome_exon.gtf gene.len
python Caculate_FPKM.py mapped_gene_number.txt gene.len raw_counts.matrix FPKM.matrix

希望能对大家有所帮助,有困难可以给我发邮件1193226980@qq.com

read_counts转FPKM(基于gtf和read_counts文件)(exon)相关推荐

  1. 基于LZ77算法的文件解压缩项目缺陷分析

    基于Huffman算法和LZ77算法的文件压缩(七) 基于Huffman算法和LZ77算法的文件压缩(六)已经讲解完文件压缩的过程,本文讲解文件解压缩的过程和大文件处理方式 一.解压缩的流程 LZ77 ...

  2. 基于LZ77算法的文件压缩铺垫

    基于Huffman算法和LZ77算法的文件压缩(四) 本文开始讲解LZ77算法,会用到哈希,哈希原理详解 我们在基于Huffman算法和LZ77算法的文件压缩(一)当中总体介绍了Huffman算法和L ...

  3. java socket 传输压缩文件_java基于socket传输zip文件功能示例

    本文实例讲述了java基于socket传输zip文件的方法.分享给大家供大家参考,具体如下: 服务器端程序: import java.io.*; import java.net.*; import j ...

  4. python分行_基于python实现对文件进行切分行

    针对配置文件进行切分,重组,每隔30行为一段,进行重新生成功能. 代码如下 #!/usr/local/python/bin/python # coding=utf-8 import sys impor ...

  5. python上传文件到onedrive_基于Python的onedrive文件本地化浏览系统–PyOne

    基于Python的onedrive文件本地化浏览系统–PyOne PyOne是一款基于Python-Flask的onedrive文件本地化浏览系统,使用MongoDB储存文件列表,使用redis缓存数 ...

  6. dom4j工具类_基于DOM4J的XML文件解析类

    XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...

  7. linux tcp文件分包_在Linux下基于TCP协议的文件传输程序.

    [设计目的] 通过 Linux C 编程,设计一个基于 TCP/IP 的文件传输系统,实现网络文件的收发 [设计环境] Ubuntu 12.04 [设计方案] ( 1 )文件读写 任意文件都可以二进制 ...

  8. ofd转成html,基于HTML5的OFD文件在线显示的方法以及装置与流程

    技术特征: 1.一种基于HTML5的OFD文件在线显示的方法,其特征在于:包括如下步骤: 步骤1.服务器端将OFD文件压缩包进行解压,并将解压后得到的OFD文档目录结构映射至HTML5客户端的URL: ...

  9. 基于Java的NetCDF文件解析

    近期在做的项目中,需要使用Java语言进行NetCDF文件的解析. 然而,当在寻找资料时,发现基于Java语言的资料相较于Python少了很多,而且现有的基于Java解析NetCDF文件到CSV的资料 ...

最新文章

  1. 第十章 springboot + logback
  2. 修复Long类型太长转为JSON格式的时候出错的问题
  3. 定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构
  4. Web 前端框架分类解读
  5. ip_forward
  6. LeetCode 40. 组合总和 II(排列组合 回溯)
  7. 如果千百年前有视觉AI算法,世界将会是什么样的光景呢?
  8. 渗透测试入门8之端口渗透
  9. python 描述性分析_描述性分析-1对被解释变量进行描述
  10. linux shell 多个命令一起执行的几种方法
  11. Flash研究(一)——本地通讯
  12. 一个很小的 截图 库。 只需要依赖 jQuery
  13. JavaScript设计模式 - 适配器模式
  14. 【2014年计划】IT之路
  15. 想要成为一名合格的数据分析师,需要学习哪些类型的书
  16. openmv和stm32串口通信完成二维码识别
  17. html语言中kbd的含义,HTML kbd键盘元素
  18. 2.3 VLAN间路由
  19. 2018刚入手一台UGP U8VR眼镜,ugp vr眼镜怎么样评测效果好不好,跟我看看
  20. Linux 各类设置、配置、使用技巧参考,Linux使用集锦

热门文章

  1. 让你明明白白用QQ 资费明细 开通关闭方法
  2. 计算机毕业设计ssm礼服定制租赁管理系统6crhq系统+程序+源码+lw+远程部署
  3. 从A76到A78——在变化中学习ARM微架构
  4. 正则表达式 密码需至少包含数字、字母、符号中的2种
  5. module.export和exports两者区别及使用方法
  6. 中望3D 2022 槽口曲线
  7. macvimrc位置_macvim的配置
  8. font-style italic 和 oblique的区别
  9. cxfreeze打包python项目踩坑笔记
  10. 鸿蒙os处理器,华为Mate50Pro:有鸿蒙OS,处理器你选择麒麟还是高通