xtbf.shortcuts

 1from xtbf import *
 2from xtbf.parsers import *
 3
 4def add_xtb_charges(mol:"Chem.Mol",
 5                    multiplicity=1,
 6                    conf_id=0,
 7                    property="xtb_partial_charge",) -> bool:
 8    """
 9    
10    >>> from smal.all import *
11    >>> mol = from_smi("NCCCO")
12    >>> mol = embed_molecule(mol)
13    >>> add_xtb_charges(mol)
14    True
15    >>> for atm in mol.GetAtoms():
16    ...     print(atm.GetSymbol(),"<>",atm.GetDoubleProp('xtb_partial_charge'))
17    N <> -0.343
18    C <> 0.021
19    C <> -0.074
20    C <> 0.075
21    O <> -0.442
22    H <> 0.138
23    H <> 0.137
24    H <> 0.007
25    H <> 0.035
26    H <> 0.034
27    H <> 0.043
28    H <> 0.049
29    H <> 0.036
30    H <> 0.284
31    """
32    success, out = run_xtb("--opt", mol, multiplicity, conf_id)
33    if not success:
34        return False
35    else:
36        charges = partial_charges(out)[0]
37        for idx in range(mol.GetNumAtoms()):
38            atm = mol.GetAtomWithIdx(idx)
39            atm.SetDoubleProp(property,charges[idx])
40        return True
def add_xtb_charges( mol: rdkit.Chem.rdchem.Mol, multiplicity=1, conf_id=0, property='xtb_partial_charge') -> bool:
 5def add_xtb_charges(mol:"Chem.Mol",
 6                    multiplicity=1,
 7                    conf_id=0,
 8                    property="xtb_partial_charge",) -> bool:
 9    """
10    
11    >>> from smal.all import *
12    >>> mol = from_smi("NCCCO")
13    >>> mol = embed_molecule(mol)
14    >>> add_xtb_charges(mol)
15    True
16    >>> for atm in mol.GetAtoms():
17    ...     print(atm.GetSymbol(),"<>",atm.GetDoubleProp('xtb_partial_charge'))
18    N <> -0.343
19    C <> 0.021
20    C <> -0.074
21    C <> 0.075
22    O <> -0.442
23    H <> 0.138
24    H <> 0.137
25    H <> 0.007
26    H <> 0.035
27    H <> 0.034
28    H <> 0.043
29    H <> 0.049
30    H <> 0.036
31    H <> 0.284
32    """
33    success, out = run_xtb("--opt", mol, multiplicity, conf_id)
34    if not success:
35        return False
36    else:
37        charges = partial_charges(out)[0]
38        for idx in range(mol.GetNumAtoms()):
39            atm = mol.GetAtomWithIdx(idx)
40            atm.SetDoubleProp(property,charges[idx])
41        return True
>>> from smal.all import *
>>> mol = from_smi("NCCCO")
>>> mol = embed_molecule(mol)
>>> add_xtb_charges(mol)
True
>>> for atm in mol.GetAtoms():
...     print(atm.GetSymbol(),"<>",atm.GetDoubleProp('xtb_partial_charge'))
N <> -0.343
C <> 0.021
C <> -0.074
C <> 0.075
O <> -0.442
H <> 0.138
H <> 0.137
H <> 0.007
H <> 0.035
H <> 0.034
H <> 0.043
H <> 0.049
H <> 0.036
H <> 0.284