Electrostatics / pdb2pqr

PDB2PQR - determining titration states, adding missing atoms, and assigning charges/radii to biomolecules.
http://www.poissonboltzmann.org/
Other
122 stars 34 forks source link

Fix issue with wrong pkas assigned to terminal residues #258

Closed stefdoerr closed 2 years ago

stefdoerr commented 2 years ago

Solves https://github.com/Electrostatics/pdb2pqr/issues/245

I'm not 1000% sure this is the best way to solve it but I checked a few PDBs and it seems like the group_type matches the res_name when you want to get the pKa of the sidechain.

codecov[bot] commented 2 years ago

Codecov Report

Merging #258 (bde74be) into master (b5c3c3b) will decrease coverage by 0.03%. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #258      +/-   ##
==========================================
- Coverage   64.11%   64.07%   -0.04%     
==========================================
  Files          30       30              
  Lines        7753     7753              
==========================================
- Hits         4971     4968       -3     
- Misses       2782     2785       +3     
Impacted Files Coverage Δ
pdb2pqr/main.py 78.81% <ø> (ø)
pdb2pqr/biomolecule.py 70.29% <0.00%> (-0.43%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update b5c3c3b...bde74be. Read the comment docs.

stefdoerr commented 2 years ago

for example for 5VBL PDB I get:

for row in pkas:
      print(f"{row['res_name']} {row['group_type']} {row['res_name'] == row['group_type']}")

LYS N+ False
LYS LYS True
ARG ARG True
ARG ARG True
ARG ARG True
GLU COO False
HIS HIS True
LYS LYS True
LYS LYS True
A00 COO False
CYS N+ False
CYS CYS True
GLU COO False
TYR TYR True
ASP COO False
LYS LYS True
TYR TYR True
ARG ARG True
ARG ARG True
GLU COO False
LYS LYS True
ARG ARG True
ARG ARG True
ASP COO False
ASP COO False
TYR TYR True
TYR TYR True
ARG ARG True
ASP COO False
TYR TYR True
ASP COO False
CYS CYS True
LYS LYS True
TYR TYR True
TYR TYR True
CYS CYS True
ASP COO False
ARG ARG True
TYR TYR True
ARG ARG True
ARG ARG True
ARG ARG True
ARG ARG True
ARG ARG True
ASP COO False
GLU COO False
LYS LYS True
CYS CYS True
TYR TYR True
ASP COO False
TYR TYR True
GLU COO False
GLU COO False
CYS CYS True
TYR TYR True
LYS LYS True
LYS LYS True
TYR TYR True
CYS CYS True
CYS CYS True
TYR TYR True
TYR TYR True
GLU COO False
ASP COO False
ASP COO False
ASP COO False
ASP COO False
LYS LYS True
ASP COO False
ASP COO False
ASP COO False
CYS CYS True
CYS CYS True
LYS LYS True
ASP COO False
GLU COO False
GLU COO False
GLU COO False
GLU COO False
ARG ARG True
ARG ARG True
ARG ARG True
CYS CYS True
LYS LYS True
TYR TYR True
HIS HIS True
LYS LYS True
TYR TYR True
HIS HIS True
CYS CYS True
ASP COO False
ASP COO False
TYR TYR True
CYS CYS True
CYS CYS True
TYR TYR True
CYS CYS True
TYR TYR True
ASP COO False
ARG ARG True
ARG ARG True
CYS CYS True
ARG ARG True
ARG COO False
stefdoerr commented 2 years ago

No sorry, this creates issues with protonating ASP residues because they get reported as COO group. Maybe a better solution is the following check:

if row["group_label"].startswith(row["res_name"])
LYS N+ False
LYS LYS True
ARG ARG True
ARG ARG True
ARG ARG True
GLU COO True
HIS HIS True
LYS LYS True
LYS LYS True
A00 COO False
CYS N+ False
CYS CYS True
GLU COO True
TYR TYR True
ASP COO True
LYS LYS True
TYR TYR True
ARG ARG True
ARG ARG True
GLU COO True
LYS LYS True
ARG ARG True
ARG ARG True
ASP COO True
ASP COO True
TYR TYR True
TYR TYR True
ARG ARG True
ASP COO True
TYR TYR True
ASP COO True
CYS CYS True
LYS LYS True
TYR TYR True
TYR TYR True
CYS CYS True
ASP COO True
ARG ARG True
TYR TYR True
ARG ARG True
ARG ARG True
ARG ARG True
ARG ARG True
ARG ARG True
ASP COO True
GLU COO True
LYS LYS True
CYS CYS True
TYR TYR True
ASP COO True
TYR TYR True
GLU COO True
GLU COO True
CYS CYS True
TYR TYR True
LYS LYS True
LYS LYS True
TYR TYR True
CYS CYS True
CYS CYS True
TYR TYR True
TYR TYR True
GLU COO True
ASP COO True
ASP COO True
ASP COO True
ASP COO True
LYS LYS True
ASP COO True
ASP COO True
ASP COO True
CYS CYS True
CYS CYS True
LYS LYS True
ASP COO True
GLU COO True
GLU COO True
GLU COO True
GLU COO True
ARG ARG True
ARG ARG True
ARG ARG True
CYS CYS True
LYS LYS True
TYR TYR True
HIS HIS True
LYS LYS True
TYR TYR True
HIS HIS True
CYS CYS True
ASP COO True
ASP COO True
TYR TYR True
CYS CYS True
CYS CYS True
TYR TYR True
CYS CYS True
TYR TYR True
ASP COO True
ARG ARG True
ARG ARG True
CYS CYS True
ARG ARG True
ARG COO False