Problematic MFCC fragmentation on near-consecutive protein residues
Description
Capped fragments for QM regions on near-consecutive amino acids may overlap when using MFCC. For example, using residues 3, 5 in the example below produces overlaps like this:
Possible Solution
- Don't use near-consecutive residues with MFCC, instead use consecutive, or well-separated fragments, or decrease the MFCC capping order for the relevant residues.
Steps to Reproduce (for bugs)
Check the capped xyz's generated by:
#!/usr/bin/env python
import pyframe
import base64
import bz2
pdb = b'QlpoOTFBWSZTWWkhZPYACGLeADgQQAN/4D5HlABQBJ7m6mOxm7c1FKtwaZJpiJomqAAGJoTKhlR6gBkEmkpG1J5QZEyaZCgAGgAACpImKZTQBkYm2EiakklUKqiQR+eOqdkdEUikEgkEgkEgkEgkGUj47+CnvbLFRPi0qh0A8B7qfFssVE1aU1bExJBH3dPiK8xpZmdRUUnqbi4VZiLnBNiqvkzKCx1uHiuecW0oy+fv4/vxDhw4cNqG1Dh06fm+Wqc80t4hzJWR1xJJJwAwH1ZmYh8YmC4aYLhpguGmC4aYLhpgASSORNHluPGq7t7y4TswsidJuNtRvheJDHCCJqsJ3P8NWRLY2qCUas5k0ToTe8SZrngnUmEwnEnY5kZAIGzJul6trjCsKmMXHGRTMbXEJJvcyBsXMCBsELCF1WSG3Cr8cZxi2/GuM1nKXtWd99tACM1kFsW5yQrzkaZrL0O6qYFiK5g0Y6mtoYZictw1V85L5YoVUyLczkxmJihfHQixxAipjHt5qE2ACBuYxbEY9ZAIFKCwWCwWCkURBezm22+OdN9a8gIH2xRRSLAWIoammLEzFUVzuIekoQpIcud0RvhaW52c8Y4TGGq6lS1r8htam3y50jaJJJJJ1we3nOc1+vQ158gQNdvbFXC1Vy1Vv2N9OfXOFVD2nptIDr17quIJFWduqpA0T6+m3VoIBXcyJSkdzIkoialzLYjGwgRfnnt+UkD5zrqs99Pxvedehtx8FeekknTgoJFYQED5gD0NneMNhvjsse8s1QFE04ACURHfttxHBrJGRU+Gpc1B5lxj32cRFez6GMS09lD4WIQeer52KDLT+bGg0RAjyIiGUXT4BMr5anxZYhg7zu9u9r4canPPPJYpBMQkkb653MbDRDEi4nGO0EyFtnLbiIBmCR6pbwa+2Eu6yu+eaPRCRCaxvoYSmHcCdO8hKUgEggZtMwPKvg0NDGuBniH5N7mrjskt2Skkm52FDv2giQCX07joeA2OhEB+mwgQ9u8GZfbkd47vu6HYHXp7XGlQ4FUI5jfKDdXq86V5iudVFdX32WlIpCD2DaIxGBY8tlDi6QIsUFo8O8fqdn1ecrXXpwvLB7eZDXIu6VPNmJ+BJPnuIiJW6B4ELJdC8h0SnXZP5M/+EbNS0iaJJ2EOSXk71E0IW5ZEPIu5IpwoSDSQsnsA'
with open('protein.pdb', 'wb') as f:
f.write(bz2.decompress(base64.b64decode(pdb)))
system = pyframe.MolecularSystem('protein.pdb')
qm = system.get_fragments_by_identifier(['3_ALA', '5_ALA'])
for fragment in qm.values():
fragment.create_mfcc_fragments()
for fragment in qm.values():
fragment.capped_fragment.write_xyz()