Библиотека CBioInfCpp — набор функций C++ для биоинформатики и не только (строки, графы, вектора)


Всем интересующимся биоинформатикой, а также работающим в том или ином виде с графамистроками и массивами (векторами) в 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 Автор будет рад единомышленникам в вопросах применения и дальнейшего развития библиотеки, и не только.