统计细菌基因组ORF
提取细菌基因组ORF思路:
1.通过FNA文件得到细菌基因组序列
2.分正负链和三个相位共6种情况统计ORF
3.写入文件
转载请保留出处!
贴上Python代码(版本:3.6)
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 14 13:19:00 2017 @author: zxzhu
""" import re
def N2M(sequence): #正负链转换
hash = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C','N':'N'}
sequence = ''.join([hash[i] for i in sequence])
return sequence[::-1] def translate(seq): #将序列转换为起始,终止,其他密码子
pa1 = re.compile(r'TAA|TAG|TGA')
after_trans = ''
for i in range(0,len(seq),3):
if seq[i:i+3]=='ATG':
after_trans+='I'
elif pa1.match(seq[i:i+3]):
after_trans+='T'
else:
after_trans+='O'
return after_trans def get_orf(seq,length=90):
pa2 = re.compile(r'I[IO]+?T') #匹配模式:起始1非终止1~N终止1
trans_seq = translate(seq)
m = pa2.finditer(trans_seq) #所有匹配结果的迭代
index = []
orf = []
for i in m:
index.append(i.span()) #序列起始,终止位置
for i in index:
orf_start = i[0]*3
orf_end = i[1]*3
#print(orf_start,orf_end)
if orf_end - orf_start >= length: #不小于90bp
orf.append(seq[orf_start:orf_end])
return orf def Seq2AA(sequence,hash): #翻译为AA序列
AA=''
for i in range(0, len(sequence) - 3, 3):
AA += hash[sequence[i:i + 3]]
return AA def main(fna,length=90):
fn = open(fna)
pa = re.compile(r'\s+')
hash_seq = {} # CDS hash,CDS2sequence
result1 = open('orf_seq.txt','w')
result2 = open('orf_AA.txt','w')
start = [0,1,2] #相位
strain = '+-' #正负链
hash_AA = {} # AA hash,sequence2AA
with open('AA.txt', 'r') as f: #AA.txt 为密码子表
for line in f:
line = line.strip()
if line:
line = pa.split(line)
hash_AA[line[0]] = line[1] #AA hash for line in fn: #获取序列
line = line.strip()
if line.startswith('>'):
A = pa.split(line)[0].replace('>', '')
hash_seq[A] = ''
else:
hash_seq[A] += line for key in hash_seq.keys(): #分+-链,3个相位统计ORF
seq = hash_seq[key]
for r in strain:
if r == '-':
seq = N2M(seq)
for s in start:
seq = seq[s:]
#trans_seq = translate(seq)
orf = get_orf(seq)
for i in orf:
if 'N' not in i: #去除N
AA =Seq2AA(i,hash_AA)
result1.write('>'+key+'\t'+r+'\t'+str(s)+'\n'+i+'\n')
result2.write('>'+key+'\t'+r+'\t'+str(s)+'\n'+AA+'\n')
fn.close()
result1.close()
result2.close() fna = 'GCA_000160075.2_ASM16007v2_genomic.fna'
main(fna)
NCBI可以找ORF,很方便。码一下:ORFfinder
统计细菌基因组ORF的更多相关文章
- 【蛋白质基因组】Proteogenomics方法介绍及分析思路
概念 利用蛋白质组学数据,结合基因组数据(DNA).转录组数据(RNA)来研究基因组注释问题,被称为蛋白质基因组学."蛋白质基因组学"一词由Jaffe 等于2004 年首次提出,作 ...
- antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
2017年4月28日,核酸研究(Nucleic Acids Research)杂志上,在线公布了一个可搜索微生物次生代谢物合成基因组簇的综合性数据库antiSMASH数据库 4.0版,前3版年均引用2 ...
- 基因组所三代单分子测序PacBio完成技术升级—超长读长助力基因组学研究
基因组所三代单分子测序PacBio完成技术升级—超长读长助力基因组学研究 2015-09-23 | 作者:所级中心基因组平台 张兵 [关闭] 近日,基因组所所级中心基因组平台三代单分子实时测序PacB ...
- NGS概念大科普(转)
NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...
- Canu FAQ常见问题
链接:Canu FAQ Q: What resources does Canu require for a bacterial genome assembly(细菌基因组组装)? A mammal ...
- Unnatural
1. 纪录片:非自然选择 1.1 CRISPR-Cas9的出现 1.2 故事1:先天性基因缺陷而失明的小孩 1.3 故事2:基因变异的蚊子 1.4 基因技术应用的现状 1.5 担忧 2. CRISPR ...
- CRISPR/Cas9|InParanoid|orthoMCL|PanOCT|pan genome|meta genome|Core gene|CVTree3|
生命组学: 泛基因组学:用于描述一个物种基因组,据细菌基因组动力学,因为细菌的基因漂移使得各个细菌之间的基因组差异很大,(单个细菌之间的基因组差异是以基因为单位的gain&loss,而人类基因 ...
- GWAS 全基因组关联分析 | summary statistic 概括统计 | meta-analysis 综合分析
有很多概念需要明确区分: 人有23对染色体,其中22对常染色体autosome,另外一对为性染色体sex chromosome,XX为女,XY为男. 染色体区带命名:在标示一特定的带时需要包括4项:① ...
- MetaPhlAn 2:宏基因组进化分析
描述 MetaPhlAn是分析从物种水平分辨率宏基因组鸟枪法测序数据的微生物群落(细菌,古细菌,真核细胞和病毒)的组成的计算工具.从版本2.0,MetaPhlAn还能够确定具体的菌株(在将样品含有先前 ...
随机推荐
- 《TensorFlow深度学习应用实践》
http://product.dangdang.com/25207334.html 内容 简 介 本书总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解 ...
- Linux 安装及配置 Nginx + ftp 服务器
Nginx 安装及配置 一.Nginx 简介: Nginx("engine x") 是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web和 反向代理服务器, ...
- DedeCMS实现自定义表单提交后发送指定QQ邮箱法
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...
- destoon各栏目调用汇总
================================================================== destoon各栏目调用汇总 ================== ...
- python文件操作总结
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- enum 操作
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- git 签出(恢复)指定文件
在项目开发中,偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件.此篇文章将介绍如何通过git从历史提交记录.分支记录恢复指定文件. 1. git checkout 说明:使用git chec ...
- python_如何使用临时文件
案例: 某项目中,从传感器中获得采集数据,每收集到1G的数据后做是数据分析,最终只保留数据分析的结果,收集到的数据放在内存中,将会消耗大量内存,我们希望把这些数据放到一个临时的文件中 临时文件不能命名 ...
- elasticsearch的集中常见操作
1.引入dependency <dependency> <groupId>org.springframework.data</groupId> <artifa ...
- Log4j源码解析--核心类解析
原文出处:http://www.blogjava.net/DLevin/archive/2012/06/28/381667.html.感谢上善若水的无私分享. 在简单的介绍了Log4J各个模块类的作用 ...