RosettaCommons / RosettaCommons/rosetta

MPLipidAccessibility fails when the entire pose is outside the membrane

Open
#195 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C++
Stars
470
Forks
169
Avg merge
16d 23h
Merged PRs (30d)
2

Description

From discussion #163

core::membrane::convex_hull() causes a segfault in core::Size minx = outside[ tmp_x.index( numeric::min( tmp_x ) ) ]; because the tmp_x vector is empty. This is because none of the coordinates pass the coords.at( i ).z() >= min_z && coords.at( i ).z() <= max_z test previously, as the min_z and max_z settings are well outside the range of the protein coordinates (-15 to -5, where almost all the protein z-coordinates are positive).

Part of the reason may be a non-consistent span file. (But even then, the code shouldn't segfault.)

One question is if the reliance on absolute Cartesian z coordinates here is warranted, or if what we really want is the membrane-transformed z offset (is the assumption that the membrane is centered on z=0?) -- But even if that's corrected, the code should be robust to 'membrane' proteins which aren't actually in the membrane.

Reproduction steps:

  • Download 2A65.pdb from the wwPDB
  • Remove non-protein residues
  • Use the following span file
#TM region prediction for BRD4 predicted using OCTOPUS
12 510
antiparallel
n2c
12      32
41      61
92      122
165     185
197     217
244     264
283     303
334     364
377     397
406     426
450     470
485     505

And options:

-in:membrane
-out:pdb
-mp:scoring:hbond
-mp:setup:spanfiles LeuT.span
-mp:setup:transform_into_membrane
-mp:transform:optimize_embedding
-score:weights=mpframework_smooth_fa_2012.wts

with command

score_jd2.linuxgccdebug -s 2A65.pdb @options

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with 2A65.pdb, the supplied LeuT.span file, options, and score_jd2.linuxgccdebug. Start in core::membrane::convex_hull() at the empty tmp_x access, then inspect the preceding z-coordinate filtering; done means the out-of-membrane case no longer segfaults and the behavior is covered by an appropriate test.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
bioinformatics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.