python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...
最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找。而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难。本人写了相对于初学者同样很简单脚本分享给大家。
首先,我将fa文件处理为单行(嫌麻烦,没有写成scaffold_x一行,序列一行的样子,如图三),将下面的序列处理(图一):
(补充)经过:
import re
fr=open(r'F:desktopcorrelxxx.fa','r')
fw=open(r'F:desktopcorrelxxx_use.fa','w')
line=fr.read()
r=line.replace('n','')
s=re.sub('>','n>',r)
fw.write(s)
fr.close()
fw.close()
得到(图二):
当然你如果不嫌麻烦也可以处理成(图三):
假设我含有位置信息源文件(图四):
第一列为基因号,最后一列为基因在fa文件中的位置信息;
本人采用图二的形式,具体脚本(脚本一);
#author:Wang Binzhong
# -*- coding:utf-8 -*-
fr=open(r'F:desktopCX.txt','r')#读取含有位置信息的文件
fa=open(r'F:desktopxxxx.fa','r')#读取处理好的基因序列文件
fw_1=open(r'F:desktopfa_3.txt','w')#写入
line_cr=fr.readlines()
line_fa=fa.readlines()
for eachline in line_cr:
sp=eachline.strip().split('t')
title_1=eachline.find('scaffold')
start_1=eachline.find(':',title_1)+1
end_1=eachline.find('-',start_1)
d_1=eachline[title_1:start_1-1].strip()#scaffold名称
d_2=eachline[start_1:end_1].strip()#首位的位置
d_3=eachline[end_1+1:].strip()#末尾的位置
for each_seq in line_fa:
if d_1 == each_seq[:int(len(d_1))+5].strip('ATGC'):#如果对应的名称在行中,就可以用以下的规则写入文本
fw_1.write(sp[0]+'t'+each_seq[len(d_1)+int(d_2):len(d_1)+int(d_3)].strip()+'n')#改为:fw_1.write('>'+sp[0]+'n'+each_seq[len(d_1)+int(d_2):len(d_1)+int(d_3)].strip()+'n')可以省略第二步(脚本二),一步完成
break
fr.close()
fa.close()
fw_1.close()
表头没有'>',同时也没有换行处理,所以需要继续处理(图五):
没有写连续的脚本,重新写了一个(脚本二):
import re
fr=open(r'F:desktopfa_3.txt','r')
fw=open(r'F:desktopfa_4.fa','w')
line_fr=fr.readlines()
s_1=''
for eachline in line_fr:
s_1=re.sub('t','n',eachline)
fw.write(re.sub('pp','>pp',s_1))
fr.close()
fw.close()
最终得到:
程序比较简单,Python初学者都可以懂。当然,如果有错误的地方可以留言指出,
希望能为需要的同学提供帮助。这个程序只是针对于正链的
注:之前写的出现了一个bug,经过修改后发布成功提取序列,希望对各位有帮助,有用的话可以引用。
鉴于某些人盗版,转载请注明网址。
转载本文请联系原作者获取授权,同时请注明本文来自王彬忠科学网博客。
链接地址:http://blog.sciencenet.cn/blog-783116-801490.html
python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...相关推荐
- python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...
[Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 = pd.DataFrame({'a':[1,2,3,4 ...
- python 病毒 基因_科学网—RNA病毒基因组组装指南 - 倪帅的博文
从前几年的猪流感和埃博拉,再到上个月在韩国流行的MERS, 病毒的每次爆发都能使全球陷入一阵恐慌,病毒虽然没有真正在全球爆发,但是各国在预防上消耗的资源比在治疗上消耗的还要多.殊不知,病毒是世界上最简 ...
- python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...
此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...
- python读取网站_科学网—python 获取网址 - 林清莹的博文
Python获取网址的内容# coding=utf-8 import urllib url = "http://www.baidu.com" data = urllib.urlop ...
- python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文
正在学习python编程,把一些小技巧记录下来备查 ======================计算技巧========================== 正常的条件语句如下if a>b:c= ...
- 如何用python爬视频_科学网—利用python爬取一个小视频 - 李鸿斌的博文
工具 : requests 库 解析: beautifulsoup 任务: 视频抓取 1,分析目标网站 寻找一个虚拟的头文件 User-Agent: Mozilla/5.0 (Windows NT 6 ...
- python perl 比较生信_科学网—生信人写程序1. Perl语言模板及配置 - 刘永鑫的博文...
科学网对Markdown排版支持较差,对格式不满意的用户请跳转至 CSDN 或微信阅读: 如果感觉文章对您有帮助,想继续阅读同类文章,请扫描下方二维码关注"生信宝典"公众号,每天接 ...
- python 海象运算符_科学网—[转载]海象运算符 := - 龚云国的博文
PEP 572: Assignment Expressions 新增一种新语法形式::=,又称为"海象运算符"(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言, ...
- python字母频率_科学网-Python统计字母频数和频率-吕波的博文
方案一 统计字符串中的字母频数 import collections import re d = collections.defaultdict(int) S = "testTypecopy ...
最新文章
- Java学习总结:47(打印流)
- UNITY Profiler 真机调试
- 岗位推荐 | 微软小冰团队招聘数据挖掘/算法工程师实习生
- jndi ldap_什么是JNDI,SPI,CCI,LDAP和JCA?
- linux mkfifo管道
- CSS的Padding, Margin, Border 的区别
- 一道简单的题学到的东西
- type(img).__module__ == np.__name__
- JSON.Stringify
- DEA模型及matlab应用2:超效率SE-DEA模型
- STM32旋转立方体
- YankNote 笔记软件比 Sublime 好用吗
- 地震后的重建!——AD灾难恢复!
- 编译原理:FIRST集与FOLLOW集
- 2018版本及2017版本的IntelliJ IDEA破解步骤,非lanyu,到2099年
- MPMoviePlayerController 电影播放器—备用
- K.M.P算法个人浅谈
- 【聚宽本地数据JQData】一个简单的股票回测策略
- 电脑无法正常开机时如何解除BitLocker硬盘锁
- Mac如何查看隐藏文件夹
热门文章
- 实战05_SSM整合ActiveMQ支持多种类型消息
- VBA IsNull 应用 - 捕获错误并查找未填充的值
- Vue 实现 Open Graph 分享预览
- 如何用两个开关控制同一盏灯
- Redis数据类型--列表类型
- linux-centos7 关机命令、系统目录结构介绍
- c++ 编写函数返回两个值最小值_结合实例来分析SQL的窗口函数
- java 错误 代码_Java错误代码及异常处理
- 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
- mysql数据库管理系统模式_MYSQL命令行模式管理MySql的一点心得