Внимание!

Мы используем cookie для сохранения в вашем браузере информации о ваших предыдущих посещениях. Это необходимо для более удобной работы с сайтом.
Если Вы с этим не согласны, вы можете отключить использование cookie в настройках браузера.
Принять

Создание анимации реакции

Помечено: 

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
Хранитель
Zheka
Хранитель

Возникла проблема, в очень сжатые, просто наикратчайшие сроки нарисовать мультфильм о том, как подходят молекулы друг другу и как дальше реагируют (реакция протекает через несколько элементарных стадий). Понятно, что на первом этапе нужно рассчитать координату реакции (IRC), в результате будет получен некоторый набор координат промежуточных положений.

Как лучше и проще дальше всё собрать в один мультфильм? У кого есть какой опыт?
На сайте chemport.ru об этом как-то говорил amg (про использование Molden и ещё про что-то), если можно, не могли бы вы повторить это и выложить необходимые скрипты с описание как их нужно запускать.

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

Какой лучше шаг сканирования использовать?

Как в MS PowerPoint установить максимальное число показов анимированного gif-а (т.е. чтобы после двух циклов рисунок остановился и не дёргался)?

Заранее благодарен за ответы.

PS: В ChemCraft нашёл функцию "Tools -> Create Animations -> Scan Animations", ушёл изучать.

Участник
amg
Участник

Evgeniy, у меня есть много скриптов для этой цели. Их описание и архив см. у нас на сайте:
http://limor1.nioch.nsc.ru/priroda.html. Почти всегда скрипты работают с геометриями в формате xyz.

Некоторые скрипты из архива на сайте устаревшие, и нет последовательности действий, как робить.

Вкратце, примерно так (жирным шрифтом выделены названия скриптов и программ).

Сначала получить IRC в ту и другую сторону. Потом их объединить. Для этого одну из ветвей IRC нужно сделать в обратном направлении. Для этого reverse. Если ПС симметрично, то считать IRC можно только в одну сторону. Но потом перед объединением нужно дополнительно сделать reflect и renum.

Следующий шаг — соединить вместе две реакции с общим продуктом. Проблема здесь в том, что часто наборы геометрий для разных реакций не согласованы по нумерации и ориентации. Согласовать нумерацию — renum (с помощюю tenzor -sort это можно сделать автоматически). Согласовать ориентацию — smooth, reflect (последняя — если  общие продукты не накладываются друг на друга, т.е. явл. оптическими антиподоми), иногда может помочь tenzor.

Далее — делать собственно анимацию. Я пользуюсь molden-ом, он умеет показывать последовательность геометрий в движении и на каждое изображение создавать gif.
Если нужно наложить на изображение энергетический профиль — mldn-gif.

Соединять gif-ы в анимированный gif — под линух есть замечательная программка gifsicle, под винду я раньше пользовался крякнутой Gif Movie Gear (она же умеет далать avi). И там и там можно ImageMagick (но не рекомендую для этой цели, страшно ресурсоесмкий).

Максимальное число показов — у самого анимированного gif-а есть это свойство, задается при его изготовлении. Не знаю только, воспринимает ли его PowerPoint.

Масса примеров того, что получается у меня, есть у нас на сайте http://limor1.nioch.nsc.ru/quant.html. Но наверняка имеются и другие подходы к изготовлению анимации, очень интересно узнать и посмотреть на результат.

PS Я Вам написал в личку

Хранитель
Zheka
Хранитель
amg писал(а):
Evgeniy, у меня есть много скриптов для этой цели. Их описание и архив см. у нас на сайте:
http://limor1.nioch.nsc.ru/priroda.html. Почти всегда скрипты работают с геометриями в формате xyz.

Гигантский комплекс анимировать фактически не успел (решил его на потом оставить, не в этот раз). А пока решил сделать небольшую анимацию (и заодно поучится) как димеризуется AlMe3 и как димер обменивается алкильными группами.

Выполнил процедуры scan (где нет ПС), irc и т.п. Потом с помощью скрипта сделал reverse где нужно.
grep-ом вычистил файлы до состояния "Atomic Coordinates:" … "#"

Научился приводить файлы к виду, который понимает ChemCraft (он умеет анимировать шаги) и выводит в виде step1, step2 и т.д.

Формат файла оптимизации PRIRODA (главные ключевые слова, которые читает ChemCraft):
Priroda 6 (2006.08.20)

Geometry Optimization Step XXX:
OPTIMIZATION CONVERGED in X steps!
MOL>$molecule

Atomic Coordinates:
...
#

Geometry Optimization Step XXX:
OPTIMIZATION CONVERGED in X steps!
MOL>$molecule

Atomic Coordinates:
...
#

Первый набор координат в step вроде игнорируется (выводится в виде Initial Geometry). Только где "…" должны быть координаты xyz, остальное менять не обязательно (X), программа сама всё нумерует.

Более подробно отпишусь позже.

PS: Как бы теперь полученный файл обработать (т.е. применить smooth.pl, файл во вложении) %)

Хранитель
Zheka
Хранитель

Начал орудовать напильником в smooth.pl, прохожу 2-й шаг чтения геометрических параметров,
а потом упираюсь в вызов бинарника coord (который похоже как раз и вращает).

Ещё не хочет работать с "@coord = ;"

В итоге напильник вроде помог :-).
Кто хочет посмеяться над моим стилем правки кода, смотрите вложение =)

Первый блин комом, но заценить уже можно:

Анимация (~ 3 МБ)

Участник
amg
Участник

Evgeniy, Ваша анимация хороша! Даже рывки геометрии почти не заметны. Это лучше, чем делает molden.

Насколько я понял, Вы изменили smooth.pl так чтобы он выдывал файл в формате, пригодном для анимации в ChemCraft? Мне пришло в голову немного другое решение. Если для ChemCraft не подходит последовательность xyz-файлов в том формате, который используется у меня, то, может лучше сделать конвертор из "моего" xyz в формат, пригодный для анимации в ChemCraft? Это было бы более универсально. Ведь обработка с помощью smooth — не всегда конечная. После могут потребоваться другие обработки, а им понадобится xyz.

Сделать такой конвертор не трудно, если выложите пример файла, пригодного для анимации в ChemCraft, то я сделаю.

Хранитель
Zheka
Хранитель
amg писал(а):
Насколько я понял, Вы изменили smooth.pl так чтобы он выдывал файл в формате, пригодном для анимации в ChemCraft?

ChemCraft разные форматы понимает, наверное, поддерживает большее их число, чем любая другая программа. Просто я поспешил и всё вычистил из файлов, оставил только набор декартовых координат (в таком же виде их читает и QCC Front-End, только она тоже привязывается к каким-то близлежащим словам). В скрипте я подправил то, чтобы скрипт ничего другого больше не требовал и не проверял, только доходил до начала декартовых координат и считывал их.

amg писал(а):
Мне пришло в голову немного другое решение. Если для ChemCraft не подходит последовательность xyz-файлов в том формате, который используется у меня, то, может лучше сделать конвертор из "моего" xyz в формат, пригодный для анимации в ChemCraft? Это было бы более универсально. Ведь обработка с помощью smooth — не всегда конечная. После могут потребоваться другие обработки, а им понадобится xyz.

Сделать такой конвертор не трудно, если выложите пример файла, пригодного для анимации в ChemCraft, то я сделаю.

Иметь универсальный скрипт было бы хорошо. Просто я плохо ориентируюсь в формате molden, поэтому поразбирался что ждёт ChemCraft от файла, у которого в первой строке в заголовке стоит слово Priroda.

Пример файла для ChemCraft во вложении. При анимации таким способом главное неудобство в том, что придётся на каждой точке нажимать кнопку "Add". Если бы вывод был не в формате шагов оптимизации структуры, а в режиме сканирования (пока не разобрался, по каким ключевым словам ChemCraft распознаёт сканирование в файле Природы), тогда бы достаточно было нажать кнопку 1 раз.

Участник
amg
Участник
Zheka писал(а):
Пример файла для ChemCraft во вложении. При анимации таким способом главное неудобство в том, что придётся на каждой точке нажимать кнопку "Add". Если бы вывод был не в формате шагов оптимизации структуры, а в режиме сканирования (пока не разобрался, по каким ключевым словам ChemCraft распознаёт сканирование в файле Природы), тогда бы достаточно было нажать кнопку 1 раз.

С файлом понятно. Вообще то Вы и раньше этот формат приводили, да я как то умудрился проглядеть. Интересно, а энергию туда можно запихнуть, чтобы ChemCraft ее видел?

Попробовал скачать ChemCraft и поиграться. Странно, что нативный аутпут Природы с task=scan он не распознал как сканирование, показал только шаги оптимизации геометрии. А усеченный файл, в Вашем формате — распознал. Но как сделать анимацию, не нажимая на каждой точке кнопку "Add", я так и не нашел. Кроме того, ChemCraft нормально зачитывает последовательность xyz в "моем" формате. Так что пока не обнаружится возможность делать в ChemCraft анимацию сразу всех структур, писать конвертер "моего" формата в Ваш можно, наверное, погодить — через кнопку "Add" сделать анимацию с тем же успехом можно и из xyz.

То что я называю "мой" формат (или молденовский) — это, конечно же, не мой, и устроен крайне просто.
4
Energy -56.48784740
N   0.00000000   0.00000000   0.00000000
H   0.00000000   0.00000000   1.00800000
H   0.87295400   0.00000000  -0.50400000
H  -0.87295400   0.00000000  -0.50400000

Первая строка — целое число N (количество атомов) и больше ничего
Вторая строка — для комментариев, может быть пустой. molden первое попавщееся там число воспринимает как энергию
Следующие N строк образуют таблицу из четырех колонок, тут все должно быть понятно. Пятую колонку, если она есть, molden воспринимает как заряды (умеет их показывать около каждого атома), но я использую эту колонку для хим.сдвигов.
Потом все повторяется.

В таком формате получается файл с расширением .xyz после pri2mol над природовским аутпутом (pri2mol при оптимизации геометрии выдает шаги оптимизации, а при сканировании или IRC — только оптимизированные точки). И такой формат является инпутом и/или аутпутом почти для всех моих скриптов. И его понимают, вроде бы, все известные мне квантово-химические вьюверы (и ChemCraft тоже). Еще он мне нравится за минимализм: ничего лишнего.

Хранитель
Zheka
Хранитель
amg писал(а):
Попробовал скачать ChemCraft и поиграться. Странно, что нативный аутпут Природы с task=scan он не распознал как сканирование, показал только шаги оптимизации геометрии. А усеченный файл, в Вашем формате — распознал.

По идее изначально ChemCraft вроде затачивался на такие программы, как Gaussian, GAMESS.
Их файлы сканирования ChemCraft открывает как надо, может попробовать конвертировать в них, а потом анимировать одной кнопкой?

В предыдущий версиях ChemCraft файлы природы вообще открывались последней структурой, не было точек оптимизации.

Сейчас смотрю Gaussian-ановский файл, на каждом шаге оптимизации выводится энергия.

Формат файла оптимизции Gaussian (главные ключевые слова, которые читает ChemCraft):
Entering Gaussian System, xxx

--------------------------
#... Opt Freq
--------------------------

                          Input orientation:                         
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0       -1.028011    0.401116   -0.797487
    2          6             0       -1.743611    0.839270   -2.057499
...
---------------------------------------------------------------------

                         Standard orientation:                         
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0       -2.316480    0.765431   -0.082040
    2          6             0       -2.312348   -0.747888   -0.042794
...
---------------------------------------------------------------------

... следующий шаг ...

                          Input orientation:                         
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0       -1.028011    0.401116   -0.797487
    2          6             0       -1.743611    0.839270   -2.057499
...
---------------------------------------------------------------------

                         Standard orientation:                         
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0       -2.316480    0.765431   -0.082040
    2          6             0       -2.312348   -0.747888   -0.042794
...
---------------------------------------------------------------------

Пробелы перед строками важны!

Участник
amg
Участник

Сделал конвертор из xyz в усеченный гауссиановский формат.
http://limor1.nioch.nsc.ru/file/Priroda/xyz2scan
Пользоваться — как и большинством других скриптов, либо имя файла(ов) в качестве параметра, либо чарез stdin (в последнем случае можно организовывать конвейеры):
xyz2scan file.xyz > file.scan
reverse file.xyz | smooth | xyz2scan > file.scan

Evgeniy, а энергию в этот усеченный гауссиановский формат нельзя внедрить? А то я, например, неуютно себя чувствую, не имея  перед глазами энергетического профиля.

Заодно выкладываю программу, которую можно использовать для автоматической перенумерации. Версия из архива содержит серьезный баг и зависит от модулей для вычисления собственных чисел и векторов. Теперь в этих отношениях лучше.
http://limor1.nioch.nsc.ru/file/Priroda/tenzor

Участник
amg
Участник

С анимацией IRC связана небольшая проблемка. IRC считается с загрубленными параметрами, поэтому пред- и постреакционные нужно дополнительно оптимизировать. При этом чаще всего ничего не происходит (т.е. энергия и геометрия практически не меняются) но иногда дооптимизация приводит к заметной перестройке молекулы с некоторым понижением энергии. Вот в последнем случае может захотеться присоединить траекторию оптимизации к IRC-траектории. Но сама по себе траектория оптимизации для этого плохо подходит: в начале её часто бывают выбросы энергии с рывками геометрии, а в конце — длинное плато, на котором ничего не меняется. Анимация получается некрасивой.

Чтобы побороть это, в скрипт xyz добавлена опция -irc, которая превращает xyz оптимизации в IRC-подобную траекторию. Эта опция удаляет из оптимизации точки, которые выше по энергии, чем предыдущая и в которых геометрия мало меняется (задается -irc=RMS). RMS можно задавать равным шагу IRC. Полезно потом сгладить:
xyz -a -irc=1.0 -avw=5 fff.L1.O.xyz

Участник
DLPNO-Pasaran
Участник

Jmol умеет делать красивые визуализации, но трудозатратно.

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)

Для ответа в этой теме необходимо авторизоваться.

abcdefghijklmnopqrstuvwxyz абвгдеёжзийклмнопрстуфхцчшщьыъэюя
abcdefghijklmnopqrstuvwxyz абвгдеёжзийклмнопрстуфхцчшщьыъэюя
Сменить аватар
Секретный вопрос
<%= q %>
Наложить бан
Пользователь
USER
Сделать предупреждение
Пользователю
USER