Обновить
32K+

Qt *

Кроссплатформенный инструментарий разработки ПО

0,31
Рейтинг
Сначала показывать
Порог рейтинга

Как я писал софт для фрагментного анализа ДНК

Всем привет! Меня зовут Александр Дориф, я химик, молекулярный генетик и сисадмин-инфраструктурщик в компании WebHostMost, многие знают меня по нику Father Nurgle.

Итак, на дворе осень 2022 года, я, на тот момент аспирант, разрабатываю способы диагностики болезней экспансии коротких повторов (хорея Хантингтона, синдром ломкой Х хромосомы...) или с изменением количества локусов в геноме (инсерции/делеции, анеуплоидии). Я активно использую капиллярный электрофорез на ABI 3500 Dx и фрагментный анализ с помощью GeneMapper 5. И это стало проблемой. Компов в лабе мало, денег тоже, лицензия GeneMapper одна (а дополнительная стоит больше 10к$), комп с GeneMapper часто занят, софт сам по себе прибит к венде и БД Oracle. А сам я работаю на ноуте, устаревшем ещё в конце нулевых. Да, есть NCBI OSIRIS, но для него нужен Wine, а это лишний слой абстракции, да и интерфейс у него переусложнён на мой взгляд, Fragman не поддерживал импорт файлов с 3500, fatools не развивались и автор не отвечал на сообщения.

Так я решил писать FragalyseQt. Я изначально видел его как кроссплатформенный и свободный софт, поэтому выбрал за основу Python (для него есть много полезного типа BioPython) и Qt для интерфейса. Учитывая то, что у меня не было опыта написания десктопных приложений, несколько дней я изучал мануалы, после чего тёмным вечером 6 октября 2022 выпустил самую первую версию FragalyseQt с номером 0.1 и кодовым именем «Huntington». Это была смотрелка файлов FSA, умеющая селективно скрывать выбранные каналы флуоресценции и экспортировать данные внутреннего анализа (для ABI 3500 и SeqStudio) в CSV.

В версии 0.2 «Friedreich», добавилась возможность независимого от прибора поиска и базового анализа пиков на электрофореграммах, я познакомился со SciPy и табличными возможностями Qt.

Версия 0.3 «DiGeorge» принесла возможность правки базовой линии и тонкой настройки поиска пиков. И... Я упёрся в фундаментальную проблему: определение размера фрагментов на электрофореграммах требовало теории приблизительных вычислений, которую нам в своё время не давали, давая математику по остаточному принципу. Без сайзинга, FragalyseQt будет всего лишь смотрелкой. Я начал ботать матан. Мозги плавились, времени не хватало, к аспирантуре добавились заботы о дочке, но я учил. Здесь же случилось знакомство с реальностью: не каждая декларация «мы поддерживаем формат ABIF» значит «мы поддерживаем ПОЛНУЮ спецификацию ABIF». Также пришлось столкнуться с древними вариантами ABIF, полученными до его стандартизации. Была работа в Okteta, написание парсеров, FragalaseQt стал читать и старый ABIF, и его криминалистическое подмножество — HID.

1 сентября 2024 вышла FragalyseQt 0.4 «Jeffreys» с сайзингом пиков методами степенных сплайнов, взвешенных степенных сплайнов и МНК. README стал подробнее, стремясь к полноценному мануалу. Позже добавил локальный и глобальный методы Саузерна. Софт стал реально аналитическим, с его помощью была опубликована работа на ESHG 2025 ( https://doi.org/10.13140/RG.2.2.14637.81123 ). Потом развитие опять затянулось — задержки ЗП в начале года по 3-4 месяца не способствовали размышлениям о чём-то, кроме выживания. В сентябре я перешёл в WebHostMost и, внезапно, у меня появились адекватные задачи, время и поддержка коллег. Была переработанна структура для соответствия PEP 517, добавлен гибкий интерфейс и экспериментальная поддержка импорта сырых данных российского Нанофор-05 (формат реверсил).

20 марта 2026 вышла FragalyseQt 0.5 «Southern» с импортом панелей GeneMapper, GeneMarker и NCBI OSIRIS, фильтрацией статтеров, экспортом в CODIS XML. Для скриншота мне было скучно использовать стандартные заглушки для данных (и ясно, что невозможно взять реальные данные дел), поэтому демо сделано как опознание тел после Резни в Зоне Высадки, Исстваан 5.

FragalyseQt 0.5 - экспорт данных после применения панелей в формат CODIS XML: выбираются вкладки с данными для экспорта, назначаются роли в рамках дела (жертва, персонал, подозреваемый, предполагаемый родитель и т.д.), заполняются данные лаборатории и экспортируются. Экспортированные данные могут быть внесены в совместимую с CODIS систему (например, SmallPond).
FragalyseQt 0.5 - экспорт данных после применения панелей в формат CODIS XML: выбираются вкладки с данными для экспорта, назначаются роли в рамках дела (жертва, персонал, подозреваемый, предполагаемый родитель и т.д.), заполняются данные лаборатории и экспортируются. Экспортированные данные могут быть внесены в совместимую с CODIS систему (например, SmallPond).
Теги:
+5
Комментарии0

Работаю в большом проекте состоящем из более чем сотни динамически подгружаемых библиотек. OracleLinux, QtCreator, Qt, C++. Испытывал большие неудобства при загрузке приложения в режиме отладки с большим количеством точек останова (на 10 штуках старт с 30 секунд увеличивался до 2 минут). Казалось бы очевидное, но закономерность замедления обнаружилась не сразу.

При очередном подгруженном модуле происходит попытка установить точки останова в загруженный код. Чем больше кода загружено, тем дольше идет попытка. Как только все точки останова нашли свое место в загруженном коде, скорость подгрузки очередных модулей снова становится быстрой. Активность или пассивность точек останова не влияет.

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

Возможно, я озвучил очевидность. Но мне, работая в данном окружении и в большой команде достаточно давно, это озарение снизошло не сразу. Я и не сильно боролся с этим до недавних пор, сильное замедление произошло не так давно при переходе с Qt4 на Qt5 (у нас вынужденное legacy).

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Опубликован выпуск интегрированной среды разработки Qt Creator 12.0, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками. Готовые сборки сформированы для Linux, Windows и maсOS.

В новой версии:

  • добавлен плагин Compiler Explorer, позволяющий в режиме реального времени по мере набора исходных текстов отслеживать генерируемый компилятором ассемблерный код и выявляемые компилятором ошибки;

  • добавлена возможность отладки и профилирования сборочных сценариев CMake при помощи протокола DAP (Debug Adapter Protocol), поддерживаемого начиная с выпуска CMake 3.27;

  • добавлен плагин ScreenRecorder (Help > About Plugins > ScreenRecorder) для записи на видео процесса работы в Qt Creator;

  • значительно сокращено время запуска на некоторых системах;

  • Clangd и Clang analyzer обновлены до выпуска LLVM 17.0.1;

  • улучшены средства для рефакторинга кода на языке C++;

  • в редактор текста в формате Markdown добавлены кнопки для выбора стилей текста;

  • добавлена возможность использования прокси для доступа к интеллектуальному помощнику GitHub Copilot, способному генерировать типовые конструкции при написании кода;

  • Добавлены связанные с проектами настройки наименования файлов с кодом на C++ и документирования через комментарии.

Источник: OpenNET.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Состоялся релиз торрент-клиента qBittorrent 4.6, написанного с использованием тулкита Qt и развиваемого в качестве открытой альтернативы µTorrent, приближенной к нему по интерфейсу и функциям. Среди возможностей qBittorrent — интегрированный поисковый движок, подписки на RSS, поддержка многих BEP-расширений, удалённое управление через web-интерфейс, режим последовательной загрузки в заданном порядке, расширенные настройки для торрентов, пиров и трекеров, планировщик пропускной способности и IP-фильтр, интерфейс для создания торрентов, поддержка UPnP и NAT-PMP. Код проекта написан на языке C++ и распространяется под открытой лицензией GPLv2+.

Изменения в проекте:

  • добавлена экспериментальная поддержка распределённой анонимной сети I2P.

  • улучшена поддержка тем оформления.

  • добавлен диалог для редактирования привязанных к торрентам тегов.

  • обеспечено добавление новых торрентов в начало очереди.

  • добавлена возможность фильтрации списка торрентов на основе их локального файлового пути.

  • добавлена возможность использования прокси в привязке к подсистемам.

  • добавлена кнопка для копирования списка версий библиотек в буфер обмена.

  • Для FreeBSD включена сборка с поддержкой D-Bus.

Источник: OpenNET.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Расскажите своё мнение: на чём актуально писать более-менее крупную софтину под windows?

Работаю в проекте, нужна программа контроля доступа сотрудникам. БД + GUI + работа с устройством (перезаписывалка RFID меток). Проект - студенчесский стартап, так что пишем сами, не используем интеграции с крупными решениями.

Встал вопрос на чём писать. У меня компетенций в равной степени хватает на QT + C++, .NET + C# или Electron + js. Поэтому сложно определиться, важна скорость разработки и количество гайдов. По скорости выигрывает electron, а по гайдам .net.

По особенностям - много различных по содержанию окон, возможность работы с usb устройствами.

Если Вы шарите в современной разработке программ под виндовс, дайте, пожалуйста, своё мнение, с удовольствием пообщаюсь в комментах.

Заранее спасибо!

P.S. Надеюсь не вызвал постом ощущение что я не желаю думать свой бОшкой, просто есть внутренний крик души, подумал, почему бы не посоветоваться с умными хабрятами)

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии8