Py学习  »  chatgpt

关于用ChatGPT写代码这件事

3D科研绘图 • 6 天前 • 48 次点击  

2024年9月  杭州

新项目启动已经过去了一周,我总算是重新找回了写插件的感觉。暂时还达不到分享试用的程度,就随便跟大家聊点什么吧。

首先要说的是,为什么这个项目叫做MolScaffold”

其实在最初编写Mol3DStruct的时候,我就在考虑插件名称的问题。想来想去都觉得不合适,最后还是借用的2018年在3dsMax中写的分子插件的名称。

从2018到2024,这七年间我用过多款专业的分子可视化软件,包括Diamond、PyMol和Chimera等。对于分子结构的可视化也算是颇有心得。直到我接触到Blender软件之后,逐渐摸索出一套基于点线骨架+几何节点的可视化方法。

所以在开始这个2.0项目的时候,我毫不犹豫地选择了MolScaffold这个名字。

第二个想说的是如何写代码的问题。

我不是计算机专业,本科的时候只修过一门C语言的课。记得那会儿还是我人生中第一次接触电脑,只得了个B+的成绩。


真正编一点程序是在我研究生毕业前后那几年,主要用的是Fortran和Matlab。基本上属于自娱自乐,和专业人士比起来相差甚远。再之后,就是自学了一点Python基础,包括这个项目主要用到的Blender Python在内。

去年年底到今年上半年,我遇到代码上的问题基本都求助于Google。国外有专业的Blender Python相关论坛,大概能帮我解决70~80%的问题。剩下的靠自己摸索。拼拼凑凑,总算是把Mol3DStruct给整了出来。不少人说很好用,但和我预想的还是有些差距。如果打分的话,我给自己打65分。

其实,写插件这事儿,代码的问题还是其次。首先要考虑的是底层架构和用户体验,也就是说,我还得兼任产品经理的角色。

虽然Blender的几何节点很好用,但对于分子可视化这个庞大复杂的系统,节点数量是惊人的,节点网络是复杂的。我可不指望用户能搞明白其中的原理,于是我就想办法让节点看上去更加简洁有条理。

本来我是想用节点组的方式,但折腾了大半个月都没有用代码实现。最后,退而求其次,弄了下面这么个玩意儿。看上去是简洁了一些,但不多。


好在这次我尝试用ChatGPT辅助,这是我要说的第三个问题。

由于有了项目1.0的经验,在插件架构上我的思路很清晰,先生成分子骨架,然后筛选结构,选择可视化模式(包括结构和材质类型),最后一键渲染。遇到代码上的问题时,我就打开ChatGPT,比如当我问道:

如何用rdkit读取SMILES文本?

ChatGPT给我的回答是:

# 导入 RDKit 模块from rdkit import Chem
# 示例 SMILES 字符串smiles = 'CCO' # 乙醇的 SMILES 表示
# 使用 RDKit 从 SMILES 读取分子mol = Chem.MolFromSmiles(smiles)
# 打印分子对象print(mol)
# 如果需要查看分子的 SMILES 表示,可以使用 MolToSmiles 函数print(Chem.MolToSmiles(mol))

虽然这些代码在rdkit的API Reference中也能找到,但直接用ChatGPT可以节省大量的搜索时间。

于是,我花了半天时间,用ChatGPT搞定了之前一直困扰我的自定义几何节点组的问题。在MolScaffold中,你看到的节点基本是下面这样,简直不要太清爽!之后我会把一些必要的参数设置做成端口显示,方便用户调节。

最后,跟大家汇报下项目进展:

本次开发我是在Blender 4.2.1 LTS版本中进行的,应该会向上兼容至4.0版本。插件位置还是在View_3D窗口的右侧边栏。

这次除了分子文件外,我还考虑了分子名称、SMILES、结构式图片智能识别等多种读取方式。此外,还可以从PubChem和RCSB PDB数据库直接通过编号导入分子。

例如,Aspirin在PubChem网站的CID编号是2244。只需要在输入栏输入“2244”,然后点击“创建骨架”按钮,就可以导入Aspirin分子的点线骨架啦。

当然,你要是能写出Aspirin分子的SMILES符号,也可以直接创建。

今天就先跟大家聊到这里吧,我得继续工作去了。


SPHERE往期中稿封面:

1. 祝贺思斐迩作品又㕛叒叕登Nature子刊封面!

2. 14天后,思斐迩再中Nature子刊封面!
3. Nature子刊,封面三连~~~
4. 2023年第四幅Nature子刊封面,Sphere的高中稿率秘诀是什么?
5. Cell新子刊Patterns封面,初稿即终稿
6. 祝贺杭州SPHERE中稿Nature正刊封面!
7. 祝贺SPHERE设计作品荣登Science子刊封面!
8. 再中Nature子刊封面!期刊封面设计,认准SPHERE~
9. 祝贺!SPHERE设计作品第五次登上Nature Catalysis封面!
10. 中稿!2024年的第一期Nature子刊封面
11. SPHERE设计作品,再登Nature子刊封面!

科 研 绘 图 业 务 咨 询

客服(17857127498,微信同号)
添加好友时请注明“科研绘图”
Email:customer-service@visphere.cn

以 图 像 诠 释 思 想 · 用 技 术 创 作 艺 术

思 斐 迩(Sphere Stuido),让 科 学 更 多 彩

p. s. 我们的新书《3D科研绘图》已经正式上线,可在当当网或京东网购买。

【京东新书热卖榜月榜第3名】计算机与互联网/软件工程及软件方法学

当当购买链接:

http://product.dangdang.com/29610422.html

京东购买链接:

https://item.jd.com/14092196.html

本书案例文件下载地址:

链接:https://pan.baidu.com/s/1I2jDwDWxebRICusYzxuogQ?pwd=9787

提取码:9787


思飞尔(Sphere)——沟通科学与艺术的桥梁。

杭州思斐迩科技有限公司长期专注于科学可视化领域,专业提供科研图像设计和科研动画制作等服务。公司拥有一支专业的硕博团队,涵盖生物、化学、材料、美术设计等,具有深厚的科学和艺术底蕴。自2016年以来已为全球数百家高校和科研机构提供设计服务,包括中科院、MIT、Stanford、ETH Zurich、EPFL、清华、北大、Cornell等,蜚声海内外。公司秉持以图像诠释思想,用技术创作艺术的宗旨,作品被Science、Nature、Cell、JACS、Angew等期刊选用,并受邀为其制作动画。为了更好地服务科研工作者,公司还长期开设科研绘图培训课。更有国内最大的科研作图教学公众号“3D科研绘图”和答疑社群,为大家提供详细的教程和答疑咨询。曾为浙江大学、复旦大学、武汉大学、同济大学、上海科技大学、中科院大连化物所等单位提供专业作图讲座和培训,线上线下总受众数超十万人。

▼期刊封面及动画价格参考下方图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/174454
 
48 次点击