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