История изменений¶
Версия 0.3.4¶
Добавлено¶
Добавлена команда CLI
clearдля удаления всех файлов ORCA в рабочей директории (полезно для очистки файлов, которые не были удалены из-за ошибок)Добавлена команда CLI
purge_cacheдля удаления кеша ORCA
Изменено¶
Улучшена система кеширования для сохранения оригинальных расширений файлов (.out, .log, .smd.out) при сохранении файлов
Улучшен парсинг энергий стабилизации NBO с более информативными сообщениями об ошибках, указывающими на необходимость переменной окружения NBOEXE
Обновлен тест для индексов Майера AM1 для учета различных значений по сравнению с методами DFT
Удалено¶
Удален дескриптор ESP экстремумов (
get_esp_extrema) - не реализован из-за ограничений ORCA 6.0.1 для прямой генерации файлов ESP cube (потребовалась бы интеграция с утилитой orca_plot)
Исправлено¶
Исправлена проблема системы кеширования, когда файлы сохранялись с расширением .out независимо от оригинального расширения, что вызывало ошибки «файл не найден»
Исправлен парсинг энергий стабилизации NBO для правильного определения, когда переменная окружения NBOEXE не установлена
Исправлен парсинг химических сдвигов NMR для корректной работы с закешированными файлами
Исправлен тест для индексов Майера AM1 для принятия различных диапазонов значений по сравнению с DFT
Технические детали¶
Кеш теперь сохраняет оригинальные расширения файлов для обеспечения правильного извлечения файлов
Анализ NBO требует установки переменной окружения NBOEXE, указывающей на исполняемый файл NBO (nbo6.exe или nbo5.exe)
Расчет ESP экстремумов потребовал бы интеграции с утилитой orca_plot, которая в настоящее время не реализована
Команды CLI
clearиpurge_cacheпомогают поддерживать чистые рабочие директории и управление кешем
Версия 0.3.3¶
Изменено¶
Крупный рефакторинг кода: разделение большого файла
orca.py(1620 строк) на модульную структуру: * Созданbase.pyс классомOrcaBase, содержащим общие вспомогательные методы * Созданcalculation.pyс миксиномCalculationMixinдля методов выполнения расчетов * Созданdecorators.pyс декораторомhandle_x_molecule* Дескрипторы разделены на отдельные модули по категориям:descriptors/electronic.py- Электронные дескрипторыdescriptors/energy.py- Энергетические дескрипторыdescriptors/structural.py- Структурные дескрипторыdescriptors/topological.py- Топологические дескрипторыdescriptors/misc.py- Прочие дескрипторы
Основной класс
Orcaтеперь использует множественное наследование от миксиновУлучшена организация кода и поддерживаемость
Удалены избыточные комментарии по всему коду
Технические детали¶
Новая модульная структура упрощает расширение функциональности и поддержку кода
Дескрипторы организованы по категориям для лучшей навигации по коду
Вся функциональность остается обратно совместимой
Версия 0.3.0¶
Добавлено¶
Добавлен новый класс
ORCABatchProcessingдля эффективной пакетной обработки молекулярных дескрипторов с поддержкой pandasДобавлена поддержка полуэмпирических методов (AM1, PM3, PM6, PM7, RM1, MNDO, MNDOD, OM1, OM2, OM3)
Добавлен параметр
pre_optimize(по умолчанию:True) для предварительной оптимизации геометрии молекулы с помощью силового поля MMFF94 перед расчетами ORCAДобавлена поддержка multiprocessing для параллельной пакетной обработки через параметр
parallel_mode="multiprocessing"Добавлена автоматическая очистка всех временных файлов ORCA (входные, выходные и все временные файлы) после расчетов, так как результаты кешируются
Добавлен улучшенный парсинг ошибок с краткими сообщениями в
logging.INFOи детальной информацией вlogging.DEBUGДобавлен метод
_pre_optimize_geometry()для оптимизации геометрии с помощью MMFF94Добавлен метод
_is_semi_empirical()для определения полуэмпирических методов
Изменено¶
Рефакторинг функциональности пакетной обработки из
Orca.calculate_descriptors()в отдельный классORCABatchProcessingOrca.calculate_descriptors()теперь используетORCABatchProcessingвнутри для обратной совместимостиcalculate_descriptors()теперь сохраняет исходные колонки DataFrame (включая „smiles“) вместо их удаления и повторного добавленияУлучшен расчет хеша молекулы для включения параметра
pre_optimizeдля правильного кешированияОбновлен расчет хеша молекулы для исключения
basis_setиdispersion_correctionдля полуэмпирических методовУлучшена генерация входных файлов для поддержки полуэмпирических методов (не требуется базисный набор или дисперсионная коррекция)
Улучшена очистка файлов для удаления всех файлов ORCA (включая входные и выходные файлы), так как результаты кешируются
Исправлено¶
Исправлена обработка DataFrame в пакетной обработке для сохранения всех исходных колонок
Исправлена обработка ошибок для предоставления кратких сообщений об ошибках на уровне INFO и детальной информации на уровне DEBUG
Технические детали¶
ORCABatchProcessingподдерживает три режима распараллеливания: «sequential», «multiprocessing» и «mpirun»Предоптимизация использует силовое поле MMFF94 из RDKit для быстрой оптимизации геометрии перед квантово-химическими расчетами
Все файлы ORCA автоматически очищаются после успешных расчетов, результаты сохраняются в кеше
Полуэмпирические методы автоматически определяются и обрабатываются иначе, чем методы DFT
Пакетная обработка теперь включает оценку времени на основе производительности benchmark-машины
Версия 0.2.2¶
Добавлено¶
Добавлено
numpy>=1.20.0to project dependencies (numpy was used but not declared)Добавлено dynamic time estimation updates in batch processing - time estimates are now refined based on actual execution times of previous molecules
Добавлено
_get_available_descriptors()method to dynamically discover available descriptor methods
Изменено¶
Обновлен парсер дипольного момента для приоритизации газофазных значений при их наличии (для расчетов без сольватации)
Улучшен алгоритм оценки времени: * Изменено scaling exponent from O(N^3.5) to O(N^2.5) for more realistic estimates * Используется
total_timeиз benchmark вместоscf_timeкак базовая единица * Более реалистичная оценка шагов оптимизации (15-35 шагов вместо 10-50) * Удален искусственный предел в 24 часаРефакторинг метода
calculate_descriptors(): * Убрано дублирование кода (заменена большая цепочка if-elif на вызовы методов черезgetattr) * Удален избыточный списокall_descriptors- дескрипторы теперь обнаруживаются динамически * Удалены ненужные комментарии * Улучшена поддерживаемость и читаемость кода
Исправлено¶
Исправлено dipole moment parser to correctly extract gas-phase values from ORCA output when available
Исправлено time estimation showing unrealistic values (e.g., 47 hours for 2 molecules) - now provides accurate estimates based on actual benchmark data
Технические детали¶
Оценщик времени теперь использует экспоненциальное скользящее среднее для лучшей точности прогнозирования
Методы дескрипторов вызываются динамически с использованием
getattr(self, desc_name)Автоматическое обнаружение дескрипторов устраняет необходимость поддерживать списки дескрипторов вручную