当前位置: 首页 > news >正文

单细胞配色效果模拟器 | 简陋版(已有颜色数组)

目的:假设你有一组颜色了,怎么模拟查看它们在单细胞DimPlot中的美学效果呢?要足够快,还要尽可能有模拟效果。

1. 尝试1: 随机矩阵,真的UMAP降维后绘图(失败)

造一个随机矩阵,使用Seurat包使用的 uwot::umap 降维后,可视化。
效果:差的一塌糊涂!慢且效果差。

# 1. 创建随机数据矩阵
set.seed(123)
n_cells <- 2000
data_matrix <- matrix(rnorm(n_cells * 10), nrow = n_cells, ncol = 10)
dim(data_matrix)# 2. umap
# input row as cells, 
# return: keep row number, but only 2 columns as UMAP1-2
umap_result <- uwot::umap(data_matrix[,1:2])
dim(umap_result)# 3. draw
#
color_scheme <- c("Group A" = "blue", "Group B" = "red")umap_df <- data.frame(UMAP1 = umap_result[, 1], UMAP2 = umap_result[, 2])
umap_df$group <- sample(c("Group A", "Group B"), n_cells, replace = TRUE)
library(ggplot2)
umap_plot <- ggplot(umap_df, aes(x = UMAP1, y = UMAP2, color = group)) +geom_point(size = 3) +scale_color_manual(values = color_scheme) +ggtitle("UMAP of Random Data with Color Testing") +theme_minimal()
umap_plot

在这里插入图片描述
这个效果不可预测耗时,且不能稳定cluster颜色。

2. try2: 单位圆平分后随机点法

基于简单数学原理,才能更快。
进一步地,把这个数据输入做umap后,再绘图也行,但是太耗时,且效果也一般。

#' 一套颜色在单细胞点图的模拟效果
#' 
#' version:0.2
#'
#' @param colors2 颜色向量
#' @param pt.size  点的大小
#' @param dot.per.cluster 每个类产生颜色数量
#' @param cluster_number 主类大小,不设置,则表示和颜色总数一致
#' @param radius 主图半径,默认即可
#' @param zoom.factor 针对主图放大倍数
#' @param scale.factor 随机点沿着核心点间距的缩放倍数
#' @param shuffle 是否对颜色随机打乱,默认不随机
#'
#' @return 无返回值,就一个绘图效果
#' @export
#'
#' @examples
show_colorset=function(colors2,pt.size=1,dot.per.cluster=100,cluster_number=0,radius=10,zoom.factor=2, #绘制核心点时,整体放大倍数,方便个后续随机点留下空间scale.factor=6,shuffle=F,main=""){message(length(colors2))if(cluster_number<=0){cluster_number = length(colors2)}if(shuffle){colors2=sample(colors2)}#1.确定几个核心点arr_x= radius * cos(2*pi / cluster_number* (1:cluster_number))arr_y= radius * sin(2*pi / cluster_number* (1:cluster_number))#2.计算两点的距离dot_dist = sqrt( (arr_x[1]-arr_x[2])**2 +  (arr_y[1]-arr_y[2])**2); dot_dist#3.噪音点,随机分布在核心点周围,距离大概是:核心点距离/scale.factornoiseX = dot_dist*rnorm(n=dot.per.cluster)/scale.factornoiseY = dot_dist*rnorm(n=dot.per.cluster)/scale.factor#3. 绘制空坐标轴main=ifelse(main=="", "Color test", main)plot(arr_x*zoom.factor, arr_y*zoom.factor, col="white", xlab="UMAP_1", ylab="UMAP_2", main=main, mgp=c(2,1,0))#4. 绘制噪音点for(i in 1:cluster_number){points(arr_x[i] + sample(noiseX), arr_y[i]+sample(noiseY), col=colors2[i], pch=19, cex=pt.size)}
}

使用效果:

if(0){show_colorset( DiscretePalette(26, palette='alphabet')[1:10], dot.per.cluster=500, zoom.factor = 1.2, pt.size = 2, main="alphabet")show_colorset( c("red", "orange", "blue", "navy", "cyan", "grey"), dot.per.cluster=2000, zoom.factor = 2)show_colorset( c("red", "orange", "blue", "navy", "cyan", "grey"), dot.per.cluster=2000, zoom.factor = 2, shuffle = T )
}

在这里插入图片描述
Fig:

  • left: Seurat自带的颜色 DiscretePalette(26, palette=‘alphabet’) 前10个
  • mid: 自定义颜色
  • right: 自定义颜色,随机打乱后。

相关文章:

单细胞配色效果模拟器 | 简陋版(已有颜色数组)

目的&#xff1a;假设你有一组颜色了&#xff0c;怎么模拟查看它们在单细胞DimPlot中的美学效果呢&#xff1f;要足够快&#xff0c;还要尽可能有模拟效果。 1. 尝试1: 随机矩阵&#xff0c;真的UMAP降维后绘图&#xff08;失败&#xff09; 造一个随机矩阵&#xff0c;使用S…...

面向对象编程中类与类之间的关系(一)

目录 1.引言 2."有一个"关系 3."是一个"关系(继承) 4.“有一个”与“是一个”的区别 5.not-a关系 6.层次结构 7.多重继承 8.混入类 1.引言 作为程序员&#xff0c;必然会遇到这样的情况&#xff1a;不同的类具有共同的特征&#xff0c;至少看起来彼…...

streamlit 实现 flink SQL运行界面

实现效果 streamlit flink-playground.py 文件如下&#xff1a; import streamlit as st import io import contextlib import sys import os import uuid import subprocess from jinja2 import Templatest.set_page_config(layout"wide")# 设置页面标题 st.title…...

鲸鱼优化算法(Whale Optimization Algorithm, WOA)原理与MATLAB例程

鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是一种基于鲸鱼捕食行为的智能优化算法。它模拟了座头鲸在狩猎时的“气泡网”捕食策略。 文章目录 1.适应度函数2. 更新公式2.1 突袭行为2.2 螺旋更新3.线性递减参数4. 边界处理 MATLAB 实现示例代码说明…...

MFC七段码显示实例

在MFC中添加iSenvenSegmentAnalogX控件&#xff0c;添加编辑框和按钮实现在编辑框中输入数字点击按钮后数字用七段码显示 1、在对话框中点击右键如下图添加控件和变量 2、在sevenDlg.h中添加代码 public: void ShowInd(int,double);3、在sevenDlg.cpp中添加代码 void CSe…...

【日常知识点】到底推不推荐用JWT?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 中级 🙉八股文专题:剑指大厂,手撕 J…...

网络编程项目之FTP服务器

项目介绍 模拟FTP核心原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0…...

SpringBoot02:第一个springboot程序

3、第一个springboot程序 3.1、准备工作 我们将学习如何快速的创建一个Spring Boot应用&#xff0c;并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解&#xff0c;并体验其结构简单、开发快速的特性。 我的环境准备&#xff1a; java version "…...

快速入门HTML

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 第一个html文件 标签 h1~h6 p >段落标签 br > 换行标签 img >图片标签 a >超链接标签 表格标签 表单标签 表单控件 form表单 ⽆语义标签:div&span 综…...

RabbitMQ是一个开源的消息代理和队列服务器

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;协议实现&#xff0c;同时也支持其他消息协议如STOMP、MQTT等。作为一个可靠的消息传递服务&#xff0c;RabbitMQ在分…...

经典算法思想--并查集

前言 &#xff08;最近在学习Java&#xff0c;所有函数都是用Java语言来书写的&#xff09;前言部分是一些前提储备知识 在并查集&#xff08;Union-Find&#xff09;数据结构中&#xff0c;rank&#xff08;中文称为“秩”&#xff09;是用来表示树的高度或深度的一种辅助信息…...

挑战Java面试题复习第2天,百折不挠

挑战第 2 天 ArrayList和linkedList的区别HashMap和HashTable的区别Collection 与 Collections 的区别Java的四种引用泛型常用特点 ArrayList和linkedList的区别 底层数据结构&#xff1a; ArrayList&#xff1a;基于动态数组实现&#xff0c;支持快速随机访问。LinkedList&a…...

【vue之道】

vue之道 1. 一生二&#xff0c;二生万物思想2. 变化之律3. 变化之实在哪&#xff1f;4.而后学于形乃已&#xff01;4.1 展示之形变4.2 动之气谓之指令4.3 血之养分的载体&#xff0c;于vue之绑定载具4.4 vue之道&#xff08;万法规一篇&#xff09; 1. 一生二&#xff0c;二生万…...

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现&#xff08;一&#xff09;EMD-CSDN博客 EMD、EEM…...

Linux:指令再认识

文章目录 前言一、知识点1. Linux下一切皆文件&#xff0c;也就是说显示器也是一种文件2. 指令是什么&#xff1f;3. ll 与 ls -l4. 日志5. 管道6. 时间戳 二、基本指令1. man指令2. cp指令3. mv指令4. 查看文件1&#xff09;cat/tac指令——看小文件2&#xff09;more/less指令…...

PHP如何抛出和接收错误

在PHP中&#xff0c;抛出和接收错误通常涉及异常处理机制&#xff0c;以及错误和异常的处理函数。以下是如何在PHP中抛出和接收错误的详细指南&#xff1a; 抛出错误&#xff08;异常&#xff09; 在PHP中&#xff0c;你可以使用throw关键字来抛出一个异常。这通常在你检测到…...

计算机网络:网络层 —— IPv4 地址的应用规划

文章目录 IPv4地址的应用规划定长的子网掩码变长的子网掩码 IPv4地址的应用规划 IPv4地址的应用规划是指将给定的 IPv4地址块 (或分类网络)划分成若干个更小的地址块(或子网)&#xff0c;并将这些地址块(或子网)分配给互联网中的不同网络&#xff0c;进而可以给各网络中的主机…...

Mongodb命令大全

Mongodb命令大全 一、数据库相关命令二、集合相关命令三、文档(数据)相关命令1、_id 字段说明2、查询2.1、 查询操作符2.2、内嵌文档查询2.3、数组文档查询2.4、去重查询2.5、查询排序 sort2.6、分页查询2.7、指定列投影查询返回2.8、查询统计个数 count 3、聚合查询3.1、查询用…...

宇视设备视频平台EasyCVR视频融合平台果园/鱼塘/养殖场/菜园有电没网视频监控方案

在那些有电无网的偏远地区&#xff0c;如果园、鱼塘、养殖场或菜园&#xff0c;视频监控的实现面临着独特的挑战。宇视设备视频平台EasyCVR提供了一种创新的解决方案&#xff0c;通过结合太阳能供电和4G摄像头技术&#xff0c;有效地解决了这些场景下的监控需求。 在有电没网的…...

面试题:ABCD四个线程,A线程最后执行

我觉得是一个很高频的面试题&#xff0c;ABCD四个线程&#xff0c;A线程要等到BCD线程执行完再执行&#xff0c;怎么做 因为我刚复习完AQS&#xff0c;所以立马想到了CountDownLatch&#xff0c;但是看面试官反应他最想听到的应该是join方法&#xff0c;所以面试后就总结了几种…...

OCS2与Pinocchio联调避坑指南:如何让机械臂MPC求解速度提升3倍?

OCS2与Pinocchio联调避坑指南&#xff1a;如何让机械臂MPC求解速度提升3倍&#xff1f; 在工业机械臂控制领域&#xff0c;实时模型预测控制&#xff08;MPC&#xff09;的求解效率直接决定了系统的响应速度与稳定性。OCS2作为ETH Zurich开发的高性能MPC求解器&#xff0c;结合…...

汇川程序框架实战:从轴控到整机集成的自动化开发指南

1. 汇川程序框架入门&#xff1a;为什么选择模块化开发&#xff1f; 第一次接触汇川PLC时&#xff0c;我和很多新手一样被各种功能块绕得头晕。直到在汽车零部件产线项目上踩了三天坑才发现&#xff1a;模块化编程才是工业自动化的救命稻草。想象一下乐高积木——轴控、气缸、T…...

探索kedro:数据科学项目的高效管理框架

探索kedro&#xff1a;数据科学项目的高效管理框架 【免费下载链接】kedro Kedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, ma…...

爱毕业aibye发布六大权威平台排名,智能改写与高效写作功能一键完成,科研必备的AI工具

工具名称 核心功能 特色优势 Aibiye 论文生成降AI率 全学科覆盖、仿写优化、自动图表生成 Aicheck AI检测文献综述辅助 精准查新、3分钟高效成文 GPT学术版 润色/翻译/代码解释 多模型协同、PDF深度解析 摆平论文 大纲生成降重改写 三步出稿、本硕博通用 QuillB…...

AI绘画效率翻倍:WuliArt Qwen-Image Turbo极速生成实战测评

AI绘画效率翻倍&#xff1a;WuliArt Qwen-Image Turbo极速生成实战测评 1. 极速AI绘画新体验 作为一名长期使用各类AI绘画工具的技术爱好者&#xff0c;我一直在寻找一个能在个人电脑上流畅运行的高效文生图解决方案。直到最近体验了WuliArt Qwen-Image Turbo&#xff0c;这款…...

高效视频素材全流程管理工具:Cobalt 开源解决方案详解

高效视频素材全流程管理工具&#xff1a;Cobalt 开源解决方案详解 【免费下载链接】cobalt save what you love 项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt Cobalt 是一款专为内容创作者设计的高效视频素材管理工具&#xff0c;支持从 30 主流平台下载视…...

基于Python的线上学习资源智能推荐系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的线上学习资源智能推荐系统&#xff0c;以实现个性化学习资源的精准推送。具体而言&#xff0c;研究目的可概括为以下几个方面&am…...

SQLAdvisor终极调优指南:如何根据业务特点优化工具参数

SQLAdvisor终极调优指南&#xff1a;如何根据业务特点优化工具参数 【免费下载链接】SQLAdvisor 输入SQL&#xff0c;输出索引优化建议 项目地址: https://gitcode.com/gh_mirrors/sq/SQLAdvisor SQLAdvisor是由美团点评公司技术工程部DBA团队开发的一款强大的SQL索引优…...

AI率太高被退稿?这5款工具帮你稳过查重+降AI双关!

&#x1f525; 2026实测推荐&#xff1a;5款真正管用的工具1️⃣ 毕业之家 AI&#xff08;毕业季救星&#xff09;AI率效果&#xff1a;<8%亮点&#xff1a;专为国内高校定制&#xff0c;自动适配学校格式要求&#xff0c;连页眉页脚都不用手调价格&#xff1a;本科套餐199元…...

如何用智能工具提升暗黑破坏神3战斗效率:D3KeyHelper全功能指南

如何用智能工具提升暗黑破坏神3战斗效率&#xff1a;D3KeyHelper全功能指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 暗黑破坏神3的战斗节奏快…...