BC.Wang Welcome

软件开发-CRN项目

2018-08-08
BCWang

阅读:


CRN-CatReactionNetwork开发

  • 项目地址:暂未开源

    开发动机、需求

  • 给定一组分子,由CHO元素组成,包含3种键(单双键,过渡态虚拟键),要求根据生成关系(比如CH+H -> CH-H -> CH2)构建起一条反应网络,从CH4和CO2到CO和H2
  • 将反应网络输出作为CatMap动力学软件的输入,并且跑动力学,每次跑完动力学之后将几乎所有的输出结果记录下来,然后寻找速率最低的路径,筛选删除掉,接着继续跑,直到反应不能够从初始产物到最终产物或者最低速率是最高速率的N倍,输出网络,要求pdf
  • 要求在一定条件下运行CatMap,并且要并行处理,要求尽快能够跑完2000组CatMap
  • 跑完之后对网络进行分类,对CatMap得到的DRC,Coverage数据进行统计处理,作图

主要设计

  • 把催化反应中的分子作为Node,把Reaction作为Edge,构建起反应网络
  • 分子的变化,比如脱H,脱O是非常简单的,将分子的这些基元反应进行编码,可以进行搜索,比如将N种基元反应编码,作用于编码后的A分子,得到产物B的编码,然后与B分子的Node用Edge连接
  • 使用键Bag的方式进行,并且以字符串作为Key,数目作为Value,有很强可拓展性。而第一版使用向量编码,在寻找反应时可以通过向量加减,很快,但是可拓展性差。
  • 修改CatMap源代码,使其提供一个非文本输入文件的接口,直接内存传参
  • 使用一个类来用dict存储设计到的所有信息记录,每次使用dump方法将key+iteration_count和value加入到字典中
  • 使用parallel python进行并行处理,2000组数据每次作为一个job投到一个cpu上运行
  • 使用graphviz对网络导出pdf文件
  • 将网络作为反应的字符串list处理,注意速率为负的反应需要加上_ng,排序后join成字符串,最后求hash值,一个hash代表一个筛选后的网络,最后进行统计计数

Similar Posts

Comments

0