2025.02.26【图片复现L1】|基于Cursor复现生信分析图片工作流程

引言

在论文发表、项目申报等场景中,生信人员经常需要生成各种可视化图表来辅助分析和展示研究结果。而想要发好文章,我们通常会参考别人发表的高分论文,希望能复现其中的图片效果。社群里也经常有小伙伴在问这个图怎么做,那个图用什么工具画。我之前一直想做一个可以帮科研人员复现图片的功能,也尝试过用AI模型搭工作流,制作在线工具,但是绘制出来的图片总是离想要的图片相去甚远。

那么,如何利用AI模型来高效、准确地复现生信分析中所需的各类图片呢?

为了帮助生信人员解决这一问题,我将前期探索的工作逻辑梳理成一个框架。按照这个框架操作,可以基于AI模型实现图片复现。接下来我会为大家详细讲解框架中的各个环节。

请添加图片描述

结果展示

为了清晰明确地展示逻辑框架,案例中我选择复现比较简单的相关性图,这样可以简化调试的步骤,让读者更容易理解,咱们先看结果。

准备复现的图片:
请添加图片描述
使用复现框架后,AI生成的结果图片:

请添加图片描述

尽管复现的是一张热图,但仍然有些细节没有处理到。两个图片进行比较可以看到,图例,行列的显示与目标图片基本一致,默认的行列聚类线条是没有的,AI脚本绘制的图片完全还原了title,不是人工补充;从样式看,AI模型的多配色在微调后与原图基本一致,中间对角线也还原了灰色方块(self-correlation)。复现图片使用的数据是让AI模型阅读理解图文后自行生成的,聚类方法也经过了调试。默认皮尔逊相关系数的范围应该是-1到1之间,这需要调整,对AI进行纠正。总体看来,使用这个框架复现出来的图片样式与原图相似度是很高的。

AI复现生信分析图片流程

1. 准备工作

在开始AI复现分析图片前,首先要做的,就是阅读参考文献,获取绘制图片的信息。前期的文献阅读往往是生信小白比较难理解的。但是现在有了AI模型,我们可以将参考文献上传给模型,帮我们快速整理,提取我们想要的信息(AI模型在整理,理解文本方面错误率是比较低的)。包括且不局限于以下几个方面:

目标图片(必选):准备复现的是哪个图片,这个图是否有专有词。韦恩图(Venn),火山图(Volcano),聚类热图(Heatmap)。优先下载附件里的高清原图,实在不行再进行截图。注意,高分文章经常一个figure中出现多图(a,b,c,d …),一定不能全部截图,要单张截取。

图注(必选):只靠有AI模型对多模态的支持是不够的,不同的模型,图片的识别能力也不一样。通过使用图注,对图片进行详细描述。可以让模型更好地理解图片。
数据来源及格式(必选):确定图片使用什么数据绘制的,格式是什么。

测试/绘制数据:既然是复现,那么自己肯定有要绘制的数据,如果参考文献里面的数据已上传,可以下载下来和自己的数据进行比较,看格式是否一致,并且使用文献的数据进行测试,可以更好的还原绘制脚本里的参数。

绘图工具/包/库:这个不是必选,因为参考文献里面不一定会写,但是如果文献提到了,或者
AI识别图片后给出了确切的工具/三方库,那么这个图片样式的准确性可以大大提升。

分组信息:有些图例需要显示分组,有分组信息可以补充到图例中。

工具使用文档:对一些特别的分析,工具自带绘图命令的,这种用R或者python脚本都很难真正复现出来。我们需要了解这个图是否是用某个工具的特定命令或者可视化生成的,别忙活了半天,才发现对方是用了PPT或者Adobe illustaror画的,这目前还不在AI模型的能力范围内。

2. 输入

完成准备工作后,就可以开始进行AI复现的具体操作了。这部分操作我将在Cursor中进行演示。作为高度植入AI模型的代码编辑器,cursor强大的功能实在是给生信科研人员的工作效率提升了好几个档次,本人也已是深度用户。不熟悉Cursor的小伙伴可以看我另一篇文章2024.11.27【流程搭建L2】3句话搭建工业级生信流程(以RNA-seq为例),这篇文章介绍了如何安装,使用Cursor搭建流程。

对于当前演示的图片,我目前免费版使用的模型就可以满足复现要求,如果图片较为复杂,使用最新、更优秀的模型或许可以事半功倍。当然,用户需要花费20$/月的订阅软件。

2.1 打开Cursor

首先我们打开Cursor,并在左上角选择项目文件夹,配置好相关的开发路径,确定好文件夹,后面生成的代码和图片基本都在这个文件夹中,方便管理。
请添加图片描述
在导入数据之前,我在社群随便找了一个群友求助的文献,用来作为示例

文献名称:Divergence time and environmental similarity predict the strength of morphological convergence in stick and leaf insects
模型名称:claude-3.5-sonnet

2.2 导入数据

上传的文档有截图的目标图片,还有文献的补充附件,并将准备的信息整理好,给出下列提示词:

请根据我提供的上传的图片、文档及文字内容理解我想复现绘制的图片样式:
目标图片:Figure S13 D
图片类型: correlation plot 
图片描述:Figure S13: Results of the principal component analysis of 17 quantitative environmental variables. A: Proportion of total variance explained by each principal component. B: Position of each individual taxon along the first two principal components. C: Loading plot for the first principal components and the quantitative dataset features. D: correlation plot between the principal components and all the dataset features.

理解图片的绘制过程,对图片进行简单描述

注意,我们此时不着急马上让模型给出代码,因为你不确定他对图片理解了多少,理解越准确,代码绘制的图片还原度越高。所以要让他先说出他对图片的理解,我们进行纠正。

模型回复如下:

我来帮您分析这张相关性热图的特点:
图片特征:
这是一个5×5的相关性热图(correlation plot)
使用了从深蓝(负相关)到白色(无相关)到红色(正相关)的渐变色系
对角线上是灰色方块(self-correlation)
没有显示具体的数值
没有进行聚类(clustering)
图形简洁,边框清晰
数据特征:
展示了5个变量之间的相关性:palm、grass、branch、hang、litter
相关系数的范围大约在-0.3到0.3之间
使用了对称矩阵的形式展示

此时模型对图片的理解还是有些偏差的,比如渐变色系理解较为简单,相关系数应该是0到0.3,并没有负值。如果还没有生成脚本,此时可以对模型的理解进行纠正。我这里因为前面做了其他图片的测试,有一个cor.R脚本,因此模型就在这个脚本基础上进行修改调整。

在我要求生成一个测试数据后,模型第一次绘制出来的图像如下:
请添加图片描述
发现没有,尽管模型之前理解到对角线的方块颜色是灰色,由于没有弄清楚数值为何是正数,进而改变相关性系数的计算方法,导致对角线按皮尔逊相关系数来计算仍然为1,在双色渐变的样式下,就显示为红色了。

3. 样式调整

知道模型对哪里理解有误,就需要纠正有问题的理解。我们需要在提示词中告诉他:

Q:
a. 请调整颜色样式与目标图片一致;
b. 思考目标图片的相关性系数为什么是0到0.4,是否相关性系数的计算方法不一样

这里我偷了一个懒,将两个需求放在一起让模型解决。相应的,模型也对两个答案打了折扣:

A:
主要修改:
颜色方案改为深蓝(#000066)-白色-深红(#CC0000),更接近目标图片
使用乘积聚合方法计算重叠度,而不是Pearson相关系数
对角线设置为NA并显示为灰色
更新了标题以包含"Aggregation = product"
调整了测试数据的值范围在0-0.4之间
这个修改后的版本应该能更好地复现目标图片的效果。重叠度的计算使用了简单的乘积聚合方法,这解释了为什么值的范围在0-0.4之间,而不是传统相关系数的-1到1之间

这次解决了系数的计算问题(也不一定是解决,可能是用错误的方法得到了想要的样式),但配色仍然需要再优化

请添加图片描述
继续问模型

Q:目标图片用的不是从深蓝(负相关)到白色(无相关)到红色(正相关)的渐变色系,中间有其他蓝色和红色,请仔细鉴别并对样式进行调整
A:您说得对,我仔细观察了目标图片的颜色渐变。图片使用了从深蓝到浅蓝,再到粉红色和红色的渐变,而不是简单的深蓝-白-红渐变。让我修改颜色方案

这次模型理解到了,让我们看看生成后的代码。

4. 生成代码

有了明确的绘图需求后,就可以开始编写生成代码了。这个过程包括以下步骤:

# 加载必要的包
library(ggplot2)
library(reshape2)
library(pheatmap)

# 读取数据
data <- read.csv("test_data.csv", header=TRUE, row.names=1)

# 计算相关性矩阵 - 使用自定义函数计算重叠度
overlap_matrix <- matrix(0, ncol=ncol(data), nrow=ncol(data))
colnames(overlap_matrix) <- colnames(data)
rownames(overlap_matrix) <- colnames(data)

# 计算重叠度(使用乘积聚合)
for(i in 1:ncol(data)) {
    for(j in 1:ncol(data)) {
        if(i == j) {
            overlap_matrix[i,j] <- NA  # 对角线设为NA,后面会显示为灰色
        } else {
            # 计算两列的乘积和
            overlap_matrix[i,j] <- sum(data[,i] * data[,j])
        }
    }
}

# 设置颜色
colors <- colorRampPalette(c("#000033", "#0066CC", "#99CCFF", "#FFCCCC", "#FF0000"))(100)

# 绘制相关性热图
pdf("correlation_heatmap.pdf", width=6, height=5)
pheatmap(overlap_matrix,
         color = colors,
         border_color = "black",
         display_numbers = FALSE,
         fontsize = 10,
         cluster_rows = FALSE,
         cluster_cols = FALSE,
         show_rownames = TRUE,
         show_colnames = TRUE,
         main = "Overall overlap\nAggregation = product",
         na_col = "grey80")  # 对角线显示为灰色
dev.off()

# 同时保存PNG版本
png("correlation_heatmap.png", width=1800, height=1500, res=300)
pheatmap(overlap_matrix,
         color = colors,
         border_color = "black",
         display_numbers = FALSE,
         fontsize = 10,
         cluster_rows = FALSE,
         cluster_cols = FALSE,
         show_rownames = TRUE,
         show_colnames = TRUE,
         main = "Overall overlap\nAggregation = product",
         na_col = "grey80")  # 对角线显示为灰色
dev.off() 

4.1 预装第三方库

在执行前,需要看下调用的库之前有没有安装过,如果没有的话可以install.package()进行安装。当然,直接执行脚本后的报错也可以和模型chat,让模型帮忙解决报错问题,他会告诉你报错原因以及解决方案。

4.2 测试和调试代码

编写完生成代码后,需要对其进行充分的测试和调试。比如,上面这段代码并不是第一次生成的,第一次画另一个图的时候没有要求输出格式,因此只生成了pdf,png文件是后面让模型添加的。另外,除了复现图片的样式,计算方法也需要去验证,是否与示例文献一致,或者至少要有生物学意义,如果算法不对,还需要进行调整。

5. 输出

尽管用户希望在完成代码编写和调试后再输出图片。但实际情况是,图片输出的环节是需要不断重复的,毕竟图片对细节的反馈是最直接的,模型对图片的理解只能用文字描述。根据上面的描述,可以看到我们的结果经过下列变化:
请添加图片描述
这就要再推荐一次cursor了,因为代码和图片的生成都可以集成在这个工具里。不需要每次从模型的聊天窗口复制代码到Rstudio,再生成图片。

在这里插入图片描述

通过以上7个步骤,我们就完成了AI模型复现生信分析图片的全流程。


🌟 非常感谢您抽出宝贵的时间阅读我的文章。如果您觉得这篇文章对您有所帮助,或者激发了您对生物信息学的兴趣,我诚挚地邀请您:

👍 点赞这篇文章,让更多人看到我们共同的热爱和追求。

🔔 关注我的账号,不错过每一次知识的分享和探索的旅程。

📢 您的每一个点赞和关注都是对我最大的支持和鼓励,也是推动我继续创作优质内容的动力。

📚 我承诺,将持续为您带来深度与广度兼具的生物信息学内容,让我们一起在知识的海洋中遨游,发现更多未知的奇迹。

💌 如果您有任何问题或想要进一步交流,欢迎在评论区留言,我会尽快回复您。

🌐 点击下方的微信名片,获取本书资料,加入交流群,与志同道合的朋友们一起探讨、学习和成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆易青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值