#!/usr/bin/python
import re
import sys
import gzip change={'A':'T','T':'A','C':'G','G':'C','N':'N'} CODE = {
'GCA' : 'A', 'GCC' : 'A', 'GCG' : 'A', 'GCT' : 'A',
'TGC' : 'C', 'TGT' : 'C', # Cysteine
'GAC' : 'D', 'GAT' : 'D', # Aspartic Acid
'GAA' : 'E', 'GAG' : 'E', # Glutamic Acid
'TTC' : 'F', 'TTT' : 'F', # Phenylalanine
'GGA' : 'G', 'GGC' : 'G', 'GGG' : 'G', 'GGT' : 'G', # Glycine
'CAC' : 'H', 'CAT' : 'H', # Histidine
'ATA' : 'I', 'ATC' : 'I', 'ATT' : 'I', # Isoleucine
'AAA' : 'K', 'AAG' : 'K', # Lysine
'CTA' : 'L', 'CTC' : 'L', 'CTG' : 'L', 'CTT' : 'L', 'TTA' : 'L', 'TTG' : 'L', # Leucine
'ATG' : 'M', # Methionine
'AAC' : 'N', 'AAT' : 'N', # Asparagine
'CCA' : 'P', 'CCC' : 'P', 'CCG' : 'P', 'CCT' : 'P', # Proline
'CAA' : 'Q', 'CAG' : 'Q', # Glutamine
'CGA' : 'R', 'CGC' : 'R', 'CGG' : 'R', 'CGT' : 'R', 'AGA' : 'R', 'AGG' : 'R', # Arginine
'TCA' : 'S', 'TCC' : 'S', 'TCG' : 'S', 'TCT' : 'S', 'AGC' : 'S', 'AGT' : 'S', # Serine
'ACA' : 'T', 'ACC' : 'T', 'ACG' : 'T', 'ACT' : 'T', # Threonine
'GTA' : 'V', 'GTC' : 'V', 'GTG' : 'V', 'GTT' : 'V', # Valine
'TGG' : 'W', # Tryptophan
'TAC' : 'Y', 'TAT' : 'Y', # Tyrosine
'TAA' : '*', 'TAG' : '*', 'TGA' : '*' # Stop
} def readfa(l):
col={}
arr =[]
sca =''
li= gzip.open(l,'rb')
for line in li:
if '>' in line:
arr =[]
sca = line.split()[0].lstrip('>')
col[sca]=arr
else:
without = re.sub(r'\n',"",line)
arr.append(without)
return col def readgff(l):
col ={}
arr =[]
li= gzip.open(l,'rb')
for line in li:
sp = line.split( )
if sp[2] == 'mRNA':
gene = re.match(r'ID=(.*?);',sp[8]).group(1)
arr=[]
col[gene]=[arr,sp[0],sp[6]]
# start=sp[3]
elif sp[2] == 'CDS':
gene = re.match(r'Parent=(.*?);',sp[8]).group(1)
col[gene][0].append([int(sp[3])-1,int(sp[4])])
return col
#main### out= gzip.open(sys.argv[3],'wb')
gff=readgff(sys.argv[2])
c=gff
s=''
fa =readfa(sys.argv[1]) for k1,v1 in gff.items():
if v1[1] in fa.keys():
lon=s.join(fa[v1[1]])
short=''
for i in v1[0]:
short +=lon[i[0]:i[1]]
if v1[2] == '-':
short=''.join(change[i] for i in short)[::-1]
j=0
AA=''
while j <= (len(short)-3):
sp = short[j:3+j]
if 'N' in sp:
j=j+3
continue
else:
AA += CODE[sp]
j=j+3
print >>out,">",k1,"\n",AA
else:
print "no fa"

依据gff切fa并翻译为蛋白质的更多相关文章

  1. 在gff中切fa的内容

    #!/usr/bin/python import re def readfa(l): col={} arr =[] sca ='' li = open(l) for line in li: if re ...

  2. jbrowse 的配置与使用gff, vcf, fa, bed, bam

    1,jbrowse 是什么东西 ? JBrowse is a genome browser with a fully dynamic AJAX interface, being developed a ...

  3. 【基因组注释】ncRNA注释

    目录 1. ncRNA 2. 软件 tRNA注释 rRNA注释 其他ncRNA注释 3. 注释 tRNA rRNA snRNA.miRNA等 4. snRNA.miRNA等结果的统计 1. ncRNA ...

  4. RNA sequence单分子直测技术

    生命组学 按照功能分类遗传物质,可能的分类有系统流.操作流.平衡流等等.下面是使用该理论解释DNA与RNA的关系: DNA和RNA有很大不同,DNA存储遗传信息,作为生命活动的最内核物质,如同操作系统 ...

  5. BLAST套件

    Blastn是将给定的核酸序列与核酸数据库中的序列进行比较: Blastp是使用蛋白质序列与蛋白质数据库中的序列进行比较,可以寻找较远的关系: Blastx将给定的核酸序列按照六种阅读框架将其翻译成蛋 ...

  6. [大数据之Sqoop] —— 什么是Sqoop?

    介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...

  7. SQL Server 解读【已分区索引的特殊指导原则】(2)- 唯一索引分区

    一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...

  8. 非编码RNA

    生命的基本过程是从DNA转录成mRNA,再翻译成蛋白质发挥功能.DNA就像一张绝密的密码图,不能随意被移动,只能被锁在细胞核里.要想知道这些密码,只能像复印一样,将密码图复印到mRNA上,由它们把这些 ...

  9. BZOJ 1212 HNOI 2004 L语言 Trie树

    标题效果:给一些词.和几个句子,当且仅当句子可以切子可以翻译词典,这意味着该子将被翻译. 找到最长前缀长度可以被翻译. 思维:使用Trie树阵刷.你可以刷到最长的地方是最长的字符串可以翻译到的地方. ...

随机推荐

  1. ZOJ 3765 Lights (zju March I)伸展树Splay

    ZJU 三月月赛题,当时见这个题目没辙,没学过splay,敲了个链表TLE了,所以回来好好学了下Splay,这道题目是伸展树的第二题,对于伸展树的各项操作有了更多的理解,这题不同于上一题的用指针表示整 ...

  2. CSS 之pseudo-classes 与pseudo-element的异同

    从W3School找到相关资料如下: 伪类: 伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息. 伪类由一个冒号:开头,冒号后面是伪类的名称和包含在 ...

  3. spring学习之依赖注入DI与控制反转IOC

    一 Ioc基础 1.什么是Ioc? Ioc(Inversion of Control)既控制反转,Ioc不是一种技术,而是一种思想,在Java开发中意味着将设计好的对象交给容器来进行控制,并不是像传统 ...

  4. javascript编程中极易出现的错误(个人)

    2018-08-10 1,setInterval打错字写成ser 2,document.getElementById().innerHTML;HTML需要全部大写 3,在for循环中定义一个i时要记住 ...

  5. 撤销上一次的commit

    撤销上一次的commit git reset HEAD~ 如果是撤销所有的已经add的文件: git reset HEAD .

  6. c# 之Enum--枚举

    枚举  收藏的博文连接 枚举类型声明为一组相关的符号常数定义了一个类型名称.枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定. 枚举类型(也称为枚举):该类型可以 ...

  7. PAT Basic 1075 链表元素分类(25) [链表]

    题目 给定⼀个单链表,请编写程序将链表元素进⾏分类排列,使得所有负值元素都排在⾮负值元素的前⾯,⽽[0, K]区间内的元素都排在⼤于K的元素前⾯.但每⼀类内部元素的顺序是不能改变的.例如:给定链表为 ...

  8. Python KNN 学习曲线

    学习曲线的目的是选择更好的模型参数.以最近邻算法为例,选取最近的多少个数据点,才能达到最优.可以控制训练集不动,调整最近的点的个数,绘制学习曲线. import matplotlib.pyplot a ...

  9. 递归与树的写法-多种支付的设计-支付的接通-celery订单的回退实现

    递归与树的写法 data: data=[ {"cat_id":1,"name":"北京","parent_id":0}, ...

  10. MySQL--SHOW TABLE STATUS命令

    show table status 获取表的信息 来自:http://blog.csdn.net/java2000_wl/article/details/7935035