epam / epam/Indigo

Odd values for atom pKa

Open
#906 0 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.