文章MSM_metagenomics(七):分组马赛克图

欢迎大家关注全网生信学习者系列:

  • WX公zhong号:生信学习者
  • Xiao hong书:生信学习者
  • 知hu:生信学习者
  • CDSN:生信学习者2

介绍

本教程是使用一个Python脚本来绘制马赛克图,用于可视化两个变量的频率分布。

数据

大家通过以下链接下载数据:

  • 百度网盘链接:https://pan.baidu.com/s/1f1SyyvRfpNVO3sLYEblz1A
  • 提取码: 请关注WX公zhong号_生信学习者_后台发送 复现msm 获取提取码

Python packages required

  • Pandas
  • SciPy
  • Matplotlib
  • statsmodels

Drawing a mosaic plot using mosaic_plot.py

使用一个Python脚本mosaic_plot.py,以及一个包含MSMNon-MSM个体相关的物种的表格,这些物种被识别为革兰氏阴性或非革兰氏阴性,在two_variable_mosaic.tsv: ./data/two_variable_mosaic.tsv中。

  • mosaic_plot.py codes
#!/usr/bin/env python"""
NAME: mosaic_plot.py
DESCRIPTION: mosaic_plot.py is a python script for visualizing proportions of data points along two variables.
"""import pandas as pd
from scipy.stats import fisher_exact
import matplotlib.pyplot as plt
from statsmodels.graphics.mosaicplot import mosaic
import matplotlib
import sys
import argparse
import textwrapdef make_mosaic_plot(two_variable_file, facecolor_dict, output_fig, font_style = "sans-serif,Arial"):font_family, font_type = font_style.split(",")matplotlib.rcParams['font.family'] = font_familymatplotlib.rcParams['font.sans-serif'] = font_typetwo_variable_df = pd.read_csv(two_variable_file, sep = "\t", index_col = False)features, variable1, variable2 = two_variable_df.columnscont_df = pd.crosstab(two_variable_df[variable1], two_variable_df[variable2])res = fisher_exact(cont_df, alternative = "two-sided")label_dict = {}for idx in cont_df.index.to_list():for col in cont_df.columns.to_list():label_dict[(idx, col)]  = cont_df.loc[idx, col]labelizer = lambda k:label_dict[k]variable2_0, variable2_1 = sorted(set(two_variable_df[variable2].to_list()))props = {}for variable in facecolor_dict:props[(variable, variable2_0)] = {"facecolor": facecolor_dict[variable], "edgecolor": "white"}props[(variable, variable2_1)] = {"facecolor": facecolor_dict[variable], "edgecolor": "white"}mosaic(two_variable_df, [variable1, variable2], labelizer = labelizer, properties = props, title = " P-value: "+ str(res[1]) + " (Fisher's exact test)")plt.savefig(output_fig)if __name__ == "__main__":def read_args(args):# This function is to parse argumentsparser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,description = textwrap.dedent('''\This program is to draw a mosaic plot.'''),epilog = textwrap.dedent('''\examples: mosaic_plot.py --input input_file.tsv --facecolor_map facecolor_mapfile.tsv --output mosaic_plot.png   '''))parser.add_argument('--input',nargs = '?',help = 'Input a file containing two variable information regarding each individual subject.',type = str,default = None)parser.add_argument('--facecolor_map',nargs = '?',help = 'Specify the the pathway to SCFA metabolisms database. default: /vol/projects/khuang/databases/SCFA/SCFA_pathways.tsv',default = '/vol/projects/khuang/databases/SCFA/SCFA_pathways.tsv')parser.add_argument('--font_style',nargs = '?',help = 'Specify the font style, font family and font type is delimited by a comma. default: [sans-serif,Arial]',default = 'sans-serif,Arial')parser.add_argument('--output',nargs = '?',help = 'Specify the output figure name.',type = str,default = None)return vars(parser.parse_args())pars = read_args(sys.argv)facecolor_dict = {i.rstrip().split("\t")[0]: i.rstrip().split("\t")[1] for i in open(pars['facecolor_map']).readlines()}make_mosaic_plot(pars["input"], facecolor_dict , pars["output"], font_style = pars["font_style"])
  • Usage:
mosaic_plot.py [-h] [--input [INPUT]] [--facecolor_map [FACECOLOR_MAP]] [--font_style [FONT_STYLE]] [--output [OUTPUT]]This program is to draw a mosaic plot.optional arguments:-h, --help            show this help message and exit--input [INPUT]       Input a file containing two variable information regarding each individual subject.--facecolor_map [FACECOLOR_MAP]Specify the the pathway to SCFA metabolisms database. default: /vol/projects/khuang/databases/SCFA/SCFA_pathways.tsv--font_style [FONT_STYLE]Specify the font style, font family and font type is delimited by a comma. default: [sans-serif,Arial]--output [OUTPUT]     Specify the output figure name.examples: python mosaic_plot.py --input input_file.tsv --facecolor_map facecolor_mapfile.tsv --output mosaic_plot.png   

示例命令:

python mosaic_plot.py \--input two_variable_mosaic.tsv \--facecolor_map facecolor_map.tsv \--output mosaic_plot.png

请添加图片描述

Note

马赛克图的面颜色应该按照示例中的映射文件mapping file: ./data/facecolor_map.tsv来指定。

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

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

相关文章

我的Mac疯了!居然可以生成这样的奇葩AI图片!

在当今人工智能领域,midjourney无疑是生成图片的王者,但是苦于付费才能使用,今天我就给大家分享一下midjourney平替stable diffusion,实现本地生成不逊色于midjourney的图片 效果图 先上一个我自己生成的效果(就是在我的Mac上用C…

【anaconda】本地永久设置镜像源

【anaconda】本地永久设置镜像源 可以通过命令行设置全局的 pip 配置: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

python字符串的一些操作实例

已知字符串 a “aAsomr3idd4HGHbigs7Dlsf9YeAF”,要求如下 1. 请将a字符串的大写改为小写,小写改为大写。 2.将a字符串的数字取出,并输出成一个新的字符串。 3.将a字符串中的内容反向输出 4.打印a字符串中所有奇数位上的字符(下标是1&#x…

【已解决】手机进入fastboot无法退出

文章目录 报错及效果图报错代码效果图 解决方案必要的解决方法可能有用的解决方法 报错及效果图 报错代码 手机屏幕显示fastboot,长按电源键无法正常启动 效果图 解决方案 必要的解决方法 1.在电脑上下载并安装adb/fastboot驱动,可以在这里免费下载&…

【机器学习300问】129、RNN如何在情感分析任务中起作用的?

情感分析是自然语言处理(NLP)领域的一个重要分支,它的目标是自动检测和提取出非结构化文本数据中的主观信息(比如:情绪、意见、评价等) 一、情感分析任务案例 分析电商产品评论的情感倾向(三分类…

MySQL之复制(九)

复制 复制管理和维护 确定主备是否一致 在理想情况下,备库和主库的数据应该是完全一样的。但事实上备库可能发生错误并导致数据不一致。即使没有明显的错误,备库同样可能因为MySQL自身的特性导致数据不一致,例如MySQL的Bug、网络中断、服务…

数据资产在供应链管理中担当核心角色:利用数据驱动,显著提升运营效率,有效降低潜在风险,实现决策优化,为企业的可持续发展奠定坚实基础

一、引言 在当今全球化和数字化的时代,供应链管理已成为企业竞争力的关键要素之一。随着信息技术的高速发展,数据资产在供应链管理中扮演着越来越重要的角色。通过有效地利用数据资产,企业能够显著提升运营效率,降低潜在风险&…

opencascade AIS_InteractiveContext源码学习2

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

Hadoop3:MapReduce中Reduce阶段自定义OutputFormat逻辑

一、情景描述 我们知道,在MapTask阶段开始时,需要InputFormat来读取数据 而在ReduceTask阶段结束时,将处理完成的数据,输出到磁盘,此时就要用到OutputFormat 在之前的程序中,我们都没有设置过这部分配置 …

SQLite 3 优化批量数据存储操作---事务transaction机制

0、事务操作 事务的目的是为了保证数据的一致性和完整性。 事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为 ACID: 原子性(Atomicity):确保工作单位内的所有操作都成功完成&…

八、yolov8模型预测和模型导出(目标检测)

模型查看 模型预测 模型导出 模型训练完成后,找到训练文件生成文件夹,里面包含wights、过程图、曲线图。 模型预测 1、在以下文件夹中放入需要预测的图; 2、找到detect文件下的predict.py文件,修改以下内容。 3、右键点击…

【NLP练习】Transformer实战-单词预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 任务:自定义输入一段英文文本进行预测 一、定义模型 from tempfile import TemporaryDirectory from typing import Tuple from torch import nn…

AI时代:硬件狂欢,软件落寞 华为开发者大会2024

内容提要 分析师表示,目前AI行业大多数的支出都流向用于训练大模型的硬件或云基础设备。相较之下,软件应用商们在AI时代显得停滞不前。尽管软件应用商们十分热衷于构建AI工具,然而其收入状况却并不乐观。 文章正文 AI浪潮之下,英…

AIGC时代,重塑人的核心竞争力?

随着人工智能技术的飞速发展,AIGC(人工智能生成内容)的时代已经悄然而至。在这个时代,AI不再仅仅是一个技术概念,而是深入到我们生活的方方面面,从创作到生产,从娱乐到工作,AI都在以…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据,包含文本字符串、JSON等。消息队列中间件(MQ)指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

剑指offer 算法题(搜索二维矩阵)

剑指offer 第二题 去力扣里测试算法 思路一&#xff1a; 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…

Shell脚本:条件语句(if、case)

目录 硬编码 硬编码的缺点 条件判断 $? 命令行语句 判断指定目录是否存在 判断指定文件是否存在 判断指定对象是否存在 表达式形式语句 判断对象是否存在 判断对象是否有权限 与、或、非 运算 与运算 或运算 非运算 比较大小 判断磁盘利用率实验步骤 字符串…

Java基础之练习(2)

需求: 键盘录入一个字符串,使用程序实现在控制台遍历该字符串 package String;import java.util.Scanner;public class StringDemo5 {public static void main(String[] args) {//录入一个字符串Scanner sc new Scanner(System.in);System.out.println("请输入一个字符串…

1. 基础设计流程(以时钟分频器的设计为例)

1. 准备工作 1. 写有vcs编译命令的run_vcs.csh的shell脚本 2. 装有timescale&#xff0c;设计文件以及仿真文件的flish.f&#xff08;filelist文件&#xff0c;用于VCS直接读取&#xff09; vcs -R -full64 -fsdb -f flist.f -l test.log 2. 写代码&#xff08;重点了解代码…

如何将办公文档压缩成rar格式文件?

压缩包格式是我们生活工作中常用到的文件格式&#xff0c;那么如何得到一个rar格式的压缩文件&#xff1f;或者说如何将文件压缩成rar格式而不是zip格式呢&#xff1f;今天我们来了解一下如何压缩为rar格式文件。 首先&#xff0c;下载并安装WinRAR&#xff0c;然后用鼠标选择需…