用python处理gff文本

经常我们会遇到gff文件要处理。
比如用MCScanX时就要这么处理:
第一列为染色体,第二列为geneID,第三,四列为基因的起始和终止的位置。如下图:

TIM图片20200325204621.png

这里染色体怪怪的先不管。。
要处理成

image.png

如果用awk,sed就比较麻烦了
这里当学习下python的记录

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os 
x = sys.argv[1]
file = open(x, "r")
lines = file.readlines()#每行分割开存入列表
for line in lines:
    line=line.strip()  #去除末尾空格等
  #  print(line) 
    if line.startswith("#"):
        continue
    else:
        tmp=line.split("\t") #有点和awk一样的做法
        if  tmp[2]=="gene":
                        geneID=tmp[8].split(";")[0].split("=")[1] #以;分割取第一列,再以=号分割取第二列
                        mystr=tmp[0]+"\t"+geneID+"\t"+tmp[3]+"\t"+tmp[4]
                    #mystr="\t".join([tmp[0],tmp[3],tmp[4],geneID])+"\n"
                        print(mystr)

例如保存为changgff.py
用python changgff.py xxx.gff >out 即可

你可能感兴趣的:(用python处理gff文本)