修改代码smiles_list = df['SMILES'].tolist()为一个多维向量,使其中每一行数据都运行desc_fp = from_smiles('', fingerprints=True)这个函数
时间: 2024-10-23 19:14:20 浏览: 14
如果你想将DataFrame `df` 中的 'SMILES' 列转换为一个多维向量,并对每个字符串应用 `from_smiles` 函数并将结果存储为指纹向量,你需要遍历每一行的 SMILES 数据并逐个处理。这里有一个例子如何实现:
```python
import pandas as pd
# 假设desc_fp函数需要单独的SMILES字符串作为输入
def process_smiles(smiles):
desc_fp = from_smiles(smiles, fingerprints=True)
return desc_fp
# 获取SMILES列表
smiles_list = df['SMILES'].tolist()
# 将列表转换为二维列表,以便逐行处理
multi_dim_vector = [process_smiles(smile) for smile in smiles_list]
# 或者如果你想要将所有fp组合成一个二维数组
all_desc_fps = np.array(multi_dim_vector)
# 现在 multi_dim_vector 或 all_desc_fps 都包含了对每个 SMILES 应用指定函数后的指纹向量
```
注意:在这个例子中,我假设了一个名为`from_smiles`的函数存在并且接受一个SMILES字符串和一个布尔值(fingerprints)。如果有其他参数或命名规则,请相应地调整代码。
相关问题
class DTIDataset(data.Dataset): def __init__(self, list_IDs, df, max_drug_nodes=290): self.list_IDs = list_IDs self.df = df self.max_drug_nodes = max_drug_nodes self.atom_featurizer = CanonicalAtomFeaturizer() self.bond_featurizer = CanonicalBondFeaturizer(self_loop=True) self.fc = partial(smiles_to_bigraph, add_self_loop=True)是什么意思
这段代码定义了一个名为DTIDataset的类,它继承自data.Dataset。在初始化函数中,它接受三个参数:list_IDs、df和max_drug_nodes。它还定义了一个atom_featurizer和一个bond_featurizer,它们分别使用CanonicalAtomFeaturizer和CanonicalBondFeaturizer类进行初始化。最后,它定义了一个fc函数,它使用smiles_to_bigraph函数将SMILES字符串转换为图形表示,并添加了自环。
df =pd.read_excel("D:\HBVdata\HBV_P.xlsx") smile_list =df['Smiles'].tolist() mols =[Chem.MolFromSmiles(smile) for smile in smile_list] fingerprints =[Chem.RDKFingerprint(mol) for mol in mols] dg =pd.read_csv("D:\HBVdata\hbvfrag_recap_delete_duplicate.csv") smi_list =dg['mol'].tolist() submols =[Chem.MolFromSmarts(smi) for smi in smi_list] count_dict = {} for submol_idx, submol in enumerate(submols): count = 0 for mol in mols: if mol.HasSubstructMatch(submol): count += 1 count_dict[submol_idx] = count改变这段代码将字典索引变成分子smiles
可以尝试如下修改代码:
```
df = pd.read_excel("D:\HBVdata\HBV_P.xlsx")
smile_list = df['Smiles'].tolist()
mols = [Chem.MolFromSmiles(smile) for smile in smile_list]
fingerprints = [Chem.RDKFingerprint(mol) for mol in mols]
dg = pd.read_csv("D:\HBVdata\hbvfrag_recap_delete_duplicate.csv")
smi_list = dg['mol'].tolist()
submols = [Chem.MolFromSmarts(smi) for smi in smi_list]
count_dict = {}
for submol in submols:
count = 0
for mol_idx, mol in enumerate(mols):
if mol.HasSubstructMatch(submol):
count += 1
smiles = smile_list[mol_idx]
count_dict[smiles] = count
```
这样修改后,字典的键为分子的SMILES字符串,值为包含该分子的子结构的母体分子个数。
阅读全文