ugeneunipro / ugene

UGENE is free open-source cross-platform bioinformatics software
http://ugene.net
GNU General Public License v2.0
213 stars 62 forks source link

UGENE-8072. [safe_point, pdb] Empty sequence #1650

Closed EvelinaBiserova closed 3 months ago

EvelinaBiserova commented 3 months ago

Тест упал -- винда хотела обновиться, перекрыла предупреждением весь экран

EvelinaBiserova commented 3 months ago

Я извиняюсь, у меня из головы вылетело описать, в чём здесь проблема.

Формат нигде не запрещает использовать один и тот же ResidueIndex в разных цепях. Даже есть примеры, где так сделано (7LWH): Первая строка:

ATOM    387  N   LYS A  69     -21.762  18.114  11.689  0.00 59.78           N  

Здесь цепь A имеет индекс остатка 69

Вторая строка:

ATOM   2721  N   PRO B  69     -14.033 -22.406   4.787  1.00 43.69           N  

Здесь уже видим цепь B и остаток также 69.

Тот сконструированный мной файл из бага оказался "краевым" случаем: одинаковый индекс был на стыке цепей, при итерировании по файлу они казались не различимыми. Тем не менее, они принадлежали разным цепями. Отсюда и фикс: сопоставить предыдущему остатку не только его номер и другие характеристики, но и ид цепи, к которой он принадлежал, чтобы сравнение остатков было корректно. Из-за того, что других остатков во 2-й цепи не оказалось, а единственный был ошибочно присвоен первой цепи, 2-я последовательность оказалась пустой.