python-读取测序数据的ABI文件并输出png格式峰图

news2024/12/29 1:24:11

本地环境:win10,Python 3.9.13,Biopython 1.8.2,matplotlib 3.5.2


参考:
matplotlib.pyplot.arrow — Matplotlib 3.9.1 documentation
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.arrow.html

matplotlib之pyplot模块——向子图添加箭头(arrow())_在matplotlib中哪个函数可以在图表中添加箭头-CSDN博客
https://blog.csdn.net/mighty13/article/details/117189164


目录

  • 前言
  • 实现效果
  • 解决思路
  • 实现要点
    • 如何提取序列数值
    • 图像绘制要点
      • 如何控制图像尺寸,并让图像占满整个画面
      • 如何设置字体、字号、粗细等效果
      • 如何绘制箭头

前言

之前写过:

  1. python-读取abi文件并绘制峰图_python abi如何获取-CSDN博客
    https://blog.csdn.net/pxy7896/article/details/120562689

  2. C#-读取测序数据的ABI文件并绘制svg格式峰图_dna abi文件 规范-CSDN博客
    https://blog.csdn.net/pxy7896/article/details/140798619

因为需要python版(🙄谁叫我要跟不同的同事对接),所以我又用biopython和matplotlib另外写了一版。这版的代码更短,实现也更为简单。

仍旧是在1的基础上修改,主要是美化了图像。

下文会默认读者已安装biopython和matplotlib。

实现效果

只截取了一部分,如下图所示:(在看图软件里截取的🙂)
在这里插入图片描述

解决思路

  1. 解析文件就用biopython包,主要是SeqIO.parse
  2. 完成数据提取后,仍然按前言2中思路分析图像里的元素。这里需要考虑的重点是箭头和文字的绘制:
    2.1 对于箭头,使用matplotlib.pyplot.arrow进行绘制
    2.2 对于文字,使用matplotlib.pyplot.text进行绘制

实现要点

下文约定:

from Bio import SeqIO
import matplotlib.pyplot as plt

如何提取序列数值

# 检查文件格式
raw = open(file_name, errors='ignore').read()
if file_name[-3:] != 'ab1' or raw[:4] != 'ABIF':
    return "wrong file format"

# 读取数据
for record in SeqIO.parse(file_name, "abi"):
	seq = record.seq
	anno = record.annotations
	abif_raw = anno["abif_raw"]
    seqOrder = str(abif_raw["FWO_1"])[2:-1]

这里的seqOrder是四个字符,比如GATC这样,指明的是abif_raw["DATA9"]~abif_raw["DATA12"]分别是哪个碱基的。现在就是指abif_raw["DATA9"]G,以此类推。

对于basecall,用的是:abif_raw["PLOC1"]。这个是字符数组,需要转成int

图像绘制要点

如何控制图像尺寸,并让图像占满整个画面

# 现在尺寸是1000x200,分辨率是100
fig, ax = plt.subplots(figsize=(10, 2), dpi=100)
# 不显示坐标轴
ax.axis('off')
# 调整子图的位置,让图像占满整个画面
fig.subplots_adjust(left=0, right=1, top=1, bottom=0)  

此时如果左右两侧还有空白,则需要设置xlim:

plt.xlim(0, 计算出的最大值) 

上下的同理。

如何设置字体、字号、粗细等效果

首先构件一个字典,存放信息:

font = {'family': 'courier new', 'color': 'green', 'weight': 'bold', 'size': 14}

绘制时:

plt.text(x, y, 字符, fontdict=font)

如何绘制箭头

参见本文最顶端的参考部分。

常用的参数有:

x:箭头的起始点的x坐标。

y:箭头的起始点的y坐标。

dx:箭头相对于起始点的水平偏移量。

dy:箭头相对于起始点的垂直偏移量。

head_width:箭头头部的宽度。

head_length:箭头头部的长度。

fc:箭头的填充颜色。

ec:箭头的边框颜色。

这里为了绘制向下的箭头,就需要让dx=0,dy是负数,这个负数其实就是箭头的高度。如果加上length_includes_head=True,那这个负数就是整个箭头的高度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实战场景】SpringBoot整合Swagger快速实现

【实战场景】SpringBoot整合Swagger快速实现 开篇词:干货篇:一. Swagger简介二. SpringBoot整合Swagger3环境搭建1. 引入maven依赖2. YML配置3. Swagger配置类4. Swagger分组配置 三. Swagger 常用注解配置1. Api2. ApiOperation3. ApiParam4. ApiModel …

工程技术人员职称专业一览表,赶紧收藏!有助评职称、落户

现在很多地区为了引进人才,都会对各类获得中级或高级职称的人才提供一系列优惠政策,比如人才补贴、职称入户等等。 下面小编就来为大家介绍一下中级职称专业一览表,告诉你能以考代评的几个考试,需要评职称、落户的快看过来&#…

C#中Override与New关键字的运用及实例解析

文章目录 override 关键字new 关键字使用场景使用注意事项和最佳实践总结 在C#编程中,override 和 new 关键字用于处理类的继承和方法的重写。理解它们的用法和区别对于编写清晰和高效的面向对象代码至关重要。本文将详细阐述这两个关键字的含义、使用场景&#xff…

5分钟带你走近:LVS负载均衡(lvs知识点+实验配置)

集群和分布式简介 1、系统性能扩展方式 Scale UP:向上扩展,增强 Scale Out:向外扩展,增加设备,调度分配问题,Cluster 2、集群Cluster Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统 Cluster常见…

PDF扫描?用lookscanned就好了【送源码】

日常工作,我们有时会需要把电子文档转换成看起来像是用扫描仪扫描出来的PDF文件,满足某些特定的需求,你懂的~~ 有时候身边没有打印机或者打印纸,或者打印不方便,总不至于每天都背着吧? 今天要跟大家聊聊一…

SX_错误声明定义了两个以上的数据类型BUG解决_14

具体报错: In file included from perfmon_priv.h:32,from perfmond.c:21: perfmon_api.h:7:18: 错误: 声明指定了两个以上的数据类型7 | #define uint8_t unsigned char perfmon_api.h:7:27: 错误: 声明指定了两个以上的数据类型7 | #define uint8_t unsigned cha…

《人工智能算力资源池技术规范》团体标准正式发布!

由趋动科技提出、中关村新兴科技服务业产业联盟牵头、联合行业专家单位参与,遵循标准制定流程,经过批准起草小组会议讨论、广泛征求意见、委员会草案投票等流程的《人工智能算力资源池技术规范》团体标准(标准编号为T/STSI 43—2023&#xff…

洛谷 P1433 吃奶酪

原题https://www.luogu.com.cn/problem/P1433 Description 房间里放着 n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0)点处。 Input 第一行有一个整数,表示奶酪的数量 n。 第 2 到第(n1) 行,每行…

短视频SDK,支持Flutter跨平台框架,加速产品上线进程

在数字内容爆炸式增长的今天,短视频已成为连接用户、传递情感、展现创意的重要桥梁。为助力开发者快速融入这股潮流,美摄科技匠心打造了一款专为Flutter框架优化的短视频SDK解决方案,旨在降低技术门槛,加速产品迭代,让…

商标直接注册初审通过提高的注意!

近日下了一批商标注册申请初步审定公告通知书,普推知产商标老杨发现其实许多商标名称申请在前,经过专业检索查重,基本上就知道通过率如何,虽然是一个预判,但是对于有经验的商标代理人员来说,预估七成基本判…

HTML - 简易版打字练习

1. 赛博朋克风格的视觉设计 颜色与渐变:通过linear-gradient设置了背景的颜色渐变,使用高饱和度的霓虹色彩(如橙色、绿色和蓝色)来营造赛博朋克的视觉效果。这种配色方案是赛博朋克风格的典型元素。 立体感和阴影:使用…

春秋云镜CVE-2023-38836

打开靶场环境 点击发现一个登陆框&#xff0c;弱口令试一下 发现账号密码为admin,password 随便点击点击 Media发现这里可以上传文件上传木马试试 <?php eval($_POST["wjq"]); ?> 发现不能上传php文件 php内容 修改他的格式 抓包绕过一下 302就可以其实已经…

绘制echarts-liquidfill水球图

文章目录 一、效果图二、步骤1.安装插件2.引入2.主要代码2.素材图片 总结 一、效果图 二、步骤 1.安装插件 npm install echarts npm install echarts-liquidfillecharts5的版本与echarts-liquidfill3兼容&#xff0c;echarts4的版本与echarts-liquidfill2兼容,安装的时候需要…

Spring I

1. IoC & DI ⼊⻔ 1.1 Spring 是什么&#xff1f; 通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场 景, 有着活跃⽽庞⼤的社区, 这也是Spring能够⻓久不衰的原因. 但是这个概念相对来说, 还是⽐较抽象. 我们⽤⼀句更具体的…

C++中的搜索二叉树模拟实现代码

包含的功能&#xff1a;插入、删除、查找、中序遍历&#xff08;排列大小&#xff09; 代码&#xff1a;

Linux 内核源码分析---proc 文件系统

proc文件系统 进程数据文件系统&#xff08;process data filesystem, procfs&#xff09;装载在 /proc&#xff0c;缩写为 procFS。 proc 文件系统是一种虚拟文件系统&#xff0c;其信息不能从块设备读取。只有在读取文件内容时才动态生成相应的信息。使用proc文件系统&…

WPF篇(7)- Control基类+ContentControl类(内容控件)+ButtonBase基类

前面给大家介绍完了WPF所有的布局控件&#xff0c;属性以及使用案例&#xff0c;从这里咱们就开始学下内容控件。 Control基类 Control是许多控件的基类。比如最常见的按钮&#xff08;Button&#xff09;、单选(RadioButton)、复选&#xff08;CheckBox&#xff09;、文本框…

【JavaEE初阶】JUC(java.uitl.concurrent)的常见类

&#x1f334;Callable 接口 之前讲到Runnable接口&#xff0c;用于描述一个任务&#xff0c;通过Runnable中的run方法来体现的&#xff0c;但是描述的任务没有返回值&#xff08;run方法是返回void&#xff09;&#xff0c;此处的Callable接口与Runnable接口类似&#xff0c;C…

LLVM理论篇之编译器前端

1、简述 LLVM前端通过对源程序的预处理&#xff0c;构成源程序的字符流扫描与分解&#xff0c;将单词序列提取为各类语法短语&#xff0c;生成抽象语法树&#xff0c;最终转换为中间代码。编译器前端包含的这几个过程如下&#xff1a; &#xff08;1&#xff09;预编译 &…

【python】实现对文件夹中的图像连续重命名方法

import os import shutildef rename_images(input_folder):# 获取输入文件夹下的所有图片文件&#xff08;假设都是.jpg格式&#xff09;image_files [f for f in os.listdir(input_folder) if os.path.isfile(os.path.join(input_folder, f)) and f.endswith(".jpg"…