# 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)什么地方错了。、
时间: 2024-04-21 07:23:12 浏览: 162
在你提供的代码中,有几个问题需要解决:
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)
```
请根据实际情况修改代码中的文件路径和数据列索引,以满足你的需求。另外,请确保相关的库已经正确安装。如果还有其他问题,请提供具体的错误信息,以便我可以更好地帮助你。
阅读全文