Odd values for atom pKa
- Dominant language
- C++
- Stars
- 406
- Forks
- 134
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 24
Description
Hi all, thanks for this great package.
I'm getting odd results from the pKa prediction methods `getBasicPkaValue` and `getAcidPkaValue`. It's not clear what values they actually are, but I'll assume the obvious (it returns a pKa for an atom).
The below demonstrates somewhat normal behaviour:
```python
from indigo import Indigo
smiles = 'NCc1ccc(CO)cc1'
ind = Indigo()
ind.setOption("pKa-model", "advanced")
ind.setOption("pKa-model-level", 1)
imol = ind.loadMolecule(smiles)
for atom in imol.iterateAtoms():
print(atom.atomicNumber(), imol.getBasicPkaValue(atom, 5, 0))
```
```
7 9.930000305175781
6 -100.0
6 -100.0
6 -100.0
6 -100.0
6 -100.0
6 -100.0
8 -100.0
6 -100.0
6 -100.0
```
The nitrogen has a pKa around 10 which seems close enough.
however the acid pKa's seem off:
```python
for atom in imol.iterateAtoms():
print(atom.atomicNumber(), imol.getAcidPkaValue(atom, 5, 0))
```
```
7 8.9399995803833
6 6.929999828338623
6 100.0
6 100.0
6 100.0
6 100.0
6 6.929999828338623
8 13.5600004196167
6 100.0
6 100.0
```
setting the minimum level to `2` instead of `0` (as I saw in some examples) leads to all values being 100 or -100.
This leads to a few questions:
- What's the method being used to predict pKas here?
- Does 100 or -100 just mean 'out of range'?
- What is the purpose of the `level` and `min_level` arguments, and why would increasing the `min_level` lead to a broken output?
- Why would some carbons get an acidic pKa around 7?
Thanks for your time
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.