@@ -53,6 +53,32 @@ def read_pdbqt_block(pdbqt_block):
53
53
return mols
54
54
55
55
56
+ def assign_mol_props_to_conf (mol , conf ):
57
+ for k , v in mol .GetPropsAsDict ().items ():
58
+ if isinstance (v , int ):
59
+ conf .SetIntProp (k , v )
60
+ elif isinstance (v , float ):
61
+ conf .SetDoubleProp (k , v )
62
+ elif isinstance (v , bool ):
63
+ conf .SetBoolProp (k , v )
64
+ else :
65
+ conf .SetProp (k , v )
66
+ return conf
67
+
68
+
69
+ def assign_conf_props_to_mol (conf , mol ):
70
+ for k , v in conf .GetPropsAsDict ().items ():
71
+ if isinstance (v , int ):
72
+ mol .SetIntProp (k , v )
73
+ elif isinstance (v , float ):
74
+ mol .SetDoubleProp (k , v )
75
+ elif isinstance (v , bool ):
76
+ mol .SetBoolProp (k , v )
77
+ else :
78
+ mol .SetProp (k , v )
79
+ return mol
80
+
81
+
56
82
def __get_smi_as_molname (mol ):
57
83
try :
58
84
name = Chem .MolToSmiles (mol , isomericSmiles = True )
@@ -96,12 +122,15 @@ def __read_sdf_confs(fname, input_format, id_field_name=None, sanitize=True, sdf
96
122
if sdf_confs :
97
123
if title is None :
98
124
m = mol
125
+ conf = assign_mol_props_to_conf (m , m .GetConformer (0 ))
99
126
title = mol_title
100
127
elif title == mol_title :
101
- m .AddConformer (mol .GetConformer (0 ), assignId = True )
128
+ conf = assign_mol_props_to_conf (mol , mol .GetConformer (0 ))
129
+ m .AddConformer (conf , assignId = True )
102
130
else :
103
131
yield m , title
104
132
m = mol
133
+ conf = assign_mol_props_to_conf (m , m .GetConformer (0 ))
105
134
title = mol_title
106
135
else :
107
136
yield mol , mol_title
0 commit comments