はじめに 検討中 公正なデータ原則 そして、データ主導型の科学への進展に伴い、「機械で操作可能」で完全に再現可能な科学的記録を目指すのは当然のことです。計算による研究開発では、公表された結果を正確に (または一定の範囲内で) 再現するのに十分な、研究条件とパラメータの機械可読記録が含まれます。日常的に使用できるように研究プロセス中にこの記録を自動的に生成することが望ましいでしょう。
以下では、計算モデルに関連するデータを整理する方法と、機械可読レコードを作成する方法について説明します。利用可能な定義に基づいて JSON スキーマを使用して定義された 3 種類のデータ構造とそれぞれのスキーマを示します。 ここに 。
ユースケースの例 計算化学と材料科学で非常に一般的な計算タイプは 分子構造の最適化 または、上記のフローチャートに示すように、核座標を基準にした単位セル。この種の計算には、エネルギーの計算と原子核座標を基準としたエネルギーの最小化という 2 つの問題が繰り返し解決されます。密度汎関数理論を使用すると、モデルから一連の非線形方程式が生成され、自己一貫性が得られるまで繰り返し解く必要があります (自己一貫性場-SCF)。ここではメソッドデータに焦点を当てたいので、わかりやすくするためにモデルの仕様は省略しています。
構造最適化のための簡略化されたフローチャートステップに関連するパラメーターはオレンジ色のボックス内に表示されます。 ここではいくつかの重要なパラメータを示していますが、SCF アルゴリズムなどの他のパラメータも暗黙的に示されています。例えば、シミュレーションソフトウェアの仕様などのコンテキストがなければ、どのようなデフォルトパラメータが想定されているのかはわかりません。したがって、データレコードを本当に再利用できるようにするには、ユーザーが設定した部分だけでなく、構成全体を再現するために必要な情報が含まれている必要があります。これは、シミュレーションソフトウェア (バージョン、コミット、コンパイラなど) を正確に指定するか、公開されている外部データレコード (たとえば、バージョン Y のソフトウェア X のすべてのデフォルト値を含むリスト) を参照することで実現できます。
オールインワン 簡単な方法は、すべてのメソッド情報を 1 つのオブジェクトに集めることです。この配置は、多くの場合、シミュレーションソフトウェアパッケージの入力ファイル構造に似ています。名前の重複は、通常、変数名の前に宣言名または略語を付けることで解決されます。次のデータ構造には、構造最適化の例のパラメーターが含まれています。
{
"opt_algorithm" : "bfgs" ,
"opt_convergence" : 1e-8 ,
"opt_maxiter" : 65 ,
"scf_convergence" : 1e-5 ,
"scf_maxiter" : 55 ,
}
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
"description" : "all in one" ,
"type" : "object" ,
"properties" : {
"opt_algorithm" : {
"description" : "Optimization algorithm." ,
"type" : "string" ,
"enum" : [ "bfgs" , "gdiis" , "other" ]
} ,
"opt_convergence" : {
"description" : "Convergence criterion for optimization algorithm." ,
"type" : "number" ,
"exclusiveMinimum" : 0 ,
"default" : 1e-7
} ,
"opt_maxiter" : {
"description" : "Maximum number of iterations for optimization" ,
"type" : "integer" ,
"exclusiveMinimum" : 0 ,
"default" : 50
} ,
"scf_convergence" : {
"description" : "Convergence criterion for the self-consistent field algorithm." ,
"type" : "number" ,
"exclusiveMinimum" : 0 ,
"default" : 1e-6
} ,
"scf_maxiter" : {
"description" : "Maximum number of SCF cycles" ,
"type" : "integer" ,
"exclusiveMinimum" : 0 ,
"default" : 50
}
}
}
ディバイド&コンカー ここでは、概念的に関連する要素を特定し、それらを個別のデータ構造に分離します。このように分割することで、まとめて保存すべきパラメータ (最適化閾値、最適化アルゴリズムなど) を集約できます。抽出された各データ構造は特定の概念に関連付けられているため、分類タイプや階層などのコンテキスト情報でデータ構造を充実させることもできます。
上記の例を使用すると、最初に分割しようとするのは、一方では最適化に関連する属性と、他方では SCF に関連する属性を分離することです。その結果、最適化のデータ構造は次のようになります。
{
"tier1" : "optimization" ,
"tier2" : "differentiable" ,
"tier3" : "mixed-order" ,
"type" : "bfgs" ,
"gradientNorm" : 1e-8 ,
"maxIter" : 65 ,
}
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
"description" : "divide & conquer: Optimization" ,
"type" : "object" ,
"properties" : {
"tier1" : {
"description" : "1st level of classification tree: Optimization algorithms" ,
"type" : "string" ,
"const" : "optimization"
} ,
"tier2" : {
"description" : "2nd level of classification tree: optimization algorithms for differentiable functions" ,
"type" : "string" ,
"const" : "differentiable"
} ,
"tier3" : {
"description" : "3rd level of classification tree: mixed-order algorithms (e.g. quasi-Newton methods)" ,
"type" : "string" ,
"const" : "mixed-order"
} ,
"type" : {
"description" : "Broyden-Fletcher-Goldfarb-Shanno algorithm" ,
"type" : "string" ,
"const" : "bfgs"
} ,
"gradientNorm" : {
"description" : "Threshold for gradient norm (convergence criterion)" ,
"type" : "number" ,
"exclusiveMinimum" : 0 ,
"default" : 1e-7
} ,
"maxIter" : {
"description" : "Maximum number of iterations" ,
"type" : "integer" ,
"exclusiveMinimum" : 0 ,
"default" : 50
}
}
}
ここで適用した「分割と征服」戦略からすると、メソッドは単一のデータ構造ではなく、それらの集まりによって記述されるということになります。コレクションを表現するには複数の方法があります。たとえば、単純なリストや有向非循環グラフの形式で表現する方法です。
オントロジーコンテキストの追加 コンテキストを追加するには、オントロジーで定義されたタイプとプロパティに属性をマッピングする方法もあります。これに適した形式は JSON-LD (Linked Data) で、これにはデータにセマンティックなアノテーションを付けるための @context 属性が含まれています (国家情報交換モデルのプロジェクトページには素晴らしいものがあります)。 チュートリアル このため)。
上記の例の JSON-LD データ構造は次のようになります。
{
"@context" : "https://example.mat3ra.com/definitions/" ,
"method" : [
{
"@type" : "Optimization_BFGS" ,
"name" : "bfgs" ,
"gradientNorm" : 1e-8 ,
"maxIter" : 65
} ,
{
"@type" : "SCF_DIIS" ,
"name" : "diis" ,
"threshold" : 1e-5 ,
"maxIter" : 55 ,
"diisMaxSubspace" : 12
}
]
}
この場合の架空のオントロジーは、Optimization_BFGS と SCF_DIIS の派生元となる一般的なメソッドタイプを定義しています。一方、派生型には、親型の 1 つから継承された一般的な属性 (名前など) と、その型に固有の属性 (DIISMaxSubspace など) が含まれます。
この戦略の利点は、データ構造が最初のアプローチとそれほど変わらない場合でも、データ構造を大幅に変更せずにエンティティ間の定義と関係が含まれていることです。一方、オントロジーの設計と使用は、残念ながら簡単な作業ではありません。
サマリー データ標準を通じて再現性と AI への対応を実現することは、見過ごされがちな非常に複雑な作業です。ここでは、コミュニティからのさらなる議論を促進するために、このトピックへの取り組みについて私たちが考えていることをいくつか概説します。
私たちの取り組みの詳細については、以下をご覧ください。
そして、info@mat3ra.com までご連絡いただき、会話を続けてください!
さらに読む