ugene icon indicating copy to clipboard operation
ugene copied to clipboard

UGENE-7747 Update samtools source code

Open DmitriiSukhomlinov opened this issue 9 months ago • 9 comments

Для удобства просмотра PR разбит на два коммита - исходный код samtools и изменения, которые потребовалось сделать непосредственно в UGENE. Советую смотреть второй коммит отдельно, т.к., из-за объема исходников samtools, веб-интерфейс гитхаба подвисает, когда они открыты в режиме просмотра.

Это не весь исходный код samtools, а только минимум, который был необходим, чтобы требуемые в UGENE функции работали. В нее входит библиотека htslib (почти полностью, около 90 процентов), сам samtools (процентов 30-40 от всей библиотеки) и ряд POSIX-библиотек, отсутствующих на Windows (pcre, pthread, time, getopt, unistd, strings, опять же, большая часть из них содержит только необходимый в нашем случае минимум и собираются они все только на Windows). Самая неудобная библиотека - это pthread. Она нужна для многопоточности, но мы не работаем с многопоточностью на уровне встроенных в код инструментов, только на уровне самого UGENE, поэтому, многопоточность в samtools не используется (просто передается единица там, где можно настроить количество потоков). Однако, она очень глубоко вшита в samtools и вырезать ее без риска повредить логику работы самого инструмента у меня не получилось, поэтому её все равно придется оставить.

Все места, которые мне показались острыми, я пометил комментариями с пояснениями. Каждый удаленный или потребовавший изменения тест так же содержит комментарий "почему это потребовалось". Добавлен ряд юнит тестов на класс статических функций, содержащий основные изменения, и один гуи тест.

DmitriiSukhomlinov avatar May 02 '24 03:05 DmitriiSukhomlinov