code: def _inchi_labels(mol):
          
          obconv = ob.OBConversion()
          obconv.SetOutFormat(str("inchi"))
          obconv.AddOption(str("a"), ob.OBConversion.OUTOPTIONS)
          obconv.AddOption(str("X"), ob.OBConversion.OUTOPTIONS, str("DoNotAddH"))
          inchi_text = obconv.WriteString(mol)
          match = re.search(r"InChI=(?P<inchi>.+)\nAuxInfo=.+"
                            r"/N:(?P<labels>[0-9,;]+)/(E:(?P<eq_atoms>[0-9,"
                            r";\(\)]*)/)?", inchi_text)
          inchi = match.group("inchi")
          label_text = match.group("labels")
          eq_atom_text = match.group("eq_atoms")
          heavy_atom_labels = tuple([int(i) for i in label_text.replace(
              ';', ',').split(',')])
          eq_atoms = []
          if eq_atom_text is not None:
              eq_tokens = re.findall(r'\(((?:[0-9]+,)+[0-9]+)\)', eq_atom_text
                                     .replace(';', ','))
              eq_atoms = tuple([tuple([int(i) for i in t.split(',')])
                                for t in eq_tokens])
          return heavy_atom_labels, eq_atoms, inchi
docs: Get the inchi canonical labels of the heavy atoms in the molecule
  
          Args:
              mol: The molecule. OpenBabel OBMol object
  
          Returns:
              The label mappings. List of tuple of canonical label,
              original label
              List of equivalent atoms.