摘要: 在博客园随笔中插入3D分子模型 前端作为一项重要技术,其本身就旨在给用户更好的展示效果和更好的交互模式,然而很多时候再博客中我们只能够采用一些截图的方法来保存我们的结果,然后再放到博客的内容中。而这样操作会带来很大程度上的失真,尤其是生物化学中常见的分子结构的展示,如果直接截图则无法更加全面的展示其结构内容。而3Dmol这个工具则使能了我们使用js的技术,将一个分子的3D模型集成到我们的博客内容中,从很大程度上优化了展示的效果。 阅读全文
posted @ 2022-11-21 23:31 DECHIN 阅读(186) 评论(5) 推荐(2) 编辑
摘要: MindSpore图学习模块 对于从元素运算到矩阵运算再到张量运算,最后抽象到图运算,这个预算模式的发展历程,在每个阶段都需要有配套的工具来进行支持。比如矩阵时代的numpy,张量时代的mindspore,还有图时代的mindspore-gl。我们未必说哪种运算模式就一定更加先进,但是对于coder来说,“公式即代码”这是一个永恒的话题,而mindspore-gl在这一个工作上确实做的很好。不仅仅是图模式的编程可读性更高,在GPU运算的性能上也有非常大的优化。 阅读全文
posted @ 2022-11-14 11:12 DECHIN 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 解决Ubuntu 20.04下VS code无法使用中文输入法的问题 本文主要解决的是在Ubuntu 20.04下有可能出现的中文输入法无法正常使用的问题,经过检索判断是系统应用商城中下载的VS code版本是不完整版的,因此解决方案就是先删除已安装的VS code,再重新安装完整版的VS code。 阅读全文
posted @ 2022-11-01 10:35 DECHIN 阅读(81) 评论(0) 推荐(0) 编辑
摘要: Ubuntu解决Github无法访问的问题 在国内一些局域网下访问github.com可能会存在一些问题,甚至可能直接就无法访问。但是我们可以通过对指定的域名配置一个ip地址,这样在解析的时候就会自动跳转到我们手动选取的那个可访问的节点上。虽然该方法下还是偶尔有可能出现无法访问的情况,但是总体来说还是很大程度上的改善了github.com的访问体验。 阅读全文
posted @ 2022-10-20 11:44 DECHIN 阅读(88) 评论(0) 推荐(0) 编辑
摘要: RMarkdown进阶操作 本文通过几个实际案例,介绍了RMarkdown在写Latex Beamer演示文档中有可能用到的一些进阶的操作。RMarkdown不仅仅继承了Markdown语言的简洁便利,还允许我们仍然使用Latex中的一些高级操作,甚至我们可以在生成的Beamer演示文档PDF中去展示一些动态的效果图,这是通过PPT等工具去生成PDF所不具备的功能(有可能有,只是我不了解,这里使用Latex Beamer来写演示文档仅仅是个人偏好)。 阅读全文
posted @ 2022-10-17 15:56 DECHIN 阅读(357) 评论(0) 推荐(0) 编辑
摘要: Latex中也能展示动态图? 本文介绍了一个可以在Latex生成的PDF中展示动态图的解决方案,该方案依赖于三个东西:Python+Pillow的环境(或者其他可以将Gif拆分成众多png图片的工具/网站)、Overleaf的账号(或者具备animate的Latex环境)以及Acrobat Reader阅读器(或者其他可以支持pdf中的动态演示功能的阅读器)。虽然一系列的操作下来非常的麻烦,但是最终我们还是可以在Latex生成的PDF中成功的进行了动态展示。 阅读全文
posted @ 2022-09-21 11:13 DECHIN 阅读(410) 评论(0) 推荐(2) 编辑
摘要: 四元数Quaternion的基本运算 本文主要介绍四元数Quaternion的一些基本运算法则。四元数的概念,更像是复数的一个推广,在图形学和工程学中有大量的应用,在蛋白质结构预测软件AlphaFold和MEGA-Protein中都大量的使用了四元数的计算。而大部分的四元数的教材中写的计算法则,经常把各类乘法混在一起使用,阅读起来非常难受,因此只好自己总结一下四元数的相关运算。并且跟我们所熟悉的复数运算有一定的对比,更加容易去理解四元数的概念。 阅读全文
posted @ 2022-09-20 11:17 DECHIN 阅读(770) 评论(1) 推荐(3) 编辑
摘要: Gimbal Lock欧拉角死锁问题 本文通过两个案例——旋转矩阵和分子动力学模拟中的SETTLE约束算法,介绍了一下Gimbal Lock问题,简单来说就是,用旋转矩阵去表示三维空间的向量旋转有可能会遇到奇点,使得三维空间原本的三个自由度在某一个点变成两个自由度。而使用我们这里所介绍的四元数Quaternion则不会有这样的问题,同时本文也介绍了一些四元数的基本运算法则和sympy中的代码实现。后续会再单独写三篇博客介绍一下四元数的具体运算细则、四元数在SETTLE算法中的应用以及四元数的物理含义等,敬请期待。 阅读全文
posted @ 2022-09-19 13:47 DECHIN 阅读(396) 评论(0) 推荐(2) 编辑
摘要: 可以用爱因斯坦求和替代的那些矩阵运算 本文主要基于Python的Numpy库,介绍一些爱因斯坦求和算子Einsum的应用场景,包括求和、求内外积、求转置等等。我们需要明确的是,爱因斯坦求和算子的意义主要在于矩阵的多重运算时,可以通过爱因斯坦求和约定将这种复杂问题定义成一个张量网络,通过图模型去找到一个更好的缩并路径,以得到更好的算法复杂度。而如果只是普通的点乘求和之类的运算,其实并不是Einsum的主要功能。但是这些功能也可以用爱因斯坦求和的形式来实现,也说明了这个约定的先进性。当然,也有众多的矩阵运算功能是无法直接通过爱因斯坦求和算子来实现的,比如矩阵求逆、求本征值、矩阵扩维、矩阵重构还有向量叉乘等等。只有在合适的地方使用Einsum,才能体现它的真正价值。 阅读全文
posted @ 2022-09-07 17:02 DECHIN 阅读(493) 评论(0) 推荐(1) 编辑
摘要: SETTLE约束算法中的坐标变换问题 在已知两个三角形顶点坐标的情况下,我们要以其中的一个三角形平面去构造一个新的坐标系,并且需要找到新旧坐标系之间的变换关系。这是一个比较简单的立体几何的问题,寻找两个坐标系之间的变换矩阵。如果是常规思路,可以先根据两个三角形之间的相对位置去计算一下在新坐标系下两个三角形的新的顶点坐标,从而可以取三个点来构造一个坐标变换矩阵,进而推广到所有向量在这两个坐标系之间的变换关系。而本文提供了一种相对更容易求解、也比较直接的思路,并给出了相关的Python代码实现过程。 阅读全文
posted @ 2022-08-31 11:25 DECHIN 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 使用MindSpore计算旋转矩阵 本文介绍了两个不同的深度学习框架:Jax和MindSpore下的旋转矩阵的实现,对于不同的框架来说同一个功能会涉及到不同的实现方式。在Jax中,由于其函数式编程的特性,就允许我们更加简单的去构造和扩展一个旋转矩阵。MindSpore是一个面向对象编程的框架,其优势在于构建大型的模型应用。但构造一个可用的简单模型,相对而言就会走一些弯路。就比如我们需要使用Concat+Reshape的算子来拼接一个旋转矩阵,看起来会相对麻烦一些。而构建好旋转矩阵之后,则可以使用跟Jax一样的Vmap操作,或者是直接使用爱因斯坦求和来计算旋转矩阵对多个矢量输入的计算,从文章中的案例中可以看到两者所得到的计算结果是一致的。 阅读全文
posted @ 2022-08-22 10:26 DECHIN 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 在VMD上可视化hdf5格式的分子轨迹文件 相比于明文存储和传统的一些数据存储方法,HDF5格式的文件非常适合用于存储分子动力学模拟过程中产生的庞大轨迹文件,不仅有良好的可读性,还有非常优秀的压缩率,使得存储下来的轨迹文件不至于太大。而相应的,我们也需要一些配套的可视化软件,用来展示HDF5文件中存储的内容。本文所介绍的改进版的VMD-h5mdplugin插件,可以在VMD中直接展示HDF5的分子运动轨迹,并给出了相应的案例。 阅读全文
posted @ 2022-08-04 15:47 DECHIN 阅读(489) 评论(0) 推荐(1) 编辑
摘要: 以脚本形式运行python库 本文主要通过一个实际的案例,介绍了如何可以在命令行中调用和运行我们的python模块。“python -m”这个方案为我们提供了一个新的选项,这个运行方法以“__main__.py”文件为入口文件运行,结合python中常用的命令行工具argparse,我们就可以很容易的创建一个可以通过命令行运行和获取参数的python模块。并且可以使用twine上传到pypi网站上,用pip进行安装和管理,会更加的便捷。 阅读全文
posted @ 2022-07-05 10:39 DECHIN 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 从Hadder看蛋白质分子中的加氢算法 本文主要介绍了开源加氢软件Hadder中用到的一些常规的补氢算法。在存储和优化蛋白质结构的过程中,人们更多的关注于蛋白质本身的骨架的变化,而单个原子的细微变化,对整体产生的性质是微乎其微的。但是我们在建立力场以及做能量最小化的过程中,需要用到氢原子。而氢原子的初始位置是至关重要的,如果加的位置太差,有可能导致体系能量过大,从而出现梯度爆炸的问题。 阅读全文
posted @ 2022-06-28 15:22 DECHIN 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 氨基酸分子结构和原子命名 PDB格式的文件是最常用于存储蛋白质构象的一种,其中也是以各个氨基酸(残基)为基本单位,在氨基酸内部对原子进行唯一性的命名。本文先通过展示各种氨基酸在蛋白质链的不同位置的结构,介绍各类氨基酸的基础构象。再通过丙氨酸和色氨酸两个案例,详细介绍了在蛋白质链的中的各种氨基酸内部的原子命名法则。需要注意的是,atom_name和atom_type是不一样的,atom_name是一个唯一的标识符,atom_type则是用于导出力场参数的重要标记。 阅读全文
posted @ 2022-06-17 10:46 DECHIN 阅读(914) 评论(0) 推荐(0) 编辑