#!/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. Sequence Models Week 1 Character level language model - Dinosaurus land

    Character level language model - Dinosaurus land Welcome to Dinosaurus Island! 65 million years ago, ...

  2. StarUML类图相关——关联、聚合、组合、泛化、依赖、实现

    在阅读设计模式相关的书籍,或者其他一些项目.相关博客等等,经常会遇到类图,它对于一个类的信息,如变量.方法及其可见性,类与类(接口)之间的继承关系.依赖关系.聚合关系.组合关系等,都可以比较形象得当地 ...

  3. 牛客小白月赛18——Forsaken的三维数点

    这个是一个简单题,不过因为想到比标程时间复杂度更低的方法就尝试了一下. 思路:虽然加点是三维数点,但是我们要求的是半径的大小,这样的话,就可以转变为一维的问题. 标程的解法是,用树状数组维护,然后二分 ...

  4. Java IO流操作 (II)

    缓冲流 /* * BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符.数组和字符串的高效写入. * BufferedReader:从字符输入流中读取文本,缓冲各个字符, ...

  5. hdu2457(最少替换多少个字符使主串不包含模式串)ac自动机+dp

    题:http://acm.hdu.edu.cn/showproblem.php?pid=2457 题意:给定n个模式串,给定一个主串,问最替换掉多少个字符使主串不包含模式串或输出“-1”表示没有可行的 ...

  6. A - Shortest path of the king (棋盘)

    The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, becaus ...

  7. go多态

      package main import ( "fmt" ) type Intf interface { process() } type MsgBase struct { id ...

  8. RNA分类|技术策略|终极目标

    如何在转录水平分类所有RNA分子?可以罗列所有的可能性.技术策略和终极目标. 可能性:见纸 技术策略:RNA单细胞直测技术 终极目标:单细胞水平RNA直测技术决定新的人类RNA组和人类表观组学两个核心 ...

  9. IOS下的safari不支持localStorage?

    同事在统计日志的时候,想用localStorag去记载一些什么,但是在各大浏览器都运行的良好的基础上,唯独IOS下的safari一直静静无声,没有任何反应.打印localStorage都是Object ...

  10. shell脚本判断进程是否运行

    zzx@zzx120:~$ if ps aux | grep "python"|grep -v grep > /dev/null             #$?的值不同 th ...