最近,用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文件) - 王彬忠的博文...相关推荐

  1. python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...

    [Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 = pd.DataFrame({'a':[1,2,3,4 ...

  2. python 病毒 基因_科学网—RNA病毒基因组组装指南 - 倪帅的博文

    从前几年的猪流感和埃博拉,再到上个月在韩国流行的MERS, 病毒的每次爆发都能使全球陷入一阵恐慌,病毒虽然没有真正在全球爆发,但是各国在预防上消耗的资源比在治疗上消耗的还要多.殊不知,病毒是世界上最简 ...

  3. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

  4. python读取网站_科学网—python 获取网址 - 林清莹的博文

    Python获取网址的内容# coding=utf-8 import urllib url = "http://www.baidu.com" data = urllib.urlop ...

  5. python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

    正在学习python编程,把一些小技巧记录下来备查 ======================计算技巧========================== 正常的条件语句如下if a>b:c= ...

  6. 如何用python爬视频_科学网—利用python爬取一个小视频 - 李鸿斌的博文

    工具 : requests 库 解析: beautifulsoup 任务: 视频抓取 1,分析目标网站 寻找一个虚拟的头文件 User-Agent: Mozilla/5.0 (Windows NT 6 ...

  7. python perl 比较生信_科学网—生信人写程序1. Perl语言模板及配置 - 刘永鑫的博文...

    科学网对Markdown排版支持较差,对格式不满意的用户请跳转至 CSDN 或微信阅读: 如果感觉文章对您有帮助,想继续阅读同类文章,请扫描下方二维码关注"生信宝典"公众号,每天接 ...

  8. python 海象运算符_科学网—[转载]海象运算符 := - 龚云国的博文

    PEP 572: Assignment Expressions 新增一种新语法形式::=,又称为"海象运算符"(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言, ...

  9. python字母频率_科学网-Python统计字母频数和频率-吕波的博文

    方案一 统计字符串中的字母频数 import collections import re d = collections.defaultdict(int) S = "testTypecopy ...

最新文章

  1. Java学习总结:47(打印流)
  2. UNITY Profiler 真机调试
  3. 岗位推荐 | 微软小冰团队招聘数据挖掘/算法工程师实习生
  4. jndi ldap_什么是JNDI,SPI,CCI,LDAP和JCA?
  5. linux mkfifo管道
  6. CSS的Padding, Margin, Border 的区别
  7. 一道简单的题学到的东西
  8. type(img).__module__ == np.__name__
  9. JSON.Stringify
  10. DEA模型及matlab应用2:超效率SE-DEA模型
  11. STM32旋转立方体
  12. YankNote 笔记软件比 Sublime 好用吗
  13. 地震后的重建!——AD灾难恢复!
  14. 编译原理:FIRST集与FOLLOW集
  15. 2018版本及2017版本的IntelliJ IDEA破解步骤,非lanyu,到2099年
  16. MPMoviePlayerController 电影播放器—备用
  17. K.M.P算法个人浅谈
  18. 【聚宽本地数据JQData】一个简单的股票回测策略
  19. 电脑无法正常开机时如何解除BitLocker硬盘锁
  20. Mac如何查看隐藏文件夹

热门文章

  1. 实战05_SSM整合ActiveMQ支持多种类型消息
  2. VBA IsNull 应用 - 捕获错误并查找未填充的值
  3. Vue 实现 Open Graph 分享预览
  4. 如何用两个开关控制同一盏灯
  5. Redis数据类型--列表类型
  6. linux-centos7 关机命令、系统目录结构介绍
  7. c++ 编写函数返回两个值最小值_结合实例来分析SQL的窗口函数
  8. java 错误 代码_Java错误代码及异常处理
  9. 平行志愿遵循分数优先php,2020平行志愿的录取规则是什么有哪些优势
  10. mysql数据库管理系统模式_MYSQL命令行模式管理MySql的一点心得