经常我们会遇到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 即可