QUIP
パッケージは、分子動力学シミュレーションを実行するためのソフトウェア ツールのコレクションです。さまざまな原子間ポテンシャルと強結合量子力学を実装しており、外部パッケージを呼び出して、LAMMPS、CP2K、Python フレームワーク ASE などの他のソフトウェアへのプラグインとして機能することもできます。 QM/MM スタイルでは、特に金属や半導体などの材料系に焦点を当てた、さまざまなハイブリッドの組み合わせもサポートされています。
詳細については、オンライン ドキュメントを参照してください。 SOAP と GAP には別のドキュメントがあります。
パッケージの長期サポートは以下によって保証されます。
このコードの一部は、Albert Bartok-Partay、Livia Bartok-Partay、Federico Bianchini、Anke Butenuth、Marco Caccin、Silvia Cereda、Gabor Csanyi、Alessio Commisso、Tom Daff、ST John、Chiara Gattinoni、Gianpietro Moras、James Kermode によって作成されました。 、レティフ・モネス、アラン・ニコル、デヴィッド・パックウッド、ラース・パステウカ、ジョバンニ・ペラルタ、イヴァン・ソルト、オリバー・ストリクソン、ヴォイチェフ・シュラフタ、シッラ・ヴァルナイ、スティーブン・ウィンフィールド、タマス・K・ステンツェル、アダム・フェケテ。
著作権 2006-2021。
公開されているバージョンの大部分は、GNU General Public License バージョン 2 に基づいてリリースされており、一部の部分はパブリック ドメインにあります。サブモジュールとして含まれる GAP コードは、非営利の学術ソース ライセンスに基づいて配布されます。
QUIP を使用する場合は、次の出版物を引用してください。
@ARTICLE { Csanyi2007-py ,
title = " Expressive Programming for Computational Physics in Fortran 95+ " ,
author = " Cs{'a}nyi, G{'a}bor and Winfield, Steven and Kermode, J R and De
Vita, A and Comisso, Alessio and Bernstein, Noam and Payne,
Michael C " ,
journal = " IoP Comput. Phys. Newsletter " ,
pages = " Spring 2007 " ,
year = 2007
}
quippy
Python インターフェイスを使用する場合は、次を引用してください。
@ARTICLE { Kermode2020-wu ,
title = " f90wrap: an automated tool for constructing deep Python
interfaces to modern Fortran codes " ,
author = " Kermode, James R " ,
journal = " J. Phys. Condens. Matter " ,
month = mar,
year = 2020 ,
keywords = " Fortran; Interfacing; Interoperability; Python; Wrapping codes;
f2py " ,
language = " en " ,
issn = " 0953-8984, 1361-648X " ,
pmid = " 32209737 " ,
doi = " 10.1088/1361-648X/ab82d2 "
}
GAP コードを使用する場合は引用してください
@ARTICLE { Bartok2010-pw ,
title = " Gaussian approximation potentials: the accuracy of quantum
mechanics, without the electrons " ,
author = " Bart{'o}k, Albert P and Payne, Mike C and Kondor, Risi and
Cs{'a}nyi, G{'a}bor " ,
journal = " Phys. Rev. Lett. " ,
volume = 104 ,
number = 13 ,
pages = " 136403 " ,
month = apr,
year = 2010 ,
issn = " 0031-9007, 1079-7114 " ,
pmid = " 20481899 " ,
doi = " 10.1103/PhysRevLett.104.136403 "
}
以下の原子間ポテンシャルは現在 QUIP でコード化またはリンクされています。
次の強結合の関数形式とパラメータ化が実装されています。
次の外部パッケージを呼び出すことができます。
quippy
Python インターフェイスを使用する場合に必要。最新バージョンを推奨) QUIP は、経験的モデルと量子力学的モデルの両方の、さまざまな異なるモデルを効率的に結び付ける必要性から誕生しました。 LAMMPS や Gromacs などのコードとパフォーマンスの点で競合することはありません。アトミック シミュレーション環境も同様の機能を備えており、より広く使用されていますが、QUIP には多くの独自の機能があります。
quippy
パッケージを介した Python からの Fortran 型およびルーチンへのアクセスQUIP のバイナリと、アトミック シミュレーション環境 (ASE) との相互運用性を提供する関連する quippy Python バインディングは、Python パッケージ インデックス (PyPI) からパッケージ名quippy-ase
で入手できます。これは、次の方法で最新リリースをインストールできることを意味します。
pip install quippy-ase
pip
経由でインストールすると、 quip
およびgap_fit
コマンド ライン プログラムも使用できるようになります (pip がスクリプトをインストールするディレクトリがPATH
上にある場合)。
現在、ホイールは、macOS および glibc ベースの Linux ディストリビューション (Ubuntu、CentOS など) 上の Python 3.6 以降を備えたx86_64
アーキテクチャと、macOS arm64 で利用できます。ホイールは、GitHub Actions CI を使用して定期的に更新されます。 pip
でのインストールに問題がある場合は、ここで問題を開いてください。
Docker または Singularity にアクセスできる場合は、プリコンパイルされたイメージの 1 つを試して、すぐに起動して実行できます。
QUIP をコンパイルするには、最小要件は次のとおりです。
動作する Fortran コンパイラ。 QUIP は、 gfortran
4.4 以降およびifort
11.1 でテストされています。
線形代数ライブラリ BLAS および LAPACK。 QUIP は、Ubuntu 12.04 上の参照バージョンlibblas-dev
およびliblapack-dev
、およびifort
を備えたmkl
11.1 でテストされています。
MPI: gap_fit
の MPI 並列化を使用するには、ScaLAPACK ライブラリ (Ubuntu 上のlibscalapack-openmpi
など)、または MKL の一部が必要です。
GitHub から QUIP リポジトリのクローンを作成します。 --recursive
オプションはサブモジュールを自動的に取り込みます (これを行わない場合は、クローン作成後に最上位の QUIP ディレクトリからgit submodule update --init --recursive
を実行する必要があります)::
git clone --recursive https://github.com/libAtoms/QUIP.git
サブモジュールの 1 つは GAP コードで、 src/GAP
にあります。 GAP は別のライセンスの下で配布されることに注意してください。
GAP はガウス過程回帰を使用する機械学習手法であり、実行するには大きなデータ ファイルが必要です。データ リポジトリでは、公開されているポテンシャルとトレーニング データを見つけることができます。オンライン ドキュメントも参照してください。
arch/
ディレクトリを調べてアーキテクチャを決定し、環境変数QUIP_ARCH
を定義します。例::
export QUIP_ARCH=linux_x86_64_gfortran
Linux 上の標準 gfortran 用。デフォルトが気に入らない場合は、ここで使用するコンパイラを調整できます。より特殊なシステムの場合は、既存のファイルに基づいて独自のarch/Makefile.${QUIP_ARCH}
ファイルを作成する必要がある場合があります。
MPI: 一部のアーチ ファイルには、MPI 使用のための調整がすでに含まれています。これらは通常、名前にmpi
含みます (例: linux_x86_64_gfortran_openmpi+openmp
。
QUIP をカスタマイズし、数学ライブラリを設定し、リンク オプションを提供します::
make config
Makefile.config はビルド ディレクトリbuild/${QUIP_ARCH}
を作成し、すべてのビルドはそこで行われます。まず、ライブラリやその他のものをどこに保管するかについていくつかの質問が表示されます。要求されているものを使用しない場合は、空白のままにしておきます。回答はbuild/${QUIP_ARCH}
ディレクトリのMakefile.inc
に保存され、後で編集できます (コンパイラ、最適化、またはデバッグ オプションを変更する場合など)。
後でタイト バインディング サポートを有効または無効にするなど、構成に大幅な変更を加えた場合はmake deepclean; make
。
MPI: gap_fit
の MPI 並列化を使用するには、システム ライブラリをリンク オプション ( -lscalapack
または-lscalapack-openmpi
に追加し、GAP サポートを有効にし、QR 分解を有効にし、ScaLAPACK を有効にする必要があります。
すべてのプログラム、モジュール、ライブラリをコンパイルします::
make
最上位のQUIP
ディレクトリから。すべてのプログラムはbuild/${QUIP_ARCH}/
でビルドされます。このディレクトリには、コンパイルされたオブジェクト ファイルとライブラリ ( libquip.a
) もあります。プログラムはそのディレクトリから直接呼び出すことができます。
その他の有用な make ターゲットは次のとおりです。
make install
: 見つかったすべてのコンパイル済みプログラムをQUIP_INSTALLDIR
にコピーします (ディレクトリが定義されている場合) (フルパスが必要)。また、バンドルされた構造が定義されている場合はQUIP_STRUCTS_DIR
にコピーします。
make libquip
: QUIP をライブラリとしてコンパイルし、リンクします。これにより、さまざまなライブラリがすべて作成され、それらが 1 つに結合されます: build/${QUIP_ARCH}/libquip.a
。これは (LAPACK と同様に) リンクする必要があるものです。
まずはquip
プログラムを使用するのが良いでしょう。このプログラムは、さまざまなモデルを使用して原子構成のプロパティを計算できます。例えば::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
test.xyz
という名前のファイルがあり、その中に立方体 fcc 格子内の Cu 原子を表す次のデータが含まれていると仮定します。
4
Lattice="3.61 0 0 0 3.61 0 0 0 3.61" Properties=species:S:1:pos:R:3
Cu 0.000 0.000 0.000
Cu 0.000 1.805 1.805
Cu 1.805 0.000 1.805
Cu 1.805 1.805 0.000
上記の例の Lennard-Jones パラメーターは、 share/Parameters
の下のip.parms.LJ.xml
ファイルで定義されています (このファイルへのパスが正しいことを確認してください)。原子構成の形式は拡張 XYZ 形式で指定されます。最初の行は原子の数、2 行目は一連の key=value ペアで、これには少なくとも周期的な境界ボックスを与える Lattice キーが含まれている必要があります。残りの行を説明する Properties キー。 Properties の値は、コロン (:) で区切られた一連のトリプレットで、列の名前、型、数を指定します。型は、整数の場合は I、実数の場合は R、文字列の場合は S で指定されます。
ほとんどの文字列引数は--help
で置き換えることができ、QUIP プログラムは使用できるキーワードのリストとその使用法に関する簡単なヘルプ メッセージを出力します。そのため、たとえばinit_args=--help
により、潜在的なモデル タイプ (およびいくつかの組み合わせ) のリストが表示されます。 。解析は再帰的であるため、 init_args="IP --help"
実行すると、利用可能な原子間ポテンシャル (IP) の種類のリストが表示されます。
Python ラッパー ( quippy
) をコンパイルするための最小要件は次のとおりです。 f90wrap
ビルド プロセスによって自動的にインストールされますが、 pip
実行可能スクリプトをインストールするディレクトリがパス上にあることを確認する必要がある場合があります (たとえば、 PATH=~/.local/bin:$PATH
設定することによって)。
numpy>=1.5.0
)ase>=3.17.0
)注: Python 仮想環境 (virtualenv) を使用していて、そこにquippy
インストールしたい場合は、その前に環境がアクティブ化されていることを確認してください ( source <env_dir>/bin/activate
、ここで<env_dir>
仮想環境のルートです)。 quippy
を構築しています (そうしないと、ライブラリのバージョンが予期しない競合を引き起こす可能性があります)。
Python ラッパー ( quippy
) をコンパイルするには、次を実行します::
make quippy
Quippy はquippy/build/${QUIP_ARCH}
のlib
ディレクトリを$PYTHONPATH
に追加することで使用できますが、特定の Python ディストリビューションにインストールする方が便利です。
make install-quippy
現在の virtualenv にインストールするか、システム全体にインストールしようとします (通常、 sudo
がないと失敗します)。現在のユーザーに対してのみ ( ~/.local
に) インストールするには、コマンドQUIPPY_INSTALL_OPTS=--user make install-quippy
を実行するか、 QUIPPY_INSTALL_OPTS=--prefix=<directory>
使用して特定のディレクトリにインストールします。 QUIPPY_INSTALL_OPTS
、ファイルbuild/${QUIP_ARCH}/Makefile.inc
で設定することもできます。
quippy のインストール プロセスと一般的なビルドの問題のトラブルシューティングの詳細については、オンライン ドキュメントを参照してください。
quippy
:: bash make test
に依存する単体テストと回帰テストを実行するには
新しいクローンに近い状態に戻すには、 bash make distclean
使用します。
一部の機能は、 QUIP/src/
ディレクトリ内の他のモジュール (例: ThirdParty
(DFTB パラメーター、TTM3f 水モデル)) をチェックアウトした場合にのみ使用できます。
LAMMPS 経由で QUIP ポテンシャルを実行するには、 make libquip
、LAMMPS ドキュメントの指示に従います。少なくとも 2017 年 8 月 11 日以降のバージョンが必要です。
cd src/GAP
git checkout < commit >
または
git checkout main
QUIP
リポジトリ内のバージョンを更新します。
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
Apple が提供するコンパイラと Python は推奨しません。また、それらとの互換性もテストしません。 MacPorts または Homebrew を使用して GNU コンパイラを入手し、そこから Python または Anaconda を使用します。この編集の時点では、gcc-8.1 では内部コンパイラ エラーが発生しますが、gcc-4.6 から gcc-7 までは問題ありません。
Wheel は、このワークフローで cibuildwheel を使用してpublic
へのプッシュおよびプル リクエストに基づいて構築されます。
リリース候補に-rc1
などのサフィックスが付いたタグを最初の試行で作成させるには、プッシュしてビルドをトリガーします。
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
すべてがうまくいけば、 .whl
ファイルは新しい GitHub リリース内のアセットとして表示されます。インストール プロセスをローカルでテストできるようになりました。
すべてが正しく動作したら、完全なリリースを作成します (つまり、 -rc1
サフィックスを付けずにv0.xy
という名前だけのタグを作成します)。これにより、ホイールのアップロードと PyPI へのソース配布がトリガーされます。