我正在编写解析器来解析PyMOL文件(生物信息学语言)。我知道双引号字符可以生成像"text"这样的字符串。但是单引号字符'是不同的。下面是带有这个奇怪符号的PyMOL代码行的示例。
load dat/names.pdb
select test,name O4'
select test,*/O4'
select test,*/O4'+O3'
select test,(*/O4',O3')
select test,name O4'+O3'
select test,name "O4'+O3'"
select test,name O4'+Na\+
select test,(name Na\+,O4')
select test,name Na\++O4'
select test,*/Na\++O4'
select test,*/O4'+O4
select test,*/O2\*+O2
select test,*/O2\*+O2'此报价适用于哪种语言的令牌?如何给这样的线条上色?也许引号-char是一个单词-char,或者一个分隔符char?在一个示例文件中,我看到了quote的这种用法,它是string token 'text'
iterate (all),resn = 'NON'这是取自PyMOL GitHub repo的有效代码。
发布于 2019-10-16 18:26:55
PyMOL与其说是一种语言,不如说是一种软件。但是,它提供了一组命令来支持某些python脚本。您的文件包含一组这样的命令。
第一个命令load dat/names.pdb加载一个pdb文件(一个文本文件,包含来自分子的3D坐标、名称和其他有关原子的数据,通常是蛋白质)。有关pdb文件的完整文档可以在here中找到。
第二个和随后的命令在specific syntax之后创建一个PyMOL选择(基本上是一个原子列表)。关键字name表示您希望选择名称中包含字符串O4'的原子(对于第一个select命令)。请注意,单引号是原子名称的一部分,而不是语言标记。通常,带有单引号字符的原子名称表示核酸(DNA或RNA)中的原子。
命令iterate (all),resn = 'NON'是一个对选择的所有原子执行iterate的PyMOL命令;在这里,选择是(all),这意味着在会话中加载的所有原子。但是在我看来语法不正确。我假设您希望迭代属于名为NON的残基的所有原子,在这种情况下,您的命令应该类似于iterate (resn NON), print name,以打印所选元素中所有原子的名称。如果希望将所有原子的残基名称更改为NON,则应考虑使用PyMOL命令alter。
https://stackoverflow.com/questions/58246229
复制相似问题