Добавление катионов металлов
Задание для малой группы
Кратко: Создать веб-сервис, добавляющий к структуре нуклеиновой кислоты различные катионы металлов, по заданным правилам, описанным в статье. Таким образом частично решается проблема добавления ионов в ячейку согласно заряду.
Автор задачи: Залевский Артур.
Подробно:
Бэкэнд:
1. Аргументы задаются из командной строки, используя соответствующие ключи. Например: add_cat.py -f FILE
2.Работа с форматом pdb: чтение файла, получение данных об атоме в виде: имя атома, номер нуклеотида/остатка, координаты атома. (ключ -f, --file)
3.Возможность добавления 3х типов катионов (Na, Mg, Ca) (ключ -cat)
4.Возможность работы с 2мя типами кислот (DNA, RNA) (ключ -a, --acid_type)
5.Предусмотреть случай, если катион расположен нессиметрично, относительно атомов кислорода
(сомнения в необходимости) 6.Функция замещения уже существующих в структуре катионов. (ключ -r, --replace)
7.Возможность добавления катионов в количестве, не более заданного пользователем числа. (ключ -n)
8.Возможность вывода только расчетного количества катионов.(ключ -count)
9.Скорость обработки: не более 120 секунд на 50000 атомов исходной структуры(на процессоре уровня Intel core i5)
10.Вывод программы представляет собой строки с именами добавленных катионов и их координатами, отформатированные в соответствии с форматом данных pdb.
11.Генерация лог-файла, содержащего информацию о входных данных, количестве добавленных катионов, времени работы.
Опционально:
11. Форматы входных и выходных данных, отличные от pdb, например gro. Соответственно добавить определения типа файла по расширению.
12.Использование технологий параллельного программирования: нити, процессы (реализации выбираются по желанию OpenMP, pthreads и т.д.)
Фронтэнд:
1.Возможность загрузки пользовательских данных непосредственно в виде pdb файла или его идентификатора
2.Набор полей для ввода/выбора пользовательских параметров: тип катиона, тип кислоты, e-mail пользователя (последнее по желанию пользователя).
3. Разработать механизм создания очереди задач, обеспечивающий последовательное добавление задач и выполнение в момент времени только одной задачи. Возможно с применением БД.
4.Генерация ссылок для скачивания результатов
(частично) 5.Оповещение пользователя о результатах: вывод данных лог-файла на странице + e-mail, в случае, если он указан. (отправка временно заморожена, до решения вопроса с доменом)
6. Страница, отображающая текущую очередь задач
7. Страница, отображаюшая список всех обработанных задач
Note: Дизайн на усмотрение исполнителя, но, если есть желание, могу поделиться своим мыслями по расположению элементов.
Опционально:
8.Cбор статистической информации: geoip, общее количество задач, среднее время выполнения и т.д. (Возможно использование БД)
9.Организация кэша задач
10.Сбор дополнительной статистической информации: организация и т.д.
11.cli интерфейс для использования
Комментарий по сути: задача не очень сложная, скорее даже легкая. Но практичная и претендующая на то, чтобы полностью реализованной к дедлайну. Объем работ может быть легко увеличен дополнительными поддерживаемыми форматами.