Mimi Lavin commited on
Commit
eefbde9
·
1 Parent(s): 5d5ac48

upgrade to single-graph model v2 with N/O/S radical support

Browse files
mimis_featurizer.py CHANGED
@@ -1,26 +1,35 @@
1
  from __future__ import annotations
 
2
  from typing import Dict, Any, Optional, Tuple
3
  import numpy as np
4
  import pandas as pd
5
  import nfp
6
  from nfp.preprocessing.features import get_ring_size
7
  from rdkit import Chem
 
8
  from rdkit import RDLogger
9
  import joblib
10
- from mimis_preprocessor import canonicalize_smiles
11
 
12
- RDLogger.DisableLog("rdApp.*") # disable RDKit warnings
13
 
14
- from pathlib import Path
15
  BASE_DIR = Path(__file__).resolve().parent
 
16
 
17
- def featurize_atom(atom):
18
- """
19
- Return an integer hash representing the atom type
20
- :param atom: atom in an RDKit mol object
21
- :return: string with atom features, like atom symbol, number of radical electrons, etc.
22
- """
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  return str(
25
  (
26
  atom.GetSymbol(),
@@ -31,16 +40,12 @@ def featurize_atom(atom):
31
  get_ring_size(atom, max_size=6),
32
  atom.GetDegree(),
33
  atom.GetTotalNumHs(includeNeighbors=True),
 
34
  )
35
  )
36
 
 
37
  def featurize_bond(bond, flipped=False):
38
- """
39
- Return an integer hash representing the bond type
40
- :param bond: RDKit bond object
41
- :param flipped: whether to flip the begin and end atoms
42
- :return: string with bond features, like atom types, bond type, ring size, etc.
43
- """
44
  if not flipped:
45
  atoms = "{}-{}".format(
46
  *tuple((bond.GetBeginAtom().GetSymbol(), bond.GetEndAtom().GetSymbol()))
@@ -55,19 +60,16 @@ def featurize_bond(bond, flipped=False):
55
 
56
  return " ".join([atoms, btype, ring]).strip()
57
 
58
- preprocessor_shared = nfp.SmilesBondIndexPreprocessor( # atom and bond featurizers
 
59
  atom_features=featurize_atom,
60
  bond_features=featurize_bond,
61
  explicit_hs=True,
62
  output_dtype="int64",
63
  )
64
 
 
65
  def get_radical_center_index(radical_smiles: str) -> int:
66
- """
67
- returns the atom index of the radical center
68
- :param radical_smiles: smiles string of the radical
69
- :return: integer index of the radical center atom
70
- """
71
  mol = Chem.MolFromSmiles(radical_smiles, sanitize=True)
72
  if mol is None:
73
  raise ValueError(f"Invalid radical SMILES: {radical_smiles}")
@@ -80,67 +82,108 @@ def get_radical_center_index(radical_smiles: str) -> int:
80
 
81
  return int(rad_atoms[0])
82
 
83
- def featurize_pair(original_smiles: str, radical_smiles: str, *, canonicalize: bool = True, max_num_edges: Optional[int] = None) -> Dict[str, Any]:
84
- """
85
- featurizes a pair of smiles strings, the original smiles and the modified radical smiles
86
- :param original_smiles: original smiles string
87
- :param radical_smiles: radical smiles string
88
- :param canonicalize: boolean, whether to canonicalize the smiles strings
89
- :param max_num_edges: optional, pre-pad the edge dimensions so all molecules have the same K edges
90
- :return: dictionary with featurized data for both the original molecule and the radical smiles
 
 
 
 
91
  """
 
 
 
 
 
 
 
 
 
92
 
 
 
93
  if canonicalize:
94
- original_smiles = canonicalize_smiles(original_smiles)
95
  radical_smiles = canonicalize_smiles(radical_smiles)
96
- if original_smiles is None or radical_smiles is None:
97
- raise ValueError("Invalid SMILES in pair after canonicalization.")
98
 
99
  kwargs = {}
100
  if max_num_edges is not None:
101
  kwargs["max_num_edges"] = int(max_num_edges)
102
 
103
- preprocessor_shared.from_json(BASE_DIR / "philicity_model_v1.json")
 
104
 
105
- feats_o = preprocessor_shared(original_smiles, train=False, **kwargs)
106
- feats_r = preprocessor_shared(radical_smiles, train=False, **kwargs)
107
 
108
- rad_center = get_radical_center_index(radical_smiles)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
  return {
111
- "original": feats_o,
112
- "radical": feats_r,
113
  "radical_center": np.int64(rad_center),
114
- "original_smiles": original_smiles,
 
 
115
  "radical_smiles": radical_smiles,
116
  }
117
 
118
- def featurize_smiles_dataframe(df: pd.DataFrame, *, original_col: str = "canonical_original_smiles", radical_col: str = "canonical_radical_smiles", y_col: Optional[str] = "philicity", canonicalize: bool = False, drop_invalid: bool = True, max_num_edges: Optional[int] = None) -> Tuple[list[Dict[str, Any]], Optional[np.ndarray], pd.DataFrame]:
119
- """
120
- featurizes a dataframe with two smiles columns, one for the original molecule and one for the radical molecule
121
- gives a nested dictionary of original smiles and radical smiles features
122
- :param df: pandas dataframe
123
- :param original_col: name of the column containing the original smiles strings
124
- :param radical_col: name of the column containing the radical smiles strings
125
- :param y_col: name of the column containing the target values
126
- :param canonicalize: boolean, whether to canonicalize the smiles strings
127
- :param drop_invalid: boolean, whether to drop rows with invalid smiles strings
128
- :param max_num_edges: optional, pre-pad the edge dimensions so all molecules have the same K edges
129
- :return: nested dictionary with featurized data, numpy array of target values, and dataframe of kept rows
130
- """
131
 
132
  features_list = []
133
  ys = []
134
  keep_rows = []
135
 
136
  for i, row in df.iterrows():
137
- o = row.get(original_col)
138
  r = row.get(radical_col)
139
 
140
  try:
141
- feats = featurize_pair(
142
- o, r, canonicalize=canonicalize, max_num_edges=max_num_edges
143
- )
144
  features_list.append(feats)
145
 
146
  if y_col is not None:
@@ -161,55 +204,20 @@ def featurize_smiles_dataframe(df: pd.DataFrame, *, original_col: str = "canonic
161
 
162
  return features_list, y, kept_df
163
 
164
- def save_shared_vocab(df, original_col="original_smiles", radical_col="radical_smiles", out_path="/Users/mimis_stuff/Documents/GitHub/alfabet/data/philicity_model_v1.json"):
165
- """
166
- builds and saves a shared vocabulary preprocessor from a dataframe with two smiles columns
167
- :param df: pandas dataframe with smiles columns
168
- :param original_col: name of the column containing the original smiles strings
169
- :param radical_col: name of the column containing the radical smiles strings
170
- :param out_path: path to save the preprocessor json file
171
- :return: none, just save the preprocessor to the specified location
172
- """
173
 
174
- # clean up smiles
175
- o = df[original_col].apply(canonicalize_smiles)
 
 
 
 
 
 
176
  r = df[radical_col].apply(canonicalize_smiles)
177
- all_smiles = pd.concat([o, r]).dropna().unique().tolist()
178
 
179
- # build vocab
180
  for s in all_smiles:
181
- preprocessor_shared(s, train=True)
182
 
183
- # save the preprocessor
184
- preprocessor_shared.to_json(out_path)
185
  print("Saved:", out_path)
186
-
187
-
188
- if __name__ == "__main__":
189
-
190
- # read in the smiles dataframe
191
- df = pd.read_csv('/Users/mimis_stuff/PycharmProjects/PythonProject/philicity_prediction/data/all_philicities_canonicalized.csv')
192
-
193
- save_shared_vocab(df)
194
-
195
- # just restrict to necessary columns
196
- df = df[['original_smiles', 'radical_smiles', 'philicity']]
197
-
198
- feats_list, y, kept = featurize_smiles_dataframe(
199
- df,
200
- original_col="original_smiles",
201
- radical_col="radical_smiles",
202
- y_col="philicity",
203
- canonicalize=True,
204
- drop_invalid=True,
205
- )
206
-
207
- # save feature dictionary and target array
208
- joblib.dump(feats_list, "/Users/mimis_stuff/Documents/GitHub/alfabet/data/features_two_graphs.joblib")
209
- np.save("/Users/mimis_stuff/Documents/GitHub/alfabet/data/targets_philicity.npy", y)
210
-
211
- # inspect one example
212
- ex = feats_list[1]
213
- print("original keys:", ex["original"].keys())
214
- print("radical keys:", ex["radical"].keys())
215
- print("radical_center:", ex["radical_center"])
 
1
  from __future__ import annotations
2
+
3
  from typing import Dict, Any, Optional, Tuple
4
  import numpy as np
5
  import pandas as pd
6
  import nfp
7
  from nfp.preprocessing.features import get_ring_size
8
  from rdkit import Chem
9
+ from rdkit.Chem import AllChem
10
  from rdkit import RDLogger
11
  import joblib
12
+ from pathlib import Path
13
 
14
+ RDLogger.DisableLog("rdApp.*")
15
 
 
16
  BASE_DIR = Path(__file__).resolve().parent
17
+ PREPROCESSOR_PATH = BASE_DIR / "data" / "philicity_model_v2_single.json"
18
 
 
 
 
 
 
 
19
 
20
+ def canonicalize_smiles(smiles: str):
21
+ if not isinstance(smiles, str):
22
+ return None
23
+ try:
24
+ mol = Chem.MolFromSmiles(smiles, sanitize=True)
25
+ if mol is None:
26
+ return None
27
+ return Chem.MolToSmiles(mol, canonical=True)
28
+ except Exception:
29
+ return None
30
+
31
+
32
+ def featurize_atom(atom):
33
  return str(
34
  (
35
  atom.GetSymbol(),
 
40
  get_ring_size(atom, max_size=6),
41
  atom.GetDegree(),
42
  atom.GetTotalNumHs(includeNeighbors=True),
43
+ atom.GetHybridization(),
44
  )
45
  )
46
 
47
+
48
  def featurize_bond(bond, flipped=False):
 
 
 
 
 
 
49
  if not flipped:
50
  atoms = "{}-{}".format(
51
  *tuple((bond.GetBeginAtom().GetSymbol(), bond.GetEndAtom().GetSymbol()))
 
60
 
61
  return " ".join([atoms, btype, ring]).strip()
62
 
63
+
64
+ preprocessor = nfp.SmilesBondIndexPreprocessor(
65
  atom_features=featurize_atom,
66
  bond_features=featurize_bond,
67
  explicit_hs=True,
68
  output_dtype="int64",
69
  )
70
 
71
+
72
  def get_radical_center_index(radical_smiles: str) -> int:
 
 
 
 
 
73
  mol = Chem.MolFromSmiles(radical_smiles, sanitize=True)
74
  if mol is None:
75
  raise ValueError(f"Invalid radical SMILES: {radical_smiles}")
 
82
 
83
  return int(rad_atoms[0])
84
 
85
+
86
+ def load_preprocessor(path: Optional[str] = None) -> None:
87
+ """Load the shared vocab into the preprocessor. Call once before featurizing."""
88
+ preprocessor.from_json(str(path or PREPROCESSOR_PATH))
89
+
90
+
91
+ def featurize_radical(
92
+ radical_smiles: str,
93
+ *,
94
+ canonicalize: bool = True,
95
+ max_num_edges: Optional[int] = None,
96
+ ) -> Dict[str, Any]:
97
  """
98
+ Featurizes a single radical SMILES string.
99
+
100
+ Returns a dict with:
101
+ - "radical": NFP graph features
102
+ - "radical_center": integer index of the radical center atom
103
+ - "radical_center_mask": float32 array of shape (n_atoms,), 1.0 at radical center
104
+ - "topo_dist_to_rc": float32 array, topological distance from each atom to radical center
105
+ - "gasteiger_charges": float32 array of Gasteiger partial charges, one per atom
106
+ - "radical_smiles": the (canonicalized) SMILES string
107
 
108
+ Requires load_preprocessor() to have been called first.
109
+ """
110
  if canonicalize:
 
111
  radical_smiles = canonicalize_smiles(radical_smiles)
112
+ if radical_smiles is None:
113
+ raise ValueError("Invalid radical SMILES after canonicalization.")
114
 
115
  kwargs = {}
116
  if max_num_edges is not None:
117
  kwargs["max_num_edges"] = int(max_num_edges)
118
 
119
+ feats = preprocessor(radical_smiles, train=False, **kwargs)
120
+ rad_center = get_radical_center_index(radical_smiles)
121
 
122
+ n_atoms = len(feats["atom"])
 
123
 
124
+ mol = Chem.MolFromSmiles(radical_smiles, sanitize=True)
125
+ mol_h = Chem.AddHs(mol)
126
+
127
+ # per-atom binary flag for the radical center
128
+ radical_center_mask = np.zeros(n_atoms, dtype=np.float32)
129
+ radical_center_mask[rad_center] = 1.0
130
+
131
+ # topological distance to radical center (H-explicit mol so indices match)
132
+ dist_matrix = Chem.GetDistanceMatrix(mol_h)
133
+ topo_dist_to_rc = dist_matrix[rad_center].astype(np.float32)
134
+
135
+ if len(topo_dist_to_rc) != n_atoms:
136
+ raise ValueError(
137
+ f"Topo dist length mismatch for {radical_smiles}: "
138
+ f"dist {len(topo_dist_to_rc)} vs feats atom {n_atoms}"
139
+ )
140
+
141
+ # Gasteiger partial charges (H-explicit mol so indices match)
142
+ AllChem.ComputeGasteigerCharges(mol_h)
143
+ gasteiger_charges = np.array(
144
+ [atom.GetDoubleProp("_GasteigerCharge") for atom in mol_h.GetAtoms()],
145
+ dtype=np.float32,
146
+ )
147
+ # Replace NaN/inf that can arise for unusual valence states
148
+ gasteiger_charges = np.nan_to_num(gasteiger_charges, nan=0.0, posinf=0.0, neginf=0.0)
149
+
150
+ if len(gasteiger_charges) != n_atoms:
151
+ raise ValueError(
152
+ f"Gasteiger charge length mismatch for {radical_smiles}: "
153
+ f"{len(gasteiger_charges)} vs {n_atoms}"
154
+ )
155
 
156
  return {
157
+ "radical": feats,
 
158
  "radical_center": np.int64(rad_center),
159
+ "radical_center_mask": radical_center_mask,
160
+ "topo_dist_to_rc": topo_dist_to_rc,
161
+ "gasteiger_charges": gasteiger_charges,
162
  "radical_smiles": radical_smiles,
163
  }
164
 
165
+
166
+ def featurize_smiles_dataframe(
167
+ df: pd.DataFrame,
168
+ *,
169
+ radical_col: str = "radical_smiles",
170
+ y_col: Optional[str] = "philicity",
171
+ canonicalize: bool = False,
172
+ drop_invalid: bool = True,
173
+ max_num_edges: Optional[int] = None,
174
+ ) -> Tuple[list[Dict[str, Any]], Optional[np.ndarray], pd.DataFrame]:
175
+
176
+ load_preprocessor() # load vocab once for the entire dataframe
 
177
 
178
  features_list = []
179
  ys = []
180
  keep_rows = []
181
 
182
  for i, row in df.iterrows():
 
183
  r = row.get(radical_col)
184
 
185
  try:
186
+ feats = featurize_radical(r, canonicalize=canonicalize, max_num_edges=max_num_edges)
 
 
187
  features_list.append(feats)
188
 
189
  if y_col is not None:
 
204
 
205
  return features_list, y, kept_df
206
 
 
 
 
 
 
 
 
 
 
207
 
208
+ def save_shared_vocab(
209
+ df,
210
+ radical_col: str = "radical_smiles",
211
+ out_path: Optional[str] = None,
212
+ ):
213
+ if out_path is None:
214
+ out_path = str(PREPROCESSOR_PATH)
215
+
216
  r = df[radical_col].apply(canonicalize_smiles)
217
+ all_smiles = r.dropna().unique().tolist()
218
 
 
219
  for s in all_smiles:
220
+ preprocessor(s, train=True)
221
 
222
+ preprocessor.to_json(out_path)
 
223
  print("Saved:", out_path)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mimis_featurizer_v2.py ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from typing import Dict, Any, Optional, Tuple
4
+ import numpy as np
5
+ import pandas as pd
6
+ import nfp
7
+ from nfp.preprocessing.features import get_ring_size
8
+ from rdkit import Chem
9
+ from rdkit.Chem import AllChem
10
+ from rdkit import RDLogger
11
+ import joblib
12
+ from pathlib import Path
13
+
14
+ RDLogger.DisableLog("rdApp.*")
15
+
16
+ BASE_DIR = Path(__file__).resolve().parent
17
+ PREPROCESSOR_PATH = BASE_DIR / "data" / "philicity_model_v2_single.json"
18
+
19
+
20
+ def canonicalize_smiles(smiles: str):
21
+ if not isinstance(smiles, str):
22
+ return None
23
+ try:
24
+ mol = Chem.MolFromSmiles(smiles, sanitize=True)
25
+ if mol is None:
26
+ return None
27
+ return Chem.MolToSmiles(mol, canonical=True)
28
+ except Exception:
29
+ return None
30
+
31
+
32
+ def featurize_atom(atom):
33
+ return str(
34
+ (
35
+ atom.GetSymbol(),
36
+ atom.GetNumRadicalElectrons(),
37
+ atom.GetFormalCharge(),
38
+ atom.GetChiralTag(),
39
+ atom.GetIsAromatic(),
40
+ get_ring_size(atom, max_size=6),
41
+ atom.GetDegree(),
42
+ atom.GetTotalNumHs(includeNeighbors=True),
43
+ atom.GetHybridization(),
44
+ )
45
+ )
46
+
47
+
48
+ def featurize_bond(bond, flipped=False):
49
+ if not flipped:
50
+ atoms = "{}-{}".format(
51
+ *tuple((bond.GetBeginAtom().GetSymbol(), bond.GetEndAtom().GetSymbol()))
52
+ )
53
+ else:
54
+ atoms = "{}-{}".format(
55
+ *tuple((bond.GetEndAtom().GetSymbol(), bond.GetBeginAtom().GetSymbol()))
56
+ )
57
+
58
+ btype = str((bond.GetBondType(), bond.GetIsConjugated()))
59
+ ring = "R{}".format(get_ring_size(bond, max_size=6)) if bond.IsInRing() else ""
60
+
61
+ return " ".join([atoms, btype, ring]).strip()
62
+
63
+
64
+ preprocessor = nfp.SmilesBondIndexPreprocessor(
65
+ atom_features=featurize_atom,
66
+ bond_features=featurize_bond,
67
+ explicit_hs=True,
68
+ output_dtype="int64",
69
+ )
70
+
71
+
72
+ def get_radical_center_index(radical_smiles: str) -> int:
73
+ mol = Chem.MolFromSmiles(radical_smiles, sanitize=True)
74
+ if mol is None:
75
+ raise ValueError(f"Invalid radical SMILES: {radical_smiles}")
76
+
77
+ rad_atoms = [a.GetIdx() for a in mol.GetAtoms() if a.GetNumRadicalElectrons() > 0]
78
+ if len(rad_atoms) == 0:
79
+ raise ValueError(f"No radical center found in: {radical_smiles}")
80
+ if len(rad_atoms) > 1:
81
+ raise ValueError(f"Multiple radical centers found in: {radical_smiles}")
82
+
83
+ return int(rad_atoms[0])
84
+
85
+
86
+ def load_preprocessor(path: Optional[str] = None) -> None:
87
+ """Load the shared vocab into the preprocessor. Call once before featurizing."""
88
+ preprocessor.from_json(str(path or PREPROCESSOR_PATH))
89
+
90
+
91
+ def featurize_radical(
92
+ radical_smiles: str,
93
+ *,
94
+ canonicalize: bool = True,
95
+ max_num_edges: Optional[int] = None,
96
+ ) -> Dict[str, Any]:
97
+ """
98
+ Featurizes a single radical SMILES string.
99
+
100
+ Returns a dict with:
101
+ - "radical": NFP graph features
102
+ - "radical_center": integer index of the radical center atom
103
+ - "radical_center_mask": float32 array of shape (n_atoms,), 1.0 at radical center
104
+ - "topo_dist_to_rc": float32 array, topological distance from each atom to radical center
105
+ - "gasteiger_charges": float32 array of Gasteiger partial charges, one per atom
106
+ - "radical_smiles": the (canonicalized) SMILES string
107
+
108
+ Requires load_preprocessor() to have been called first.
109
+ """
110
+ if canonicalize:
111
+ radical_smiles = canonicalize_smiles(radical_smiles)
112
+ if radical_smiles is None:
113
+ raise ValueError("Invalid radical SMILES after canonicalization.")
114
+
115
+ kwargs = {}
116
+ if max_num_edges is not None:
117
+ kwargs["max_num_edges"] = int(max_num_edges)
118
+
119
+ feats = preprocessor(radical_smiles, train=False, **kwargs)
120
+ rad_center = get_radical_center_index(radical_smiles)
121
+
122
+ n_atoms = len(feats["atom"])
123
+
124
+ mol = Chem.MolFromSmiles(radical_smiles, sanitize=True)
125
+ mol_h = Chem.AddHs(mol)
126
+
127
+ # per-atom binary flag for the radical center
128
+ radical_center_mask = np.zeros(n_atoms, dtype=np.float32)
129
+ radical_center_mask[rad_center] = 1.0
130
+
131
+ # topological distance to radical center (H-explicit mol so indices match)
132
+ dist_matrix = Chem.GetDistanceMatrix(mol_h)
133
+ topo_dist_to_rc = dist_matrix[rad_center].astype(np.float32)
134
+
135
+ if len(topo_dist_to_rc) != n_atoms:
136
+ raise ValueError(
137
+ f"Topo dist length mismatch for {radical_smiles}: "
138
+ f"dist {len(topo_dist_to_rc)} vs feats atom {n_atoms}"
139
+ )
140
+
141
+ # Gasteiger partial charges (H-explicit mol so indices match)
142
+ AllChem.ComputeGasteigerCharges(mol_h)
143
+ gasteiger_charges = np.array(
144
+ [atom.GetDoubleProp("_GasteigerCharge") for atom in mol_h.GetAtoms()],
145
+ dtype=np.float32,
146
+ )
147
+ # Replace NaN/inf that can arise for unusual valence states
148
+ gasteiger_charges = np.nan_to_num(gasteiger_charges, nan=0.0, posinf=0.0, neginf=0.0)
149
+
150
+ if len(gasteiger_charges) != n_atoms:
151
+ raise ValueError(
152
+ f"Gasteiger charge length mismatch for {radical_smiles}: "
153
+ f"{len(gasteiger_charges)} vs {n_atoms}"
154
+ )
155
+
156
+ return {
157
+ "radical": feats,
158
+ "radical_center": np.int64(rad_center),
159
+ "radical_center_mask": radical_center_mask,
160
+ "topo_dist_to_rc": topo_dist_to_rc,
161
+ "gasteiger_charges": gasteiger_charges,
162
+ "radical_smiles": radical_smiles,
163
+ }
164
+
165
+
166
+ def featurize_smiles_dataframe(
167
+ df: pd.DataFrame,
168
+ *,
169
+ radical_col: str = "radical_smiles",
170
+ y_col: Optional[str] = "philicity",
171
+ canonicalize: bool = False,
172
+ drop_invalid: bool = True,
173
+ max_num_edges: Optional[int] = None,
174
+ ) -> Tuple[list[Dict[str, Any]], Optional[np.ndarray], pd.DataFrame]:
175
+
176
+ load_preprocessor() # load vocab once for the entire dataframe
177
+
178
+ features_list = []
179
+ ys = []
180
+ keep_rows = []
181
+
182
+ for i, row in df.iterrows():
183
+ r = row.get(radical_col)
184
+
185
+ try:
186
+ feats = featurize_radical(r, canonicalize=canonicalize, max_num_edges=max_num_edges)
187
+ features_list.append(feats)
188
+
189
+ if y_col is not None:
190
+ ys.append(float(row[y_col]))
191
+
192
+ keep_rows.append(i)
193
+
194
+ except Exception:
195
+ if not drop_invalid:
196
+ raise
197
+ continue
198
+
199
+ kept_df = df.loc[keep_rows].reset_index(drop=True)
200
+
201
+ y = None
202
+ if y_col is not None:
203
+ y = np.asarray(ys, dtype=np.float32)
204
+
205
+ return features_list, y, kept_df
206
+
207
+
208
+ def save_shared_vocab(
209
+ df,
210
+ radical_col: str = "radical_smiles",
211
+ out_path: Optional[str] = None,
212
+ ):
213
+ if out_path is None:
214
+ out_path = str(PREPROCESSOR_PATH)
215
+
216
+ r = df[radical_col].apply(canonicalize_smiles)
217
+ all_smiles = r.dropna().unique().tolist()
218
+
219
+ for s in all_smiles:
220
+ preprocessor(s, train=True)
221
+
222
+ preprocessor.to_json(out_path)
223
+ print("Saved:", out_path)
mimis_inference.py CHANGED
@@ -1,80 +1,61 @@
1
- import json
2
  import numpy as np
3
  import tensorflow as tf
4
- from mimis_featurizer import featurize_pair, featurize_atom, featurize_bond
5
- import nfp
6
  from rdkit import RDLogger
7
  from pathlib import Path
8
- from rdkit import Chem
9
 
10
  RDLogger.DisableLog("rdApp.*")
11
 
12
  BASE_DIR = Path(__file__).resolve().parent
13
- MODEL_DIR = str(BASE_DIR / "philicity_model_v1")
14
- PREPROCESSOR_JSON = str(BASE_DIR / "philicity_model_v1.json")
15
- METADATA_JSON = str(BASE_DIR / "philicity_model_v1.metadata.json")
16
 
17
- # load the saved model
18
- _sm = tf.saved_model.load(MODEL_DIR)
19
- _fn = _sm.signatures["serving_default"] # or "serve"
20
-
21
- # create preprocessor
22
- preprocessor_shared = nfp.SmilesBondIndexPreprocessor(
23
- atom_features=featurize_atom,
24
- bond_features=featurize_bond,
25
- explicit_hs=True,
26
- output_dtype="int64",
27
- )
28
 
29
- # load preprocessor from before
30
- preprocessor_shared.from_json(PREPROCESSOR_JSON)
31
 
32
- print("atom_classes:", preprocessor_shared.atom_classes)
33
- print("bond_classes:", preprocessor_shared.bond_classes)
 
34
 
35
- # load preprocessor metadata
36
- with open(METADATA_JSON, "r") as f:
37
- metadata = json.load(f)
38
 
39
  def predict_philicity(original_smiles: str, radical_smiles: str) -> float:
40
  """
41
- given a closed-shell smiles and a radical smiles, function returns the philicity value
42
- :param original_smiles:
43
- :param radical_smiles:
44
- :return:
45
  """
 
46
 
47
- pair_feats = featurize_pair(original_smiles, radical_smiles, canonicalize=True)
48
 
49
- x_flat = {
50
- "orig_atom": pair_feats["original"]["atom"],
51
- "orig_bond": pair_feats["original"]["bond"],
52
- "orig_connectivity": pair_feats["original"]["connectivity"],
53
- "rad_atom": pair_feats["radical"]["atom"],
54
- "rad_bond": pair_feats["radical"]["bond"],
55
- "rad_connectivity": pair_feats["radical"]["connectivity"],
56
- "radical_center": pair_feats["radical_center"],
57
- }
58
-
59
- x_batched = {}
60
- for k, v in x_flat.items():
61
- arr = np.asarray(v)
62
  if arr.ndim == 0:
63
  arr = arr.reshape(1,)
64
  else:
65
- arr = arr[None, ...]
66
- x_batched[k] = tf.convert_to_tensor(arr, dtype=tf.int64)
 
 
 
 
 
 
 
 
 
 
67
 
68
- y = _fn(**x_batched) # keyword-only call
69
- y = y["output_0"] # (1, 1)
70
 
71
- return float(y.numpy().squeeze())
 
72
 
73
- if __name__ == "__main__":
74
 
75
- # example usage
76
  orig = "CCO"
77
- rad = "C[C]O"
78
- phi = predict_philicity(orig, rad)
79
- print(f"philicity of {rad} from {orig} = {phi}")
80
-
 
 
1
  import numpy as np
2
  import tensorflow as tf
3
+ from RaPTOR.mimis_featurizer_v2 import featurize_radical, load_preprocessor
 
4
  from rdkit import RDLogger
5
  from pathlib import Path
 
6
 
7
  RDLogger.DisableLog("rdApp.*")
8
 
9
  BASE_DIR = Path(__file__).resolve().parent
 
 
 
10
 
11
+ MODEL_DIR = str(BASE_DIR / "philicity_model_v2")
12
+ PREPROCESSOR_JSON = str(BASE_DIR / "philicity_model_v2.json")
 
 
 
 
 
 
 
 
 
13
 
14
+ # load preprocessor vocab
15
+ load_preprocessor(PREPROCESSOR_JSON)
16
 
17
+ # load the saved model
18
+ _sm = tf.saved_model.load(MODEL_DIR)
19
+ _fn = _sm.signatures["serving_default"]
20
 
 
 
 
21
 
22
  def predict_philicity(original_smiles: str, radical_smiles: str) -> float:
23
  """
24
+ Given a closed-shell SMILES and a radical SMILES, returns the philicity value.
25
+ original_smiles is accepted for API compatibility but not used by this model
26
+ (the new model is single-graph: radical only).
 
27
  """
28
+ feats = featurize_radical(radical_smiles, canonicalize=True)
29
 
30
+ rad = feats["radical"]
31
 
32
+ def to_batched(arr, dtype):
33
+ arr = np.asarray(arr)
 
 
 
 
 
 
 
 
 
 
 
34
  if arr.ndim == 0:
35
  arr = arr.reshape(1,)
36
  else:
37
+ arr = arr[None, ...] # add batch dim
38
+ return tf.convert_to_tensor(arr, dtype=dtype)
39
+
40
+ x_batched = {
41
+ "rad_atom": to_batched(rad["atom"], tf.int64),
42
+ "rad_bond": to_batched(rad["bond"], tf.int64),
43
+ "rad_connectivity": to_batched(rad["connectivity"], tf.int64),
44
+ "radical_center": to_batched(feats["radical_center"], tf.int64),
45
+ "radical_center_mask": to_batched(feats["radical_center_mask"], tf.float32),
46
+ "topo_dist_to_rc": to_batched(feats["topo_dist_to_rc"], tf.float32),
47
+ "gasteiger_charges": to_batched(feats["gasteiger_charges"], tf.float32),
48
+ }
49
 
50
+ y = _fn(**x_batched)
51
+ y = list(y.values())[0] # get the single output tensor regardless of key name
52
 
53
+ # model was trained on log1p(philicity) — convert back to original scale
54
+ return float(np.expm1(y.numpy().squeeze()))
55
 
 
56
 
57
+ if __name__ == "__main__":
58
  orig = "CCO"
59
+ rad = "C[C]O"
60
+ phi = predict_philicity(orig, rad)
61
+ print(f"philicity of {rad} from {orig} = {phi:.4f}")
 
philicity_model_v2.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"output_dtype": "int64", "atom_tokenizer": {"_data": {"unk": 1, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 2, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 3, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 4, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 5, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 6, "('Br', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 7, "('H', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.UNSPECIFIED)": 8, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 3, rdkit.Chem.rdchem.HybridizationType.SP3)": 9, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 10, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 11, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 12, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 13, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 14, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 15, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 16, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 17, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 18, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 19, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 20, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 21, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 22, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 23, "('Cl', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 24, "('F', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 25, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 26, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 27, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 28, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP2)": 29, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 30, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 31, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP2)": 32, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 33, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP)": 34, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP)": 35, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 36, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 37, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 38, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 39, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 40, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 41, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 42, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 43, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 44, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 45, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 46, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 47, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 48, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 49, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 50, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 51, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 52, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 3, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 53, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 54, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 55, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 3, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 56, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 57, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 58, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 59, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 60, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 61, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 3, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 62, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 63, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 3, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 64, "('I', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 65, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 66, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 67, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 68, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 69, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 70, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 71, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 72, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 73, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 74, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 75, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 76, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 77, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 78, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 79, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 80, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 81, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 82, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 83, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 84, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 85, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 86, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 87, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 88, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 89, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 90, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 91, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 92, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 93, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 94, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 95, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 96, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 97, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 98, "('N', 0, 1, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 99, "('O', 0, -1, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 100, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP)": 101, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 102, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 103, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 104, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 105, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 106, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP)": 107, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 108, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 109, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 110, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 111, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 112, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 113, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 114, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 115, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 116, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 117, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 118, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 119, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 120, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 121, "('B', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 122, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 123, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 124, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 125, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 126, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 127, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 128, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 129, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3D)": 130, "('O', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 131, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 132, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 133, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 134, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 135, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 136, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 137, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 138, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 139, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 140, "('N', 0, 1, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 141, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 142, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 143, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 144, "('B', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 145, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 146, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 147, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 148, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 149, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 150, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 151, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 152, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 153, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 154, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 155, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 156, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 157, "('B', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 158, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 159, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 160, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 161, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 3, rdkit.Chem.rdchem.HybridizationType.SP3)": 162, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 163, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 164, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 165, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 166, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 167, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 168, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 169, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 170, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 171, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 172, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 173, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 174, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 175, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 176, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 177, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 178, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3D)": 179, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 180, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 181, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 182, "('N', 1, 1, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 183, "('O', 0, -1, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 184, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 185, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 186, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 187, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 188, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 189, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 190, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 191, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 192, "('Si', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 193, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 194, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 195, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 196, "('N', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 197, "('Se', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 198, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 3, rdkit.Chem.rdchem.HybridizationType.SP3)": 199, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 200, "('O', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 201, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 202, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 203, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 204, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 205, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 206, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 207, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 208, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 209, "('Se', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 210, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 211, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 212, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 213, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 214, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 215, "('Se', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 216, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 217, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 218, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 219, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 220, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3D)": 221, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 222, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 223, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 224, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 225, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 226, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 227, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 228, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 229, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 230, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 231, "('C', 3, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 232, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 233, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 234, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 235, "('C', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 3, rdkit.Chem.rdchem.HybridizationType.SP3)": 236, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 237, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 238, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 239, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 2, 0, rdkit.Chem.rdchem.HybridizationType.SP)": 240, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP2)": 241, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 242, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 243, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 244, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 245, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 246, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3D)": 247, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 248, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 249, "('O', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 0, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 250, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 251, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 252, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 'max', 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 253, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP2)": 254, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 255, "('Si', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 256, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 257, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 258, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 4, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 259, "('P', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 4, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 260, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 261, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 262, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 263, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 264, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 265, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 'max', 3, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 266, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 267, "('Cl', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 268, "('N', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 269, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 'max', 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 270, "('Cl', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 0, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 271, "('S', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP)": 272, "('S', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 273, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 5, 5, 0, rdkit.Chem.rdchem.HybridizationType.SP3D)": 274, "('N', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 275, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 276, "('F', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 0, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 277, "('F', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 278, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 3, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 279, "('C', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 280, "('I', 1, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 0, 0, rdkit.Chem.rdchem.HybridizationType.SP3)": 281, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 4, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 282, "('C', 2, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 1, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 283, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CCW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 284, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_TETRAHEDRAL_CW, False, 0, 4, 1, rdkit.Chem.rdchem.HybridizationType.SP3)": 285, "('N', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 3, 3, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 286, "('O', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, True, 3, 2, 0, rdkit.Chem.rdchem.HybridizationType.SP2)": 287, "('P', 0, 0, rdkit.Chem.rdchem.ChiralType.CHI_UNSPECIFIED, False, 0, 4, 2, rdkit.Chem.rdchem.HybridizationType.SP3)": 288}, "num_classes": 288, "train": true, "unknown": []}, "bond_tokenizer": {"_data": {"unk": 1, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 2, "C-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 3, "C-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 4, "C-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 5, "N-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 6, "N-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 7, "N-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 8, "C-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 9, "Br-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 10, "H-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 11, "H-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 12, "C-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 13, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, True)": 14, "C-O (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 15, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, True)": 16, "O-C (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 17, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, True)": 18, "O-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 19, "O-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 20, "H-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 21, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, True)": 22, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, True)": 23, "C-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 24, "C-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 25, "N-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 26, "O-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 27, "N-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 28, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 29, "C-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 30, "S-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 31, "C-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 32, "Cl-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 33, "F-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 34, "C-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 35, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 36, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 37, "S-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 38, "H-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 39, "N-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 40, "S-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 41, "O-S (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 42, "S-O (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 43, "S-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 44, "Cl-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 45, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, True)": 46, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, True)": 47, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 48, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 49, "N-C (rdkit.Chem.rdchem.BondType.TRIPLE, True)": 50, "C-N (rdkit.Chem.rdchem.BondType.TRIPLE, True)": 51, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 52, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 53, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 54, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 55, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 56, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 57, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) R5": 58, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, True) R5": 59, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 60, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 61, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 62, "N-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 63, "N-C (rdkit.Chem.rdchem.BondType.TRIPLE, False)": 64, "C-N (rdkit.Chem.rdchem.BondType.TRIPLE, False)": 65, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 66, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 67, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 68, "S-S (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 69, "C-I (rdkit.Chem.rdchem.BondType.SINGLE, False)": 70, "I-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 71, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 72, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 73, "O-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 74, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 75, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 76, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 77, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 78, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 79, "C-O (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 80, "O-C (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 81, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 82, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 83, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 84, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 85, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 86, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 87, "S-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 88, "N-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 89, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) Rmax": 90, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 91, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 92, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 93, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 94, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 95, "O-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 96, "Si-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 97, "Si-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 98, "C-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 99, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, True)": 100, "N-O (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 101, "O-N (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 102, "C-C (rdkit.Chem.rdchem.BondType.TRIPLE, True)": 103, "C-S (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 104, "S-C (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 105, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 106, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) R5": 107, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 108, "O-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 109, "P-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 110, "P-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 111, "P-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 112, "S-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 113, "Cl-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 114, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 115, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 116, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 117, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 118, "Cl-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 119, "Si-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 120, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 121, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 122, "C-C (rdkit.Chem.rdchem.BondType.TRIPLE, False)": 123, "C-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 124, "P-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 125, "N-B (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 126, "B-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 127, "B-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 128, "H-B (rdkit.Chem.rdchem.BondType.SINGLE, False)": 129, "S-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 130, "Si-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 131, "H-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 132, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, True) Rmax": 133, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) Rmax": 134, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 135, "N-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 136, "Cl-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 137, "N-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 138, "Br-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 139, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 140, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 141, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) Rmax": 142, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 143, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 144, "S-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 145, "O-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 146, "S-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 147, "C-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 148, "O-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 149, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R4": 150, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, True) R4": 151, "N-S (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 152, "S-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 153, "O-P (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 154, "P-O (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 155, "S-P (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 156, "P-S (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 157, "S-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 158, "F-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 159, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 160, "P-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 161, "N-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 162, "N-I (rdkit.Chem.rdchem.BondType.SINGLE, False)": 163, "I-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 164, "N-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 165, "Si-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 166, "O-B (rdkit.Chem.rdchem.BondType.SINGLE, False)": 167, "B-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 168, "B-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 169, "O-B (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 170, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 171, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, True) R5": 172, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 173, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 174, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 175, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 176, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 177, "C-S (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 178, "S-C (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 179, "P-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 180, "O-P (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 181, "N-N (rdkit.Chem.rdchem.BondType.DOUBLE, True) Rmax": 182, "C-B (rdkit.Chem.rdchem.BondType.SINGLE, False)": 183, "B-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 184, "F-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 185, "Si-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 186, "O-Si (rdkit.Chem.rdchem.BondType.SINGLE, True)": 187, "Si-O (rdkit.Chem.rdchem.BondType.SINGLE, True)": 188, "Si-O (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 189, "O-Si (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 190, "S-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 191, "O-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 192, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 193, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 194, "N-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 195, "S-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 196, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) R4": 197, "N-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 198, "N-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 199, "S-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 200, "Si-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 201, "C-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 202, "Si-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 203, "Si-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 204, "C-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 205, "O-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 206, "P-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 207, "F-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 208, "O-S (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 209, "S-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 210, "C-P (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 211, "P-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 212, "N-O (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 213, "O-N (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 214, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R4": 215, "P-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 216, "H-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 217, "P-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 218, "Si-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 219, "P-C (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 220, "C-P (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 221, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) R3": 222, "N-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 223, "F-N (rdkit.Chem.rdchem.BondType.SINGLE, False)": 224, "N-N (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 225, "Si-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 226, "C-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 227, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) R4": 228, "N-N (rdkit.Chem.rdchem.BondType.DOUBLE, True) R5": 229, "C-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R3": 230, "C-Se (rdkit.Chem.rdchem.BondType.SINGLE, False)": 231, "Se-C (rdkit.Chem.rdchem.BondType.SINGLE, False)": 232, "P-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 233, "O-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 234, "P-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 235, "C-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 236, "N-P (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 237, "P-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 238, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, True) R4": 239, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R4": 240, "P-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 241, "Br-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 242, "Si-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 243, "Br-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 244, "Si-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 245, "S-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 246, "C-Se (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 247, "Se-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 248, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 249, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 250, "O-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 251, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 252, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 253, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 254, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 255, "Se-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 256, "H-Se (rdkit.Chem.rdchem.BondType.SINGLE, False)": 257, "C-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 258, "S-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 259, "C-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R4": 260, "P-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 261, "C-P (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 262, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, False) Rmax": 263, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) Rmax": 264, "P-P (rdkit.Chem.rdchem.BondType.SINGLE, False)": 265, "O-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R3": 266, "C-O (rdkit.Chem.rdchem.BondType.SINGLE, True) R3": 267, "S-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 268, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 269, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 270, "C-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 271, "P-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 272, "N-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 273, "P-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 274, "Si-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 275, "S-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 276, "S-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 277, "Br-S (rdkit.Chem.rdchem.BondType.SINGLE, False)": 278, "Si-I (rdkit.Chem.rdchem.BondType.SINGLE, False)": 279, "I-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 280, "O-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 281, "P-N (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 282, "N-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 283, "Si-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 284, "O-Si (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 285, "O-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 286, "Cl-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 287, "Si-Si (rdkit.Chem.rdchem.BondType.SINGLE, False)": 288, "C-Si (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 289, "Si-C (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 290, "O-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 291, "F-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 292, "N-C (rdkit.Chem.rdchem.BondType.SINGLE, True) R3": 293, "C-N (rdkit.Chem.rdchem.BondType.SINGLE, True) R3": 294, "S-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 295, "C-S (rdkit.Chem.rdchem.BondType.DOUBLE, False) R5": 296, "C-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) R3": 297, "S-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 298, "C-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 299, "P-C (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 300, "S-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 301, "P-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 302, "S-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 303, "P-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 304, "S-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R5": 305, "O-I (rdkit.Chem.rdchem.BondType.SINGLE, False)": 306, "I-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 307, "S-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 308, "C-S (rdkit.Chem.rdchem.BondType.SINGLE, True)": 309, "S-C (rdkit.Chem.rdchem.BondType.SINGLE, True)": 310, "C-S (rdkit.Chem.rdchem.BondType.DOUBLE, False) Rmax": 311, "S-C (rdkit.Chem.rdchem.BondType.DOUBLE, False) Rmax": 312, "Cl-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 313, "H-Cl (rdkit.Chem.rdchem.BondType.SINGLE, False)": 314, "O-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 315, "N-N (rdkit.Chem.rdchem.BondType.DOUBLE, False)": 316, "P-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 317, "O-P (rdkit.Chem.rdchem.BondType.AROMATIC, True) Rmax": 318, "C-S (rdkit.Chem.rdchem.BondType.TRIPLE, False)": 319, "S-C (rdkit.Chem.rdchem.BondType.TRIPLE, False)": 320, "S-N (rdkit.Chem.rdchem.BondType.SINGLE, True)": 321, "N-S (rdkit.Chem.rdchem.BondType.SINGLE, True)": 322, "P-S (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 323, "S-P (rdkit.Chem.rdchem.BondType.AROMATIC, True) R5": 324, "C-N (rdkit.Chem.rdchem.BondType.DOUBLE, True) R4": 325, "N-C (rdkit.Chem.rdchem.BondType.DOUBLE, True) R4": 326, "N-O (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 327, "O-N (rdkit.Chem.rdchem.BondType.SINGLE, True) Rmax": 328, "N-N (rdkit.Chem.rdchem.BondType.DOUBLE, True)": 329, "F-H (rdkit.Chem.rdchem.BondType.SINGLE, False)": 330, "H-F (rdkit.Chem.rdchem.BondType.SINGLE, False)": 331, "P-N (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 332, "N-P (rdkit.Chem.rdchem.BondType.SINGLE, False) Rmax": 333, "C-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R3": 334, "O-S (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 335, "S-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R3": 336, "C-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R4": 337, "O-C (rdkit.Chem.rdchem.BondType.AROMATIC, True) R4": 338, "O-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R4": 339, "O-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 340, "N-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R3": 341, "O-N (rdkit.Chem.rdchem.BondType.AROMATIC, True) R3": 342, "O-O (rdkit.Chem.rdchem.BondType.AROMATIC, True) R3": 343, "P-O (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 344, "O-P (rdkit.Chem.rdchem.BondType.SINGLE, False) R4": 345, "O-Br (rdkit.Chem.rdchem.BondType.SINGLE, False)": 346, "Br-O (rdkit.Chem.rdchem.BondType.SINGLE, False)": 347}, "num_classes": 347, "train": true, "unknown": []}, "atom_features": {}, "bond_features": {}, "explicit_hs": true}
philicity_model_v2/fingerprint.pb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:206ed91d2597ce4735f865dc85b37f6eebab43a94069c0042033c5d8082e8cce
3
+ size 57
philicity_model_v2/saved_model.pb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f0cf645bf6c72bc508f9f88efffdadcb502b1d1fd7a009e314fc28d17a16699
3
+ size 2688736
philicity_model_v2/variables/variables.data-00000-of-00001 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:84150dc220d5fb40c3054737ac77b76d5637c12c6a6ddef70ccecadac1897a0d
3
+ size 15046801
philicity_model_v2/variables/variables.index ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d953ae6a834bf20998634aae8458523ed5f72636d69f11210f7c1a9721d0c68
3
+ size 19360