Skip to content
/ Gene2 Public

Парсер файлов Genbank для выделения промоторных частей всех генов

Notifications You must be signed in to change notification settings

AcaDemIQ/Gene2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Документация

Как запускать?

java -jar gene-1.0-SNAPSHOT-jar-with-dependencies.jar ($путь до хромосомы)

Формат файла для обработки -- GenBank

В качестве примеров на данный момент взяты файлы хромосом Arabidopsis thaliana из сервера NCBI

Алгоритм парсинга

  1. Весь файл читаем через Scanner по строчкам
  2. Сначала scanningGeneAnnotation равен true, так как мы в данный момент ищем аннотации генов
  3. Если есть подстрока " gene ":
    1. Комплиментарный ген?
    2. Раазделение данной строки по маскам "(\\.\\.)|(\\s+complement\\()|(\\))|(\\s+<)|(\\s+)" или две точки, или пробелы с complement(, или просто пробелы, или скобки
    3. Читаем след строку, и если там есть название гена -- записывает опять же split
    4. Вырезаем инфу о Locus_tag, Gene_synonyms, который вырезается более сложным образом:
      • Соединяем все строки в StringBuilder, относящиеся к "gene_synonym", ибо они могут быть в нескольких строках
      • Читаем полученный StringBuilder через Scanner, у которого будут новые точки прерывания Pattern.compile("(\\s+/gene_synonym=\")|\"|(;\\s+)")
      • Далее мы получим все названия синонимов, однако, они будут не в самом резентабельном виде, так как будут много пробелов. Полученную строку снова оборачиваем в новый Scanner с дефолтными точками разрыва.
      • Запоминаем в ArrayList
    5. Вся необходимая информация записывается в объект Promotor
      • Название гена
      • Номер хромосомы
      • Название локуса
      • Список синонимов к этому гену
      • Начало и конец промоторной области
      • Комплиментарна ли она
      • Сама последовательность(если комплиментарна, то делай reverce)(мы ее получим позже)
    6. Вся собранная информация об одной промоторной части складывается в контейнер List
  4. А теперь мы доходим до "ORIGIN "
  5. Всю последовательность соединяем аккуратно и складываем в StringBuilder
  6. Так как мы все промоторные части сохранили в List, мы их и начинаем снова читать
    1. Находим индексы начала и конца требуемой подпоследовательности
    2. Вырезаем
    3. Если нужна комплиментарная -- делаем Reverce
    4. Сохраняем обратно в Promotor
  7. Теперь экспорт в файлы: каждый файл в формате FASTA описывает промоторную часть с описанем из Promotors

About

Парсер файлов Genbank для выделения промоторных частей всех генов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages