计算化学公社

 找回密码 Forget password
 注册 Register
Views: 497|回复 Reply: 27
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] 可生成任意聚合度线形聚合物结构、拓扑以及电荷的在线程序

[复制链接 Copy URL]

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

本帖最后由 王纪峰 于 2025-8-18 16:21 编辑

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


使用方法:
(1)首先进入CEMP平台的聚合物模块(https://cleanenergymaterials.cn/polymer/generate_polymer_display),然后按照下图按顺序填写内容。

其中需要特别注意的是,组分的SMILES必须含有明确的键接位点,例如对于乙烯基片段,应该写成 (论坛似乎打不出来这个“方括号+星号+方括号”),而非CC,如果不按照要求,则会报错。
这种SMILES的获取方式可以通过chemdraw绘制,如下图所示:

绘制后,框选分子,右键——molecule——copy as——SMILES,即可将分子复制到黏贴版上
除此之外,还需要注意Name必须由“英文字母”,“下划线”“数字”构成(或者只包含英文字母),如果只使用数字,则可能产生不识别的问题。

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


(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号,用户此时可以等待任务完成,任务完成后会发送提醒邮件到用户的注册邮箱中。

(3)任务完成后,进入Query查询界面(https://cleanenergymaterials.cn/query/),上进行查看任务进度,任务完成后,将任务的TASK ID输入到上方搜索框中,并提交。

此时会返回绘图文件的下载链接。

(4)其中第一个链接为用户填写的表格,第二个链接为生成的聚合物的结构和拓扑文件:

查看生成的效果:

查看给出的itp以及top文件


注意事项:
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平台arXiv preprint arXiv:2507.04423, 2025.





202508181218235700..png (177.38 KB, 下载次数 Times of downloads: 0)

202508181218235700..png

202508181621313782..png (444.97 KB, 下载次数 Times of downloads: 0)

202508181621313782..png

评分 Rate

参与人数
Participants 6
威望 +1 eV +23 收起 理由
Reason
PLwang + 5 非常好的平台。汪老师组开发的这个系统非常.
牧生 + 5 极度好用,非常感谢
hdhxx123 + 3 GJ!
sarphuart + 5 GJ!
sobereva + 1
naoki + 5 谢谢分享

查看全部评分 View all ratings

复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

1489

帖子

0

威望

4565

eV
积分
6054

Level 6 (一方通行)

2#
发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 牧生 于 2025-8-18 13:58 编辑

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

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

图中略有点看不清,可能说的是有个符号 。。


第一个问题:

我用一个简单的结构去试试

得到

  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 或者 ,或者 ,都不行。。







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

又菜又爱玩

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author
牧生 发表于 2025-8-18 13:16
可以说是很多人的急需了。但是我还是有点疑问。

这里没看懂噢

感谢您的建议!
对于第一个问题:的确帖子内好像打不出“方括号+星号+方括号”,SMILES的输入就应该是您说的这个形式,含有键接位点。这个问题我已在帖子内更正。
对于第二个问题,我发现问题出在Name的命名上,导致没有被识别,您可能需要使用“英文字母,下划线,数字”组成的Name进行命名,我修改Name后可以成功运行。(这点我在帖子中已强调)
对于第三个问题,丙烯酰胺的结构,我这边后台看到您使用(含有键接位点的SMILES)任务成功了,的应该已经success了,您可以再试一试看看。
再次感谢您愿意抽出时间测试
复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

1489

帖子

0

威望

4565

eV
积分
6054

Level 6 (一方通行)

4#
发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 牧生 于 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






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



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

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


然后查询得到的结果看起来都对。


下载回来得到一个压缩包,解压得到


但是VMD打开就不对了


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

202508181618307343..png (40.54 KB, 下载次数 Times of downloads: 0)

202508181618307343..png
又菜又爱玩

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

5#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author

C=CC(N)=O的聚合物形式应该写成上图所示:必须要暴露出来键接位点
复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

6#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 王纪峰 于 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的使用已经添加在帖子的描述中。
复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

1489

帖子

0

威望

4565

eV
积分
6054

Level 6 (一方通行)

7#
发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 牧生 于 2025-8-18 17:14 编辑

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




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



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





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

59

帖子

0

威望

1163

eV
积分
1222

Level 4 (黑子)

8#
发表于 Post on 4 day ago | 只看该作者 Only view this author
测试了一下,发现得到的聚合物结构主链是随机弯曲折叠的,请问实际中这种随机的弯曲折叠对链的性质会有实际影响吗?

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

9#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 王纪峰 于 2025-8-18 18:54 编辑
lmch 发表于 2025-8-18 17:37
测试了一下,发现得到的聚合物结构主链是随机弯曲折叠的,请问实际中这种随机的弯曲折叠对链的性质会有实际 ...

影响是有的,一般来说比较适合那种无定形,非刚性的聚合物。如果是刚性聚合物,降低重复单元数量,同样也能生成相对刚性的线性结构。
还有值得注意的是,如果对聚合物构象要求比较高,生成的结果需要事先跑NVT让其预平衡一下,不过这样比较麻烦了。
复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

10#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author
本帖最后由 王纪峰 于 2025-8-18 20:48 编辑
牧生 发表于 2025-8-18 16:58
第一个问题,得到的聚合物是一个简单的重复的结构,似乎没有考虑端基饱和的问题

第一个问题:感谢您的建议,端基饱和目前只支持采用H饱和,因为我所接触的大部分研究中对端基研究较少,基本都是对聚合物本身结构进行研究的,不过从算法层面上来说,用什么基团饱和都是可以调整的,之后我可以逐步新增功能对其调整。
第二个问题:本身就是一个表格文件以及一个文件夹
第三个问题,这边给出一个非常详细的示例,后台看到您的丙烯酸加了双键,但是实际在聚合时,双键是打开的,所以导致了原子电荷不匹配的问题。

提交计算
查看结果
结果一个为表格,一个为文件夹(文件夹里包含拓扑文件polymer_topology与结构文件polymer_structure)
结构文件:
电荷文件
示例的ID号(您可以输入该ID查看结果)
gAAAAABooxp5gWk8Nk4Deu2ene6m5olf9X_0chNbeuyNR3k_UFTEUvKHkLSuKxiec3elzUyhsxRmz03XQ4iBVjtwjB3VgUQ6ME3xsp17f4Kk8BuOXA2nGXEXjaYrZv4jN9rDC6TGLOwaS9w4P_z2VjepsiwAZAqMczaOas1V6cb825eJGqMdbwlI1ly6X5NbgOXqRH8Kq8ymufpWmAk9JyTr5lKXj-24L-5PjxNKwGdoEW5iZTCohaNtNOkNBMgLbOXHVYdA-lW8q7sCKogaVGM8mQnznKQltkNeiuOhMuhzT6hky9l2ryRhAb73xIvYPTzlSbLr3une2DiPCYyKgiq-P1wRWjObMWkhXd_lijUjiqlLzUnMBQ0mL8vxbf6RvoLRYX4Dzw0h7JdkT3zaXUzg3BndFyTgr6qQ94RgLKJdmd_kcVzAE9w=





202508182046281823..png (266.31 KB, 下载次数 Times of downloads: 0)

202508182046281823..png

202508182045236919..png (40.79 KB, 下载次数 Times of downloads: 0)

202508182045236919..png
复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

399

帖子

0

威望

2347

eV
积分
2746

Level 5 (御坂)

所念皆星河

11#
发表于 Post on 3 day ago | 只看该作者 Only view this author
本帖最后由 含光君 于 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,



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




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

心之所向,日复一日,必有精进

1489

帖子

0

威望

4565

eV
积分
6054

Level 6 (一方通行)

12#
发表于 Post on 3 day ago | 只看该作者 Only view this author
本帖最后由 牧生 于 2025-8-19 13:07 编辑

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

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

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

又菜又爱玩

27

帖子

2

威望

208

eV
积分
275

Level 3 能力者

13#
 楼主 Author| 发表于 Post on 3 day ago | 只看该作者 Only view this author
含光君 发表于 2025-8-19 10:28
感谢楼主分享,我提交了一个任务,但不太明白结果从哪里获取。

邮箱收到的邮件提示:

后台检查发现您的SMILES(gr1)解析存在问题,可能需要进一步核对,您的N原子化合价不对

复旦大学 高分子科学系 博士一年级 理论计算与人工智能方向

399

帖子

0

威望

2347

eV
积分
2746

Level 5 (御坂)

所念皆星河

14#
发表于 Post on 3 day ago | 只看该作者 Only view this author
王纪峰 发表于 2025-8-19 14:25
后台检查发现您的SMILES(gr1)解析存在问题,可能需要进一步核对,您的N原子化合价不对

明白啦,我再check一下,谢谢楼主
心之所向,日复一日,必有精进

49

帖子

0

威望

325

eV
积分
374

Level 3 能力者

15#
发表于 Post on 3 day ago | 只看该作者 Only view this author
大佬我这是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'

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-22 12:44 , Processed in 0.197444 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list