首先看一下文件夹目录:


一、数据获取

(1)、QM9

获取地址为:https://github.com/nyu-dl/dl4chem-mgm

直接下载这个txt文件就可以了,然后直接把后缀改为csv

(2)、ChEMBL

获取地址为:https://github.com/BenevolentAI/guacamol

或者直接按照如图下的进行下载,然后把每个文件后缀改为csv

Download

You can download pre-built datasets here:

md5 05ad85d871958a05c02ab51a4fde8530 training
md5 e53db4bff7dc4784123ae6df72e3b1f0 validation
md5 677b757ccec4809febd83850b43e1616 test
md5 7d45bc95c33c10cb96ef5e78c38ac0b6 all


二、CSV文件转为images

运行的命令为:

python smiles2images.py --smiles_dataroot ./datasets_smiles/ChEMBL/guacamol_v1_all.csv --images_datafolder ./datasets_images/ChEMBL/ --smiles_first_line CCCC(=O)NNC(=O)Nc1ccccc1

代码为:

import argparse
import os
import pandas as pd
from tqdm import tqdm
from rdkit import Chem
from rdkit.Chem.Draw import rdMolDraw2Ddef main():parser = argparse.ArgumentParser(description='SMILES to images')# SMILES数据集所在的文件夹parser.add_argument('--smiles_dataroot', type=str, default="./datasets_smiles/ChEMBL/guacamol_v1_all.csv", help='data root')parser.add_argument('--images_datafolder', type=str, default="./datasets_images/ChEMBL/", help='data root')parser.add_argument('--smiles_first_line', type=str, default="CCCC(=O)NNC(=O)Nc1ccccc1", help='这是csv文件的第一行索引')args = parser.parse_args()# SMILES数据集raw_file_path = os.path.join(args.smiles_dataroot)# 输出图像文件夹opt_img = os.path.join(args.images_datafolder)if not os.path.exists(opt_img):os.makedirs(opt_img)df = pd.read_csv(raw_file_path)opt_smiles = df[args.smiles_first_line].valuesi = 1for opt_smiles in tqdm(opt_smiles, total=len(opt_smiles)):filename = "{}.png".format(i)i = i + 1opt_img_save_path = os.path.join(opt_img, filename)mol = Chem.MolFromSmiles(opt_smiles)drawer = rdMolDraw2D.MolDraw2DCairo(256, 256)opts = rdMolDraw2D.MolDrawOptions()# 设置杆的粗细opts.bondLineWidth = 3# 设置字母的大小opts.minFontSize = 15drawer.SetDrawOptions(opts)rdMolDraw2D.PrepareAndDrawMolecule(drawer, mol)drawer.FinishDrawing()drawer.WriteDrawingText(opt_img_save_path)if __name__ == '__main__':main()

三、将生成的image识别为SMILES,然后将SMILES转换为image

这里直接看连接:生成的分子图像是否可以识别为SMILES,然后再将识别后的SMILES转换为图像?_马鹏森的博客-CSDN博客

四、评价三中生成转为的image(metrics)

运行的命令为:

python distribution_learning_file.py --generate_smiles_file image2smiles_validity.csv --train_smiles_file 100k_moleculars.csv --output_dir ./ --suite v2 --number_samples 10000

代码为:

import argparse
import osfrom guacamol.assess_distribution_learning import _assess_distribution_learning
from guacamol.utils.helpers import setup_default_logger
from typing import List
from guacamol.distribution_matching_generator import DistributionMatchingGeneratorclass AllGeneratorSmiles(DistributionMatchingGenerator):"""Generator that samples SMILES strings from a predefined list."""def __init__(self, molecules: List[str]) -> None:"""Args:molecules: list of molecules from which the samples will be drawn"""self.molecules = moleculesdef generate(self, number_samples: int) -> List[str]:return list(self.molecules)def main():setup_default_logger()parser = argparse.ArgumentParser(description='Molecule distribution learning benchmark for random smiles sampler', formatter_class=argparse.ArgumentDefaultsHelpFormatter)parser.add_argument('--generate_smiles_file', default='image2smiles_validity.csv', help='这个是生成的N个SMIMES文件')parser.add_argument('--train_smiles_file', default='100k_moleculars.csv', help='这个是训练集的SMIMES文件')parser.add_argument('--output_dir', default='./', help='Output directory')parser.add_argument('--suite', default='v2')parser.add_argument('--number_samples', default='10000', type=int, help='Number of samples to validity generate')args = parser.parse_args()if args.output_dir is None:args.output_dir = os.path.dirname(os.path.realpath(__file__))with open(args.generate_smiles_file, 'r') as smiles_file:smiles_list = [line.strip() for line in smiles_file.readlines()]generator = AllGeneratorSmiles(molecules=smiles_list)json_file_path = os.path.join(args.output_dir, 'distribution_learning_results.json')# number_samples是从生成的文件中随机取出多少个样本_assess_distribution_learning(model = generator,chembl_training_file = args.train_smiles_file,json_output_file = json_file_path,benchmark_version = args.suite,number_samples=args.number_samples)if __name__ == '__main__':main()

★SMILES数据处理+评价指标所有的代码相关推荐

  1. python评价指标_详解分类评价指标和回归评价指标以及Python代码实现

    这篇文章介绍的内容是详解分类评价指标和回归评价指标以及Python代码实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下. 1.概念 性能度量(评价)指标,主分为两大类: 1)分类评价 ...

  2. 大学物理实验----单摆,实验数据处理。C语言代码实现

    #大学物理实验----单摆,实验数据处理.C语言代码实现 ##简介 大部分理科专业大学都躲不过做大学物理实验,相信你也和我一样对实验报告数据处理感到头疼,尤其是遇到像单摆这种需要测量多组数据的实验,敲 ...

  3. 【Python】pandas 缺失数据处理大全(附代码)

    之前一直在分享pandas的一些骚操作:pandas骚操作,根据大家反映还不错,但是很多技巧都混在了一起,没有细致的分类,这样不利于查找,也不成体系. 利用闲暇之余将有关数据清洗.数据分析的一些技能再 ...

  4. mcem r语言代码_生态学数据处理常用R语言代码

    使用R来处理生态学数据越来越受到科研工作者的青睐,语义编程风格.漂亮的出图效果,能直接俘获众多用户.本文将生态学数据处理中经常会使用到的功能做个搜集整理. 本文假设读者有一些R的基础知识,对于R的编程 ...

  5. 数据处理-500行Python代码处理ave/chunk命令下1d和2d分块数据

    文章目录 资源地址 注意事项 流程图示 使用说明 资源地址 lammps-data-processing 该仓库目前的README文档及老一版本的Python脚本写的并不规范,后期不定时更新修改,该仓 ...

  6. 【推荐收藏】机器学习12种回归评价指标(附Python代码)

    你是否曾经遇到各种评价指标而不知道含义?或者不知道如何使用Numpy进行计算? 在本文我们将介绍常见的回归评价指标,并包含公式和Numpy计算代码. 文章目录 技术提升 Mean Absolute E ...

  7. 【理论+实践】史上最全-论文中常用的图像分割评价指标-附完整代码

    图像分割的评价指标非常多,论文中常用的包括像素准确率(Pixel Accuracy, PA).交并比(Intersection-Over-Union,IOU).Dice系数(Dice Coeffcie ...

  8. 深度学习评价指标总结及代码实现

    1.分类任务 混淆矩阵 混淆矩阵就是统计分类模型的分类结果,即:统计归对类,归错类的样本的个数,然后把结果放在一个表里展示出来,这个表就是混淆矩阵. 初步理解混淆矩阵,当以二分类混淆矩阵作为入门,多分 ...

  9. 基因数据处理123之SSW代码不正确,到时比SparkSW时间长

    更多代码请见:https://github.com/xubo245 基因数据处理系列 1.解释 由于要生成新的score matrix:blosum50,第一次使用静态方法,直接传给align,到时每 ...

  10. 【Python】pandas 分类数据处理大全(附代码)

    所有数据和代码可在GitHub获取: https://github.com/xiaoyusmd/PythonDataScience category是pandas的一种分类的定类数据类型.和文本数据. ...

最新文章

  1. uint8_t uint16_t uint32_t uint64_t 解析
  2. operator conv_transpose1‘s input 1 is not linked
  3. django ForeignKey的使用
  4. 远程抓取Linux服务器上的数据包
  5. 第五届河南省大学生程序设计竞赛 题解
  6. 【MyBatis框架】高级映射-多对多查询
  7. 大话企业级android读书笔记(一)
  8. gssh推送 Warning: Permanently added 'gitee.com’to the list of known hosts.
  9. php类型运算符,PHP-运算符类型
  10. Unity3D新手入门初级教程
  11. 过滤器(Filter)与拦截器(Interceptor )区别
  12. 破解WMV格式电影的许可证
  13. python expend_Python序列化proto中repeated修饰的数据
  14. 冻结pexcel 代码 -- 这次看看能坚持多久
  15. FX5U 结构体编程
  16. 【rose】rose框架学习总结
  17. 从游戏中理解Java特性,我悟了!
  18. 下载python后怎么运行代码,怎样下载python的编译器
  19. CodeBlocks最全官方配色方案
  20. 《计算机监控系统的仿真开发》内容简介

热门文章

  1. 嵌入式:ARM系列处理器详解与性能对比
  2. 二十、数据库的高可用是怎么实现的?
  3. The JSP specification requires that an attribute name is preceded by whitespace出现错误
  4. Oraclealterindexrebuild与ORA08104说明
  5. Ubuntu fatal: 无法访问 ‘https://github.com/xxxxx/xxxxx‘:Failed to connect to github.com port 443: 连接超时
  6. win7系统怎么用笔记本做wifi热点(转)
  7. Zend Studio 13.6安装配置SVN注意
  8. 模仿支付宝支付成功特效:svg圆圈转动+打钩
  9. 6-13 折半查找 (15 分)
  10. 字体图标和变形 transform属性的使用