Skip to content

Commit fc5ed6c

Browse files
authored
add try except to sliceitup functions to prevent None errors with RDKit
1 parent eae3465 commit fc5ed6c

1 file changed

Lines changed: 45 additions & 42 deletions

File tree

rmgpy/molecule/fragment.py

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -945,49 +945,52 @@ def sliceitup_arom(self, molecule, size_threshold=5):
945945
# mol_set contains new set of fragments
946946
mol_set = Chem.GetMolFrags(new_mol, asMols=True)
947947
# check all fragments' size
948-
if all(sum(1 for atom in mol.GetAtoms() if atom.GetAtomicNum() == 6) >= size_threshold for mol in mol_set):
949-
if len(mol_set) == 2:
950-
frag1 = Chem.MolToSmiles(mol_set[0])
951-
frag2 = Chem.MolToSmiles(mol_set[1])
952-
953-
frag1_R = frag1.count("Na")
954-
frag1_L = frag1.count("K")
955-
frag2_R = frag2.count("Na")
956-
frag2_L = frag2.count("K")
957-
958-
if frag1_R > frag2_R and frag1_L <= frag2_L:
959-
frag1_smi = frag1.replace("*", "L")
960-
frag2_smi = frag2.replace("*", "R")
961-
elif frag1_L > frag2_L and frag1_R <= frag2_R:
962-
frag1_smi = frag1.replace("*", "R")
963-
frag2_smi = frag2.replace("*", "L")
964-
elif frag2_L > frag1_L and frag2_R <= frag1_R:
965-
frag1_smi = frag1.replace("*", "R")
966-
frag2_smi = frag2.replace("*", "L")
967-
elif frag2_R > frag1_R and frag2_L <= frag1_L:
968-
frag1_smi = frag1.replace("*", "R")
969-
frag2_smi = frag2.replace("*", "L")
970-
elif randint(0,1)==1:
971-
frag1_smi = frag1.replace("*", "L")
972-
frag2_smi = frag2.replace("*", "R")
973-
else:
974-
frag1_smi = frag1.replace("*", "R")
975-
frag2_smi = frag2.replace("*", "L")
976-
977-
frag_list = [frag1_smi, frag2_smi]
978-
979-
elif len(mol_set) > 2: # means it cut into 3 fragments
980-
frag_list = []
981-
for ind, rdmol in enumerate(mol_set):
982-
frag = Chem.MolToSmiles(rdmol)
983-
if frag.count("*") > 1:
984-
frag_smi = frag.replace("*", "R")
948+
try:
949+
if all(sum(1 for atom in mol.GetAtoms() if atom.GetAtomicNum() == 6) >= size_threshold for mol in mol_set):
950+
if len(mol_set) == 2:
951+
frag1 = Chem.MolToSmiles(mol_set[0])
952+
frag2 = Chem.MolToSmiles(mol_set[1])
953+
954+
frag1_R = frag1.count("Na")
955+
frag1_L = frag1.count("K")
956+
frag2_R = frag2.count("Na")
957+
frag2_L = frag2.count("K")
958+
959+
if frag1_R > frag2_R and frag1_L <= frag2_L:
960+
frag1_smi = frag1.replace("*", "L")
961+
frag2_smi = frag2.replace("*", "R")
962+
elif frag1_L > frag2_L and frag1_R <= frag2_R:
963+
frag1_smi = frag1.replace("*", "R")
964+
frag2_smi = frag2.replace("*", "L")
965+
elif frag2_L > frag1_L and frag2_R <= frag1_R:
966+
frag1_smi = frag1.replace("*", "R")
967+
frag2_smi = frag2.replace("*", "L")
968+
elif frag2_R > frag1_R and frag2_L <= frag1_L:
969+
frag1_smi = frag1.replace("*", "R")
970+
frag2_smi = frag2.replace("*", "L")
971+
elif randint(0,1)==1:
972+
frag1_smi = frag1.replace("*", "L")
973+
frag2_smi = frag2.replace("*", "R")
985974
else:
986-
frag_smi = frag.replace("*", "L")
987-
frag_list.append(frag_smi)
988-
break
989-
else:
990-
# turn to next matched_atom_map
975+
frag1_smi = frag1.replace("*", "R")
976+
frag2_smi = frag2.replace("*", "L")
977+
978+
frag_list = [frag1_smi, frag2_smi]
979+
980+
elif len(mol_set) > 2: # means it cut into 3 fragments
981+
frag_list = []
982+
for ind, rdmol in enumerate(mol_set):
983+
frag = Chem.MolToSmiles(rdmol)
984+
if frag.count("*") > 1:
985+
frag_smi = frag.replace("*", "R")
986+
else:
987+
frag_smi = frag.replace("*", "L")
988+
frag_list.append(frag_smi)
989+
break
990+
else:
991+
# turn to next matched_atom_map
992+
continue
993+
except:
991994
continue
992995
else:
993996
# no match for this pattern

0 commit comments

Comments
 (0)