CN117423394B - 基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 - Google Patents
基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 Download PDFInfo
- Publication number
- CN117423394B CN117423394B CN202311358605.3A CN202311358605A CN117423394B CN 117423394 B CN117423394 B CN 117423394B CN 202311358605 A CN202311358605 A CN 202311358605A CN 117423394 B CN117423394 B CN 117423394B
- Authority
- CN
- China
- Prior art keywords
- data
- cluster
- list
- file
- product
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 239000000126 substance Substances 0.000 title claims abstract description 34
- 238000000605 extraction Methods 0.000 title claims abstract description 9
- 238000012216 screening Methods 0.000 claims abstract description 22
- 238000007621 cluster analysis Methods 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 10
- 208000025174 PANDAS Diseases 0.000 claims description 6
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 235000016496 Panda oleosa Nutrition 0.000 claims description 3
- 240000000220 Panda oleosa Species 0.000 claims 1
- 238000006243 chemical reaction Methods 0.000 abstract description 18
- 238000000329 molecular dynamics simulation Methods 0.000 abstract description 11
- 230000008569 process Effects 0.000 abstract description 9
- 239000000284 extract Substances 0.000 abstract 2
- 239000000047 product Substances 0.000 description 62
- 238000004088 simulation Methods 0.000 description 13
- 239000000463 material Substances 0.000 description 9
- 238000000197 pyrolysis Methods 0.000 description 8
- 238000011160 research Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 239000000376 reactant Substances 0.000 description 3
- 240000004718 Panda Species 0.000 description 2
- 238000002485 combustion reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013067 intermediate product Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000324 molecular mechanic Methods 0.000 description 2
- 238000012900 molecular simulation Methods 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 239000004215 Carbon black (E152) Substances 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003054 catalyst Substances 0.000 description 1
- 230000003197 catalytic effect Effects 0.000 description 1
- 238000006555 catalytic reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009510 drug design Methods 0.000 description 1
- 239000007772 electrode material Substances 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 239000007792 gaseous phase Substances 0.000 description 1
- 229930195733 hydrocarbon Natural products 0.000 description 1
- 150000002430 hydrocarbons Chemical class 0.000 description 1
- 239000007791 liquid phase Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000011148 porous material Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000005610 quantum mechanics Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 150000003384 small molecules Chemical class 0.000 description 1
- 239000007790 solid phase Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 229910052723 transition metal Inorganic materials 0.000 description 1
- 150000003624 transition metals Chemical class 0.000 description 1
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C10/00—Computational theoretical chemistry, i.e. ICT specially adapted for theoretical aspects of quantum chemistry, molecular mechanics, molecular dynamics or the like
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C20/00—Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
- G16C20/20—Identification of molecular entities, parts thereof or of chemical compositions
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C20/00—Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
- G16C20/70—Machine learning, data mining or chemometrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Chemical & Material Sciences (AREA)
- Spectroscopy & Molecular Physics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- Crystallography & Structural Chemistry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法,属于反应分子动力学技术领域,该方法包括以下步骤:从ReaxFF力场获取包含产物分子信息的species源文件和原子键级信息的bonds文件;基于Python将产物、团簇以及化学键信息提取整合成含标题和对应数量的列表;在整合文件的基础上进一步筛选和排列;获得产物分子/团簇分析/化学键可分析处理的有效数据信息。本发明的方法具有高效性和便捷性,能够迅速处理反应分子动力学模拟产生的数据文件,从繁杂的数据文件中提取出有效的数据信息。此外,该方法能够对模拟的多种产物、团簇以及化学键随时间的变化情况进行数据提取。
Description
技术领域
本发明涉及反应分子动力学技术领域,具体涉及一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法。
背景技术
分子模拟是一种利用理论方法和计算技术,模拟出化学分子结构和性质的方法,常包括分子动力学、分子力学、蒙特卡洛等经验计算的分子力学方法,密度泛函、从头算、半经验分子轨道等理论计算的量子力学方法等。随着信息技术的发展,计算机计算能力的大幅度提高,分子模拟逐渐成为物理、化学、生物、药物设计等领域不可或缺的研究方法。
反应分子动力学模拟是反应力场和分子动力学的结合,将GPU并行与基于化学信息学分析化学反应相结合的新方法,可使规模达~10,000原子的体系在桌面机上高效模拟,并且具有比较高的模拟准确度。Lammps(Large-scale Atomic/Molecular MassivelyParallel Simulator)主要运用于分子动力学模拟相关的一些计算模拟工作。Lammps可以支持包括气态,液态或者固相形态下、各种系综、百万级的原子分子体系,还可以支持多种势函数。
ReaxFF反应力场的方法已经成功的应用于一些反应动力学模拟的研究中,应用体系包括碳氢有机小分子体系,高分子体系,高能材料体系,金属氧化物体系以及过渡金属催化剂体系。运用这些ReaxFF反应力场主要研究的内容包括运用ReaxFF反应动力学研究快速反应过程(如爆炸和燃烧过程),运用基于ReaxFF反应力场的蒙特卡洛-反应动力学(ReaxFF-MC-RD)研究实验中难以解析的实验结构,燃料电池电极材料催化反应过程的研究,多孔材料中的催化过程等等。
反应分子动力学模拟方法近年来发展迅速,该方法在描述复杂体系化学反应和大规模体系模拟方面具有显著的优势和潜力,越来越多的人利用ReaxFF力场计算和构建大型含能材料体系来模拟热解和燃烧的过程。研究主要涉及反应物初始分解、中间体/自由基转化和消耗、稳定产物形成的三个阶段。但是对于含有成千上万原子的复杂体系的统计分析却较为困难,复杂体系的数据量庞大冗杂,且数据文件类型多样,如果人工筛选数据,不仅耗费时间长,且准确率较低。另外,通过统计整理结果文件,然后利用Exce l或者Or igi n进行函数计算,再进行绘制图形的方式不仅步骤繁琐,且工作效率低下。对于模拟结果产生的数据文件,目前还没有成熟的分析手段。因此本发明提出一种方便快捷的数据处理方法,具有重要的意义。
发明内容
为解决上述问题,本发明提供了一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法。
为实现上述目的,本发明采取的技术方案为:
一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法,包括如下步骤:
步骤一、从ReaxFF力场获取包含产物分子信息的species源文件和原子键级信息的bonds文件;
步骤二、基于Python将产物、团簇以及化学键信息提取整合成含标题和对应数量的列表;
步骤三、在整合文件的基础上进一步筛选和排列;
步骤四、获得产物分子/团簇分析/化学键可分析处理的有效数据信息。
具体地,本发明所述的一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法用于提取和筛选出所有产物、所有团簇、以及需要统计的化学键;
其中,用于提取和筛选出所有产物时,包括以下步骤:
S1、读取和处理产物文件(species.out),该步骤包括以下子步骤;
S1.1、基于ReaxFF力场得到包含每个时刻下的分子种类和分子数量的species文件,并搭建Python环境;
S1.2、使用def函数定义整个读取和整合功能,以此进行反复调用;
S1.3、读取输入文件的内容,将以'#'开头的行中的字符提取出来并整合为一个字符串,将整合后的字符串分割成一个目标标题列表;
S1.4、提示用户输入一个阈值,用于确定需要保留哪些产物;根据用户输入的阈值筛选目标标题列表,使用正则表达式提取'C'后面的数字;删除包含字符'C'并且'C'后面数字大于阈值的产物,并将结果重新组合成字符串;
S1.5、使用target_list存储筛选后的目标标题列表进行后续处理;
S2、对产物数据进行数据整合,该步骤包括以下子步骤;
S2.1、将target_list中的目标标题数据提取出来并存储在字典results_dict中,字典的键是产物名称,值是与之对应的产物的数量;
S2.2、将处理后的数据写入一个输出文件,该文件包含了符合筛选条件的产物数据;
S3、对产物数据进行求和以及排序,该步骤包括以下子步骤;
S3.1、使用Pandas库的read_csv函数读取筛选后的产物数据文件,读取后的数据存储在名为data的Pandas DataFrame中;使用sum()计算列中所有数值的总和,将每列数值的总和存储到columns_sum中并将总和数据插入到文件的底部;处理后的数据写入一个新的未排序的输出文件Filter_Notsorted.txt中,该文件包含了每列求和后的数据。
S3.2、创建列表sorted_columns对列进行排序,使用sorted()函数对列按照它们的总和值进行降序排序;将处理后的数据写入一个新的已排序的输出文件Filter_sorted.txt中,该文件包含排序后的数据。
其中,用于提取和筛选出所有团簇时,包括以下步骤:
S1、读取和处理产物文件(species.out),该步骤包括以下子步骤;
S1.1、基于ReaxFF力场得到包含每个时刻下的分子种类和分子数量的species文件,并搭建Python环境;
S1.2、使用def函数定义整个读取和整合功能,以此进行反复调用;
S1.3、自定义search函数,用于在产物分子中查找团簇分子;查找到团簇分子后,进一步处理以确定团簇分子中所包含的原子个数;循环遍历stra中的产物字符,如果字符是数字,则将其转换为整数并将其累加到num变量中;循环继续,直到遇到非数字字符为止,然后函数返回num;提示用户输入一个阈值,用于确定团簇产物,根据用户输入的阈值筛选产物中的团簇分子;
S2、处理和提取每时刻团簇对应的分子数,该步骤包括以下子步骤;
S2.1、定义列表known_elements,其中包含确定的元素符号,这些元素符号用于后续的数据处理;初始化一个空列表Outfile,用于存储要写入输出文件的数据;
S2.2、使用for循环遍历从文件中读取的数据行;由于每个团簇的信息被分为两行,因此循环步长为2;在每次循环中,它将第一行(a)和第二行(b)分别去除首尾空白字符并分割成列表,将时间步Timestep添加到data列表中;
S3、计算每时刻团簇分子种数以及团簇分子总数,该步骤包括以下子步骤;
S3.1、使用search函数来查找团簇的出现次数,并将结果存储在countA变量中;然后检查countA是否小于等于用户输入的用户定义的团簇的最小原子数min_molecule_count;如果countA大于min_molecule_count,那么代码将当前元素的信息添加到data列表中;具体来说,添加了团簇名称、对应团簇的数量,并增加了tcount和count计数器,tcount统计符合条件的团簇种类的总数,count统计符合条件的团簇中元素的总数;将data列表中的元素数量转换为字符串类型,以便后续写入输出文件;
S3.2、如果data列表不为空,说明至少有一个团簇分子满足条件,代码将该行数据添加到Outfile列表中,数据包括团簇分子、团簇种类及其数量的信息;
S4、计算团簇分子所含元素的数量,该步骤包括以下子步骤;
S4.1、定义外层for循环,用于遍历已知元素列表known_elements中的每个元素,enumerate函数用于同时获取元素的索引id和元素的值ka;
S4.2、在内部循环中,首先调用search函数,用于计算当前团簇中元素ka的数量,并将结果存储在ka_num变量中;然后,通过以下计算更新data列表中对应元素的总数:data[id*2+2]表示data列表中已知元素的数量的位置;ka_num*int(b[j+3])表示当前元素ka在当前团簇中的数量乘以该团簇的数量,这样data列表中的每个元素位置都会累积计算相应元素在所有团簇中的总数;内部循环结束后,将计数值转换为字符串;
S4.3、在内外部循环结束之后,代码会遍历known_elements中的每个元素,并将data列表中对应元素的数量从整数转换为字符串;这是为了确保在后续写入输出文件时,所有数据都以字符串形式呈现。
S4.4、将处理后的团簇数据写入输出文件output_Clusters中,使用with语句来自动关闭文件,以确保文件在写入后被正确关闭;该文件包含了符合筛选条件的产物团簇数据,即每时刻团簇种类数、团簇分子总数、团簇分子式、团簇分子所包含的各类原子数。
其中,用于提取和筛选出需要统计的化学键时,包括以下步骤:
S1、读取键级文件(bonds.reax)并提取必要数据,该步骤包括以下子步骤:
S1.1、基于ReaxFF力场得到包含每个时刻下的原子成键信息的bonds文件,并搭建Python环境;
S1.2、读取bonds文件,使用startswith('#')检查行是否非空且不以'#'开头,将符合条件的所有行存入values中;从values中提取第三个元素(通常是一个整数)并将其转换为整数类型,存储在count中;提取values列表的前3+count个元素,存储在extracted_data中,这些元素表示有关键的信息;将extracted_data添加到data列表中,表示已提取的数据;
S2、读取必要数据并遍历查询化学键的数量,该步骤包括以下子步骤:
S2.1、创建一个空字典num_type_map用于存储原子编号和类型的映射;遍历data数据列表中的每一行;从数据行中提取原子编号和原子类型,并将它们转换为整数类型;将原子编号和原子类型的映射添加到num_type_map字典中;
S2.2、使用列表推导式,根据原子数将原始数据分成块,每个块包含n_atoms行数据,这些块代表不同的T imestep;
S2.3、遍历不同的块,创建一个空列表bond_counts,用于存储每个键类型的计数;遍历指定的键类型列表,将键类型拆分为两个原子类型,从type_map字典中获取键类型中的原子类型的对应数字值;遍历当前T imestep块中的每一行数据,获取原子编号对应的原子类型;判断当前原子的类型是否与键类型中的第一个原子类型匹配,并获取与原子相关联的键数目;遍历与当前原子相关联的原子,检查关联原子的类型是否与键类型中的第二个原子类型匹配,如果键类型中的两个原子类型相同,将键的计数除以2以避免重复计数;将每个键类型的计数添加到bond_counts列表中;
S2.4、将当前T imestep块的键计数写入文件,包括时间步T imestep和每个键类型的计数;将计算结果输出到文件bonds.txt中,该文件包含了每时刻化学键数量的变化。
与现有技术相比,本发明具有如下有益效果:
1、由于ReaxFF力场反应分子动力学模拟处理数据量大,计算出的数据源文件难以分析。本发明提供的处理方法能够高效便捷的读取模拟产生的数据,解决数据难以提取整合的困难。其中,Python的列表模块可以完成大多数集合类的数据结构实现,并且没有固定类型的约束,是Python最基本的数据结构和最常用的数据类型。在后续处理中能对繁杂的数据进行统计和整合,适应多种类型元素对象,使分析数据更加方便和清晰。
2、本发明提供的方法可以归纳具有多样性的分子类型、分析团簇的演变以及统计化学键的数量,可以得到多种产物和各类团簇以及多种化学键随时间的变化,为反应分子动力学模拟探索各种情况下反应物的分解机理,明确中间产物、最终产物、团簇和化学键变化的规律提供便利。克服了现有lammps自带的分析软件中分析元素单一,不适用于含有各种各样的元素体系的缺点。尤其是对于含能材料的热解过程,能够建立一套较为完整的对含能材料热解模拟结果中产物分子统计分析的系统方法,可以得到全部产物、团簇以及化学键在含能材料热解中随时间的变化情况,为模拟计算提供便利。
附图说明
图1为本发明的产物分子信息species源文件;
图2为本发明的提取全部产物的后处理程序;
图3为本发明的整合产物分子信息AllProducts.txt文件;
图4为本发明的整合产物分子信息Filter_Notsorted.txt文件;
图5为本发明的整合产物分子信息Filter_sorted.txt文件;
图6为本发明的提取团簇分子的后处理程序;
图7为本发明的整合团簇分子信息output_Clusters.txt文件;
图8为本发明的键级信息bonds源文件;
图9为本发明的提取化学键的后处理程序;
图10为本发明的整合化学键信息bonds.txt文件。
图11为本发明实施例的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
本发明将一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法应用于含能材料热解过程,可以得到全部产物(包括中间产物、最终产物、团簇)以及化学键在含能材料热解中随时间的变化过程,为反应分子动力学模拟探究各种情况下反应物的分解机理,明确产物变化规律提供便利。如图11所示,本发明的后处理方法包括如下步骤:S1、从ReaxFF力场获取包含产物分子信息的species源文件和原子键级信息的bonds文件;S2、基于Python将产物、团簇以及化学键信息提取整合成含标题和对应数量的列表;S3、在整合文件的基础上进一步筛选和排列;S4、获得产物分子/团簇分析/化学键可分析处理的有效数据信息。
实施例一
基于Python对ReaxFF力场含能材料热解计算结果数据处理,具体包括以下步骤,这里以含能材料奥克托金(HMX)的热解数据处理过程为例:
1.针对产物文件(species),提取和筛选出所有产物,包括以下步骤:
步骤一、读取和处理产物文件(species):
1.1、建立含有C/H/O/N的HMX模型,对其进行基于ReaxFF力场的反应分子动力学模拟,模拟后得到包含每个时刻下的分子种类和分子数量的species文件,如图1所示。
1.2、使用def函数定义整个读取和整合功能,以此进行反复调用。
1.3、读取输入文件的内容,将以'#'开头的行中的字符提取出来并整合为一个字符串。将整合后的字符串分割成一个目标标题列表。
1.4、提示用户输入一个阈值,用于确定需要保留哪些产物,如图2所示。根据用户输入的阈值筛选目标标题列表,使用正则表达式提取'C'后面的数字。删除包含字符'C'并且'C'后面数字大于阈值的产物,并将结果重新组合成字符串。
1.5、使用target_list存储筛选后的目标标题列表进行后续处理。
步骤二、对产物数据进行数据整合,该步骤包括以下子步骤:
2.1、将target_list中的目标标题数据提取出来并存储在字典results_dict中,字典的键是产物名称,值是与之对应的产物的数量。
2.2、将处理后的数据写入一个输出文件,该文件包含了符合筛选条件的产物数据,如图3所示。
步骤三、对产物数据进行求和以及排序,该步骤包括以下子步骤:
3.1、使用Pandas库的read_csv函数读取筛选后的产物数据文件,读取后的数据存储在名为data的Pandas DataFrame中。使用sum()计算列中所有数值的总和,将每列数值的总和存储到columns_sum中并将总和数据插入到文件的底部。处理后的数据写入一个新的输出文件Filter_Notsorted.txt(未排序)中,该文件包含了每列求和后的结果,如图4所示。
3.2、创建列表sorted_columns对列进行顺序,使用sorted()函数对列按照它们的总和值进行降序排序。将处理后的数据写入一个新的输出文件Filter_sorted.txt(已排序)中,该文件包含排序后的数据,如图5所示。
2.针对产物文件,提取和筛选出所有的团簇,包括以下步骤:
步骤一、读取和处理产物文件(species),该步骤包括以下子步骤:
1.1、建立含有C/H/O/N的HMX模型,对其进行基于ReaxFF力场的反应分子动力学模拟,模拟后得到包含每个时刻下的分子种类和分子数量的species文件,如图1所示。
1.2、使用def函数定义整个读取和整合功能,以此进行反复调用。
1.3、自定义search函数,用于在产物分子中查找团簇分子。查找到团簇分子后,进一步处理以确定团簇分子中所包含的原子个数。循环遍历stra中的产物字符,如果字符是数字,则将其转换为整数并将其累加到num变量中。循环继续,直到遇到非数字字符为止,然后函数返回num。提示用户输入一个阈值,用于确定团簇产物。根据用户输入的阈值筛产物中的团簇分子,如图6所示。
步骤二、处理和提取每时刻团簇对应的分子数,该步骤包括以下子步骤:
2.1、定义列表known_elements,其中包含确定的元素符号。这些元素符号用于后续的数据处理。初始化一个空列表Outfile,用于存储要写入输出文件的数据。
2.2、使用for循环遍历从文件中读取的数据。由于每个团簇的信息被分为两行,因此循环步长为2。在每次循环中,将第一行(a)和第二行(b)分别去除首尾空白字符并分割成列表。将时间步Timestep添加到data列表中。
步骤三、计算每时刻团簇分子种类数以及团簇分子总数,该步骤包括以下子步骤:
3.1、使用search函数来查找团簇的出现次数,并将结果存储在countA变量中。然后检查countA是否小于等于用户输入的min_molecule_count(用户定义的团簇的最小原子数)。如果countA大于min_molecule_count,那么代码将当前元素的信息添加到data列表中。具体来说,它添加了团簇分子式、对应团簇的数量,并增加了tcount和count计数器。tcount统计符合条件的团簇种类的总数,count统计符合条件的团簇中元素的总数。将data列表中的元素数量转换为字符串类型,以便后续写入输出文件。
3.2、如果data列表不为空,说明至少有一个团簇分子满足条件,代码将该行数据添加到Outfile列表中。数据包括团簇分子式、团簇种类及其数量。
步骤四、计算团簇分子所含元素的数量,该步骤包括以下子步骤:
4.1、定义外层for循环,用于遍历已知元素列表known_elements中的每个元素。enumerate函数用于同时获取元素的索引id和元素的值ka。
4.2、在内部循环中,首先调用search函数,用于计算当前团簇中元素ka的数量,并将结果存储在ka_num变量中。然后,通过以下计算更新data列表中对应元素的总数:data[id*2+2]表示data列表中已知元素的数量的位置。ka_num*int(b[j+3])表示当前元素ka在当前团簇中的数量乘以该团簇的数量。这样data列表中的每个元素位置都会累积计算相应元素在所有团簇中的总数。内部循环结束后,将计数值转换为字符串。
4.3、在内外部循环结束之后,代码会遍历known_elements中的每个元素,并将data列表中对应元素的数量从整数转换为字符串。这是为了确保在后续写入输出文件时,所有数据都以字符串形式呈现。
4.4、将处理后的团簇数据写入输出文件output_Clusters中。使用with语句来自动关闭文件,以确保文件在写入后被正确关闭。该文件包含了符合筛选条件的产物团簇数据,即每时刻团簇种类数、团簇分子总数、团簇分子式、团簇分子所包含的各类原子数,如图7所示。
3.针对键级文件,提取和筛选出每时刻需统计的化学键,包括以下步骤:
步骤一、读取键级文件(bonds)并提取必要数据,该步骤包括以下子步骤:
1.1、建立含有C/H/O/N的HMX模型,对其进行基于ReaxFF力场的反应分子动力学模拟,得到包含每个时刻下的原子成键信息bonds文件,如图8所示。后续操作支持用户设置参数,如图9所示。
1.2、读取bonds文件,使用startswith('#')检查行是否非空且不以'#'开头,将符合条件的所有行存入values中。从values中提取第三个元素(通常是一个整数)并将其转换为整数类型,存储在count中。提取values列表的前3+count个元素,存储在extracted_data中。这些元素表示有关键的信息,将extracted_data添加到data列表中,表示已提取的数据。
步骤二、读取必要数据并遍历查询化学键的数量,该步骤包括以下子步骤:
2.1、创建一个空字典num_type_map用于存储原子编号和类型的映射。遍历data数据列表中的每一行。从数据行中提取原子编号和原子类型,并将它们转换为整数类型。将原子编号和原子类型的映射添加到num_type_map字典中。
2.2、使用列表推导式,根据原子数将原始数据分成块,每个块包含n_atoms行数据。这些块代表不同的Timestep。
2.3、遍历不同的块,创建一个空列表bond_counts,用于存储每个键类型的计数。遍历指定的键类型列表,将键类型拆分为两个原子类型,从type_map字典中获取键类型中的原子类型的对应数字值。遍历当前Timestep块中的每一行数据,获取原子编号对应的原子类型。判断当前原子的类型是否与键类型中的第一个原子类型匹配,并获取与原子相关联的键数目。遍历与当前原子相关联的原子,检查关联原子的类型是否与键类型中的第二个原子类型匹配,如果键类型中的两个原子类型相同,将键的计数除以2以避免重复计数。将每个键类型的计数添加到bond_counts列表中。
2.4、将当前T imestep块的键计数写入文件,包括时间步T imestep和每个键类型的计数。将计算结果输出到文件bonds.txt中,该文件包含了每时刻化学键数量的变化,如图10所示。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (1)
1.一种基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法,其特征在于:包括如下步骤:
步骤一、从ReaxFF力场获取包含产物分子信息的species源文件和原子键级信息的bonds文件;
步骤二、基于Python将产物、团簇以及化学键信息提取整合成含标题和对应数量的列表;
步骤三、在整合文件的基础上进一步筛选和排列;
步骤四、获得产物分子/团簇分析/化学键可分析处理的有效数据信息;
用于提取和筛选出所有产物时,包括以下步骤:
S1、读取和处理产物文件(species.out),该步骤包括以下子步骤;
S1.1、基于ReaxFF力场得到包含每个时刻下的分子种类和分子数量的species文件,并搭建Python环境;
S1.2、使用def函数定义整个读取和整合功能,以此进行反复调用;
S1.3、读取输入文件的内容,将以'#'开头的行中的字符提取出来并整合为一个字符串,将整合后的字符串分割成一个目标标题列表;
S1.4、提示用户输入一个阈值,用于确定需要保留哪些产物;根据用户输入的阈值筛选目标标题列表,使用正则表达式提取'C'后面的数字;删除包含字符'C'并且'C'后面数字大于阈值的产物,并将结果重新组合成字符串;
S1.5、使用target_list存储筛选后的目标标题列表进行后续处理;
S2、对产物数据进行数据整合,该步骤包括以下子步骤;
S2.1、将target_list中的目标标题数据提取出来并存储在字典results_dict中,字典的键是产物名称,值是与之对应的产物的数量;
S2.2、将处理后的数据写入一个输出文件,该文件包含了符合筛选条件的产物数据;
S3、对产物数据进行求和以及排序,该步骤包括以下子步骤;
S3.1、使用Pandas库的read_csv函数读取筛选后的产物数据文件,读取后的数据存储在名为data的Pandas DataFrame中;使用sum()计算列中所有数值的总和,将每列数值的总和存储到columns_sum中并将总和数据插入到文件的底部;处理后的数据写入一个新的未排序的输出文件Filter_Notsorted.txt中,该文件包含了每列求和后的数据;
S3.2、创建列表sorted_columns对列进行排序,使用sorted()函数对列按照它们的总和值进行降序排序;将处理后的数据写入一个新的已排序的输出文件Filter_sorted.txt中,该文件包含排序后的数据;
用于提取和筛选出所有团簇时,包括以下步骤:
S1、读取和处理产物文件(species.out),该步骤包括以下子步骤;
S1.1、基于ReaxFF力场得到包含每个时刻下的分子种类和分子数量的species文件,并搭建Python环境;
S1.2、使用def函数定义整个读取和整合功能,以此进行反复调用;
S1.3、自定义search函数,用于在产物分子中查找团簇分子;查找到团簇分子后,进一步处理以确定团簇分子中所包含的原子个数;循环遍历stra中的产物字符,如果字符是数字,则将其转换为整数并将其累加到num变量中;循环继续,直到遇到非数字字符为止,然后函数返回num;提示用户输入一个阈值,用于确定团簇产物,根据用户输入的阈值筛选产物中的团簇分子;
S2、处理和提取每时刻团簇对应的分子数,该步骤包括以下子步骤;
S2.1、定义列表known_elements,其中包含确定的元素符号,这些元素符号用于后续的数据处理;初始化一个空列表Outfile,用于存储要写入输出文件的数据;
S2.2、使用for循环遍历从文件中读取的数据行;由于每个团簇的信息被分为两行,因此循环步长为2;在每次循环中,它将第一行(a)和第二行(b)分别去除首尾空白字符并分割成列表,将时间步Timestep添加到data列表中;
S3、计算每时刻团簇分子种数以及团簇分子总数,该步骤包括以下子步骤;
S3.1、使用search函数来查找团簇的出现次数,并将结果存储在countA变量中;然后检查countA是否小于等于用户输入的用户定义的团簇的最小原子数min_molecule_count;如果countA大于min_molecule_count,那么代码将当前元素的信息添加到data列表中;将data列表中的元素数量转换为字符串类型,以便后续写入输出文件;
S3.2、如果data列表不为空,说明至少有一个团簇分子满足条件,代码将满足条件的数据添加到Outfile列表中,数据包括团簇分子、团簇种类及其数量的信息;
S4、计算团簇分子所含元素的数量,该步骤包括以下子步骤;
S4.1、定义外层for循环,用于遍历已知元素列表known_elements中的每个元素,enumerate 函数用于同时获取元素的索引id和元素的值ka;
S4.2、在内部循环中,首先调用search函数,用于计算当前团簇中元素ka的数量,并将结果存储在ka_num变量中;然后,通过以下计算更新data列表中对应元素的总数:data[id* 2 + 2]表示data列表中已知元素的数量的位置;ka_num *int(b[j + 3])表示当前元素ka在当前团簇中的数量乘以该团簇的数量;内部循环结束后,将计数值转换为字符串;
S4.3、在内外部循环结束之后,代码会遍历known_elements中的每个元素,并将data列表中对应元素的数量从整数转换为字符串;
S4.4、将处理后的团簇数据写入输出文件output_Clusters中,使用with语句来自动关闭文件,以确保文件在写入后被正确关闭;该文件包含了符合筛选条件的产物团簇数据,即每时刻团簇种类数、团簇分子总数、团簇分子式、团簇分子所包含的各类原子数;
用于提取和筛选出需要统计的化学键时,包括以下步骤:
S1、读取键级文件(bonds.reax)并提取必要数据,该步骤包括以下子步骤:
S1.1、基于ReaxFF力场得到包含每个时刻下的原子成键信息的bonds文件,并搭建Python环境;
S1.2、读取bonds文件,使用startswith('#')检查行是否非空且不以'#'开头,将符合条件的所有行存入values中;从values中提取第三个元素并将其转换为整数类型,存储在count中;提取values列表的前3+count个元素,存储在extracted_data中,这些元素表示有关键的信息;将extracted_data添加到data列表中,表示已提取的数据;
S2、读取必要数据并遍历查询化学键的数量,该步骤包括以下子步骤:
S2.1、创建一个空字典num_type_map用于存储原子编号和类型的映射;遍历data数据列表中的每一行;从数据行中提取原子编号和原子类型,并将它们转换为整数类型;将原子编号和原子类型的映射添加到num_type_map字典中;
S2.2、使用列表推导式,根据原子数将原始数据分成块,每个块包含n_atoms行数据,这些块代表不同的Timestep;
S2.3、遍历不同的块,创建一个空列表bond_counts,用于存储每个键类型的计数;遍历指定的键类型列表,将键类型拆分为两个原子类型,从type_map字典中获取键类型中的原子类型的对应数字值;遍历当前Timestep块中的每一行数据,获取原子编号对应的原子类型;判断当前原子的类型是否与键类型中的第一个原子类型匹配,并获取与原子相关联的键数目;遍历与当前原子相关联的原子,检查关联原子的类型是否与键类型中的第二个原子类型匹配,如果键类型中的两个原子类型相同,将键的计数除以2以避免重复计数;将每个键类型的计数添加到bond_counts列表中;
S2.4、将当前Timestep块的键计数写入文件,包括时间步Timestep和每个键类型的计数;将计算结果输出到文件bonds.txt中,该文件包含了每时刻化学键数量的变化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311358605.3A CN117423394B (zh) | 2023-10-19 | 2023-10-19 | 基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311358605.3A CN117423394B (zh) | 2023-10-19 | 2023-10-19 | 基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117423394A CN117423394A (zh) | 2024-01-19 |
CN117423394B true CN117423394B (zh) | 2024-05-03 |
Family
ID=89529514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311358605.3A Active CN117423394B (zh) | 2023-10-19 | 2023-10-19 | 基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117423394B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157736A (en) * | 1991-04-19 | 1992-10-20 | International Business Machines Corporation | Apparatus and method for optical recognition of chemical graphics |
CN110335644A (zh) * | 2019-06-13 | 2019-10-15 | 武汉工程大学 | 联合MuSiC和Python用于汽油深度脱硫的吸附材料的智能优选方法 |
CN110767267A (zh) * | 2019-09-30 | 2020-02-07 | 华中科技大学 | 一种基于Python对ReaxFF力场计算结果数据处理的方法 |
CN111816261A (zh) * | 2020-07-13 | 2020-10-23 | 西安建筑科技大学 | 一种调幅分解分布的分子动力学几何模型构建方法 |
CN112201310A (zh) * | 2020-10-22 | 2021-01-08 | 华中科技大学 | 一种基于lammps模拟煤与生物质共热解体系中C、H、O元素的标记方法 |
CN113742913A (zh) * | 2021-08-30 | 2021-12-03 | 重庆长安汽车股份有限公司 | 一种基于Python的ADAMS后处理文件K&C参数提取方法及系统 |
WO2022094873A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳晶泰科技有限公司 | 分子力场质量控制系统及其控制方法 |
CN114974441A (zh) * | 2022-05-27 | 2022-08-30 | 煤炭科学研究总院有限公司 | 一种煤分子官能团生成方法 |
CN115132286A (zh) * | 2022-08-03 | 2022-09-30 | 郑州大学 | 一种发泡高聚物闭合泡孔分子模型的构建方法 |
CN115691699A (zh) * | 2022-11-01 | 2023-02-03 | 西南科技大学 | 适用于含能化合物数据挖掘的方法及系统 |
CN115910237A (zh) * | 2022-09-09 | 2023-04-04 | 福州大学 | 一种基于Python的原子配位数自动化批量计算统计方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019134315A1 (zh) * | 2018-05-04 | 2019-07-11 | 深圳晶泰科技有限公司 | 原子类型定义系统及其原子类型匹配方法 |
US20220115094A1 (en) * | 2020-02-25 | 2022-04-14 | Shenzhen Jingtai Technology Co., Ltd. | Free energy perturbation computation scheduling method used in heterogeneous cluster environment |
GB2609773A (en) * | 2020-03-31 | 2023-02-15 | Genentech Inc | Validating interpretability of QSAR and QSPR models |
US20230290114A1 (en) * | 2020-12-16 | 2023-09-14 | Ro5 Inc. | System and method for pharmacophore-conditioned generation of molecules |
US20230095631A1 (en) * | 2021-09-24 | 2023-03-30 | Robert Bosch Gmbh | Neural network force field computational training routines for molecular dynamics computer simulations |
-
2023
- 2023-10-19 CN CN202311358605.3A patent/CN117423394B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157736A (en) * | 1991-04-19 | 1992-10-20 | International Business Machines Corporation | Apparatus and method for optical recognition of chemical graphics |
CN110335644A (zh) * | 2019-06-13 | 2019-10-15 | 武汉工程大学 | 联合MuSiC和Python用于汽油深度脱硫的吸附材料的智能优选方法 |
CN110767267A (zh) * | 2019-09-30 | 2020-02-07 | 华中科技大学 | 一种基于Python对ReaxFF力场计算结果数据处理的方法 |
CN111816261A (zh) * | 2020-07-13 | 2020-10-23 | 西安建筑科技大学 | 一种调幅分解分布的分子动力学几何模型构建方法 |
CN112201310A (zh) * | 2020-10-22 | 2021-01-08 | 华中科技大学 | 一种基于lammps模拟煤与生物质共热解体系中C、H、O元素的标记方法 |
WO2022094873A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳晶泰科技有限公司 | 分子力场质量控制系统及其控制方法 |
CN113742913A (zh) * | 2021-08-30 | 2021-12-03 | 重庆长安汽车股份有限公司 | 一种基于Python的ADAMS后处理文件K&C参数提取方法及系统 |
CN114974441A (zh) * | 2022-05-27 | 2022-08-30 | 煤炭科学研究总院有限公司 | 一种煤分子官能团生成方法 |
CN115132286A (zh) * | 2022-08-03 | 2022-09-30 | 郑州大学 | 一种发泡高聚物闭合泡孔分子模型的构建方法 |
CN115910237A (zh) * | 2022-09-09 | 2023-04-04 | 福州大学 | 一种基于Python的原子配位数自动化批量计算统计方法 |
CN115691699A (zh) * | 2022-11-01 | 2023-02-03 | 西南科技大学 | 适用于含能化合物数据挖掘的方法及系统 |
Non-Patent Citations (11)
Title |
---|
CL-20/DNB共晶高温热解的ReaxFF反应分子动力学模拟;苗瑞珍等;含能材料;20160108;第24卷(第02期);第111-117页 * |
Extension of the ReaxFF Combustion Force Field toward Syngas Combustion and Initial Oxidation Kinetics;Chowdhury Ashraf等;THT JOURNAL OF PHYSICAL CHEMISTRY;20170110;第121卷;第1051−1068页 * |
EZFF: Python library for multi-objective parameterization and uncertainty quantification of interatomic forcefields for molecular dynamics;Aravind Krishnamoorthy等;SoftwareX;20210115;第13卷;第1-9页 * |
Guoqi Guo等.Multi‑aspect and comprehensive atomic insight: the whole process of thermolysis of HMX/Poly‑NIMMO–based plastic bonded explosive.Research Square.2023,第1-20页. * |
RE-OEM:一种半结构化生物数据的信息抽取模型;曹顺良等;计算机应用研究;20080915;第25卷(第09期);第2647-2650页 * |
Supercritical water gasification of naphthalene over iron oxide catalyst: A ReaxFF molecular dynamics study;You Han等;ScienceDirect;20191024;第44卷;第30486-30498页 * |
二氮唑类富氮含能化合物的热分解机理研究;白辉;中国优秀硕士学位论文全文数据库 (工程科技Ⅰ辑);20230115(第1期);第B017-62页 * |
分子动力学模拟基本原理及研究进展;李春艳等;广州化工;20110223;第39卷(第04期);第11-13页 * |
基于众包的天然产物数据库及知识发现系统;郑乃仁等;轻工学报;20160805;第31卷(第04期);第102-108页 * |
陈芳等.高温下2,4,6-三硝基甲...(TNT)热分解动力学模拟.四川大学学报(自然科学版).2014,第51卷(第03期),第539-544页. * |
高温下HMX 热分解反应分子动力学模拟;陈芳等;原子与分子物理学报;20230911;第42卷(第2期);第024001-1 - 024--1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117423394A (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kwiatkowska et al. | Using probabilistic model checking in systems biology | |
Fayyad et al. | Data mining and KDD: Promise and challenges | |
Boley et al. | Direct local pattern sampling by efficient two-step random procedures | |
Courtney et al. | Möbius 2.3: An extensible tool for dependability, security, and performance evaluation of large and complex system models | |
Zhang et al. | TKUS: Mining top-k high utility sequential patterns | |
CN110767267B (zh) | 一种基于Python对ReaxFF力场计算结果数据处理的方法 | |
CN112382350B (zh) | 含能物质感度和力学性能及其关系的机器学习估算方法 | |
US8554486B2 (en) | Method, computer program product, and apparatus for selective memory restoration of a simulation | |
Li et al. | Co-mention network of R packages: Scientific impact and clustering structure | |
WO2006068827A1 (en) | Method of creating a history list during a stochastic simulation of a system comprising chemical reactions | |
Sun et al. | Statistics, damned statistics and nanoscience–using data science to meet the challenge of nanomaterial complexity | |
Konur et al. | A property-driven methodology for formal analysis of synthetic biology systems | |
CN113990401A (zh) | 固有无序蛋白的药物分子设计方法和装置 | |
Duke et al. | Data storage architectures to accelerate chemical discovery: data accessibility for individual laboratories and the community | |
CN101390082A (zh) | 优化计量标准的方法及在工业工程计算方法中的应用 | |
CN117423394B (zh) | 基于Python提取产物、团簇和化学键信息的ReaxFF后处理方法 | |
Streit | How i learned to stop worrying about a thousand and one filters and love analytic combinatorics § | |
Clare et al. | Data mining the yeast genome in a lazy functional language | |
Xylogiannopoulos et al. | Periodicity data mining in time series using suffix arrays | |
CN117334271A (zh) | 一种基于指定属性生成分子的方法 | |
Ruan et al. | Mining lake time series using symbolic representation | |
Bansal et al. | Analysis and Comparison of Data Mining Tools Using Case Study of Library Management System | |
Zhao | R Reference Card for Data Mining | |
Xylogiannopoulos et al. | Minimization of suffix array's storage capacity for periodicity detection in time series | |
Caetano-Anollés et al. | Growth: Molecular accretion, growth and innovation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |