- Описание
- Структура проекта
- Установка
- Фильтрация FastQ-файлов
- Классы для работы с биологическими последовательностями
- Использование
BioinfoTool — это утилита для анализа биологических последовательностей и фильтрации FASTQ‑файлов с использованием библиотеки Biopython. В данном проекте реализованы функции для работы с FASTQ‑файлами, а также классы для представления и обработки последовательностей ДНК, РНК и белков.
Важно: В текущей версии весь функционал находится в одном файле
main.py. Ранее проект использовал пакетmodules, который был удалён.
BioinfoTool/
├── BioInfo_Tool/
│ ├── init.py
│ ├── bio_files_processor.py
│ └── main.py # Модуль с функциями и классами для работы с FASTQ и последовательностями
├── data/ # Папка с тестовыми/примерными данными
│ └── example.fastq
├── tests/ # Тесты проекта
│ ├── init.py
│ ├── conftest.py
│ ├── test_main.py
│ ├── data/
│ └── fastq_filtrator_results/
│── fastq_filtrator_results
├── requirements.txt # Зависимости проекта
└── README.md
- Клонируйте репозиторий:
git clone git@github.com:Gulya-mur/BioinfoTool.git
cd BioinfoTool- Установите необходимые зависимости (см. requirements.txt)
pip install -r requirements.txtВ файле main.py содержится следующий функционал:
-
write
Сохраняет отфильтрованные данные в виде FASTQ‑файла. Функция принимает словарь, где ключом является заголовок, а значением — кортеж из строки последовательности, комментария и строки с качеством. Результирующий файл сохраняется в поддиректорииfastq_filtrator_results, расположенной в той же папке, что и входной файл. -
filter_fastq
Фильтрует записи из входного FASTQ‑файла по следующим критериям:- GC-содержание: определяется с использованием
gc_fraction(в процентах). - Длина последовательности: проверяется, что длина находится в заданном диапазоне.
- Качество: среднее значение Phred‑33 должно быть не ниже порога.
Функция сохраняет отфильтрованные записи с помощью
save_file_at_dirи возвращает общее количество исходных прочитанных записей и количество записей, прошедших фильтрацию. - GC-содержание: определяется с использованием
-
BiologicalSequence (абстрактный класс)
Определяет базовый интерфейс для всех последовательностей:- Поддержка функций
len(), индексирования и срезов. - Красивое представление через методы
__str__и__repr__. - Абстрактный метод
is_valid(), который проверяет корректность символов последовательности.
- Поддержка функций
-
NucleicAcidSequence
Наследуется отBiologicalSequenceи реализует методы:complement()— возвращает комплементарную последовательность.reverse()— возвращает перевёрнутую последовательность.reverse_complement()— сначала вычисляет комплементарную последовательность, а затем возвращает её перевёрнутый вариант.
Здесь используются защищённые атрибуты
_alphabetи_nucl_complement_map, определяемые в наследниках. -
DNASequence
НаследникNucleicAcidSequenceдля работы с ДНК:- Определён алфавит:
{'A', 'T', 'G', 'C'}. - Реализована словаврь комплементарности.
- Метод
transcribe()— транскрибирует ДНК в РНК, возвращая объект классаRNASequence.
- Определён алфавит:
-
RNASequence
АналогиченDNASequence, но для РНК:- Алфавит:
{'A', 'U', 'G', 'C'}. - Словарь комплементарности настроена для РНК.
- Алфавит:
-
AminoAcidSequence
НаследникBiologicalSequenceдля белковых последовательностей:- Определён алфавит из 20 стандартных аминокислот.
- Метод
transform_to_three_letters()преобразует последовательность из однобуквенных кодов в трёхбуквенные обозначения (без разделителей).
Пример создания объекта ДНК, вычисления обратного комплемента и транскрипции:
# Пример работы с ДНК
dna = DNASequence("ATGC")
print(f"Исходная ДНК: {dna}") # Вывод: ATGC
print(f"Обратная комплементарная ДНК: {dna.reverse_complement()}")
print(f"Транскрибированная РНК: {dna.transcribe()}") # Вывод: соответствующая РНК последовательность