Обновлено 29.12.2020 Автор: Сергей Черноухов
Всем интересующимся биоинформатикой, а также работающим в том или ином виде с графами, строками и массивами (векторами) в C++ позвольте предложить первую версию библиотеки CBioInfCpp.h
Исходники и описание размещено
здесь, все распространяется свободно:
https://drive.google.com/open?id=1FQwsQm2kG_nTO45ab0yj52xtp6_B4IB2
https://github.com/chernouhov/CBioInfCpp-0-
Всем интересующимся биоинформатикой,
а также работающим в том или ином виде с графами, строками и массивами (векторами) в C++ позвольте
предложить первую версию библиотеки CBioInfCpp.h
Исходники и описание размещено
здесь, все распространяется
свободно:
https://github.com/chernouhov/CBioInfCpp-0-
Данная библиотека содержит ряд функций для:
(1) Считывания
из файла и вывода (в файл, на экран) одной командой стандартных
векторов, матриц и графов (такая «питонизация» C++), а также данных специальных
форматов (считывание массива строк в формате FASTA).
(2) Работы
со строками – от сравнительно общих задач поиска наименьшей общей надстроки и
вычисления редакционного
расстояния до специфических биоинформатических задач от подсчета GC-состава до поиска в строке всех «мутировавших»
подстрок, т.е. тех, редакционное расстояние до которых от искомой не
превышает заданного.
(3) Работы
с графами – тут надо остановиться чуть подробнее. В библиотеке
предлагается использование для хранения графов такой структуры, как «вектор
смежности». Ребра графа (вершины которого,
кстати, могут нумероваться и
отрицательными целыми числами, а дуги –
как целыми,
так и double)
представляются в виде одной упорядоченной
последовательности чисел – «пар» или «дуплетов» для невзвешенного
и «триплетов» для взвешенного графа. Такая структура данных является довольно
компактной и реализована, что называется, «безо всяких классов», с помощью
стандартных элементов C++. Функции считывания
графов из файлов, нахождения Эйлерова
пути, топологической
сортировки, кратчайших
расстояний и пр. прилагаются.
С июня 2019 для
обеспечения более быстрого доступа к значению веса ребра в графе добавлена еще одна структура данных
хранения графов - Ассоциативный
массив смежности — как вариант ранее предложенной и реализованной
структуры Вектор смежности.
А с декабря 2020 года с помощью функции
SubGraphsInscribed можно проверить
два графа на изоморфизм, а также поискать
в некотором большом графе подграфы, изоморфные данному.
(4) Некоторые вспомогательные функции,
например, разбиение
числа на слагаемые.
(!) Быстрый
старт: для использования библиотеки достаточно написать #include
<CBioInfCpp.h> в самом начале Вашей программы (предварительно разместив
файл CBioInfCpp.h в соответствующем каталоге, ну или же указать к нему путь
явно при произвольном размещении файла CBioInfCpp.h на Вашем компьютере).
Остальные библиотеки, требуемые в ней, подсоединяются сами, не надо ничего самостоятельно
«собирать, подключать» и т.д. «Открыли-сели-поехали».
PS Автор будет рад единомышленникам в
вопросах применения и дальнейшего развития библиотеки, и не только.
Следующая > |
---|