草庐IT

高效绘图小工具:Multi-omics Visual

WJ的生信小院 2023-10-07 原文

       对于科研人员而言,很好的展现数据是工作中的必要技能,图最为可视化的最主要形式是最为简单直接的一种表现方式。但是如何绘制精美的图片则一直是个比较繁琐的事情。诚然,市面上已经有了许许多多优秀的绘图软件,比如origin、sigmaplot。这些商业软件满足了大部分人的绘图需求,成为了许多数据分析人员不可或缺的帮手。但是,使用这些绘图软件会面临两个问题:一个是作为商业软件,需要付费购买(大部分人应该都是用的其他途径),第二,就是这些软件都有一定的学习成本,第三,部分软件的重现性较为复杂(需要每次重新调整配置,完成图片绘制)。其中软件的学习成本较高是主要是因为这些软件需要照顾大部分的使用人群,需用使用一种通用的技巧来教会所有人使用这些软件。因此,在我做数据分析的时候就想到一个问题,为什么不开发一种虽然可能适用于不那么多的人,但是操作简单、易于上手、方便重现和批量作图的图形软件呢。因此,基于这个出发点,基于python丰富多样的模块便写了一个小工具Multi-omics Visual,在可以定制一些常规图片的同时,也可以实现批量作图的功能。但是本软件并不如市面的大部分商业软件那样,提供了丰富的绘图样式,本软件仅仅提高了少量的绘图样式。但是,本软件最大的意义是提供了一个框架,可以快速将python上流行的绘图包通过重写其中的某些功能将其加入到本软件中,实现用户不写代码,仅仅通过在GUI界面调整某些参数,即可快速实现图片的绘制和调整。当然,对于后续的使用者来说,这种框架所提供的功能是可以扩展的,只需要有相应的python绘图包发布,那么本软件可以快速将这些工具集成到绘图选项中,从而帮助用户快速上手,完成相应的可视化工作。

       Python的另一个优势便是机器学习。现如今python已经成为许多机器学习人员的主要编程语言了。考虑到现如今机器学习也已经成为生物数据分析的常用手段,所以本软件基于现在流行的一些机器学习框架,实现的一些常见的机器学习模型,方便用户操作与实践。只是这部分功能对大部分用户而言,目前可以不用考虑。

       因为本软件是使用纯python编写的,打包成二进制文件发布的,所以与一般的exe文件有所不同,需要创建相应的运行环境。运行本软件需要首先安装python(>=3.8),并将其添加到系统路径。随后,在cmd上pip安装指定包既可,其中pip的命令为

       pip install pandas PyQt5 numpy matplotlib requests colour scipy seaborn datetime sklearn matplotlib_venn -i https://pypi.tuna.tsinghua.edu.cn/simple

       完成上述操作后,即创建好相应的运行环境。随后,在github上下载已经编译好的软件包,地址为https://github.com/wangjun258/Multi_omics_Visual。如果读者从github上下载太慢,也可以直接联系本公众号《生信小院》获取。而下载好本软件后,在解压之后的Multi_omics_Visual文件夹中直接查找Multi_omics_Visual.exe程序,双击即可运行。如果想要随时随地使用本软件,建议为Multi_omics_Visual.exe程序创建快捷方式,并放于桌面。而在介绍完软件开发的目的之后,接下来,开门见山,介绍一下软件的基本功能。


图1 Multi-omics Visual软件的功能介绍

       首先,从图1中我们可以看出Multi-omics Visual软件总共包含五大部分,分别为“Plot_draw”、“Bioinformatic”、“Machine_learning”、 “Data_clean”和“Help”五大部分。 “Plot_draw”中包含一些常见图片的绘制功能,如条形图(barplot_chart)、折线图(line_char)、混合图(bar_line_chart)、热图(heatmap)、PCA图(PCA_chart)、韦恩图(Veen)、饼图(pie_chart)和一些3D图(heatmap_3D、barplot_3D)等。“Bioinformatic”目前仅仅实现了基于SW算法(纯python实现,不基于任何模块)的Blast序列分析,后续会逐步添加其他的基于机器学习的生物信信分析功能。“Machine_learning”则实现了一些常规机器学习算法,包括线性回归(Liner_regression)、朴素贝叶斯(BavieByes)、梯度下降(GradAscent)等算法,方便用户进行实践。“Data_clean”中则包含了对数据进行整理的一些简单方法。“Help”中则包含了本软件开发者的相关信息。软件的主界面则是如下图2所示。


图2 Multi-omics Visual软件主界面

       打开上面的软件界面之后,我们就可以选择其中的“Plot_draw”功能的heatmap_3D选项。


图3 Multi-omics Visual软件功能启动

       随后,弹出下图4中右下角的界面,包含三个部分,其中第一部分为“input file”时输入文件框,第二部分为“input file batch”是用于批量作图的选项,第三部分为“Image Output”则是用来指定输出的图像文件的路径。本次输入的文件为demo_heatmap_3D.txt文件,内容如左下角所示。


图4 Multi-omics Visual软件之文件导入

       在导入文件之后,我们可以通过图五右上角的Adjustment para选项,弹出右下角的参数对话框,再通过点击①,将参数文件保存,之后打开参数文件demo_heatmap_3D_arg.txt文件即③中可实现在文件中修改数据。之后按照④的路径将参数文件拖入到⑤的文本框中,点击⑥从而修改参数对话框中部分参数的选项。当然,本软件也提供直接在参数对话框中修改相应的参数。完成上述操作之后,便可以直接点击⑦,打开绘图对话框。


图5 Multi-omics Visual软件之作图参数的保存与导入

       如下图6所示,我们在Figure1中即可实现三维图形的绘制,并可以通过拖动鼠标完成三维图形的旋转。之后通过这个对话框中的保存选项或者在“Image Output”中指定保存文件路径,即可实现文件的保存。


图6 Multi-omics Visual软件之3D图形绘制

       以上就是简单介绍了一下如何使用本软件绘制3D图形。只是这一功能只是本软件众多功能中的冰山一角,还有许多功能将在接下来的推文中继续演示。也欢迎用户提出建议,本人也会进一步维护这个项目(https://github.com/wangjun258/Multi_omics_Visual)。

       最后,进一步推广一下我开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件,具体地址的话可以去github上搜索,欢迎大家多多使用,多提宝贵建议。搜索V信,公众,号:生信小院,其中分享了更多了与生信学习的相关信息,欢迎大家阅读。



有关高效绘图小工具:Multi-omics Visual的更多相关文章

  1. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  2. ruby-on-rails - 在 Rails 中更高效地查找或创建多条记录 - 2

    我有一个应用需要发送用户事件邀请。当用户邀请friend(用户)参加事件时,如果尚不存在将用户连接到该事件的新记录,则会创建该记录。我的模型由用户、事件和events_user组成。classEventdefinvite(user_id,*args)user_id.eachdo|u|e=EventsUser.find_or_create_by_event_id_and_user_id(self.id,u)e.save!endendend用法Event.first.invite([1,2,3])我不认为以上是完成我的任务的最有效方法。我设想了一种方法,例如Model.find_or_cr

  3. ruby - 使用 ruby​​ gem net-ssh-multi 同时在多个服务器上执行 sudo 命令 - 2

    在previousquestion中我想出了如何在多个服务器上启动经过密码验证的sshsession来运行单个命令。现在我需要能够执行“sudo”命令。问题是,net-ssh-multi没有分配sudo需要运行的伪终端(pty),导致以下错误:[127.0.0.1:stderr]sudo:sorry,youmusthaveattytorunsudo根据documentation,可以通过调用channel对象的方法来分配伪终端,但是,以下代码不起作用:它会生成上面的“notty”错误:require'net/ssh'require'net/ssh/multi'Net::SSH::Mul

  4. ruby - Rubocop 规则 : Never use 'do' with multi-line 'while - 2

    我有以下代码#coloursarandomcellwithacorrectcolourdefcolour_random!whiletruedocol,row=rand(columns),rand(rows)cell=self[row,col]ifcell.empty?thencell.should_be_filled??cell.colour!(1):cell.colour!(0)breakendendend做什么并不重要,尽管它应该很明显。关键是Rubocop给了我一个警告Neveruse'do'withmulti-line'while为什么我不应该那样做?那我该怎么办呢?

  5. 续集来了丨UI自动化测试(二):带视频,实在RPA高效进行web项目UI自动化测试 - 2

    一、什么是web项目ui自动化测试?通过测试工具模拟人为操控浏览器,使软件按照测试人员的预定计划自动执行测试的一种方式,可以完成许多手工测试无法完成或者不易实现的繁琐工作。正确使用自动化测试,可以更全面的对软件进行测试,从而提高软件质量进而缩短迭代周期。二、构建测试用例的“九部曲”(一)创建流程包划分功能模块日常测试活动中,都会根据功能模块进行拆分,所以在设计器中我们可以通过创建流程包的方式来拆分需要测试的功能模块,如下图中操作创建一个电脑流程包并且取名为对应的功能模块名称,如果有多个功能模块就创建多个对应的流程包,实在RPA设计器有易用的图形可视化界面,方便管理较多的功能模块。(二)在流程包

  6. 打通源码,高效定位代码问题|云效工程师指北 - 2

    大家好,我叫胡飞虎,花名虎仔,目前负责云效旗下产品Codeup代码托管的设计与开发。代码作为企业最核心的数据资产,除了被构建、部署之外还有更大的价值。为了帮助企业和团队挖掘更多源代码价值以赋能日常代码研发、运维等工作,云效代码团队在大数据和智能化方向进行了一系列的探索和实践(例如代码搜索与推荐),本文主要介绍我们如何通过直接打通源代码来提高研发与运维效率。随着微服务架构的流行,一个业务流程需要多个微服务共同完成。一旦出现问题,运维人员在面对数量多、调用链路复杂的情况下,很难快速锁定导致问题发生的罪魁祸首:代码。为了提高排查效率,目前常见的解决方案是:链路跟踪+日志分析工具相结合。即通过链路跟踪

  7. ruby - Ruby 有哪些绘图包/API? - 2

    类似:Whatgraphingpackages/APIsexistforPerl?我正在对不同语言的在线图形包进行一些研究,想知道当前有哪些适用于Ruby的最新图形包值得研究。所需的最低功能应包括Google通过itsAPI提供的功能.如能简要介绍所推荐的包/API的主要优势,我们将不胜感激。 最佳答案 我已将以下内容添加为书签,以便在时间允许时进行调查:基于Flash我还没有尝试过这些,但如果你想要活泼的动画,它们看起来都很有前途:amChartsFusionChartsOpenFlashChartZiyagemGoogleCha

  8. 基于C++实现一个支持简单交互绘图小程序 - 2

    资源下载地址:https://download.csdn.net/download/sheziqiong/86763967资源下载地址:https://download.csdn.net/download/sheziqiong/86763967基于C++实现一个支持简单交互绘图小程序一、概要设计1.1开发环境IDE:VisualStudio2019Commity运行环境:window10专业版配置要求:内存4g显卡无要求CPU无要求目的调试编译通过图形应用编码、熟悉flk1.2结构化模块设计图UML类图1.3主要模块功能接口描述Graph.cppvoidShape::add(Pointp)//

  9. ruby - 高效的 Ruby LRU 缓存 - 2

    使用任意Ruby对象作为基于最近最少使用算法过期的键来构建缓存的最有效方法是什么。它应该使用Ruby的正常哈希语义(不等于?) 最佳答案 我知道它晚了几年,但我刚刚实现了我认为是Ruby最快的LRU缓存。它还经过测试,可以在多线程环境中安全使用。https://github.com/SamSaffron/lru_redux注意:在Ruby1.9中Hash是有序的,所以你可以在几行代码中欺骗并构建最快的LRU缓存classLruRedux::Cache19definitialize(max_size)@max_size=max_siz

  10. 使用Overleaf在毕业论文中插入算法伪代码,高效美观 - 2

    【前言】去年的这个时候,一边准备考研复试,一边撰写本科毕设论文,读了很多论文,惊叹于其美观的伪代码算法,所以在之前的教程中教大家使用Aurora在Word中插入伪代码,具体可以看使用Aurora在Word中插入算法伪代码教程!!!亲测有效!!!写论文必备https://blog.csdn.net/jucksu/article/details/116307244效果如图所示(附图是本科毕设当中的K-Means聚类算法伪代码),不算很差但不是很美观,包括一些下标,公式,语法,编辑器反应慢,编程体验差,相关参考资料少等方面的缺陷。研究生以来,接触了Latex,学习了overleaf,所以现在教大家使

随机推荐