统计细菌基因组ORF
提取细菌基因组ORF思路:
1.通过FNA文件得到细菌基因组序列
2.分正负链和三个相位共6种情况统计ORF
3.写入文件
转载请保留出处!
统计细菌基因组ORF
贴上Python代码(版本:3.6)
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Thu Dec 14 13:19:00 2017 4 5 @author: zxzhu 6 """ 7 8 import re 9 def N2M(sequence): #正负链转换 10 hash = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C','N':'N'} 11 sequence = ''.join([hash[i] for i in sequence]) 12 return sequence[::-1] 13 14 def translate(seq): #将序列转换为起始,终止,其他密码子 15 pa1 = re.compile(r'TAA|TAG|TGA') 16 after_trans = '' 17 for i in range(0,len(seq),3): 18 if seq[i:i+3]=='ATG': 19 after_trans+='I' 20 elif pa1.match(seq[i:i+3]): 21 after_trans+='T' 22 else: 23 after_trans+='O' 24 return after_trans 25 26 def get_orf(seq,length=90): 27 pa2 = re.compile(r'I[IO]+?T') #匹配模式:起始1非终止1~N终止1 28 trans_seq = translate(seq) 29 m = pa2.finditer(trans_seq) #所有匹配结果的迭代 30 index = [] 31 orf = [] 32 for i in m: 33 index.append(i.span()) #序列起始,终止位置 34 for i in index: 35 orf_start = i[0]*3 36 orf_end = i[1]*3 37 #print(orf_start,orf_end) 38 if orf_end - orf_start >= length: #不小于90bp 39 orf.append(seq[orf_start:orf_end]) 40 return orf 41 42 def Seq2AA(sequence,hash): #翻译为AA序列 43 AA='' 44 for i in range(0, len(sequence) - 3, 3): 45 AA += hash[sequence[i:i + 3]] 46 return AA 47 48 def main(fna,length=90): 49 fn = open(fna) 50 pa = re.compile(r'\s+') 51 hash_seq = {} # CDS hash,CDS2sequence 52 result1 = open('orf_seq.txt','w') 53 result2 = open('orf_AA.txt','w') 54 start = [0,1,2] #相位 55 strain = '+-' #正负链 56 hash_AA = {} # AA hash,sequence2AA 57 with open('AA.txt', 'r') as f: #AA.txt 为密码子表 58 for line in f: 59 line = line.strip() 60 if line: 61 line = pa.split(line) 62 hash_AA[line[0]] = line[1] #AA hash 63 64 for line in fn: #获取序列 65 line = line.strip() 66 if line.startswith('>'): 67 A = pa.split(line)[0].replace('>', '') 68 hash_seq[A] = '' 69 else: 70 hash_seq[A] += line 71 72 for key in hash_seq.keys(): #分+-链,3个相位统计ORF 73 seq = hash_seq[key] 74 for r in strain: 75 if r == '-': 76 seq = N2M(seq) 77 for s in start: 78 seq = seq[s:] 79 #trans_seq = translate(seq) 80 orf = get_orf(seq) 81 for i in orf: 82 if 'N' not in i: #去除N 83 AA =Seq2AA(i,hash_AA) 84 result1.write('>'+key+'\t'+r+'\t'+str(s)+'\n'+i+'\n') 85 result2.write('>'+key+'\t'+r+'\t'+str(s)+'\n'+AA+'\n') 86 fn.close() 87 result1.close() 88 result2.close() 89 90 91 fna = 'GCA_000160075.2_ASM16007v2_genomic.fna' 92 main(fna)
NCBI可以找ORF,很方便。码一下:ORFfinder
转载于:https://www.cnblogs.com/zxzhu/p/8038535.html
统计细菌基因组ORF相关推荐
- MPB:华大孙海汐等-从细菌基因组中预测活性前噬菌体工具Prophage Hunter的使用流程和常见问题...
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- Nature子刊:超高速细菌基因组检索技术
超高速搜索现存细菌和病毒基因组 Ultrafast search of all deposited bacterial and viral genomic data Nature Biotechnol ...
- PhiSpy:在细菌基因组中识别噬菌体
PhiSpy:在细菌基因组中识别噬菌体 PhiSpy: a novel algorithm for finding prophages in bacterial genomes that combin ...
- NBT:超高速细菌基因组检索技术
文章目录 超高速搜索现存细菌和病毒基因组 写在前面 热心肠日报 摘要 图1. 序列搜索方法 图2. 编码原理 图3. 权衡速度和空间下与索引大小关系 图4. 质粒序列的系统发育分布 图5. 质粒分布与 ...
- Nature:拟南芥微生物组功能研究2细菌基因组测序和分析
本网对Markdown排版支持较差,请跳转植物微生物组公众号阅读 背景介绍 Bai, Y., et al. (2015). "Functional overlap of the Arabid ...
- 一文搞定细菌基因组De Novo测序分析
本文转自基因的生物信息学分析,链接 https://mp.weixin.qq.com/s/xWOlv5WVJ7LwTuRQDXmGzg 以一个细菌的测序数据为例子,介绍细菌基因组测序分析流程.本次实验 ...
- NBT:使用纳米孔测序从微生物组中得到完整闭环的细菌基因组
文章目录 使用纳米孔测序从微生物组中得到完整成环的细菌基因组 热心肠导读 摘要 前言 结果 图1 定义的12种细菌混合物中的序列分类学组成.每种细菌的读长分布和基因组组装 图2:在两个健康的人类粪便微 ...
- 一个细菌基因组完整分析脚本
本文转自"基因学苑",已获授权 分析流程图 一.数据质控 利用fastqc软件对原始测序reads进行指控,生成网页帮统计报告,根据报告内容对数据机型过滤. mkdir resul ...
- 16款测序平台性能大PK,华大表现不俗!基于人类和细菌基因组DNA水平的多平台测序数据研究成果发布...
生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 ...
- Abbexa 细菌基因组 DNA 试剂盒介绍
艾美捷Abbexa 细菌基因组 DNA 试剂盒使用溶菌酶和适度的裂解缓冲液来裂解细胞.蛋白酶 K 用于蛋白质消化,而 RNase A 用于 RNA 消化.DNA 在高盐环境中与硅胶柱特异性结合,DNA ...
最新文章
- Notification和Notification Manager的使用
- 移动端适配方案 flexible.js
- ASP获取地址栏URL地址方法
- 《自然》公布2020科学界十大人物,李兰娟、张永振入选
- mysql Error 1045(28000)
- spring.xml从外部文件引入数据库配置信息
- JavaScript文档对象模型document对象改变Html元素内容(3)
- 计算机考试策略,计算机等级考试应试的策略.doc
- Facade(装饰模式)
- 如何正确选用无线模块天线
- 前端(HTML css JS)开发工具及常用插件推荐
- node mysql菜鸟教程_Node.js GET/POST请求
- 【python爬虫】QQ空间爬虫 笔记
- xp系统更改计算机名c盘,c盘满了怎么办,小编教你电脑xp的c盘满了怎么办
- 未来物联网的一些问题
- UVA 12304 (平面几何)
- Accelerated Proximal Gradient Method/FISTA
- jQuery ? NO, Axios——请求数据
- uni-app开发小程序以及项目部署流程
- opencv-python(cv2)——如何读取和保存中文路径图片(含代码)
热门文章
- arraylist有顺序吗_美团Java研发岗二面:什么叫线程安全?servlet是线程安全吗?...
- A[1080]Graduate Admission 两个cmp比较函数两个struct结构体
- cytoscape使用方法_关于这种“网络模块”和“模块饼图”的可视化方法
- arm汇编指令集_汇编入门第一篇,小白也能看懂
- Mysql之事务与视图
- NYOJ 608 508筹划工程 HDU 1232 畅通工程
- centos7 java 1.8_Centos7下安装Java JDK 1.8
- c++ builder 2010论坛_CHiF中国血液创新论坛 | 领域大咖带您开启CLL的个体化治疗之门...
- 中国电子学会c语言考试题库,计算机基础考试试题及答案
- 自动驾驶 6-1: 横向车辆控制介绍 Lesson 1: Introduction to Lateral Vehicle Control