Kodomo

Пользователь

Добавление катионов металлов

Задание для малой группы

Кратко: Создать веб-сервис, добавляющий к структуре нуклеиновой кислоты различные катионы металлов, по заданным правилам, описанным в статье. Таким образом частично решается проблема добавления ионов в ячейку согласно заряду.

Автор задачи: Залевский Артур.

Подробно:

Бэкэнд:

(./) 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 интерфейс для использования

Комментарий по сути: задача не очень сложная, скорее даже легкая. Но практичная и претендующая на то, чтобы полностью реализованной к дедлайну. Объем работ может быть легко увеличен дополнительными поддерживаемыми форматами.