Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH]: Residue Depth Calculation for Exposed Residues in SERD #5

Open
jvsguerra opened this issue Nov 4, 2024 · 1 comment
Open
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@jvsguerra
Copy link
Member

Problem

As discussed with @helder-ribeiro, we need a function within SERD that can calculate the depth of residues identified by SERD as exposed. This depth value should be calculated for each residue, providing a comparable metric across different proteins. At a first glance, use centroid of residues for the depth calculation, but we can implement different metrics for residues.

Proposed solution

>>> from pyKVFinder import Molecule
>>> molecule = Molecule(vdw=radii)
>>> molecule.surface("SES", probe=4.0)
>>> depth = dist2surf(residues, surface)  # TODO: Implement dist2surf

dist2surf function:

  • surface: Contains all points in contact with the bulk/solvent, represented by coords.
  • distance calculation: Compute the minimum distance between coords and atom_coords to determine the depth.
@jvsguerra jvsguerra added the enhancement New feature or request label Nov 4, 2024
@jvsguerra jvsguerra self-assigned this Nov 4, 2024
@jvsguerra jvsguerra added this to the v0.2.0 milestone Nov 4, 2024
@jvsguerra
Copy link
Member Author

The linked branch atomic-depth adds a run.py to calculate atomic and residue depth. The implementation allows users to calculate residue depth based on the minimum or centroid distance between atoms and the molecular surface.

The following example demonstrates loading a structure and computing atomic and residue depths:

>>> from run import Structure
>>> structure = Structure()
>>> structure.load("examples/1FMO.pdb")
>>> structure.model_surface(type="SES", step=0.6, probe=1.4)
>>> atom_depth = structure.atom_depth()
>>> residue_depth = structure.residue_depth(metric="minimum", keep_only_interface=True, ignore_backbone=True)

To facilitate testing and make calculations accessible via the command line, a CLI was added to run.py:

$ python run.py examples/1FMO.pdb --probe 4.0
     ResidueNumber Chain ResidueName AtomName  AtomicDepth
0               13     E         GLU        N     0.092225
1               13     E         GLU       CA     0.514987
2               13     E         GLU        C     0.658996
3               13     E         GLU        O     1.601955
4               13     E         GLU       CB     0.117721
...            ...   ...         ...      ...          ...
2787           350     E         PHE      CD2     3.179295
2788           350     E         PHE      CE1     2.449123
2789           350     E         PHE      CE2     3.688604
2790           350     E         PHE       CZ     3.434604
2791           350     E         PHE      OXT     2.102817

[2792 rows x 5 columns]
    ResidueNumber Chain  ResidueDepth
0              13     E      0.087646
1              14     E      0.066218
2              15     E      0.070899
3              16     E      0.100228
4              17     E      0.094145
..            ...   ...           ...
333           346     E      0.102317
334           347     E      0.792791
335           348     E      0.084797
336           349     E      0.076201
337           350     E      1.437794

[338 rows x 3 columns]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

2 participants