#!/usr/bin/python
import re def readfa(l):
col={}
arr =[]
sca =''
li = open(l)
for line in li:
if re.match(r'>(\w*)',line):
match = re.match(r'>(\w*)',line)
sca = match.group(1)
col[sca]=arr
arr =[]
else:
without = re.sub(r'\n',"",line)
arr.append(without)
return col def readgff(l):
col ={}
arr =[]
li = open(l)
for line in li:
sp = line.split( )
if sp[2] == 'mRNA':
gene = re.match(r'ID=(.*?);',sp[8]).group(1)
start =sp[3]
arr=[]
col[gene]=[sp[3],sp[4],arr,sp[0],sp[6]]
elif sp[2] == 'CDS':
gene = re.match(r'Parent=(.*?);',sp[8]).group(1)
col[gene][2].append([sp[3],sp[4]])
return col def deal_gff(l):
col ={}
for key,value in l.items():
start=value[0]
end = value[1]
arr = value[2]
sca = value[3]
pos = value[4]
if pos == '+':
for single in arr:
single[0] = int(single[0]) - int(start)
single[1] = int(single[1]) - int(start)+1
elif pos =='-':
for single in arr:
off= int(end)-int(single[1])
lon= int(end)-int(single[0])+1
single[0] = off
single[1] = lon
arr.reverse
col[sca]=arr
del value[0]
del value[0]
del value[2]
return l
###main### gff=readgff('gff')
c=gff fa =readfa('fa') g=deal_gff(c) col = {}
s='' for k,v in g.items():
sca = v[1]
if fa[sca]:
lon=s.join(fa[sca])
short=''
for i in v[0]:
short += lon[i[0]:i[1]]
col[k]=short for k1,v1 in col.items():
print k1,"\n",v1

在gff中切fa的内容的更多相关文章

  1. Hive脚本中切勿使用/**/注释

    Hive脚本中切勿使用/**/注释 Hive脚本的注释目前好像只有 -- ,我之前在做初版数据的时候 使用NotePad++ 习惯性的有时候注释会写成 /**/ ,然后就引发了问题 脚本上传到hue, ...

  2. 关于xml加载提示: Error on line 1 of document : 前言中不允许有内容

    我是在java中做的相关测试, 首先粘贴下报错: 读取xml配置文件:xmls\property.xml org.dom4j.DocumentException: Error on line 1 of ...

  3. 在使用 vscode 时 eslint 检测 .vue 文件中的less 部分内容

    问题: 在使用 vscode 以及 eslint 来检测 基于 webpack 的 vue-cli 的项目中,eslint 无法检测到 .vue 文件中的less 部分内容. 解答: 1.通过 下载 ...

  4. 五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  5. HTML中head里的内容经浏览器解析后全到body里了

    HTML中head里的内容经浏览器解析后全到body里了 修改完代码后,用chrome审查元素,head里的内容都到body中去了 http://bbs.csdn.net/topics/3802586 ...

  6. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  7. lineNumber: 1; columnNumber: 1; 前言中不允许有内容

    周六项目还能运行,也没修改什么,周一来了启动项目,竟然报错了~~~ 这是遇到的错误提示: Cause: org.xml.sax.SAXParseException; lineNumber: 1; co ...

  8. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

    二月 25, 2016 9:24:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRul ...

  9. linux中快速清空文件内容的几种方法

    这篇文章主要介绍了linux中快速清空文件内容的几种方法,需要的朋友可以参考下 $ : > filename $ > filename $ echo "" > f ...

随机推荐

  1. Charles中windows版本解决response乱码问题

    实际上三种,目前写了两种,加了之后有的不显示乱码,但是有的还是显示,第三种搜索结果是安装证书,但是本人安装后证书后未受到信任,所以暂时不知是否能够成功 1,在charles.ini中,手动增加一个vm ...

  2. web.xml中filter加载顺序出现的问题

    刚刚遇到了一个问题,项目中需要用到characterEncodingFilter和HiddenHttpMethodFilter,但是post请求还是会中文乱码,找了半天原因,后来发现,filter加载 ...

  3. Django ORM多表查询练习

    ORM多表查询 创建表结构: from django.db import models # 创建表结构 # Create your models here. class Class_grade(mod ...

  4. WebServerInitializedEvent &ApplicationRunner

    application.properties app.name=yaoyuan2 app.dept.id=1 MyConfig.java import lombok.AllArgsConstructo ...

  5. Day 4:集合——迭代器与List接口

    Collection-迭代方法 1.toArray()  返回Object类型数据,接收也需要Object对象! Object[] toArray(); Collection c = new Arra ...

  6. IDEA创建新文件时自动生成时间和作者

    打开设置,打开下图的选项并且输入 /** * @author 你的名字 * @date ${DATE} ${TIME} */

  7. Mac Eclipse 打包可执行jar文件

    2 3 4 保存后 终端 cd 目录 java -jar xxxx.jar

  8. BUUCTF-[HCTF 2018]WarmUp

    php中可以使用strpos函数与mb_strpos函数获取指定的字符串在别一个字符串中首次出现的位置,也可以使用它们判断一串字符串中是否包含别一个字符串. PHP strpos() 函数 查找 &q ...

  9. POJ 1019:Number Sequence 二分查找

    Number Sequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36013   Accepted: 10409 ...

  10. c 转二进制

    int nData = 1568;//转二进制 for (int i = sizeof(int) * 8 - 1; i >= 0; i--){ if ((nData >>i) &am ...