Skip to content

Gulya-mur/BioinfoTool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BioinfoTool 🧬

Содержание 📜

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

Установка 📦

  1. Клонируйте репозиторий:
git clone git@github.com:Gulya-mur/BioinfoTool.git
cd BioinfoTool
  1. Установите необходимые зависимости (см. requirements.txt)
pip install -r requirements.txt

В файле main.py содержится следующий функционал:

1. Функции для работы с FASTQ‑файлами

  • write
    Сохраняет отфильтрованные данные в виде FASTQ‑файла. Функция принимает словарь, где ключом является заголовок, а значением — кортеж из строки последовательности, комментария и строки с качеством. Результирующий файл сохраняется в поддиректории fastq_filtrator_results, расположенной в той же папке, что и входной файл.

  • filter_fastq
    Фильтрует записи из входного FASTQ‑файла по следующим критериям:

    • GC-содержание: определяется с использованием gc_fraction (в процентах).
    • Длина последовательности: проверяется, что длина находится в заданном диапазоне.
    • Качество: среднее значение Phred‑33 должно быть не ниже порога.

    Функция сохраняет отфильтрованные записи с помощью save_file_at_dir и возвращает общее количество исходных прочитанных записей и количество записей, прошедших фильтрацию.

2. Классы для работы с биологическими последовательностями

  • 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()}")    # Вывод: соответствующая РНК последовательность

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages