#!/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. 吴裕雄--天生自然C++语言学习笔记:C++ 注释

    程序的注释是解释性语句,可以在 C++ 代码中包含注释,这将提高源代码的可读性.所有的编程语言都允许某种形式的注释. C++ 支持单行注释和多行注释.注释中的所有字符会被 C++ 编译器忽略. C++ ...

  2. vSphere Replication5.5安装

    vSphere Replication5.5概述 VMware vSphere Replication简称VR是 VMwarevCenter Server 的扩展,提供基于管理程序的虚拟机复制和恢复功 ...

  3. python try catch 打印traceback

    1. import traceback try: print(AB) except Exception, e: traceback.print_exc()

  4. 查询内核符号链接的信息的API

    NtOpenSymbolicLinkObject和NtQuerySymbolicLinkObject获取指定符号链接的信息 版权声明:本文为博主原创文章,未经博主允许不得转载.

  5. 使用NtQueryInformationFile函数获得不到完整路径

    #include <windows.h> #include <iostream> using namespace std; typedef struct _OBJECT_NAM ...

  6. bitcoind

    Bitcoin Core Daemon version v0.15.1.0-g7b57bc998f Usage: bitcoind [options] Start Bitcoin Core Daemo ...

  7. JNI传递修改自定义Java Class数组数据

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 结合前面讲的2篇关于JNI的文章,这里直接把代码贴上,主要是要知道如果传递自定义Class Array的时 ...

  8. Python语言基础与应用 (P23)上机练习:容器类型操作(未完待续)

    上机练习:容器类型操作〉 列表.元组基本操作+, *, len(), [], in Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 ...

  9. SQL游标的介绍与使用举例

    一.游标的定义 declare (游标名) [INSENSITIVE] [SCROLL] CURSOR FOR select_statement [FOR{READ ONLY|UPDATE[OF co ...

  10. 利用python分析泰坦尼克号数据集

    1 引言 刚接触python与大数据不久,这个是学长给出的练习题目.知识积累太少,学习用了不少的时间.尽量详细的写,希望对各位的学习有所帮助. 2 背景 2.1 Kaggle 本次数据集来自于Kagg ...