def toSMILES(self): cutting_label_list = [] for vertex in self.vertices: if isinstance(vertex, CuttingLabel): cutting_label_list.append(vertex.symbol) SMILES_before = self.copy(deep=True) final_vertices = [] for ind, atom in enumerate(SMILES_before.atoms): element_symbol = atom.symbol if isinstance(atom, CuttingLabel): substi_name = 'Si' substi = Atom(element=substi_name) substi.label = element_symbol for bondedAtom, bond in atom.edges.iteritems(): new_bond = Bond(bondedAtom, substi, order=bond.order) bondedAtom.edges[substi] = new_bond del bondedAtom.edges[atom] substi.edges[bondedAtom] = new_bond substi.radicalElectrons = 3 final_vertices.append(substi) else: final_vertices.append(atom) SMILES_before.vertices = final_vertices mol_repr = Molecule() mol_repr.atoms = SMILES_before.vertices SMILES_after = mol_repr.toSMILES() import re smiles = re.sub('\[Si\]', '', SMILES_after) return smiles