Cosmo-Rs.

(供稿人 Bas van Beek.)

cosmo-rs可以使用plams使用 CRSJob 班级和相应的 CRSResults, 既尊重亚亚类 SCMJobSCMResults.

笔记

还有 一个教程,显示完整代码示例 可用于Cosmo-RS文档。有几个模板可用于其他问题类型,工作流等,可以轻松自定义。

设置

例如,考虑到COSMO-RS的以下输入文件 Sigma-剖面计算[1 ]:

compound /path//file.t21
    frac1 1.0
end

property puresigmaprofile
    nprofile 50
    pure
    sigmamax 0.025
end

temperature 298.15

上面显示的输入文件对应于以下设置:

>>> from scm.plams import  设置 , CRSJob

>>> s =  设置 ()

>>> s.input.compound._h = '/path/to/file.t21'
>>> s.input.compound.frac1 = 1.0
>>> s.input.property._h = 'puresigmaprofile'
>>> s.input.property.nprofile = 50
>>> s.input.property.sigmamax = 0.025
>>> s.input.property.pure = ''
>>> s.input.temperature = 298.15

>>> my_job = CRSJob(settings=s)
>>> my_results = my_job.run()

或者,可以创建一个 CRSJob 从runscript创建的实例, for example, the ADF GUI (File -> Save as )。

>>> from scm.plams import CRSJob

>>> filename = 'path/to/my/crs/inputfile.run'
>>> my_job = CRSJob.from_inputfile(filename)
>>> my_results = my_job.run()

具有多种化合物的设置

比人们更频繁地对的属性感兴趣 多组分混合物( 例如 a dissolved solute). In such cases one has to pass multiple compound blocks to 输入文件,这与Python词典有些问题 (including 设置 )只能包含一组唯一键。

通过更改值可以解决这个问题 compound 来自A. 设置 实例到多个列表中 设置 instances. Each item within this list is expanded into its own compound block once CRSJob.run() creates the actual input file.

例子 设置 三种化合物:

>>> from scm.plams import  设置 , CRSJob

>>> compound1, compound2, compound3 =  设置 (),  设置 (),  设置 ()

>>> compound1._h = '/path/to/coumpound1.t21'
>>> compound1.frac1 = 0.33
>>> compound2._h = '/path/to/coumpound2.t21'
>>> compound2.frac1 = 0.33
>>> compound3._h = '/path/to/coumpound3.t21'
>>> compound3.frac1 = 0.33

>>> s =  设置 ()
>>> s.input.compound = [compound1, compound2, compound3]

>>> my_job = CRSJob(settings=s)
>>> my_results = my_job.run()

它产生以下输入:

compound /path//coumpound1.t21
    frac1 0.33
end

compound /path//coumpound2.t21
    frac1 0.33
end

compound /path//coumpound3.t21
    frac1 0.33
end

adf和crsjob.

PLAM中呈现了一个工作流程 食谱 . 在此工作流程中,我们遵循通常的过程生成运行Cosmo-RS和COSMO-SAC计算所需的输入。

Cosmo-Rs.Parameters

大量可配置 参数 适用于Cosmo-rs。 如果有人有兴趣运行多个作业,则可以使用它来存储参数 在单独的字典/ 设置 实例并根据需要更新作业设置, 双倍,所以如果一个人想要使用多个不同的paramater集。

下面提供默认cosmo-rs paramaters( IE。 adf. Combi2005):

>>> from scm.plams import  设置 

# ADF Combi2005 COSMO-RS parameters
>>> adf_combi2005 = {
...     'crsparameters': {
...         '_1': 'HB_HNOF',
...         '_2': 'HB_TEMP',
...         '_3': 'FAST',
...         '_4': 'COMBI2005',
...         'rav': 0.400,
...         'aprime': 1510.0,
...         'fcorr': 2.802,
...         'chb': 8850.0,
...         'sigmahbond': 0.00854,
...         'aeff': 6.94,
...         'lambda': 0.130,
...         'omega': -0.212,
...         'eta': -9.65,
...         'chortf': 0.816
...     },
...     'dispersion': {
...         'H': -0.0340,
...         'C': -0.0356,
...         'N': -0.0224,
...         'O': -0.0333,
...         'F': -0.026,
...         'Si': -0.04,
...         'P': -0.045,
...         'S': -0.052,
...         'Cl': -0.0485,
...         'Br': -0.055,
...         'I': -0.062
...     }
... }

>>> s_list = [ 设置 (),  设置 (),  设置 ()]
>>> for s in s_list:
...     s.input.update(adf_combi2005)

>>> print([s.input == adf_combi2005 for s in s_list])
[True, True, True]

数据分析和绘图

作为COSMO-RS可以产生各种数据系列, 可以使用许多专业方法 CRSResults 为了他们的提取和分析。 得到的数据存储在Numpy阵列的字典中或(可选)a 熊猫 dataframe..

这 extracted data can be further customized by altering the argument. For example, by default CRSResults.get_solubility() will extract the solubility in mol solute per liter solvent ("subsection=mol_per_L_solvent" )。 This can be changed in, for example, gram per liter solvent ("subsection=m_per_L_solvent") or the solute mass fraction ("massfrac" )。

可以获得所有可用部分和小节的完整概述 by calling the KFFile.get_skeleton() KF二进制文件的方法 ( 例如 print(my_results._kf.get_skeleton()) )。

数量 数据提取方法
Sigma概况 CRSResults.get_sigma_profile()
Sigma潜力 CRSResults.get_sigma_potential()
蒸汽压力 CRSResults.get_vapor_pressure()
沸点 CRSResults.get_boiling_point()
溶解度 CRSResults.get_solubility()
二元混合物 CRSResults.get_bi_mixture()
三元混合物 CRSResults.get_tri_mixture()
溶剂组合线 CRSResults.get_composition_line()

如果是 matplotlib. 包装安装而不是通过传递轻易绘制的数据 it to the CRSResults.plot() method ( 例如 CRSResults.plot(my_sigma_profile) ):

>>> from scm.plams import  设置 , CRSJob
>>> import numpy as np

>>> s =  设置 ()

>>> s.input.compound._h = '/path/to/Water.coskf'
>>> s.input.compound.frac1 = 1.0
>>> s.input.property._h = 'puresigmaprofile'
>>> s.input.property.nprofile = 50
>>> s.input.property.sigmamax = 0.025
>>> s.input.property.pure = ''
>>> s.input.temperature = 298.15

>>> my_job = CRSJob(settings=s)
>>> my_results = my_job.run()

>>> my_sigma_profile = my_results.get_sigma_profile()
>>> with np.printoptions(threshold=0, edgeitems=5 ): 
...     print(sigma_profile)
{'Water.coskf': array([0., 0., 0., 0., 0., ..., 0., 0., 0., 0., 0.]),
 'σ (e/A**2)': array([-0.25, -0.24, -0.23, -0.22, -0.21, ...,  0.21,  0.22,  0.23,  0.24, 0.25])}

>>> my_results.plot(my_sigma_profile)
../_images/sigma_profile.png

API.

班级 CRSJob( ** kwargs. ) [来源]

A SCMJob 用于运行Cosmo-RS作业的子类。

_result_type

别名 CRSResults

__init__( ** kwargs. ) → None [来源]

初始化A. CRSJob instance.

静止的 cos_to_coskf(文件名:str.) → str [来源]

Convert a .cos file into a .coskf file with the $AMSBIN/cosmo2kf command.

返回新的.coskf文件的文件名。

班级 CRSResults( 工作 ) [来源]

A SCMResults 用于访问结果的子类 CRSJob.

get_energy(Energy_type:str ='deltag', compile_idx:int = 0, 单位:str ='kcal / mol') → float [来源]

从活性系数计算返回溶质溶剂化能量。

get_activity_coefficient(compile_idx:int = 0) → float [来源]

从活动系数计算返回溶质活动系数。

get_sigma_profile(第:str ='profil', AS_DF:BOOL = FALSE) → dict [来源]

抓住所有SIGMA配置文件,返回NUMPY阵列的字典。

价值 \(\ sigma \) are stored under the (e/A**2)" key.

结果可以按设置作为Pandas DataFrame返回 AS_DF. True.

返回的结果可以通过将它们传递给 CRSResults.plot() method.

笔记

AS_DF. = True requires the 熊猫 package. 策划需要 matplotlib. package.

get_sigma_potential(第:str ='mu', 单位:str ='kcal / mol', AS_DF:BOOL = FALSE) → dict [来源]

抓住所有SIGMA配置文件,表达 单元 ,并返回numpy阵列的字典。

价值 \(\ sigma \) are stored under the (e/A**2)" key.

结果可以按设置作为Pandas DataFrame返回 AS_DF. True.

返回的结果可以通过将它们传递给 CRSResults.plot() method.

笔记

AS_DF. = True requires the 熊猫 package. 策划需要 matplotlib. package.

get_prop_names(部分=无) → list [来源]

阅读.crskf文件的一部分并返回计算的属性列表。可以提供该部分参数来查看以前计算的结果。如果没有提供部分名称,则函数默认使用计算的最新属性。

get_results(部分=无) → dict [来源]

从最近的计算类型中读取该部分并将结果作为字典返回。

plot( *阵列 , X_AXIS:str = none, plot_fig. :bool = true, x_label = none, y_label = none) [来源]

绘图,显示并返回一系列Cosmo-RS结果作为Matplotlib图图。

接受输出, 例如 , CRSResults.get_sigma_profile(): numpy arrays字典或熊猫dataframe。

返回matplotlib. 数字 实例可以进一步修改给用户喜欢。 可以禁用所得到的数字的自动绘图 plot_fig. argument.

笔记

这种方法需要 matplotlib. package.

笔记

包含索引的字典/ dataframe键的名称( IE。 the x-axis) can, 而应该手动指定 X_AXIS. 如果是习俗 X_AXIS. is passed to CRSResults._get_array_dict(). 否则可以忽略此参数。

_get_array_dict(部分:str., 款:str., X_AXIS:str., index_subsection.:str., 单位:str ='kcal / mol', AS_DF:BOOL = FALSE) → dict [来源]

创建包含所有值的字典或dataframe 部分 /.

采取以下论点:
  • 部分 / 所需数量。
  • 索引的所需名称( X_AXIS. )。
  • 包含索引的子部分的名称(index_subsection. )。
  • 单元 输出量大量(忽略此关键字如果不适用)。
  • 如果结果应返回Pandas DataFrame( AS_DF. )。
_construct_array_dict(部分:str., 款:str., 单位:str ='kcal / mol') → dict [来源]

构造字典包含所有值 部分 /.

静止的 _dict_to_df(array_dict:dict., 部分:str., X_AXIS:str.) [来源]

尝试将字典转换为dataframe。