计算化学公社

标题: 可生成任意聚合度线形聚合物结构、拓扑以及电荷的在线程序 [打印本页]

作者
Author:
王纪峰    时间: 2025-8-18 12:20
标题: 可生成任意聚合度线形聚合物结构、拓扑以及电荷的在线程序
本帖最后由 王纪峰 于 2025-8-23 12:07 编辑

摘要:在含有聚合物的分子动力学模拟中,用户常常面临着高聚合度的聚合物结构搭建复杂,原子电荷赋予困难,难以构建非均聚物等问题。在这里,我们提出了一种基于原子编辑、节点矩阵以及邻接矩阵的聚合物生成方法,可生成任意聚合度线形聚合物结构(.pdb,.mol2,.xyz)、拓扑文件(Gromacs的.itp,.top)以及RESP电荷的在线程序。并且将其集成在了课题组开发的在线平台中(https://arxiv.org/abs/2507.04423)(https://cleanenergymaterials.cn),用户仅需要选择生成聚合物的类别(均聚物、嵌段共聚物、交替共聚物、无规共聚物),并且输入每个组分的SMILES式以及重复单元数量,即可进行生成。平台同时也集成了基于组分贡献法预测用户输入的聚合物性质(Tg,Tm,拉伸强度、杨氏模量与静态介电常数)。
(, 下载次数 Times of downloads: 13)

使用方法:
(1)首先进入CEMP平台的聚合物模块(https://cleanenergymaterials.cn/polymer/generate_polymer_display),然后按照下图按顺序填写内容。
(, 下载次数 Times of downloads: 13)
其中需要特别注意的是,组分的SMILES必须含有明确的键接位点,例如对于乙烯基片段,应该写成 (, 下载次数 Times of downloads: 12) (论坛似乎打不出来这个“方括号+星号+方括号”),而非CC,如果不按照要求,则会报错。
这种SMILES的获取方式可以通过chemdraw绘制,如下图所示:
(, 下载次数 Times of downloads: 8)
绘制后,框选分子,右键——molecule——copy as——SMILES,即可将分子复制到黏贴版上
除此之外,还需要注意Name必须由“英文字母”,“下划线”“数字”构成(或者只包含英文字母),如果只使用数字,则可能产生不识别的问题。

用户初次体验时,可能存在对“带有键接”位点的SMILES了解的不够准确,导致写入错误的键接位点,平台提供了SMILESDrawer功能,能够快速帮助用户查看自己绘制的SMILES是否符合预期
SMILESDrawer:https://cleanenergymaterials.cn/autocompute/smilesdrawer
(, 下载次数 Times of downloads: 12)

(2)填写完毕后,用户可以点击“Predict Polymer”按钮进行初步性质预测(未上线,已接受,Chin. J. Polym. Sci.  https://doi.org/10.1007/s10118-025-3402-y),也可以直接点击“Generate Polymer”开始聚合物生成。
值得注意的是,聚合物生成相对较慢,因为会调用结构优化对组分片段进行初步优化(b3lyp/6-311G** em=gd3bj scale=0.9682)并且生成计算RESP所必须的量子化学检查点文件,所以首先会返回任务的ID号,用户此时可以等待任务完成,任务完成后会发送提醒邮件到用户的注册邮箱中。
(, 下载次数 Times of downloads: 7)
(3)任务完成后,进入Query查询界面(https://cleanenergymaterials.cn/query/),上进行查看任务进度,任务完成后,将任务的TASK ID输入到上方搜索框中,并提交。
(, 下载次数 Times of downloads: 15)
此时会返回绘图文件的下载链接。
(, 下载次数 Times of downloads: 9)
(4)其中第一个链接为用户填写的表格,第二个链接为生成的聚合物的结构和拓扑文件:
(, 下载次数 Times of downloads: 14)
查看生成的效果:
(, 下载次数 Times of downloads: 11)
查看给出的itp以及top文件
(, 下载次数 Times of downloads: 7)

注意事项:
1.        拓扑文件的生成基于sob老师开发的Sobtop实现,力场为GAFF(暂时不支持更改)。
2.        目前仅支持生成适配Gromacs的itp以及top文件。
3.        RESP电荷计算基于Multiwfn实现,需要引用Tian Lu, J. Chem. Phys., 161, 082503 (2024) DOI: 10.1063/5.0216272
4.        需要引用CEMP平台https://arxiv.org/abs/2507.04423






作者
Author:
牧生    时间: 2025-8-18 13:16
本帖最后由 牧生 于 2025-8-18 13:58 编辑

可以说是很多人的急需了。但是我还是有点疑问。

  1. 应该写成CC,而非CC
复制代码
这里没看懂噢

图中略有点看不清,可能说的是有个符号 (, 下载次数 Times of downloads: 5) 。。


第一个问题:

我用一个简单的结构去试试 (, 下载次数 Times of downloads: 6)

得到
(, 下载次数 Times of downloads: 4)
  1. Your key is: gAAAAABoorXMMGdCiLetDoMgKUnbfh_gbipPL4fNmNxtncCuAJarECD3Jbq70IACyMceiB5uPMsagGO6eWPBRQfhyFSkfyv1RDT1abUIxt85BoZZLjH6COnNfXfZt6JF5g2tH9JYbiyRNCB51yW6tcluBIKknLnWHgiBpSb_9eufJOkuhC2e7sE_FxRtheLjqZ7TVMQYxHvk6FMiOlhL996USy9HEb3FeHeUWUF-I0GEU_tzBPVz1xTKYiFLo1jTw60g8al4PYmWLXaCR5nd3e6Tlx92YquSyle7XOugcbOSzBkqEV2CWkXviWH_p0gzA_PaCSvOD63QJ7b8eSyD5XGha2cKcEUvorI7Ruwi5ozexIxipjTqB-FhEbcDg8xRsLD9Mj5XACqTKeHqkunhlr2HrTtXX7Bhx60kjevJ4sVKUu2H7uchBlQ=
复制代码


查询得到

  1. Failed to run notebook: 1_Polymer_RESP_repeat_unit.ipynb
  2. Return Code: 1
  3. Standard Output:

  4. Standard Error:
  5. [NbConvertApp] Converting notebook /data/jupyternotebook_public/Project15_AI_ML_BMS_JZZ/cemp/media/Polymer/GeneratePolymer/20250818_131036_4e8d68/1_Polymer_RESP_repeat_unit.ipynb to notebook
  6. Traceback (most recent call last):
  7.   File "/data/jiazheju/anaconda3/envs/cemp_env/bin/jupyter-nbconvert", line 10, in
  8.     sys.exit(main())
  9.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/application.py", line 283, in launch_instance
  10.     super().launch_instance(argv=argv, **kwargs)
  11.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/traitlets/config/application.py", line 1075, in launch_instance
  12.     app.start()
  13.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 420, in start
  14.     self.convert_notebooks()
  15.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 597, in convert_notebooks
  16.     self.convert_single_notebook(notebook_filename)
  17.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 563, in convert_single_notebook
  18.     output, resources = self.export_single_notebook(
  19.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 487, in export_single_notebook
  20.     output, resources = self.exporter.from_filename(
  21.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 201, in from_filename
  22.     return self.from_file(f, resources=resources, **kw)
  23.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 220, in from_file
  24.     return self.from_notebook_node(
  25.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/notebook.py", line 36, in from_notebook_node
  26.     nb_copy, resources = super().from_notebook_node(nb, resources, **kw)
  27.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 154, in from_notebook_node
  28.     nb_copy, resources = self._preprocess(nb_copy, resources)
  29.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 353, in _preprocess
  30.     nbc, resc = preprocessor(nbc, resc)
  31.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/base.py", line 48, in __call__
  32.     return self.preprocess(nb, resources)
  33.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 103, in preprocess
  34.     self.preprocess_cell(cell, resources, index)
  35.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 124, in preprocess_cell
  36.     cell = self.execute_cell(cell, index, store_history=True)
  37.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
  38.     return loop.run_until_complete(inner)
  39.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
  40.     return future.result()
  41.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 1062, in async_execute_cell
  42.     await self._check_raise_for_error(cell, cell_index, exec_reply)
  43.   File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 918, in _check_raise_for_error
  44.     raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
  45. nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
  46. ------------------

  47. # 创建成功和失败的文件夹
  48. os.makedirs('Gaussian/RESPpolymer/success', exist_ok=True)
  49. os.makedirs('Gaussian/RESPpolymer/failure', exist_ok=True)

  50. # 定义Gaussian生成文件路径
  51. base_dir = 'Gaussian/RESPpolymer'
  52. success_dir = os.path.join(base_dir, 'success')
  53. failure_dir = os.path.join(base_dir, 'failure')

  54. # 设置opt+freq文件夹路径
  55. Gaussian_path = "Gaussian/RESPpolymer/success"

  56. #检查存储结构优化的文件Gaussian_database是否存在于当前账户上
  57. gaussian_database_path, optfreq_gaussian_database_path, RESPpolymer_database_path = check_and_create_gaussian_database()

  58. # 获取System.xlsx的dataframe,以及存储聚合物名称的列表
  59. df, polymers = read_excel_and_create_lists('System_homopolymer.xlsx')

  60. # 拷贝聚合物的文件,从数据库拷贝到当前目录下
  61. not_found_polymers, found_polymers = copy_files_for_polymers(
  62.     RESPpolymer_database_path,
  63.     success_dir,
  64.     polymers
  65. )

  66. total_polymers = not_found_polymers + found_polymers

  67. # 为未找到的聚合物重复单元创建Gaussian输入文件和电荷约束文件chgcons.txt
  68. create_input_files_for_missing_polymers(df, not_found_polymers)

  69. # 以下部分不能放在上面的循环中,否则会重复调用Gaussian进行计算        
  70. # 调用Gaussian对重复单元进行结构优化,同时进行静电势计算
  71. calculate(success_dir, failure_dir, MAX_TASKS=1)  

  72. # 将结构优化成功的聚合物重复单元文件复制到Gaussian_database/RESPpolymer中
  73. copy_newly_calculated_files(RESPpolymer_database_path, success_dir, not_found_polymers)

  74. # 将当前目录下的chk文件转化为fchk文件
  75. convert_chk_to_fchk(Gaussian_path)

  76. # 创建断点文件 test1_pass.txt
  77. with open("test1_pass.txt", "w") as f:
  78.     f.write("convert_chk_to_fchk completed successfully.\n")
  79. # 对当前目录下所有聚合物,计算重复单元的RESP电荷
  80. create_repeatunit_chg(total_polymers)

  81. # 创建断点文件 test2_pass.txt
  82. with open("test2_pass.txt", "w") as f:
  83.     f.write("create_repeatunit_chg completed successfully.\n")

  84. ------------------

  85. ----- stdout -----
  86. Gaussian_database文件夹已存在于/data/Gaussian_database。
  87. Found polymers: []
  88. Polymers not found: ['12']
  89. ------------------

  90. ---------------------------------------------------------------------------
  91. IndexError                                Traceback (most recent call last)
  92. Cell In[18], line 29
  93.      26 total_polymers = not_found_polymers + found_polymers
  94.      28 # 为未找到的聚合物重复单元创建Gaussian输入文件和电荷约束文件chgcons.txt
  95. ---> 29 create_input_files_for_missing_polymers(df, not_found_polymers)
  96.      31 # 以下部分不能放在上面的循环中,否则会重复调用Gaussian进行计算        
  97.      32 # 调用Gaussian对重复单元进行结构优化,同时进行静电势计算
  98.      33 calculate(success_dir, failure_dir, MAX_TASKS=1)  

  99. Cell In[16], line 4, in create_input_files_for_missing_polymers(df, missing_polymers)
  100.       2 def create_input_files_for_missing_polymers(df, missing_polymers):
  101.       3     for name in missing_polymers:
  102. ----> 4         smiles = df[df['Name'] == name]['SMILES'].iloc[0]
  103.       5         # 获取重复单元的端基索引,非端基索引和重复单元的电荷信息
  104.       6         terminal_indices, non_terminal_indices, repeatunit_charge = create_repeatunit_Gaussian_inputfile(df, smiles, name)

  105. File /data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/pandas/core/indexing.py:1191, in _LocationIndexer.__getitem__(self, key)
  106.    1189 maybe_callable = com.apply_if_callable(key, self.obj)
  107.    1190 maybe_callable = self._check_deprecated_callable_usage(key, maybe_callable)
  108. -> 1191 return self._getitem_axis(maybe_callable, axis=axis)

  109. File /data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/pandas/core/indexing.py:1752, in _iLocIndexer._getitem_axis(self, key, axis)
  110.    1749     raise TypeError("Cannot index by location index with a non-integer key")
  111.    1751 # validate the location
  112. -> 1752 self._validate_integer(key, axis)
  113.    1754 return self.obj._ixs(key, axis=axis)

  114. File /data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/pandas/core/indexing.py:1685, in _iLocIndexer._validate_integer(self, key, axis)
  115.    1683 len_axis = len(self.obj._get_axis(axis))
  116.    1684 if key >= len_axis or key < -len_axis:
  117. -> 1685     raise IndexError("single positional indexer is out-of-bounds")

  118. IndexError: single positional indexer is out-of-bounds
复制代码




第二个问题:
针对一个简单的结构丙烯酰胺,无论用
C(C)C(=O)N 或者 (, 下载次数 Times of downloads: 7) ,或者 (, 下载次数 Times of downloads: 5) ,都不行。。







PS:方括号里面放个*,这个符号不能出现在回帖的文本里面,会变格式。。只能用图了


作者
Author:
王纪峰    时间: 2025-8-18 15:20
牧生 发表于 2025-8-18 13:16
可以说是很多人的急需了。但是我还是有点疑问。

这里没看懂噢

感谢您的建议!
对于第一个问题:的确帖子内好像打不出“方括号+星号+方括号”,SMILES的输入就应该是您说的这个形式,含有键接位点。这个问题我已在帖子内更正。
对于第二个问题,我发现问题出在Name的命名上,导致没有被识别,您可能需要使用“英文字母,下划线,数字”组成的Name进行命名,我修改Name后可以成功运行。(这点我在帖子中已强调)
对于第三个问题,丙烯酰胺的结构,我这边后台看到您使用(含有键接位点的SMILES)任务成功了,的应该已经success了,您可以再试一试看看。
再次感谢您愿意抽出时间测试
作者
Author:
牧生    时间: 2025-8-18 16:08
本帖最后由 牧生 于 2025-8-18 16:18 编辑

请帮我看下我的操作有何不妥吗?

我用AM,C=CC(N)=O,改成 [方括号*]C=C[方括号*]C(N)=O,提交上去得到了
  1. Your request has been submitted successfully.

  2. Your key is: gAAAAABootoetREtaqqQhgnqsAyzvSv9UzhWYRbqf6DmXn1GobNqb49VAAUusLWCtInWRLVL8-yzp-lXWJfp12wZ90c50hE4N4j-VttlTmPjDO7XTeeOQFl915SCtzD9Kuw_vIppL_uNaLDFGfGbqyTjYjcQmGWBwWFiKacdG3nbdVvX7d09hjlNBS4mggUlvdFYOfO4is0P4nCvbY6_tGDaToOrsCVpl9Pf-otnudvJM8TKKhLtZUIyKz-BiU1O7MrsA8upyoTe_z0i_0H3NqqivkhkNouect9MKCKEx31U5ADDW6U-LD-WU0fRlhfbIEF_KvB9KUK5eCxyJY8T-izyZCWzpQUQy1yJjJXHiUaOK-G6nceWDSTQSeOytvpXlc29tS77edoTYNLSz2Zk6y5LDndUjOJsnlpc4p-NUXj4_fT6D4eQN58=
复制代码

但是查询还是
  1. Task failed. Please review the error details below:

复制代码
即时使用[方括号*]CC[方括号*]C(N)=O,照样是 failed






然后换用了一个丙烯酸的阴离子结构

(, 下载次数 Times of downloads: 8)

得到的是C=CC([O])=O,那么我改成了    [方括号*]C=C[方括号*]C([O])=O,名字写成AA,重复5个

得到
  1. <blockquote>Your request has been submitted successfully.
复制代码


然后查询得到的结果看起来都对。
(, 下载次数 Times of downloads: 4)

下载回来得到一个压缩包,解压得到
(, 下载次数 Times of downloads: 8)

但是VMD打开就不对了
(, 下载次数 Times of downloads: 9)

还有,polymer_AA.chg的格式可能不对,使用Multiwfn无法打开


作者
Author:
王纪峰    时间: 2025-8-18 16:15
(, 下载次数 Times of downloads: 8)
C=CC(N)=O的聚合物形式应该写成上图所示:必须要暴露出来键接位点
作者
Author:
王纪峰    时间: 2025-8-18 16:16
本帖最后由 王纪峰 于 2025-8-18 16:17 编辑
牧生 发表于 2025-8-18 16:08
请帮我看下我的操作有何不妥吗?

我用AM,C=CC(N)=O,改成 [方括号*]C=C[方括号*]C(N)=O,提交上去得到 ...

感谢您的测试,我发现您的问题源于错误的键接位点表示形式,我已经在下一楼中写明了正确的形式,期待您的再次使用!
您同样可以在我们平台提供的SMILESDrawer(https://cleanenergymaterials.cn/autocompute/smilesdrawer)中查看自己SMILES的结果是否正确。
SMILESDrawer的使用已经添加在帖子的描述中。

作者
Author:
牧生    时间: 2025-8-18 16:58
本帖最后由 牧生 于 2025-8-18 17:14 编辑

第一个问题,得到的聚合物是一个简单的重复的结构,似乎没有考虑端基饱和的问题

(, 下载次数 Times of downloads: 11)


第二个问题,得到的聚合物的电荷的chg文件格式不规范,Multiwfn不能打开,且缺失了几个原子的电荷

(, 下载次数 Times of downloads: 8)

第二个链接得到的是一个excel的表格,不是压缩包。

(, 下载次数 Times of downloads: 8)



请大佬用丙烯酸阴离子结构,直接走一遍,录个屏也行,教教我。

作者
Author:
lmch    时间: 2025-8-18 17:37
测试了一下,发现得到的聚合物结构主链是随机弯曲折叠的,请问实际中这种随机的弯曲折叠对链的性质会有实际影响吗?
作者
Author:
王纪峰    时间: 2025-8-18 18:41
本帖最后由 王纪峰 于 2025-8-18 18:54 编辑
lmch 发表于 2025-8-18 17:37
测试了一下,发现得到的聚合物结构主链是随机弯曲折叠的,请问实际中这种随机的弯曲折叠对链的性质会有实际 ...

影响是有的,一般来说比较适合那种无定形,非刚性的聚合物。如果是刚性聚合物,降低重复单元数量,同样也能生成相对刚性的线性结构。
还有值得注意的是,如果对聚合物构象要求比较高,生成的结果需要事先跑NVT让其预平衡一下,不过这样比较麻烦了。
作者
Author:
王纪峰    时间: 2025-8-18 20:45
本帖最后由 王纪峰 于 2025-8-18 20:48 编辑
牧生 发表于 2025-8-18 16:58
第一个问题,得到的聚合物是一个简单的重复的结构,似乎没有考虑端基饱和的问题

第一个问题:感谢您的建议,端基饱和目前只支持采用H饱和,因为我所接触的大部分研究中对端基研究较少,基本都是对聚合物本身结构进行研究的,不过从算法层面上来说,用什么基团饱和都是可以调整的,之后我可以逐步新增功能对其调整。
第二个问题:本身就是一个表格文件以及一个文件夹
第三个问题,这边给出一个非常详细的示例,后台看到您的丙烯酸加了双键,但是实际在聚合时,双键是打开的,所以导致了原子电荷不匹配的问题。
(, 下载次数 Times of downloads: 7)
提交计算
(, 下载次数 Times of downloads: 9)
查看结果
(, 下载次数 Times of downloads: 6)
结果一个为表格,一个为文件夹(文件夹里包含拓扑文件polymer_topology与结构文件polymer_structure)
(, 下载次数 Times of downloads: 8)
结构文件:
(, 下载次数 Times of downloads: 11)
电荷文件
(, 下载次数 Times of downloads: 7)
示例的ID号(您可以输入该ID查看结果)
gAAAAABooxp5gWk8Nk4Deu2ene6m5olf9X_0chNbeuyNR3k_UFTEUvKHkLSuKxiec3elzUyhsxRmz03XQ4iBVjtwjB3VgUQ6ME3xsp17f4Kk8BuOXA2nGXEXjaYrZv4jN9rDC6TGLOwaS9w4P_z2VjepsiwAZAqMczaOas1V6cb825eJGqMdbwlI1ly6X5NbgOXqRH8Kq8ymufpWmAk9JyTr5lKXj-24L-5PjxNKwGdoEW5iZTCohaNtNOkNBMgLbOXHVYdA-lW8q7sCKogaVGM8mQnznKQltkNeiuOhMuhzT6hky9l2ryRhAb73xIvYPTzlSbLr3une2DiPCYyKgiq-P1wRWjObMWkhXd_lijUjiqlLzUnMBQ0mL8vxbf6RvoLRYX4Dzw0h7JdkT3zaXUzg3BndFyTgr6qQ94RgLKJdmd_kcVzAE9w=






作者
Author:
含光君    时间: 2025-8-19 10:28
本帖最后由 含光君 于 2025-8-19 10:30 编辑

感谢楼主分享,我提交了一个任务,但不太明白结果从哪里获取。

邮箱收到的邮件提示:

  1. Task Details:
  2.             - Task Type: Generate_random_copolymer
  3.             - Submission Time: 2025-08-19 01:47:56
  4.             - Completion Time: 2025-08-19 01:57:05
  5.             - Task Status: Success
复制代码

但邮件中给出的链接无法访问 (504 Gateway Timeout)

Query中显示success,

(, 下载次数 Times of downloads: 8)

但是查了Task ID 显示失败。
Task ID:
gAAAAABoo9fMNG_3QEsA9qKDCxG2pXOJqSQC5AvO1CQNKUlNl05mKZ78HB5Ue8uQ6pwgteJQ5HjWuNwlJLUiSvMYFxX4Ra2DQ3jUuH9hZdUiGERVaMcvf2kgl4VXYmt7y8U7eqcEyPqkvfWIZlHi97hiK9ii_LxAz-LHiBAn73BeWpE-HvdddLDn-XsxPUgx7dxZ5928yeW9vDV7QNYNeepD3zXvH59dZYYH11vGiBU_abiaNyPLpJIcSLh9D7k0Mb2aZSFAM34o6cRCavcTlqTYMHqsKhOj6Y2RltFAnmD2LyDFWYti-4kSa0BvMWMoysy3bwuLnzuHymxQI8AzDv6lT19PzTQkldhZAr8IRkEbWf3ELQ4QmCO_wgHPSyyIrpypA1TIs4IUGWFLpQ5M67mNkXUhqfQ_N4ptGop8bskBezKvHPxeLDctX4crGwaAd-w46ofUoZEQ


(, 下载次数 Times of downloads: 9)

所以我不知道具体算成功没有,请楼主帮忙check下,谢谢


作者
Author:
牧生    时间: 2025-8-19 12:59
本帖最后由 牧生 于 2025-8-19 13:07 编辑

感谢大佬这个好工具,我现在都已经可以成功生成聚合物了。

现在总结之前不成功的原因,是SMILES格式的文件不正规造成。

至于端基饱和的问题,我觉得用氢原子饱和,或者甲基饱和,确实不会影响聚合物链本身的性质


作者
Author:
王纪峰    时间: 2025-8-19 14:25
含光君 发表于 2025-8-19 10:28
感谢楼主分享,我提交了一个任务,但不太明白结果从哪里获取。

邮箱收到的邮件提示:

后台检查发现您的SMILES(gr1)解析存在问题,可能需要进一步核对,您的N原子化合价不对
(, 下载次数 Times of downloads: 8)

作者
Author:
含光君    时间: 2025-8-19 14:53
王纪峰 发表于 2025-8-19 14:25
后台检查发现您的SMILES(gr1)解析存在问题,可能需要进一步核对,您的N原子化合价不对

明白啦,我再check一下,谢谢楼主
作者
Author:
科研小白0126    时间: 2025-8-19 21:50
大佬我这是smile格式不对吗,纯小白
Failed to run notebook: 2_Polymer_chg_and_Polymer_creation_ Linear_polymer.ipynb
Return Code: 1
Standard Output:

Standard Error:
[NbConvertApp] Converting notebook /data/jupyternotebook_public/Project15_AI_ML_BMS_JZZ/cemp/media/Polymer/GeneratePolymer/20250819_212106_f3b689/2_Polymer_chg_and_Polymer_creation_ Linear_polymer.ipynb to notebook
Traceback (most recent call last):
  File "/data/jiazheju/anaconda3/envs/cemp_env/bin/jupyter-nbconvert", line 10, in
    sys.exit(main())
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/application.py", line 283, in launch_instance
    super().launch_instance(argv=argv, **kwargs)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/traitlets/config/application.py", line 1075, in launch_instance
    app.start()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 420, in start
    self.convert_notebooks()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 597, in convert_notebooks
    self.convert_single_notebook(notebook_filename)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 563, in convert_single_notebook
    output, resources = self.export_single_notebook(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 487, in export_single_notebook
    output, resources = self.exporter.from_filename(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 201, in from_filename
    return self.from_file(f, resources=resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 220, in from_file
    return self.from_notebook_node(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/notebook.py", line 36, in from_notebook_node
    nb_copy, resources = super().from_notebook_node(nb, resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 154, in from_notebook_node
    nb_copy, resources = self._preprocess(nb_copy, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 353, in _preprocess
    nbc, resc = preprocessor(nbc, resc)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/base.py", line 48, in __call__
    return self.preprocess(nb, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 103, in preprocess
    self.preprocess_cell(cell, resources, index)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 124, in preprocess_cell
    cell = self.execute_cell(cell, index, store_history=True)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
    return loop.run_until_complete(inner)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
    return future.result()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 1062, in async_execute_cell
    await self._check_raise_for_error(cell, cell_index, exec_reply)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 918, in _check_raise_for_error
    raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
if __name__ == '__main__':
    main()
------------------

----- stdout -----
--------PQx-IT-------PQx-IT----------PQx-IT--------PQx-IT---------PQx-IT-------PQx-IT----------PQx-IT--------PQx-IT--------
------------------

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[26], line 2
      1 if __name__ == '__main__':
----> 2     main()

Cell In[25], line 16, in main()
     14 smiles = df.loc[df['Name'] == name, 'SMILES'].values[0]
     15 n = int(df.loc[df['Name'] == name, 'repeating unit'].values[0])
---> 16 processing(name, smiles, n)
     17 print(f"--------{name}-------{name}----------{name}--------{name}---------{name}-------{name}----------{name}--------{name}--------")

Cell In[24], line 16, in processing(polymer_name, smiles, n, nproc, mem)
     13 mol = Chem.MolFromSmiles(smiles)
     15 # 获取聚合物链重复单元的原子电荷
---> 16 repeat_unit_charges = repeat_unit_charge_list(chg_filename)
     18 # 获取聚合物链端基聚合位点的原子电荷信息
     19 end_group_atom_charges_dict = create_end_group_atom_charges_dict(repeat_unit_charges, mol, n)

Cell In[5], line 7, in repeat_unit_charge_list(chg_filename)
      3 '''
      4 chg_filename:聚合物单个重复单元的电荷信息文件
      5 '''
      6 repeat_unit_charges = []
----> 7 with open(chg_filename, 'r') as file:
      8     for line in file:
      9         # 假设电荷信息在每行的最后一列
     10         repeat_unit_charges.append(float(line.split()[-1]))

File /data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/IPython/core/interactiveshell.py:284, in _modified_open(file, *args, **kwargs)
    277 if file in {0, 1, 2}:
    278     raise ValueError(
    279         f"IPython won't let you open fd={file} by default "
    280         "as it is likely to crash IPython. If you know what you are doing, "
    281         "you can use builtins' open."
    282     )
--> 284 return io_open(file, *args, **kwargs)

FileNotFoundError: [Errno 2] No such file or directory: 'PQx-IT.chg'


作者
Author:
王纪峰    时间: 2025-8-20 10:29
科研小白0126 发表于 2025-8-19 21:50
大佬我这是smile格式不对吗,纯小白
Failed to run notebook: 2_Polymer_chg_and_Polymer_creation_ Linea ...

认真看帖子,写的SMILES明显不对,键接位点呢
作者
Author:
王纪峰    时间: 2025-8-20 10:30
SMILES的问题在上面已经回答的非常详细了,请仔细核对SMILES是否正确,类似问题不再回答
作者
Author:
牧生    时间: 2025-8-20 12:22
本帖最后由 牧生 于 2025-8-20 12:23 编辑

一般情况下,很多人用chemdraw画结构式,没有很注意那个连接位点,包括我自己也从来就没注意过那个*号表示连接点。。

我在这里帖一下方法。。

用丙烯酸为例:

因为组合成聚合物链,是一个重复过程,所以,必须画重复的单元,*号视为那个连接的点,需要在两端分别点上一个*号,且电荷必须正确。
(, 下载次数 Times of downloads: 9)


得到的结果就是这样的结构式
(, 下载次数 Times of downloads: 8)

然后复制为SMILES

(, 下载次数 Times of downloads: 7)

得到
(, 下载次数 Times of downloads: 7)

作者
Author:
xiaowu759    时间: 2025-8-20 15:49
It sounds good. I'll try it.
作者
Author:
科研小白0126    时间: 2025-8-20 15:49
牧生 发表于 2025-8-20 12:22
一般情况下,很多人用chemdraw画结构式,没有很注意那个连接位点,包括我自己也从来就没注意过那个*号表示 ...

感谢大神终于知道怎么在smiles里找连接位点了
作者
Author:
科研小白0126    时间: 2025-8-20 15:49
王纪峰 发表于 2025-8-20 10:29
认真看帖子,写的SMILES明显不对,键接位点呢

万分感谢您的回复
作者
Author:
科研小白0126    时间: 2025-8-20 15:59
牧生 发表于 2025-8-20 12:22
一般情况下,很多人用chemdraw画结构式,没有很注意那个连接位点,包括我自己也从来就没注意过那个*号表示 ...

您好方便问一下您这是chemdraw哪个版本吗,我的ChemDraw 22.0.0 64未找到该工具
作者
Author:
牧生    时间: 2025-8-20 16:09
科研小白0126 发表于 2025-8-20 15:59
您好方便问一下您这是chemdraw哪个版本吗,我的ChemDraw 22.0.0 64未找到该工具

你能给某个原子标正负电荷,就能标上那个*

我用的很旧了,还是2012版的
作者
Author:
科研小白0126    时间: 2025-8-20 18:12
打扰您了,我这个两个任务正在进行是只有完全结束才会显示在下面的任务历史的吗
作者
Author:
科研小白0126    时间: 2025-8-20 18:17
科研小白0126 发表于 2025-8-20 18:12
打扰您了,我这个两个任务正在进行是只有完全结束才会显示在下面的任务历史的吗

这两个任务是我的吗老师,我看下面历史记录和我提交的时间不一样

作者
Author:
王纪峰    时间: 2025-8-20 20:12
科研小白0126 发表于 2025-8-19 21:50
大佬我这是smile格式不对吗,纯小白
Failed to run notebook: 2_Polymer_chg_and_Polymer_creation_ Linea ...

后台发现您这边输入的单体SMILES过于复杂,在转化为SMILES转化为3D结构的过程出现了问题,导致失败,目前正在想方法解决。
作者
Author:
科研小白0126    时间: 2025-8-20 20:42
王纪峰 发表于 2025-8-20 20:12
后台发现您这边输入的单体SMILES过于复杂,在转化为SMILES转化为3D结构的过程出现了问题,导致失败,目前 ...

好的谢谢您
作者
Author:
王纪峰    时间: 2025-8-21 11:18
科研小白0126 发表于 2025-8-20 15:59
您好方便问一下您这是chemdraw哪个版本吗,我的ChemDraw 22.0.0 64未找到该工具

其实不需要使用工具来写键接位点,直接使用文本编辑,在键接位点处用文本写入*即可(注意对其位点)
作者
Author:
milk_q    时间: 2025-8-22 16:15
您好,感谢您的分享!请问我在构建mPEG44-NH2和聚氨基酸的复合物时报这个错误是什么原因,这是我的SMILES
Name        SMILES                                        Repeating Unit Number       
CO           CO[*]                                                        1
PEG         [*]CCO[*]                                                 44
CCN         [*]CCNH[*]                                                1
Tyr [*]NH3+[C@@H](Cc1ccc(O)cc1)C(=O)[*]              20





Failed to run notebook: 2_Polymer_chg_and_Polymer_creation_ Linear_polymer.ipynb
Return Code: 1
Standard Output:

Standard Error:
[NbConvertApp] Converting notebook /data/jupyternotebook_public/Project15_AI_ML_BMS_JZZ/cemp/media/Polymer/GeneratePolymer/20250822_154837_7f5274/2_Polymer_chg_and_Polymer_creation_ Linear_polymer.ipynb to notebook
Traceback (most recent call last):
  File "/data/jiazheju/anaconda3/envs/cemp_env/bin/jupyter-nbconvert", line 10, in
    sys.exit(main())
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/application.py", line 283, in launch_instance
    super().launch_instance(argv=argv, **kwargs)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/traitlets/config/application.py", line 1075, in launch_instance
    app.start()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 420, in start
    self.convert_notebooks()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 597, in convert_notebooks
    self.convert_single_notebook(notebook_filename)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 563, in convert_single_notebook
    output, resources = self.export_single_notebook(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 487, in export_single_notebook
    output, resources = self.exporter.from_filename(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 201, in from_filename
    return self.from_file(f, resources=resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 220, in from_file
    return self.from_notebook_node(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/notebook.py", line 36, in from_notebook_node
    nb_copy, resources = super().from_notebook_node(nb, resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 154, in from_notebook_node
    nb_copy, resources = self._preprocess(nb_copy, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 353, in _preprocess
    nbc, resc = preprocessor(nbc, resc)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/base.py", line 48, in __call__
    return self.preprocess(nb, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 103, in preprocess
    self.preprocess_cell(cell, resources, index)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 124, in preprocess_cell
    cell = self.execute_cell(cell, index, store_history=True)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
    return loop.run_until_complete(inner)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
    return future.result()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 1062, in async_execute_cell
    await self._check_raise_for_error(cell, cell_index, exec_reply)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 918, in _check_raise_for_error
    raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
# 创建聚合物块序列
block_sequence = []
for _ in range(number_of_blocks):
    for name, repeats in polymer_repeating_unit.items():
        block_sequence.extend([name] * repeats)
------------------


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[5], line 3
      1 # 创建聚合物块序列
      2 block_sequence = []
----> 3 for _ in range(number_of_blocks):
      4     for name, repeats in polymer_repeating_unit.items():
      5         block_sequence.extend([name] * repeats)

TypeError: 'numpy.float64' object cannot be interpreted as an integer
作者
Author:
王纪峰    时间: 2025-8-23 12:03
milk_q 发表于 2025-8-22 16:15
您好,感谢您的分享!请问我在构建mPEG44-NH2和聚氨基酸的复合物时报这个错误是什么原因,这是我的SMILES
...

您的CO只有一个键接位点,无法满足“首尾相连”的条件,所有输入的SMILES必须包含且仅包含2个键接位点*,请考虑CO的SMILES是否正确
作者
Author:
milk_q    时间: 2025-8-25 14:28
王纪峰 发表于 2025-8-23 12:03
您的CO只有一个键接位点,无法满足“首尾相连”的条件,所有输入的SMILES必须包含且仅包含2个键接位点*, ...

我的CO是CH3O封端,一个位点是没问题的
作者
Author:
牧生    时间: 2025-8-25 15:41
本帖最后由 牧生 于 2025-8-25 15:57 编辑
milk_q 发表于 2025-8-25 14:28
我的CO是CH3O封端,一个位点是没问题的

这个工具默认用H原子封端,不需要自己去考虑用什么封端。

况且对于研究一个长聚合物链的性质,端基是什么一点也不重要。

如果你非要指定端基,可以把你端基上那个甲基上的某个氢原子点为*,把氧原子画根线点上*,然后弄成嵌段聚合物,就这个端基选为1个重复。
作者
Author:
milk_q    时间: 2025-8-25 16:50
牧生 发表于 2025-8-25 15:41
这个工具默认用H原子封端,不需要自己去考虑用什么封端。

况且对于研究一个长聚合物链的性质,端基是 ...

我的表述有问题不是用甲氧基封端,是mPEG它的最左段是CH3O-,但是这个单元它不是重复单元,O再接乙二醇的重复单元,这个CH3O要怎么写SMILES,以及聚乙二醇单元右侧CH2-CH2-NH-Tyr,这一部分的SMILES怎么书写,请教一下
作者
Author:
牧生    时间: 2025-8-25 17:00
我做了一下
(, 下载次数 Times of downloads: 0)

这里就是甲氧基在最左边了,没有问题。
(, 下载次数 Times of downloads: 1)


你可以看一下我做的。
Your key is: gAAAAABorCBeVTNoeUopjYlao8PQ5tSkhS6mWbzjFlP-abWu_r3GQHePBHTobFU6jEv_UHuI1IUKqXqzoz01lLTr2dY-kUoUXRzxN2HABplFmA7QQloBtFcWFH_0n54bxFtu0L-LLCNTzkHlHgz4v8PnFqVZWR-9rg751d_PMC9_kYHEKGOjJ_ZFUNrkgqss5kEcb4kl2RDzg-_60XnCdp7LIqtXeybo6SaHwnEjjU6fJY467sFY9H2Wik6vWfwWqw7OXMIAP_z770QDLuEeFpsA8-Moi1fS3Gt-IkElXPwnDJulz0LEGqprs3fhrBx3qLTciv3jOsALbdL43njVfKk6cRNU4lKp56mMUFSFzbzjpqVwHeVSwXJGOzUYPr-N8grGDai1HjJSqB3AiL_WydH5eSnCZhfYgW-hp72RhsulI-8m__tDVVepNzW_zwXCk4F4VhbxOLTB


至于右边的末端是怎么样的,你可以照相同的方法去做。
作者
Author:
王纪峰    时间: 2025-8-25 19:26
牧生 发表于 2025-8-25 15:41
这个工具默认用H原子封端,不需要自己去考虑用什么封端。

况且对于研究一个长聚合物链的性质,端基是 ...

您给出的这个指定端基的方法非常简单有效,甚至开发的时候我都没有想到,感谢您给出了这个灵感
作者
Author:
2788155831    时间: 2025-8-28 11:57
大佬,请问这是什么问题呢
SMILES:CC(C(OCCOP(OCC[N+](C)(C)C)([O-])=O)=O)([*])C[*],均聚, 聚合度10,名称:MAPC
Failed to run notebook: 3_create_Polymer_itp_top.ipynb
Return Code: 1
Standard Output:
Initial conformer count: 50
75 attempts,  5 duplicates, 21 failed filter.
0 0 0 0 0 0 0 0 0 0
0 0 0 0 2 2 0 0 0 0
2 7 0 11 4 1 0 1 5 0
2 11 0 8 4 1 0 1 5 0
2 11 0 8 3 1 0 1 5 0
2 11 0 8 0 1 3 1 9 0
2 11 2 8 0 1 3 1 9 0
2 11 1 8 0 2 3 1 9 0
2 11 1 8 0 2 3 1 2 0
2 11 1 8 1 2 4 1 9 2
2 11 1 8 1 2 4 1 9 1
2 11 2 8 1 2 4 1 9 1
2 11 2 8 1 2 3 1 9 1
2 11 2 8 1 2 0 1 9 1
0 11 2 8 2 2 0 1 9 1
0 11 2 8 1 2 0 2 9 1
0 11 2 8 2 2 0 2 9 1
2 11 2 8 2 2 1 2 9 1
0 8 2 8 2 2 1 2 9 1
0 1 2 8 4 2 1 2 9 1
1 6 2 3 4 2 3 2 9 0
1 6 2 3 4 2 3 1 9 0
2 6 2 3 4 2 3 1 9 0
2 6 2 8 4 2 3 1 9 0
2 6 0 8 0 2 3 1 9 0
2 6 0 8 0 1 3 1 2 0
2 6 0 8 0 1 1 1 2 0
2 6 2 1 1 2 4 1 9 1
2 6 2 1 2 2 0 2 9 1
2 6 2 1 2 2 0 1 9 1
2 6 2 1 2 2 0 1 9 2
2 6 2 1 2 2 2 1 9 2
2 6 2 1 2 2 3 0 9 0
2 6 1 1 2 2 3 0 9 0
2 6 1 1 2 2 3 0 2 1
2 6 1 1 2 2 2 0 9 2
2 6 1 1 2 2 2 2 4 2
2 6 1 1 2 2 1 2 4 2
2 6 2 1 2 2 3 0 4 0
2 3 2 1 2 2 3 0 4 0
2 3 1 1 2 2 3 0 4 0
2 3 1 1 2 2 3 0 4 2
1 3 1 1 2 2 3 0 4 0
1 3 1 0 2 2 3 2 4 0
1 3 1 0 2 2 3 1 4 0
2 3 1 0 2 2 3 1 4 0
2 3 1 5 2 2 3 1 4 0
2 3 1 0 1 2 3 2 4 0
2 8 1 0 1 2 3 2 11 0
2 3 1 0 1 0 3 2 11 2

=====> Starting conformers search with a Genetic Algorithm <=====
Perform elitist generation replacement with mutation only
Mutation probability: 0.2
Will stop after 25 generations without improvement.

Generation #1  1.45357
Generation #2  1.5239
Generation #3  1.52817
Generation #4  1.56214
Generation #5  1.56214
Generation #6  1.56214
Generation #7  1.62632
Generation #8  1.62632
Generation #9  1.62632
Generation #10  1.62632
Generation #11  1.62632
Generation #12  1.62632
Generation #13  1.62632
Generation #14  1.62632
Generation #15  1.63665
Generation #16  1.63665
Generation #17  1.63665
Generation #18  1.64543
Generation #19  1.64543
Generation #20  1.64543
Generation #21  1.64543
Generation #22  1.64543
Generation #23  1.64543
Generation #24  1.64543
Generation #25  1.64543
Generation #26  1.64543
Generation #27  1.64543
Generation #28  1.64543
Generation #29  1.64543
Generation #30  1.64543
Generation #31  1.6512
Generation #32  1.6512
Generation #33  1.6512
Generation #34  1.6512
Generation #35  1.6512
Generation #36  1.6512
Generation #37  1.6512
Generation #38  1.6512
Generation #39  1.6512
Generation #40  1.65291
Generation #41  1.65291
Generation #42  1.65291
Generation #43  1.65291
Generation #44  1.65291
Generation #45  1.65291
Generation #46  1.65291
Generation #47  1.65291
Generation #48  1.65291
Generation #49  1.66003
Generation #50  1.66003
Generation #51  1.66003
Generation #52  1.66003
Generation #53  1.66003
Generation #54  1.66003
Generation #55  1.67593
Generation #56  1.67593
Generation #57  1.67593
Generation #58  1.67593
Generation #59  1.67593
Generation #60  1.67593
Generation #61  1.67593
Generation #62  1.67593
Generation #63  1.67593
Generation #64  1.67593
Generation #65  1.67593
Generation #66  1.67593
Generation #67  1.67593
Generation #68  1.67593
Generation #69  1.67593
Generation #70  1.67593
Generation #71  1.67593
Generation #72  1.67593
Generation #73  1.67593
Generation #74  1.67593
Generation #75  1.67593
Generation #76  1.67593
Generation #77  1.67593
Generation #78  1.67593
Generation #79  1.67593
Generation #80  1.67593
Generation #81  1.67593
0 11 2 1 0 0 1 0 9 2
1 2 1 11 2 0 4 0 11 2
2 7 0 4 4 2 4 0 9 2
1 2 0 5 0 2 3 1 10 1
2 0 2 5 0 2 3 1 2 0
1 3 1 0 2 0 4 2 9 2
2 11 0 3 1 0 4 0 9 2
2 7 0 4 1 2 4 2 9 2
1 2 2 11 3 0 3 0 4 0
1 0 2 5 0 2 3 1 2 0
2 6 2 7 2 0 4 2 4 0
2 6 0 1 2 2 0 0 5 0
2 6 0 1 2 0 0 0 5 0
1 6 1 3 0 2 3 1 2 2
0 11 0 3 0 2 3 0 9 1
2 11 0 4 1 2 4 2 9 2
0 6 0 1 2 2 0 0 9 1
1 11 0 2 0 2 3 0 11 0
2 11 0 4 1 2 4 0 9 2
1 11 1 5 0 2 3 1 2 0
0 6 0 1 3 1 0 2 5 1
0 9 0 11 2 2 0 2 5 1
2 9 2 3 1 2 4 1 3 2
0 11 1 3 0 2 3 0 2 1
1 11 0 5 0 1 3 1 2 1
1 11 1 5 3 2 3 0 2 0
0 5 0 1 0 1 1 2 3 1
1 11 0 2 0 2 1 1 2 2
0 11 0 5 3 2 3 0 2 0
2 6 2 2 2 2 0 2 3 0
1 11 2 8 3 2 3 0 9 0
0 11 0 1 2 0 0 0 5 0
1 6 2 3 0 2 3 1 2 2
1 6 2 3 0 0 0 0 11 1
0 6 2 1 2 2 1 0 5 2
0 11 0 5 0 2 3 1 2 1
1 11 2 5 0 1 3 1 2 1
0 11 2 1 0 2 1 0 9 1
2 1 2 8 2 1 4 2 4 0
2 2 1 3 2 2 4 2 4 2
0 9 2 6 1 0 4 2 0 2
1 11 2 8 3 1 3 1 9 0
0 5 1 5 0 2 3 1 2 0
0 9 2 3 1 2 4 0 3 2
1 11 1 5 0 1 3 1 5 0
0 11 2 1 2 2 1 0 5 0
0 11 0 5 4 1 3 1 2 1
0 5 2 4 0 2 3 0 1 1
1 9 2 11 2 2 3 2 4 0
2 6 1 2 2 2 0 2 3 0
GetConformers:
0 11 2 1 0 0 1 0 9 2
1 2 1 11 2 0 4 0 11 2
2 7 0 4 4 2 4 0 9 2
1 2 0 5 0 2 3 1 10 1
2 0 2 5 0 2 3 1 2 0
1 3 1 0 2 0 4 2 9 2
2 11 0 3 1 0 4 0 9 2
2 7 0 4 1 2 4 2 9 2
1 2 2 11 3 0 3 0 4 0
1 0 2 5 0 2 3 1 2 0
2 6 2 7 2 0 4 2 4 0
2 6 0 1 2 2 0 0 5 0
2 6 0 1 2 0 0 0 5 0
1 6 1 3 0 2 3 1 2 2
0 11 0 3 0 2 3 0 9 1
2 11 0 4 1 2 4 2 9 2
0 6 0 1 2 2 0 0 9 1
1 11 0 2 0 2 3 0 11 0
2 11 0 4 1 2 4 0 9 2
1 11 1 5 0 2 3 1 2 0
0 6 0 1 3 1 0 2 5 1
0 9 0 11 2 2 0 2 5 1
2 9 2 3 1 2 4 1 3 2
0 11 1 3 0 2 3 0 2 1
1 11 0 5 0 1 3 1 2 1
1 11 1 5 3 2 3 0 2 0
0 5 0 1 0 1 1 2 3 1
1 11 0 2 0 2 1 1 2 2
0 11 0 5 3 2 3 0 2 0
2 6 2 2 2 2 0 2 3 0
1 11 2 8 3 2 3 0 9 0
0 11 0 1 2 0 0 0 5 0
1 6 2 3 0 2 3 1 2 2
1 6 2 3 0 0 0 0 11 1
0 6 2 1 2 2 1 0 5 2
0 11 0 5 0 2 3 1 2 1
1 11 2 5 0 1 3 1 2 1
0 11 2 1 0 2 1 0 9 1
2 1 2 8 2 1 4 2 4 0
2 2 1 3 2 2 4 2 4 2
0 9 2 6 1 0 4 2 0 2
1 11 2 8 3 1 3 1 9 0
0 5 1 5 0 2 3 1 2 0
0 9 2 3 1 2 4 0 3 2
1 11 1 5 0 1 3 1 5 0
0 11 2 1 2 2 1 0 5 0
0 11 0 5 4 1 3 1 2 1
0 5 2 4 0 2 3 0 1 1
1 9 2 11 2 2 3 2 4 0
2 6 1 2 2 2 0 2 3 0

Standard Error:
[NbConvertApp] Converting notebook /data/jupyternotebook_public/Project15_AI_ML_BMS_JZZ/cemp/media/Polymer/GeneratePolymer/20250828_103810_f737e6/3_create_Polymer_itp_top.ipynb to notebook
Traceback (most recent call last):
  File "/data/jiazheju/anaconda3/envs/cemp_env/bin/jupyter-nbconvert", line 10, in
    sys.exit(main())
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/application.py", line 283, in launch_instance
    super().launch_instance(argv=argv, **kwargs)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/traitlets/config/application.py", line 1075, in launch_instance
    app.start()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 420, in start
    self.convert_notebooks()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 597, in convert_notebooks
    self.convert_single_notebook(notebook_filename)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 563, in convert_single_notebook
    output, resources = self.export_single_notebook(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/nbconvertapp.py", line 487, in export_single_notebook
    output, resources = self.exporter.from_filename(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 201, in from_filename
    return self.from_file(f, resources=resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 220, in from_file
    return self.from_notebook_node(
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/notebook.py", line 36, in from_notebook_node
    nb_copy, resources = super().from_notebook_node(nb, resources, **kw)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 154, in from_notebook_node
    nb_copy, resources = self._preprocess(nb_copy, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/exporters/exporter.py", line 353, in _preprocess
    nbc, resc = preprocessor(nbc, resc)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/base.py", line 48, in __call__
    return self.preprocess(nb, resources)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 103, in preprocess
    self.preprocess_cell(cell, resources, index)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbconvert/preprocessors/execute.py", line 124, in preprocess_cell
    cell = self.execute_cell(cell, index, store_history=True)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
    return loop.run_until_complete(inner)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
    return future.result()
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 1062, in async_execute_cell
    await self._check_raise_for_error(cell, cell_index, exec_reply)
  File "/data/jiazheju/anaconda3/envs/cemp_env/lib/python3.9/site-packages/nbclient/client.py", line 918, in _check_raise_for_error
    raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
# 创建使用原子名称{atom_type}_{name}代替索引与原子编号的copolymer的fake itp文件
generate_fake_itp_for_copolymer(df, polymer_node_list_path="polymer_node_list.json")

------------------


---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[21], line 2
      1 # 创建使用原子名称{atom_type}_{name}代替索引与原子编号的copolymer的fake itp文件
----> 2 generate_fake_itp_for_copolymer(df, polymer_node_list_path="polymer_node_list.json")

Cell In[20], line 34, in generate_fake_itp_for_copolymer(df, polymer_node_list_path)
     31     raise ValueError("第一条 copolymer_name 为空或无效。")
     33 # ========================= 1) 读取 atom_list =========================
---> 34 atom_list = load_polymer_atom_list(polymer_node_list_path)  # 中文注释:从 polymer_node_list_path 读取节点列表
     36 # 将形如“{name}_{i}”的字符串统一裁剪为“{name}”;仅当末尾为“_纯数字”时才去掉
     37 '''
     38 由于atom_list = load_polymer_atom_list(polymer_node_list_path)的atom_list中的元素形如:“C0_test_C_C_20250821_1”,其结构为“{name}_{i}”,即
     39 name为C0_test_C_C_20250821,也有可能是其他任何输入值,而{i}在这里为1,
     40 现在我希望你在原来代码的基础上多补充代码,作用为:
     41 将结构为“{name}_{i}”的元素全部转化为“{name}”,你不需要给出全部代码,只需要告诉我应该在哪里修改以及具体增补代码即可。
     42 '''

Cell In[10], line 16, in load_polymer_atom_list(file_path)
     14 # 中文注释:基本存在性检查,便于友好报错
     15 if not os.path.isfile(file_path):
---> 16     raise FileNotFoundError(f"未找到文件:{file_path}")
     18 # 中文注释:读取JSON并解析为Python对象
     19 with open(file_path, "r", encoding="utf-8") as f:

FileNotFoundError: 未找到文件:polymer_node_list.json
作者
Author:
sarphuart    时间: 2025-8-28 12:39
请问羧基带电均聚物能生成带整数电荷的拓扑文件吗
作者
Author:
王纪峰    时间: 2025-8-29 16:08
sarphuart 发表于 2025-8-28 12:39
请问羧基带电均聚物能生成带整数电荷的拓扑文件吗

完全可以的,程序设计之初完全考虑了带电问题,您只需要在chemdraw中绘制带电位点然后转化为PSMILES即可
作者
Author:
王纪峰    时间: 2025-8-29 16:09
2788155831 发表于 2025-8-28 11:57
大佬,请问这是什么问题呢
SMILES:CC(C(OCCOP(OCC[N+](C)(C)C)([O-])=O)=O)(
  • )C
  • ,均聚, 聚合度10,名称 ...

  • 麻烦发一下任务ID号哈,需要ID号才能定位有问题的任务
    作者
    Author:
    牧生    时间: 2025-8-30 10:53
    现在返回的所有的分子,都叫做MOL。能不能把每个不同种类的单元,自己去指定一个残基名,比如丙烯酰胺和丙烯酸共聚物,可以让我指定让残基名叫做PAM和PAA,而不是统一都叫做MOL。
    作者
    Author:
    王纪峰    时间: 2025-8-30 20:11
    牧生 发表于 2025-8-30 10:53
    现在返回的所有的分子,都叫做MOL。能不能把每个不同种类的单元,自己去指定一个残基名,比如丙烯酰胺和丙 ...

    可以的,这个从算法上来说不难修改,近期就会修改,上线了通知您一声。
    作者
    Author:
    2788155831    时间: 2025-9-1 09:36
    王纪峰 发表于 2025-8-29 16:09
    麻烦发一下任务ID号哈,需要ID号才能定位有问题的任务

    不好意思哈, 任务ID是gAAAAABor8ESM8Ti9PLbew1bpwBowA71DnsD_h5g6kQiE5SKYUonG9JyAUpAnjGv01_EbcgWT22-1qhLaHAfzoAhYHmkbdP-_rhhCij3ZbBXwd7odrc3yelKnJvA9UrQ9EQiOoE2zhaVHqnzGC7JsiRdZEq7Qm5s9EteUWzEOgJI1MEaE8Ho8BzAEa6GvfqleePIYitv_v1fdL23cIuk7qLSRBV3iLpTZTLTGQ7oobvD7gJJcjSlDGVtZU9iiltdhEOjiK5zdrM7Cm8AtfOCpk6snkJKDrO2P5w7Vk-7m5KpyUG8biPpuDeeVmDXt2U-kObO5akDwnRbFV5CRcoBo7ky7OVVAunaBLOR3I6246xAYya8QQkfY0gnurPH-x3JOU4QYEtGDDe2P3F4RxTBSzCXeijxWrsk3-uL8JK9SXluHuL9CvS7X-c=
    作者
    Author:
    ljh123    时间: 2025-9-1 19:43
    期待适配lammps
    作者
    Author:
    牧生    时间: 2025-9-13 14:55
    本帖最后由 牧生 于 2025-9-13 14:57 编辑

    gAAAAABoxQ1i4DcWFWyuLdqYnqomWRpp7IZxOPFpV5GuM_nL9paGf6Obkp9Tb0BBN8aH_i5XKOQGO_3ZBmhuveV_WuYxnJxM9eCBiDljq-YUhY4R1JE-nRCynyOFzSReb2MbcVDFiygwI82F1_rs4X7PllxgVh7fMvVy0LrSxjmSFdZgTITRr6rMGHBbGEcUUmh4-FT6lsUPmICE0toLBtiUTnaE0ivz4nFbYa2HMg_iCscjxRsfsiwd17fj20355lKC9_HLusSYPr4CwZPkL9hAGje9PAl9s6MGQ28Tyb51bBIYw0wfHOuSJ0bn2qrdzNDxO8OwimMF_Gw09iYyMx4nR59GK87pcqliPpI4KLD1lX80Rai9nlBkDvFrdW4-a5YBiVBZUTCRM4d-GnidalzXPCQjUcyd3w_f1nJFIjX9UB1R1G-zxSh0JWT3aBqhSw3Umxwg7S02


    请帮我看一下这个嵌段聚合物,是PEG和甲基丙烯酸二甲胺乙酯的嵌段物,但是最终的总电荷不为0,这是为什么呢

    如果重复单元数更多,将导致电荷偏离0更多。

    作者
    Author:
    milk_q    时间: 2025-9-25 20:56
    求助一下,我的taskIDgAAAAABoypz9Mwgn8atgRX9YmKL0afOtvxQHWumwamrKuZgsil3hXFZaHCNnAhwGNP9NCULt3vicJV2H4AllWIr5J-ltoX495HuYKKlvSD8abpEgzCk4eRqaANlIuhnh_Cmk-LZ-PAVwNKGN_PJBTqqSmU6PFvo_YJhmYc5bci9FH3hjTkR03xEJ92AnbbFZQe1OnDVJjJm4Ik9C3pDNaqhOV_vgwFwco3ESvyrztrVwxbzwoUD2Kufkz6pO-YMYBRmO2EArrub18uRFSqMXESgATV-XEE811MyXxb8IMIssyKjNBWPEpwoL6QauByn4mdM-JS4k5BkZ7_6Mgbf2HVkwwqvLzgd5GDLqwrxyWDkCyWtb6RyRr3p4UHoSIdKqmMYBukjB5w808M8Qk-PnseJCqy73oxNHBg3C3TgL6p45LJ_syP7c7G_8oX5iOrRx3v25TcRUpZBU,9.17的,还是显示Task is still processing. Please check again later.是怎么回事
    作者
    Author:
    Xexhauster    时间: 2025-10-9 17:20
    求助 status显示success后,下载的all_results.zip里是空的,这是为什么
    gAAAAABo53PsIAsBSiZgcwmhXKarzCLdX5Y288tU3hV4VL4lqQ5qQ1ax_9_k4mFZDN8x4aGk5ZYf5YpVmnsOIbwBVEyic0hpe7Uf6DorAloKo_q1E7cXRUBzTc8s-eVlEIz30AH-GTmi1J3AWDb7y7PFsQ1gA8vWbUboYU2sVu0X9kSUDYJY29LDhAXWBTg8NnbInS1i91IupHB1BSjvW7NRmGUzHYMM_Qp8eJhwgYQyQCjZNnQDDfTDRjW7M4yZIk7l9Hq5oFEQ3cHEUcabZ93MinP3nOwiqwZHLL0wtVRza8mls7fr7C3GYB1HQNvzJHcE9jTSb81cGQBP2f1LerMuX0NIXcNulJVx1x4wnT42vf0z0R_URe3B77wCsIzg5QULGCna6BZvV-x4dS3ITOCO80D-irho5tGXCjPuE_i6M72WkVKOQD8=
    作者
    Author:
    zhouhaifan    时间: 2025-10-10 17:02
    Xexhauster 发表于 2025-10-9 17:20
    求助 status显示success后,下载的all_results.zip里是空的,这是为什么
    gAAAAABo53PsIAsBSiZgcwmhXKarzCL ...

    我也是今天下午提交的,状态显示成功了,但是下载出来显示是一个空的

    作者
    Author:
    牧生    时间: 2025-10-20 08:59
    本帖最后由 牧生 于 2025-10-20 09:06 编辑

    gAAAAABo9YWvPKeeu0Woyjb1k5FG9gSi9scycKWyiETrnhqI_D5CUeEZ7h49TszCUccE1tmLRQn5j89Y8tyYpPIbVO6IWRjmz8J0KUvalfOBbFvlFJv4LYdjFl9jDubYh0RqBm8MGKZbZ7GoW1RpkBDT1-HE6J49H5lupV0mL9xUYplSSNNyYLizJ-7iCAQHEPeFNsX378V*So9rm8K3XC6AyZyQL9OWlYm_z6j1_arJcz13-oBgKAKXPRBPT1CPZjq_lFzAYAC-oGBD4olrSbOcFhyRhvKBi_ZOKbjVlzLUw7fSlzG6wZENRJEeJr5Z0C8yfTCpMtKHBIpKWuLCELOs6GLZDoycAaF1k_KGUM8_3A7H9IhP-uwPEpKnr-fL6118suHWf0itGCmUpPAMrvCPuCMmevduo8-VcKpeaJB_An2eqv7AvNiJgkYSMRlzh0PujbSCv8Ue


    请帮忙看一下,近日发现生成的聚合物的总电荷不太对劲。。

    如上是我用9个不带电的丙烯酰胺和带1个带-1电荷的丙烯酸得到的无规聚合物,但是得到的总电荷为 +7.460962
    作者
    Author:
    白也    时间: 2025-11-3 16:19
    今天简单使用了一下,挺不错,有几个问题和建议:
    1. 今天试的两个例子均出现了原子净电荷不为0的问题,1400左右原子大概会有5个电荷的偏差;
    2. 可以添加个选项,不进行原子电荷计算,只输出结构(考虑到有些用户可能只需要结构),这样会降低不必要的机时消耗;
    3. 考虑到聚合物这么大的体系,体系优化也没必要使用6-311G**这么大的基组,一般的6-31g*其实就可以,orca中的B97-3c方法是一个很好的选择,或者是xtb的GFN0-xTB方法。
    最后,感谢大佬耗费精力做的网页
    作者
    Author:
    yuzc    时间: 2025-12-5 14:14
    王博,太好用了。诸如CMC-阴离子,聚离子液体等结构的无规共聚也能完全重现出所需要的partial charge。对称共轭位置上也是相等的电荷和同样的力场类型。
    此外我完全同意楼上的一个建议,就是给出选项不计算电荷或给出快速的MMFF94电荷,同时保留RESP电荷计算时的大基组,高标准高精度。

    作者
    Author:
    archer    时间: 2025-12-12 11:32
    进入网页,为什么点击不了generate polymer




    欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3