RosettaCommons / RosettaCommons/rosetta
MPLipidAccessibility fails when the entire pose is outside the membrane
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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