rosetta
rosetta copied to clipboard
MPLipidAccessibility fails when the entire pose is outside the membrane
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