for i, smi in enumerate(smiles_indigoautomapperknime): print(smi) rxn = new_func(smi) if rxn is not None: # 绘制反应结构 img = Draw.ReactionToImage(rxn) img.save(f'D:/3/reaction_{i}.png') else: #当无法解析rxn_smiles时,使用print语句打印出相应的消息,并将无法解析的smi值作为附加信息一起打印。 print("Failed to parse rxn_smiles.", smi)
时间: 2024-04-17 07:27:49 浏览: 134
根据你提供的代码,当 `new_func(smi)` 返回一个有效的反应对象 `rxn` 时,你希望将其绘制成图像并保存为 PNG 文件。而当 `rxn` 为 `None` 时,你想打印一条消息指示解析失败,并将无法解析的 `smi` 值作为附加信息一起打印。
这段代码看起来是正确的,没有明显的错误。当然,要确保 `new_func()` 函数能够正确解析 `smi` 并返回一个有效的反应对象。如果你遇到任何问题,可以提供更多的上下文信息和错误消息,以便我能够更好地帮助你。
相关问题
# coding=utf-8 #加载化学库 from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem import AllChem import pandas as pd import os import csv # 读取 CSV 文件 data = pd.read_csv('dataSetB.csv') # 提取 rxn_smiles 列 # 获取每一列的数据 smiles_mapping_namerxn = data['rxnSmiles_Mapping_NameRxn'] smiles_mapping_indigotk = data['rxnSmiles_Mapping_IndigoTK'] smiles_indigoautomapperknime = data['rxnSmiles_IndigoAutoMapperKNIME'] # 创建目录 os.makedirs('D:/1/', exist_ok=True) os.makedirs('D:/2/', exist_ok=True) os.makedirs('D:/3/', exist_ok=True) # 遍历每个 rxn_smiles 字符串并打印 #for i, smi in enumerate(smiles_mapping_namerxn): # print(smi) # rxn = chem.allchem.reactionfromsmarts(smi) # if rxn is not none: # # 绘制反应结构 # img = draw.reactiontoimage(rxn) # img.show() # img.save(f'd:/1/reaction_{i}.png') # else: # #当无法解析rxn_smiles时,使用print语句打印出相应的消息,并将无法解析的smi值作为附加信息一起打印。 # print("failed to parse rxn_smiles.", smi) #for i, smi in enumerate(smiles_mapping_indigotk): # print(smi) # rxn = Chem.AllChem.ReactionFromSmarts(smi) # if rxn is not None: # 绘制反应结构 # img = Draw.ReactionToImage(rxn) # img.save(f'D:/2/reaction_{i}.png') # else: # 当无法解析rxn_smiles时,使用print语句打印出相应的消息,并将无法解析的smi值作为附加信息一起打印。 # print("Failed to parse rxn_smiles.", smi) def new_func(smi): rxn = Chem.AllChem.ReactionFromSmarts(smi) return rxn #for i, smi in enumerate(smiles_indigoautomapperknime): # print(smi) # rxn = new_func(smi) # if rxn is not None: with open('your_file.csv', 'r') as file: reader = csv.reader(file) rows = list(reader) for row in rows[42154:]: # 绘制反应结构 img = Draw.ReactionToImage(rxn) img.save(f'D:/3/reaction_{i}.png') lines=lines+1 else: #当无法解析rxn_smiles时,使用print语句打印出相应的消息,并将无法解析的smi值作为附加信息一起打印。 print("Failed to parse rxn_smiles.", smi)什么地方错了。、
在你提供的代码中,有几个问题需要解决:
1. 在使用 `csv.reader()` 读取 CSV 文件之前,你需要将文件路径 `'your_file.csv'` 指定为实际的文件路径,或者确保该文件与代码在同一目录下。
2. 在处理每一行数据之前,你需要根据需要通过 `new_func()` 函数将 SMILES 转化为反应对象 `rxn`。
3. 在 `for` 循环中,你需要使用 `enumerate()` 函数来获取索引 `i` 和对应的行数据 `row`。
修改后的代码示例如下:
```python
from rdkit import Chem
from rdkit.Chem import Draw
import csv
def new_func(smi):
rxn = Chem.AllChem.ReactionFromSmarts(smi)
return rxn
with open('your_file.csv', 'r') as file:
reader = csv.reader(file)
rows = list(reader)
for i, row in enumerate(rows[42154:]):
smi = row[0] # 假设 SMILES 数据在第一列
print(smi)
rxn = new_func(smi)
if rxn is not None:
# 绘制反应结构
img = Draw.ReactionToImage(rxn)
img.save(f'D:/3/reaction_{i}.png')
else:
print("Failed to parse rxn_smiles.", smi)
```
请根据实际情况修改代码中的文件路径和数据列索引,以满足你的需求。另外,请确保相关的库已经正确安装。如果还有其他问题,请提供具体的错误信息,以便我可以更好地帮助你。
for i, row in enumerate(rows[42160:]): smi = row[8] # 假设 SMILES 数据在第一列 print(smi) rxn = new_func(smi) if rxn is not None: # 绘制反应结构 img = Draw.ReactionToImage(rxn) img.save(f'D:/4/reaction_{i}.png') else: print("Failed to parse rxn_smiles.", smi)
根据你提供的代码,你正在尝试处理一个包含多个反应 SMILES 的数据集。你循环遍历数据集的每一行,并将每个反应 SMILES 字符串传递给 `new_func` 函数进行解析和处理。
然后,你使用 `Draw.ReactionToImage` 函数将解析后的反应对象转换为图像,并保存到指定的文件路径。
如果解析成功,图像将保存在 `D:/4/` 目录下,文件名类似 `reaction_i.png`,其中 `i` 是循环索引。
如果解析失败,你将打印一条错误消息,指示无法解析该反应 SMILES 字符串。
请确保在运行代码之前已正确导入所需的库(如 RDKit)并设置好相应的环境。
如果你遇到任何问题或需要进一步的帮助,请提供更多的信息或错误消息,我将尽力帮助你解决问题。
阅读全文