def charge_gasteiger_h(atom: Atom) -> float:
    """Gasteiger partial charge for implicit hydrogens (float).
    """
    if not atom.HasProp('_GasteigerHCharge'):
        mol = atom.GetOwningMol()
        AllChem.ComputeGasteigerCharges(mol)
    return atom.GetDoubleProp('_GasteigerHCharge')
def is_hbond_donor(atom: Atom) -> int:
    """If the atom is a hydrogen bond donor (0 or 1).
    """
    if not atom.HasProp('_Feature_Donor'):
        mol = atom.GetOwningMol()
        _ChemicalFeatureGenerator().assign_features(mol)
    return atom.GetIntProp('_Feature_Donor')
def stereochemistry(atom: Atom) -> str:
    """CIP sterochemistry label (string).
    """
    mol = atom.GetOwningMol()
    if not mol.HasProp('_CIPLabelsAssigned'):
        rdCIPLabeler.AssignCIPLabels(mol)
        mol.SetProp('_CIPLabelsAssigned', '1')

    return atom.GetProp('_CIPCode') if atom.HasProp('_CIPCode') else ''