История изменений

Версия 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() в отдельный класс ORCABatchProcessing

  • Orca.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.0 to 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)

  • Автоматическое обнаружение дескрипторов устраняет необходимость поддерживать списки дескрипторов вручную