1.下载基因组注释文件,选择对应的版本: ftp://ftp.ncbi.nlm.nih.gov/genomes/Homo_sapiens/ARCHIVE/BUILD.37.3/GFF/

2.GTF 为General Transfer Format ,熟悉格式 http://www.huoyunjn.com/wuliuxinwen/2/33709819.htm。

第三列feature - 后面start和end之间区域代表的特征,如果此区域是基因,则此处为gene,如果是外显子,则为exon,如果是转录本,则为transcript,如果是非编码RNA则为lncRNA,如果是重复序列,则为TE,等等,主要表明这一块区域的特征。

3.每一个transcript对应的exon,所有长度加起来就是这个转录本的长度。与这个transcript后面的两列相减是有差别的。

4.用python 字典来统计每个转录本的长度。

import pandas as pd
import pdb
df = pd.read_table(r'C:\Users\guosheng\Desktop\out.gff',sep = '\t',header= None)
out=open('./out.txt','a')
df =df[df.iloc[:,2].str.contains('exon')]  #提取第三列为exon的行
df['diff'] =df.iloc[:,4]-df.iloc[:,3]+1 #每个外显子的长度
name =  list(df.iloc[:,2])  #把data.frame中的一列转换为list
des =list(df.iloc[:,8])
length = list(df['diff'])
dic ={}
for index,value in enumerate(name):key=des[index].split(';')[-1].split('=')[-1] #获取每个转录本的名字old=0new=length[index]if dic.has_key(key):       #判断这个key是否在原有的字典中old=dic[key]del(dic[key])dic[key]=int(old)+int(new)
#print dic
for tran in dic:out.write(tran+'\t'+str(dic[tran])+'\n')
out.flush()
out.close()

5.后续找出每个基因的所有转录本,用heapq库找出最长的一个。库用法https://blog.csdn.net/Cassiel60/article/details/88344137

同样是解析这个文件,可以看出文件中的id是根据第三列进行编号的,没有实际意义,只是可以看出共有多少个gene、exon、cds等。不过在第三列为gene时,Name=和Dbxref=GeneID: 与第四列为exon时,Dbxref=GeneID:和transcript_id=进行基因与转录本的正确匹配。可以在上面代码中的字典加入Dbxref=,字典中一键对应多个值。

6.得到的两个文件进行merge,就可以得到基因,转录本,长度的文件了。

python解析gff文件中的转录本相关推荐

  1. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★

    文章目录 一.完整代码示例 二.执行结果 三.博客资源 一.完整代码示例 使用 Python 解析 ELF 文件完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入的依赖库 ...

  2. Python编程--使用PyPDF解析PDF文件中的元数据

    Python编程–使用PyPDF解析PDF文件中的元数据 元数据 作为一种文件里非常明显可见的对象,元数据可以存在于文档.电子表格.图片.音频和视频文件中.创建这些文件的应用程序可能会把文档的作者.创 ...

  3. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...

    python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...

  5. 利用Python提取PDF文件中的文本信息

    如何利用Python提取PDF文件中的文本信息 日常工作中我们经常会用到pdf格式的文件,大多数情况下是浏览或者编辑pdf信息,但有时候需要提取pdf中的文本,如果是单个文件的话还可以通过复制粘贴来直 ...

  6. python解析xml文件最好选用的模块_用Python解析XML文件

    本文翻译自:https://developer.yahoo.com/python/python-xml.html 使用Python解析XML文件 许多YDN APIs提供了JSON格式的数据输出,JS ...

  7. python打开excel的函数-Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...

  8. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据

    前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...

  9. python打开excel数据库_使用python导入excel文件中的mssql数据库数据

    我试图用python导入excel文件中的mssql数据库数据.我的数据在excel表格中的顺序不正确.e. g它显示第1列数据,然后是第3列,第2列,然后是第4列,依此类推. 我使用以下脚本:imp ...

最新文章

  1. 微计算机应用 官网,按照影响因子,查找与计算机通信与技术专业相关的权威期刊...
  2. 20年吐血整理:程序员全栈体系化学习路线与进阶地图
  3. 上传图片配置文件长度和宽度大小的说明
  4. boost::hana::tag_of_t用法的测试程序
  5. 卷积神经网络(Convolutional Neural Networks,CNNS/ConvNets)
  6. ksu7对讲机调频软件_数字对讲机的群呼功能原理是什么?你了解多少?
  7. linux使用u盘的过程是,图文详解Linux下使用U盘的方法
  8. Eigen--.block(i,j,p,q)
  9. Spark用DSL表达式如何使用row_number函数
  10. java面向对象编程的思想_java面向对象编程思想
  11. Spring 在xml配置里配置事务
  12. 转:JS中生成和解析JSON
  13. 谷歌浏览器安装FeHelper插件
  14. Android开发眼镜店管理系统,智能眼镜店管理系统(基于BS架构互联网版)下载_智能眼镜店管理系统(基于BS架构互联网版)官方下载-太平洋下载中心...
  15. DIY一块单面1TB高速NVMe SSD, SM2262EN量产开卡软件+JMS583转接
  16. 重置linux红帽登录密码,红帽(RHEL)Linux 忘记root密码后重置密码
  17. 天创速盈电商:拼多多用户群体分析
  18. python进阶高级技能:Python退火算法在高次方程的应用
  19. Timus Online Judge 2045 Richness of words
  20. Axure-涟漪动画效果

热门文章

  1. Flutter 加载WebView(加载网页)
  2. 游戏进阶之千里之行始于足下(一)
  3. 从 “搞不清楚” 到 “都明白了” 的费曼
  4. 推荐系统:ImportError: cannot import name ‘evaluate‘ from ‘surprise
  5. libnet发包过程
  6. 6000字总结MySQL最基础的增删查改命令
  7. Swift 类型的检査与转换(is,as,AnyObject,Any)
  8. 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,然后B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。求最后获胜者的分数
  9. AVI文件格式解析+AVI文件解析工具
  10. 乐视TV呼叫中心总监李霜:生态时代的服务运营之道