前言

  • 我们知道通常一个基因会有多条转录本,有时候从ensemble或phytizome上下载的cds或pep文件并没有经过序列过滤
  • 而过滤后的序列即仅包含最长转录本有利于我们进一步分析研究,省去后续分析的很多麻烦,例如统计基因数等等
  • 因此,我们有必要对序列进行过滤

原始文件

  • 那拟南芥为例,其转录本之间的区分是点号.

生成文件

脚本实现

  1. 此脚本适用于批量过滤序列,仅修改脚本中的路径,就可把路径中的fasta文件进行序列过滤
    2.此脚本使用于用点号. 区分的序列,如果是其他符号区分如==下划线_==将脚本对应行修改为下划线即可
####仅适用于.区分的转录本
####仅适用于.区分的转录本
from pathlib import Pathp = Path("H:\\徐云峰数据\\CG农科院NP转运体项目\\序列信息\\最长转录本\\selected点")
def select_longest(seq_fa,longest_fa):#初始化空字典用于存放序列,字典的key是基因名,value存放转录本和序列#格式为>{gene1:[>gene1.1\nabd\n>gene1.2\neee\nerr\n....]}seq_dict = {}with open(seq_fa,'rt') as f1:for eachline in f1:  if eachline[0] == '>':gene_name = eachline[1:].split('.')[0]#更改此处.可以选其他符号区分的转录本if gene_name not in seq_dict.keys():seq_dict[gene_name] = eachline#此处不加strip(),方便用\n区别转录本和序列else:seq_dict[gene_name] += eachlineelif len(eachline.strip()) > 0:seq_dict[gene_name] += eachlinewith open(longest_fa,'wt') as f2:for i in seq_dict.keys():transcripts_list = seq_dict[i].split('>')[1:]#此处用切片去除列表的第一个空字符,得到列表 ['gene1\n12\n3456\n', 'gene2\n123\n45\n', 'gene3\n1234\n56789\n']seq_list= []for each in transcripts_list:each = each.split('\n')#单独提取序列seq = ''.join(each[1:])seq_list.append(seq)length = list(map(len,seq_list))index = length.index(max(length))f2.write(f'>{transcripts_list[index]}')def search_fa_longest():for file in p.iterdir():if file.suffix == '.fa':outfile = file.parent / (file.stem + '_longest.fa')select_longest(file,outfile)search_fa_longest()

批量文件实现效果如下:

利用Python解决生物问题-批量获取最长转录本相关推荐

  1. 利用Python解决生物问题:批量对应转录本-基因名

    前言 大部分分析我们需要明确转录本和基因的一一对应关系 如果是如下这种规范格式的,那么这种对应关系是好找的 如果是这样的呢?没有肉眼可见的关系, 准备文件 ensemble官网下载的pep序列文件 实 ...

  2. 利用Python解决生物问题-获取反向互补序列

    seq = input('请输入您要处理的序列(仅包含ATGC):') demand = 'ATGC' for each in seq:if each not in demand:print('您输入 ...

  3. python 根据word生成ppt_未明学院:利用Python将Wordamp;PPT批量转成PDF

    Python中的许多库,像一个个具有不同功能的"工具",能帮助我们解决工作中的不同问题,提高工作效率! 本期将继续为大家放松python中的实用技能,本期的主题是:利用Python ...

  4. 利用python识别身份证号后获取年龄和性别信息

    利用python识别身份证号后获取年龄和性别信息 1. 实验目的 利用python识别身份证号后,从身份证号中获取年龄和性别信息 2. 主代码 1. 身份证号码识别 # !/usr/bin/pytho ...

  5. 利用python解决Origin中十六进制和十进制整数转换的问题

    利用python解决Origin中十六进制和十进制整数转换的问题 Origin是由OriginLab公司开发的一个科学绘图.数据分析软件,功能非常强大,可以画出各种漂亮的图像,而且还能进行数理统计/数 ...

  6. 利用Python解决最短路径问题

    利用Python解决最短路径问题 题意 运行限制 解题思路 代码 法一(基于最短路径长度递增): 法二(基于图论中的最短路径算法): 推荐练习 题意 一图由 2021 个结点组成,依次编号 1 至 2 ...

  7. 程序员如何利用 Python 解决女朋友不看天气的坏习惯?

    作者 | 赵昱 责编 | 郭芮 在一个阴雨绵绵的早上,一切都是那么安静祥和.忽然之间,被电话打破了宁静,一看是女朋友的电话,就知道这个小家伙肯定又做了什么傻事......果不其然,16℃的雨天她居然穿 ...

  8. 利用Python解决豆瓣验证码,实现模拟登陆!

    前言: 更为重要的一件事情是它是纯Python编程语言开发的!!! 所以咱们利用Python去搞定它的验证码实现模拟登陆,是有一定意义的哟! 实战: Python 3.6.5 解释器 pycharm ...

  9. 利用Python脚本给图片批量添加文字水印

    引言:本人从小白自学python,为了测试基础学习效果,增加一定的促进,想通过参加全国计算机等级考试二级python来检验基础学习情况.在学习过程中,会将该过程编写的python小程序题目在此发表,希 ...

最新文章

  1. java 热替换 匿名类_Java 类的热替换
  2. 【调查】您对计算机培训感兴趣吗?
  3. 蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别
  4. (pytorch-深度学习系列)正向传播与反向传播-学习笔记
  5. 分页插件PageHelper的使用方法
  6. Android doc |Getting Started|部分 转载 --管理Activity生命周期
  7. 美国富人如何“逃税”?
  8. 如何双击就以管理员身份运行批处理
  9. 压缩 质量不变_来了!业内首个HEIF图像高质量压缩FPGA加速方案
  10. 2016CCCC天梯--多项式A除以B
  11. 八皇后(韩顺平java)
  12. 【从0开始音乐demo的制作:预计耗时15小时(一)】项目创建和Vue 3.x vue-cli 的选项问题
  13. 德勤中国成长型AI企业研究报告:迈向巅峰之路
  14. TF-IDF算法原理和公式
  15. 2022 Google IO大会新技术
  16. 洛谷3373 线段树模板
  17. 3,用CMD命令打开QQ及微信....常用软件
  18. 一款json查询操作神器
  19. chai.js中文文档
  20. 阿里云对象存储OSS配置了cnd之后产生的外网流出流量费用

热门文章

  1. 看过来,如何用Python 一行代码能实现丧心病狂的功能
  2. 测试如何写好功能测试用例
  3. java tess4j 示例_Java Tess4J Demo
  4. 什么是对象?什么是类?类与对象有什么关系?
  5. JavaScript基本语法,函数,流程控制
  6. 5G NR R16 SPS ---- 半持续调度
  7. pip修改(国内镜像)清华源,国内下载地址
  8. 【小西】通过商品渠道新增咪咕埋点功能,ThreadUtil.execAsync()线程异步
  9. springboot毕设项目酷玩平台设计43qgi(java+VUE+Mybatis+Maven+Mysql)
  10. 酷玩部落:智能硬件的游戏化