摘要:
本文只是通过一个实例来讲述如何获得python中所有的单字符的字母表,不仅仅是局限于英文的abcd,可能还有其他语言如ᵝᵞᵟᵠ等。在实际写python的过程中可能不一定用得到,但是不失为一个挺有趣的功能探索。 阅读全文
摘要:
本文通过对Xponge+VMD的工具对蛋白质进行建模,然后总结了20种氨基酸的具体信息,也就是蛋白质的基本组成单元。通过对这些氨基酸的组合,就可以得到一个具有生物活性的蛋白质。同时本文还介绍了常用的存储蛋白质结构的文件格式pdb的具体格式化定义,总体来说是一个总结性的文章。 阅读全文
摘要:
编译安装源代码为可执行文件时,有时候会遇到想把可执行文件放在特定的路径下的问题,比如放到`/usr/bin`目录下,这样可以全局可调用,又不需要手动添加各种乱七八糟的系统路径。这就需要使用到Linux中的软链接的功能,通常使用`ln -s`的指令即可。本文顺带介绍了蛋白质结构评分软件TMalign的源码下载和安装使用的基本方法,编译成一个可执行文件后,可以建立一个软链接,在系统各处都可以使用,是一个比较基础的操作。 阅读全文
摘要:
张量网络计算,已经在众多的领域中得到了应用,不仅仅是传统的计算化学,当下医药研发领域的分子动力学模拟、计算化学和材料模拟,甚至是未来的量子计算,张量网络技术都在当中发挥重要作用。本文介绍的是MindSpore最新对张量网络计算的支持的第一步:用爱因斯坦求和计算张量网络缩并。 阅读全文
摘要:
在完成一个软件或者程序的实现之后,最后的一步就是发布,发布的目的是为了让更多的人来使用这个项目,而大部分的人是没有相应的编程环境的,因此我们必须考虑将代码编译成各个平台的可执行文件,再发布给用户去使用。本文主要介绍通过pyinstaller在linux和windows上分别打包python脚本为可执行文件,想要跨平台的编译软件就目前而言实现起来还比较困难,博主本地使用的是Win11+WSL2 Ubuntu Linux的环境,能够在一定的程度上解决跨平台发布的问题。 阅读全文
摘要:
在python的输出结果中,尤其是浮点数的输出,当我们需要写入文本文件时,最好是采用统一的输出格式,这样也能够增强结果的可读性。而对于浮点数输出位数的控制,可以通过{:.4f}、%.4f来指定打印或者输出时的字符串占据空间,也可以通过round函数来对输出前的结果进行转化。而如果是取有效数字,需要用到{:.4},这几种方法没有优劣,只有看不同的场景,选取不同的精度控制方案。 阅读全文
摘要:
量子计算机,是由基本单元量子比特所组成的新型计算体系,通过量子叠加和量子纠缠的特性,来完成对量子态的操纵,最终再通过量子测量获得到想要的计算结果。而在量子计算机上面执行量子化学的任务,被认为是一个非常promising的应用场景,不论是从最初费曼的想法与设计,还是这几年所发展起来的近期量子计算(NISQ)的技术,都对量子计算化学这一新兴研究方向进行了阐述。本文通过最基础的谐振波,讲解到薛定谔方程和动量算符的由来,最终介绍了两种量子化的变换。其实所谓的量子化,都是对表征体系进行了调整。一次量子化将哈密顿量从电子的粒子性带到了量子力学中的波粒二象性,引入了动量算符。二次量子化将动量表象和位置表象变换到粒子数表象,通过统计平均的方法去研究电子在不同轨道之间跃迁时的能量吸收与产生,用于表示体系总能量。 阅读全文
摘要:
量子的世界与经典的世界存在着信息的隔阂,我们可以通过多个量子比特所构成的量子态去存储大量的信息,以及进行规模大到经典计算机所无法执行的运算。但是毕竟我们还依然生活在经典的世界中,最终我们还是需要将量子态坍缩到经典比特再进行读取,而这个使得量子态坍缩的过程,就是一种量子测量的方法。通过大量的量子测量,我们就可以近似的获得到量子态矢量中所存储的信息。 阅读全文
摘要:
量子计算是一门当下非常火热的技术,抛开个别企业对量子计算的过分吹嘘不谈,其本身是一门非常有意义的跨学科研究领域。本文仅从非物理科班专业的角度——用矩阵的语言去描述量子计算的基础单元和基础操作,包含量子态的含义、单比特量子门操作以及两比特量子门操作的矩阵形式。并且附带一定的物理图像,这一点其实非常重要,如果不断的推导公式,最终有可能迷失了其物理图像,这就脱离了我们做研究的初衷。 阅读全文
摘要:
Python本身是一门比较灵活便捷的编程语言,但是便捷往往有可能伴随着一些风险,比如exec和eval等内置函数的实现,有可能导致sandbox escaping的问题。而有时候我们又需要一些批量化的操作,比如批量化的创建或者修改局部、全局或者是成员变量,这样就需要我们首先要把所有的变量名存成字符串,在需要的时候再作为变量名去调用。在这篇文章中,我们介绍了一系列非exec和eval的操作(并不是说没有风险,也引用了ctype和sys定义的数据帧),来查看和定义、修改所需的各种变量。 阅读全文
摘要:
上一篇博客《通过R Studio用Markdown写Beamer》的最后遗留了一个问题,那就是如何在本地win11的系统环境下快捷方便的构建一个pdflatex的环境。常规方案都是安装一个TexLive和下载一大堆的扩展文件,或者用Docker的方案去构建一个完整的环境,但是都很费时间精力。偶然的情况下看到了益辉大神基于TexLive修改了一个R的扩展包TinyTex。经过测试,这毫无疑问是目前在本地构建R Markdown完整环境的最佳解决方案。 阅读全文
摘要:
虽说在科研和工程中,最重要的还应该聚焦于研究的内容本身,但是如何去更好更严肃的展示自己的研究成果,并且不耗费太多的时间成本,这也是一个长期被讨论的话题。本文中介绍了R Markdown这样的一个解决方案,可以用于构建Beamer演示文档,用更少的工作量去构建一个效果更好的演示文档,对科学研究而言也是一个值得称道的工作。 阅读全文
摘要:
本文所解决的问题场景是这样的:如果给定一个字典,比如一般从json文件或者npz文件中加载出来的数据都是字典的数据结构,如果我们希望把这个字典赋值给一个类,且使得字典的key和value分别作为类的成员变量名和成员变量值,那么该如何实现呢?对于一个展平的字典而言(没有嵌套字典),我们直接使用update就可以将字典中的所有key和value转变为当前类的成员变量。比较麻烦的是包含有嵌套字典的层级结构字典,此时我们只能使用循环,并且递归的对类的成员变量进行赋值。 阅读全文
摘要:
本文介绍了华为推出的深度学习框架MindSpore中最新支持的vmap功能函数,可以用于向量化的计算,本质上的主要作用是替代并加速python中的for循环的操作。最早是在numba和pytroch、jax中对vmap功能进行了支持,其实numpy中的底层计算也用到了向量化的运算,因此速度才如此之快。vmap在python中更多的是与即时编译功能jit一同使用,能够起到简化编程的同时对性能进行极大程度的优化,尤其是python中的for循环的优化。但是对于一些numpy、jax或者MindSpore中已有的算子而言,还是建议直接使用其已经实现的算子,而不是vmap再手写一个。 阅读全文
摘要:
本文通过一个python的实际案例的设计,来讲解python面向对象的技术——类的继承中必用的super函数的逻辑。其实我们可以把python中类的继承理解成这样的一个过程:当我们在括号中明确了父类时,其实已经引用了父类的成员函数,但是并没有执行父类的初始化函数。在执行子类的初始化函数的同时,会检查是否重载了父类的成员函数,如果重载则会直接覆盖。而只有在执行了super之后,才相当于执行了父类的初始化函数,此时才可以访问父类的成员变量。 阅读全文