Giter Site home page Giter Site logo

ig-pipeline's People

Contributors

feodorov avatar sergey-knyazev avatar synteny avatar zmactep avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

ig-pipeline's Issues

Pipeline

Возможность накручивать на данные серию обработчиков (аналог pipe в Bash)

Review containers

Both C++ and Scala code need to be reviewed for optimal usage of memory.
Class hasher.

Рефакторинг

Пришли к следующей структуре каталогов:

  • ig-backend
  • ig-frontend
  • data
  • tools

tools:

  • ig-splitter (./ngs-splitter && ./splitter)
  • ig-snooper (./svm_data_generator and scripts)
  • ig-aligner (./gene_*)
  • ig-container
  • common_lib

Аналогично структуре папки tools будем создавать приложения в ig-frontend.

Загрузка данных

  • Загрузка файлов на сервер
  • Добавление в проект
  • Возможность передачи файла на вход снупера

Цитирование

Сюда складываем список статей, которые точно будем цитировать.

Выкладывать сразу в BibTeX формате со ссылкой, что это и зачем.

ig-snooper pipeline.py predictor parameter

Привет.

Мог бы ты вынести отдельным параметром скриптов train.py predict.py имя предиктора?

Нужно добавить дополнительный ключ запуска: --predictor=RandomForest
Внутри должен быть dict "Имя предиктора" -> ("Список параметров train", "Список параметров predict"). Затем эти списки подставляются в pipeline.py в строки 77 и 100 взамен части параметров. Если ключ --predictor отсутствует, то подставляется дефолтное значение из мапы (сейчас подставляй "RandomForest").

Например, для предиктора RandomForest в словаре будут два списка: ['weka.classifiers.trees.RandomForest', '-I', '10', '-K', '0', '-S', '1'] для train и ['weka.classifiers.trees.RandomForest'] для predict. Первый подставляется в 77 строку взамен захардкоженных, а второй - в строку 100. Остальные параметры в этих строках ('--no-cv' и т.п.) оставь как есть.

Я затем расширю словарь, добавив новые классификаторы.

Настроить nginx для ig-frontend

Необходимо настроить работу nginx с ig-frontend, затем написать инструкцию по установке на сервер. Паша затем сможет установить все локально.

Мысли по черновику

Внести всем соображения, что в принципе писать в статье в черновик. Желательно закончить до 14.12.

Кластеризация по регионам

  • Получение fasta и файла разметки
  • Выделение нужного региона
  • Возврат дерева кластеризации по данному региону, множественного выравнивания, fasta-файлов кластеров

Перенос scan_dir.py

Перенести скрипт scan_dir.py из снупера в какое-нибудь логичное место (не в ig-tools), переписать путь в backend.

Upload

Добавление файла с локального компьютера сразу в storage

Добавить поддержку CDR3 и FR4 в Nomenclature.h

Еще лучше, чтобы решение было универсальным, и SVM работал как для регионов, так и для генов, нужно сделать новый класс вместо Nomenclature, который будет хранить координаты начала и конца любого количества отрезков (это могут быть как регионы, так и гены) без имени. Тем более что для SVM имя не нужно, достаточно только номера класса.

Манифесты

Требуется внедрить манифесты (см #21) как можно скорее, а то сейчас от пары запусков storage похож на помойку.

В случае же наличия манифеста можно будет добавлять в storage только "полезные" outputs, игнорируя все прочее.

Форма кластеризации

В форме кластеризации SIM и SHORTEST CONS - это флаги без значений, соответственно, выглядить они должны checkbox`ами.

Проверить, что подобные булевые флаги правильно генерятся в строке команды в backend.

Настройка рабочего окружения

  1. Настроить VPN - нужен доступ к тестовому серверу, файловому серверу и к SQL базе.
  2. Поставить на тестовую машину MySQL - я займусь подключением наших тулов к базе

Интерфейс для кластеризации

Добавился тул ig-simplecluster.

Идея такова:

  1. Имея на входе только fasta файл можно его скластеризовать одним из двух способов, на выходе получается директория с кучей результатов (консенсус, кластеры, дерево кластеризации, файл выравнивания и т.д.)
  2. Имея на входе две такие директории от двух ранов можно построить json-файл статистики, который хотят биологи.

Аргументы кластеризации:

  1. Входной fasta-файл
  2. Директория для результатов
  3. --sim - использовать поиск дубликатов вместо честной кластеризации
  4. --skip-first 5 - пропустить первые 5 (пример) букв при определнии дубликатов (при использовании --sim)
  5. --use-prct 70 - использовать только первые 70% (пример) сиквенса при определении дубликатов (при использовании --sim)
  6. --shortest-cons - использовать самые короткие сиквенсы для консенсуса вместо самых длинных (при использовании --sim, консенсус в этом случае - представитель класса эквивалентности)
  7. --min-len 100 - скидывать все сиквенсы длиной менее 100 (пример) в trash

Аргументы генерации отчета:

  1. Директория результатов кластеризации тяжелых цепей
  2. Директория результатов кластеризации легких цепей
  3. Путь выходного JSON (из которого нужно генерить красивую табличку)
  4. --fix-suffix - если у имен сиквенсов есть различные суффиксы (имя праймера, тип цепочки), которые у тяжелой и легкой цепи не совпадают, то их можно почистить

Как видно из аргументов, генерация отчетов не может рассматриваться как самостоятельный тул, он подразумевает обязательный запуск двух кластеризаций.

NB

Если же сразу сделать возможным "однокнопочный" последовательный запуск извлечения cdr3 и передачу их на кластеризацию и создание отчета, то будет совсем круто, и нас очень похвалят. :)
Т.е. use-case - человек грузит 2 fasta файла: один с тяжелыми цепями, другой с легкими, и получает радость в виде отчета! :)

Оптимизации

  1. Оптимизация подсчета хэшей в индексе K-меров через битовые операции и ленивые списки (Stream).
  2. Замена перевыделяемых матриц в alicont на один буффер фиксированной высоты (максимальная глубина дерева) и указатель конца буффера.

Форма report

В качестве входных параметров требуются директории, которые не могут быть добавлены в storage автоматически.

Вообще, вопрос глубже, и требуется обсудить и сделать максимально удобной систему storage, пока не стало слишком поздно. :)

Подбор параметров случайных деревьев

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

Подобрать параметры запуска, построить графики. В случае отсутствия оптимума на любых параметрах поставить вопрос о создании дополнительного фильтра.

Мета-актёр

Единый унифицированный Actor для всех CLI тулов - принимает на вход путь/название тула, параметры командной строки и директорию для сохранения файла. Будут исключения, например - актор для шелла.

Вопрос: а не разбить ли нам на 2 статьи материал?

Лимит по статье: 12 страниц (это вместе с картинками, таблицами и прочим).
У анс чисто черновик с идеями получился 6.

Не разбить ли нам все это дело на две статьи? Хочу доводы за и против.

Мне с одной стороны кажется, что это было бы правильно, с другой, нормально ли будут смотреться эти вещи самостоятельно?

2 статьи:

  • Random Forest
  • Annotation Container

Создать backend на java

Выбрали java, так как мы все знаем ее на достаточном для быстрой разработки уровне. Протокол - JSON. Описание - в protocol.json

Переразобрать данные kabat

Составить kabat файлы для:

  1. VH, JH (DH - всегда CDR3)
  2. VK, JK
  3. VL, JL

для каждого файла иметь соответствующий .kabat в обычном формате

seq   fr1_s   fr1_e   cdr1_s   cdr1_e   fr2_s   fr2_e   cdr2_s   cdr2_e   fr3_s   fr3_e   cdr3_s   cdr3_e   fr4_s   fr4_e

Так, для некоторого V-гена это будет выглядеть как

IGHV2-70*09        1        90        91        111        112        153        154        201        202        297        0        0        0        0

Для некоторого J-гена:

JH2        0        0        0        0        0        0        0        0        0        0        1        18        19        53

Аналогичную операцию проделать с аминокислотными последовательностями.

Это позволит сильно сократить объем хранимой информации при сохранении удобства использования. Вся необходимая для разметки информация может быть взята здесь: http://www2.mrc-lmb.cam.ac.uk/vbase/alignments2.php

Добавить поддержку обрезанных сиквенсов

Хотим получить поддержку сиквенсов, в которых отсутствует, например, FR1 и CDR1. Сейчас при выводе в kabat отсутствующие регионы будут пропущены, а хочется чтобы отсутствующие регионы помечались нулями, т.е. суммарное число столбцов всегда было константным.

Баги frontend 18.11

  1. Неправильно формируется строка запуска standalone train Решили. Проблема была в использовании не последней версии Train, которая выдавала ошибку из-за отсутствующего параметра.
  2. Проверка уникальности файла в storage идет только по ID, а не по тройке (группа-ран-id) Поправил

Изменить вывод ig-aligner

Паша, нужны примеры вывода. Я понимаю, что должно быть что-то вида:
{read_id: {V: [v_germline_id1, v_germline_id2], D: [d_germline_id1, d_germline_id2], J: [j_germline_id1, j_germline_id2], K: [k_germline_id1, k_germline_id2]}}

Рефакторинг IG-SNOOPER

  1. Переписать скрипты запуска на Питоне

  2. Обеспечить интерфейсы типа:

    train.py fasta kabat model_name config
    predict.py fasta model_name config

  3. Config:

window_size
avg_size
merge_threashold
model_path
out_dir
tools_path
remove-trash-flag

  1. Автогенерация header по типу последовательности (меньше треша, нет неприятностей с weka)

Вырезание региона

С божью (ig-tools/ig-snooper/ig_snooper_utils) помощью получать отдельный FASTA файл с указанным регионом из каждого сиквенса входного FASTA + Kabat файлов.

Относительные пути

Сейчас много где используются абсолютные пути для гермлайнов, регионов и прочего. Наверное, пора переделать их на относительные.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.