ТЗ
Интерфейс
- Окно редактора. Содержит сверху меню, под ним панели: группы (groups), названия последовательностей (names), тела последовательностей (sequences). Строки в списке названий последовательностей и в телах последовательностей одинаковой высоты и прокрутка этих двух виджетов согласована.
+------------------------------------------------------------[_][ ][x]+ |[file][colour] | |+-------------+-----------+------------------------------------------| ||> groups | | ^| ||[v] group1 | names | sequenсes #| ||[v] group2 | | #| ||[ ] group3 | | #| ||> blocks | | #| ||[ ] block1 | | #| ||[ ] block2 | | #| || | | #| || | | #| || | | #| || | | #| || | | #| ||------+------| | #| ||filter|center| | #| ||------+------| | v| || add |delete| |<#######################################> | +--------------+-----------+------------------------------------------+
- Устройство меню:
- File
Import – из fasta и msf
Export – в fasta и msf
- Save Project
- Load Project
- -
- Quit
- Color
By Identity – яркость цвета а.о пропорциональна встречаемости соответствующей а.о в столбце
By Similarity – аналогично, но similarity
- -
- By Amino Acid Groups
- By Amino Acid
- By Group
- By Block
- Каждая из панелей (groups, names, sequences) может быть скрыта или показана.
- В панели groups расположены списки групп и блоков. Это виджет типа ...
- Кнопка Center в панели groups двигает выравнивание таким образом, чтобы левый верхний угол блока совпал с левым верхним углом видимой части выравнивания; при этом последовательности в выравнивании переставляются таким образом, чтобы последовательности в блоке были рядом, и блоки\группы располагались один под другим.
- Кнопка Add в панели groups вызывает диалог, спрашивая группа или блок; имя группы/блока. Создает соответственно новую группу или блок.
+--------------------------------------------------+ | Group ( ) Block (.) | | | | Name: [___________] | | | | [OK] [Cancel] | | | +--------------------------------------------------+
- Кнопка Delete в панели groups удаляет выделенное множество групп/блоков.
- Кнопка Filter в панели groups скрывает из выравнивание последовательности, не относящиеся ни к выделенным блокам, ни к выделенным группам. В случае, если нет ни одной выделенной группы, должны быть скрыты все позиции не относящиеся ни к одному из выделенных блоков.
- Правая кнопка мыши по группе или блоку в панели groups открывает контекстное меню:
- Filter
- Center
- Delete
- Drag-n-Drop последовательностей в группу, должно добавлять их в эту группу.
- Drag-n-Drop выделенного участка в блок, добавляет его в блок, если блок пуст.
- Shift+Drag-n-Drop выделенного участка в блок добавляет дополнительные последовательности и позиции к блоку.
Управление
Мышью
Клавиатурой
Необязательное
- В обоих виджетах "Text" запретить редактирование текста (пока что). Для начала научимся двигать последовательности горизонтально. Должно быть возможно выделить участок последовательности и подвинуть последовательность в пределах этого участка, как это сделано в Jalview. То есть мышкой выделяется часть последовательности, потом Ctrl-B1 можно в пределах выделенного участка эту последовательность подвинуть. Двигается буква, на которой стоит курсор, а также все буквы, находящиеся перед ней в направлении движения. Гэпы схлопываются и/или добавляются при необходимости. За границы выделенного участка выдвинуть последовательность нельзя. Думаю, пока не стоит добавлять возможность выделения блока из нескольких последовательностей.
- Если выравнивание было покрашено по identity, а потом часть последовательностей подвинули, стоит ли перекрашивать автоматически или только после повторного вызова команды By Identity? Это вопрос того, как кому удобнее имхо. Я думаю, стоит перекрашивать автоматически. Если решим, что стоит, то сделать так, чтобы после движения выравнивание перекрашивалось (целиком или только в измененных фрагментах?).
Лучше не автоматически, по покраске очень удобно следить, куда ты утащил последовательность -.
- Необходимо понять, и/или сочинить годный формат, в котором можно будет хранить покраску.
- Также, вероятно, хорошо было бы иметь возможность сохранить проект, со всеми группами и блоками.
- Меню Color/Configure. Всплывающее окно с возможностью выбора алгоритма покраски для identity/similarity: три градации / линейная / степенная / логарифмическая. Возможность подстройки порога чувствительности раскраски.