ASE 3.27 での リファクタリングの一環で、NEB クラスは ase.neb モジュールから ase.mep モジュールに完全に移動しました。この変更は、ASE 3.23 から Deprecation Warning として予告されていました。
従来通りのコードで ModuleNotFoundError が発生した場合、以下の対処を参考にしてください。
エラーの詳細
ASE 3.27 以降で、ase.neb モジュールから NEB をインポートしようとすると以下のようにインポートエラーが表示されます。
エラー(文字列転記):
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 from ase.build import molecule
----> 2 from ase.neb import NEB
4 initial = molecule('NH3')
6 final = initial.copy()
ModuleNotFoundError: No module named 'ase.neb'
対処
NEB クラスの移動先である ase.mep モジュールからのインポートに書き換えます。
変更前:
from ase.build import molecule
from ase.neb import NEB ##### ここがエラーの原因 #####
initial = molecule('NH3')
final = initial.copy()
final.positions[0, 2] *= -1
images = [initial, final]
neb = NEB(images)
変更後:
from ase.build import molecule
from ase.mep import NEB ##### 修正 #####
initial = molecule('NH3')
final = initial.copy()
final.positions[0, 2] *= -1
images = [initial, final]
neb = NEB(images)
参考情報
参考までに、警告メッセージは以下のように表示されていました。ase.neb モジュールからインポートされた NEB をインスタンス化(実行)しようとすると表示されます。
ASE 3.23 ~ ASE 3.26 で実行した場合:
文字列転記:
DeprecationWarning: Please import NEB from ase.mep instead of ase.neb
関連情報:
- ASE の Nudged Elastic band のページ
https://ase-lib.org/ase/neb.html#module-ase.mep.neb -
mep モジュールへ移動した経緯など詳細はこちらをご覧ください。
https://gitlab.com/ase/ase/-/merge_requests/2974