提取细菌基因组ORF思路:

1.通过FNA文件得到细菌基因组序列

2.分正负链和三个相位共6种情况统计ORF

3.写入文件

转载请保留出处!

统计细菌基因组ORF

贴上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的更多相关文章

  1. 【蛋白质基因组】Proteogenomics方法介绍及分析思路

    概念 利用蛋白质组学数据,结合基因组数据(DNA).转录组数据(RNA)来研究基因组注释问题,被称为蛋白质基因组学."蛋白质基因组学"一词由Jaffe 等于2004 年首次提出,作 ...

  2. antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测

    2017年4月28日,核酸研究(Nucleic Acids Research)杂志上,在线公布了一个可搜索微生物次生代谢物合成基因组簇的综合性数据库antiSMASH数据库 4.0版,前3版年均引用2 ...

  3. 基因组所三代单分子测序PacBio完成技术升级—超长读长助力基因组学研究

    基因组所三代单分子测序PacBio完成技术升级—超长读长助力基因组学研究 2015-09-23 | 作者:所级中心基因组平台 张兵 [关闭] 近日,基因组所所级中心基因组平台三代单分子实时测序PacB ...

  4. NGS概念大科普(转)

    NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...

  5. Canu FAQ常见问题

    链接:Canu FAQ Q: What resources does Canu require for a bacterial genome assembly(细菌基因组组装)?   A mammal ...

  6. Unnatural

    1. 纪录片:非自然选择 1.1 CRISPR-Cas9的出现 1.2 故事1:先天性基因缺陷而失明的小孩 1.3 故事2:基因变异的蚊子 1.4 基因技术应用的现状 1.5 担忧 2. CRISPR ...

  7. CRISPR/Cas9|InParanoid|orthoMCL|PanOCT|pan genome|meta genome|Core gene|CVTree3|

    生命组学: 泛基因组学:用于描述一个物种基因组,据细菌基因组动力学,因为细菌的基因漂移使得各个细菌之间的基因组差异很大,(单个细菌之间的基因组差异是以基因为单位的gain&loss,而人类基因 ...

  8. GWAS 全基因组关联分析 | summary statistic 概括统计 | meta-analysis 综合分析

    有很多概念需要明确区分: 人有23对染色体,其中22对常染色体autosome,另外一对为性染色体sex chromosome,XX为女,XY为男. 染色体区带命名:在标示一特定的带时需要包括4项:① ...

  9. MetaPhlAn 2:宏基因组进化分析

    描述 MetaPhlAn是分析从物种水平分辨率宏基因组鸟枪法测序数据的微生物群落(细菌,古细菌,真核细胞和病毒)的组成的计算工具.从版本2.0,MetaPhlAn还能够确定具体的菌株(在将样品含有先前 ...

随机推荐

  1. oracle数据泵备份与恢复库

    假如  导出库的用户名是tiger,密码是1  导入到用户名是scott,密码是1 备份库 expdp tiger/1@orcl dumpfile=expdp.dmp DIRECTORY=dpdata ...

  2. python动态类型

    在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用 ...

  3. PageRank_网页排名_MapReduceJava代码实现思路

    PageRank 1.    概念 2.    原理   3.    java代码实现思路   1.定义收敛标准     每次算出新的pr-oldpr=差值 ,所有页面的差值累加 ,除以pagecou ...

  4. linux中的两个命令setfacl和chmod有什么区别

    setfacl命令可以用来细分linux下的文件权限.chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 比较常用的用法如下:setfacl ...

  5. HTTP的请求方法OPTIONS

    HTTP请求方法并不是只有GET和POST,只是最常用的.据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS.GET.HEAD.POST.PUT.DELETE.TR ...

  6. 版本控制——TortoiseSVN (4)多版本并行开发 B

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  7. Git学习(1)-本地版本库的创建

    我用的是Git-2.14.3-64-bit版本,在windows64位上运行的,把软件分享下链接:http://pan.baidu.com/s/1jIoZ7Xc 密码:13q2. 安装及配置自行百度, ...

  8. iOS的相对路径和绝对路径

    iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了 ...

  9. Java 中判断类和实例之间的关系

    判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 )   2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...

  10. 使用 IDEA和Maven 整合SSH框架

    1.创建web工程 一路next 下去就行.完成后,IDEA会自动构建maven工程. 2.创建如下项目结构 需要将 java文件夹设置为SourcesRoot目录,否则无法创建package 设置操 ...