依据gff切fa并翻译为蛋白质
#!/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并翻译为蛋白质的更多相关文章
- 在gff中切fa的内容
#!/usr/bin/python import re def readfa(l): col={} arr =[] sca ='' li = open(l) for line in li: if re ...
- jbrowse 的配置与使用gff, vcf, fa, bed, bam
1,jbrowse 是什么东西 ? JBrowse is a genome browser with a fully dynamic AJAX interface, being developed a ...
- 【基因组注释】ncRNA注释
目录 1. ncRNA 2. 软件 tRNA注释 rRNA注释 其他ncRNA注释 3. 注释 tRNA rRNA snRNA.miRNA等 4. snRNA.miRNA等结果的统计 1. ncRNA ...
- RNA sequence单分子直测技术
生命组学 按照功能分类遗传物质,可能的分类有系统流.操作流.平衡流等等.下面是使用该理论解释DNA与RNA的关系: DNA和RNA有很大不同,DNA存储遗传信息,作为生命活动的最内核物质,如同操作系统 ...
- BLAST套件
Blastn是将给定的核酸序列与核酸数据库中的序列进行比较: Blastp是使用蛋白质序列与蛋白质数据库中的序列进行比较,可以寻找较远的关系: Blastx将给定的核酸序列按照六种阅读框架将其翻译成蛋 ...
- [大数据之Sqoop] —— 什么是Sqoop?
介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...
- SQL Server 解读【已分区索引的特殊指导原则】(2)- 唯一索引分区
一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的 ...
- 非编码RNA
生命的基本过程是从DNA转录成mRNA,再翻译成蛋白质发挥功能.DNA就像一张绝密的密码图,不能随意被移动,只能被锁在细胞核里.要想知道这些密码,只能像复印一样,将密码图复印到mRNA上,由它们把这些 ...
- BZOJ 1212 HNOI 2004 L语言 Trie树
标题效果:给一些词.和几个句子,当且仅当句子可以切子可以翻译词典,这意味着该子将被翻译. 找到最长前缀长度可以被翻译. 思维:使用Trie树阵刷.你可以刷到最长的地方是最长的字符串可以翻译到的地方. ...
随机推荐
- MFC下的网络编程(1)CAsyncSocket进行无连接(UDP)通信
服务器端发送数据给客户端 先看服务器端: CAsyncSocket m_sockSend; //声明一个Socket对象 点击发送数据后,执行下面这些动作 ...
- ubuntu下面嘚一些常用基本命令
1)环境变量配置: 9 ~/.bashrcor ~/.bash_profile. sudo gedit ~/.bashrc 第一种sudo vim ~/.bashrc export PYTHONPAT ...
- 线程与进程 concurrent.futures模块
https://docs.python.org/3/library/concurrent.futures.html 17.4.1 Executor Objects class concurrent.f ...
- C#调用C++系列二:传结构体
这一篇记录下C#调用C++的结构体的方式来使用OpenCV的数据格式,这里会有两种方式,第一种是C#传一个结构体和图像的路径给C++,然后C++将图像加载进来,再把传进来的结构体填满即可,第二种是C# ...
- Q4:Median of Two Sorted Arrays
4. Median of Two Sorted Arrays 官方的链接:4. Median of Two Sorted Arrays Description : There are two sort ...
- 开源PLM软件Aras详解七 在Aras的Method中如何引用外部DLL
在实际的项目中,Aras内部的方法可能并不能完全满足我们,比如Office的组件,就必须引入,那么在Aras内部的Method中,我们如何引入外部Dll文件 首先,我们新建一个Dll文件,简单的Dem ...
- ES6 之 Math对象的扩展
1.ES5 http://www.w3school.com.cn/jsref/jsref_obj_math.asp 2.ES6 Math.trunc() - 取整,去掉一个数的小数部分 console ...
- bitcoind
Bitcoin Core Daemon version v0.15.1.0-g7b57bc998f Usage: bitcoind [options] Start Bitcoin Core Daemo ...
- hdu1232 城镇间修路(并查集)
问题是这样的: Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇 ...
- 和我一起从0学算法(C语言版)(三)
第二章 暴力求解(枚举法) 第一节 小学奥数题-程序求解 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气 ...