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

目的:假设你有一组颜色了,怎么模拟查看它们在单细胞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.factor
  noiseX = dot_dist*rnorm(n=dot.per.cluster)/scale.factor
  noiseY = 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: 自定义颜色,随机打乱后。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为鸿蒙HarmonyOS应用开发者高级认证视频及题库答案

华为鸿蒙开发者高级认证的学习资料 1、课程内容涵盖HarmonyOS系统介绍、DevEco Studio工具使用、UI设计与开发、Ability设计与开发、分布式特性、原子化服务卡片以及应用发布等。每个实验都与课程相匹配&#xff0c;帮助加深理解并掌握技能 2、学习视频资料 华为HarmonyOS开发…

全能大模型GPT-4o体验和接入教程

GPT-4o体验和接入教程 前言一、原生API二、Python LangchainSpring AI总结 前言 Open AI发布了产品GPT-4o&#xff0c;o表示"omni"&#xff0c;全能的意思。 GPT-4o可以实时对音频、视觉和文本进行推理&#xff0c;响应时间平均为 320 毫秒&#xff0c;和人类之间对…

动态规划 —— 斐波那契数列模型-解码方法

1. 解码方法 题目链接&#xff1a; 91. 解码方法 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/decode-ways/description/ 2. 题目解析 1. 对字母A - Z进行编码1-26 2. 11106可以解码为1-1-10-6或者11-10-6, 但是11-1-06不能解码 3. 0n不能解码 4. …

微知-Lecroy力科的PCIe协议分析仪型号命名规则(PCIe代,金手指lanes数量)

文章目录 要点主要型号命名规则各代主要产品图片Summit M616 协议分析仪/训练器Summit T516 分析仪Summit T416 分析仪Summit T3-16分析仪Summit T28 分析仪 综述 要点 LeCroy(力科)成立于1964年&#xff0c;是一家专业生产示波器厂家。在美国纽约。一直把重点放在研制改善生产…

【Linux】线程池详解及其基本架构与单例模式实现

目录 1.关于线程池的基本理论 1.1.线程池是什么&#xff1f; 1.2.线程池的应用场景&#xff1a; 2.线程池的基本架构 2.1.线程容器 2.2.任务队列 2.3.线程函数&#xff08;HandlerTask&#xff09; 2.4.线程唤醒机制 3.添加单例模式 3.1.单例模式是什么&…

【Canvas与图标】六色彩虹圆角六边形图标

【成图】 120*120的png图标 以下是各种大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>六色彩虹圆角六边形…

总裁主题CeoMax-Pro主题7.6开心版

激活方式&#xff1a; 1.授权接口源码ceotheme-auth-api.zip搭建一个站点&#xff0c;绑定www.ceotheme.com域名&#xff0c;并配置任意一个域名的 SSL 证书。 2.在 hosts 中添加&#xff1a;127.0.0.1 www.ceotheme.com 3.上传class-wp-http.php到wp-includes目录&#xff…

Java案例——屏蔽信息

首先这次的案例需要用到substring方法&#xff0c;先了解一下&#xff1a; 首先我们来加密一下电话号码&#xff1b; package String; public class Demo_06 {public static void main(String[] args) {// 定义一个电话号码字符串String phoneNumber"13111112598"…

亚信安全DeepSecurity中标知名寿险机构云主机安全项目

近日&#xff0c;亚信安全DeepSecurity成功中标国内知名寿险机构的云主机安全项目。亚信安全凭借在云主机安全防护领域的突出技术优势&#xff0c;结合安全运营的能力&#xff0c;以“实战化”为指导&#xff0c;为用户提供无惧威胁攻击、无忧安全运营的一站式云安全体系&#…

unity中GameObject介绍

在 Unity 中&#xff0c;Cube和Sphere等基本几何体是 Unity 引擎的内置预制体&#xff08;Prefabs&#xff09;&#xff0c;它们属于 Unity 中的GameObject 系统&#xff0c;可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击&#xff0c;然后在弹出的菜单中选择 3D Obje…

模型训练识别手写数字(二)

模型训练识别手写数字&#xff08;一&#xff09;使用手写数字图像进行模型测试 一、生成手写数字图像 1. 导入所需库 import cv2 import numpy as np import oscv2用于计算机视觉操作。 numpy用于处理数组和图像数据。 os用于文件和目录操作。 2. 初始化画布 canvas np.z…

多线程——线程的状态

线程状态的意义 ‌线程状态的意义在于描述线程在执行过程中的不同阶段和条件&#xff0c;帮助开发者更好地管理和调度线程资源。 线程的多种状态 线程的状态是一个枚举类型&#xff08;Thread.State&#xff09;&#xff0c;可以通过线程名.getState&#xff08;&#xff09…

(二十一)、Docker 部署 Minikube 使用可视化管理工具 Kuboard

文章目录 1、介绍docker 运行 minikube 集群节点&#xff08;kube-apiserver &#xff09;无法被直接访问的问题Kuboard 需要访问到 k8s 集群的kube-apiserver 2、安装 Kuboard2.1、k8s 集群节点可以被外部直接访问的情况2.1.1、下载镜像2.1.2、运行 deployment.yml2.1.3、访问…

滑动窗口子串

文章目录 滑动窗口一、无重复字符的最长子串二、找到字符串中所有字母异位词 子串三、和为 K 的子数组四、滑动窗口最大值五、最小覆盖子串 滑动窗口 一、无重复字符的最长子串 题目链接 &#xff08;方法一&#xff1a;暴力枚举&#xff09; &#xff08;方法二&#xff…

机器学习—Logistic回归算法

目录 一、基本概念二、决策边界三、损失函数四、交叉熵&#xff08;CrossEntropy&#xff09;损失函数1、二分类问题的交叉熵损失函数2、多分类问题的交叉熵损失函数3、交叉熵损失函数的特点4、交叉熵损失函数的应用 五、模型参数求解六、Logistic函数的应用及优缺点1、应用场景…

【开源免费】基于SpringBoot+Vue.JS在线文档管理系统(JAVA毕业设计)

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用

一、前言 学习Qwen2-VL &#xff0c;为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野&#xff0c;更让我们站在科技发展的潮头&#xff0c;紧跟时代的步伐。 Qwen2-VL 具有卓越的图…

C++——string的模拟实现(上)

目录 引言 成员变量 1.基本框架 成员函数 1.构造函数和析构函数 2.拷贝构造函数 3.容量操作函数 3.1 有效长度和容量大小 3.2 容量操作 3.3 访问操作 (1)operator[]函数 (2)iterator迭代器 3.4 修改操作 (1)push_back()和append() (2)operator函数 引言 在 C—…

直播系统源码技术搭建部署流程及配置步骤

系统环境要求 PHP版本&#xff1a;5.6、7.3 Mysql版本&#xff1a;5.6&#xff0c;5.7需要关闭严格模式 Nginx&#xff1a;任何版本 Redis&#xff1a;需要给所有PHP版本安装Redis扩展&#xff0c;不需要设置Redis密码 最好使用面板安装&#xff1a;宝塔面板 - 简单好用的…

深度学习中的迁移学习:优化训练流程与提高模型性能的策略,预训练模型、微调 (Fine-tuning)、特征提取

1024程序员节 | 征文 深度学习中的迁移学习&#xff1a;优化训练流程与提高模型性能的策略 目录 &#x1f3d7;️ 预训练模型&#xff1a;减少训练时间并提高准确性&#x1f504; 微调 (Fine-tuning)&#xff1a;适应新任务的有效方法&#x1f9e9; 特征提取&#xff1a;快速…