Skip to main content

材料とは

材料 (Material) は、セル仕様で使用される物理材料を記述する再利用可能なレコードです。例えば、NMC811 正極粉末、グラファイト負極、LP57 電解液などです。 材料と、それをラップするセルコンポーネント(負極、正極、電解液、セパレータ、ケース)は、常にプロジェクトにスコープされます。すべての材料とコンポーネントはちょうど 1 つのプロジェクトに属し、セル仕様は自プロジェクト内の材料とコンポーネントのみを参照します。同じ組織内の 2 つのプロジェクトは、名前、製造元、製品 ID がまったく同じ「同一の」材料であっても、それぞれ独自のコピーを保持します。これにより、プロパティデータセットとセルからの参照はプロジェクトごとにきれいに分離されます。同じ材料を別のプロジェクトでも使いたい場合は、そのプロジェクトに一致する材料を新しく作成することになります。
プロジェクトごとのスコープが導入される前から存在していた古い材料は、すべてプロジェクトごとのコピーに分割されました。また、共有の「System」材料ライブラリ(Graphite、NMC、LFP など)はセル仕様の作成時に直接参照されなくなり、代わりにライブラリ定義があなた自身のプロジェクトにクローンされます。アプリのどこにもプロジェクトをまたがる材料共有は存在しません。
材料の一覧取得・作成には project_id が必須ですが、ID を指定した単一の材料の 取得・更新・削除は組織単位で認可されます — その組織内の材料にアクセスできる プロジェクトメンバーであれば、別のプロジェクトに属する材料であっても ID を 指定して参照・変更できます。
各材料には任意の数の プロパティデータセット を添付できます。プロパティデータセットは、1 つ以上の物理プロパティを 1 つ以上の独立変数の関数として表す表形式の測定(CSV または parquet)です。例えば、電解質導電率対濃度や、負極 OCP 対化学量論などです。プロパティデータセットは親材料と同じプロジェクトに属します。
プロパティデータセットはデータとして保存されます。ルックアップテーブルをパラメータ化モデルに直接埋め込むパラメータ補間子とは別物です。プロパティデータセットを使って生の測定を整理・共有し、シミュレーションで使用する準備ができたら補間子に変換してください。

材料の使いどころ

材料は次のような場合に使用します:
  • 複数のセル(例: 複数のセル構成における同じ電解液)にまたがって使用される材料のプロパティに関する単一の信頼できる情報源を維持したい。
  • 測定された材料と並べて、生の測定(OCP、拡散係数、導電率、輸率、…)を保存したい。
  • 同じプロパティの複数のデータセットを比較したい — 例えば、異なる温度や異なる研究室で測定された OCP カーブ。
  • 来歴を追跡したい: 誰が、いつ、どの生ファイルからデータセットをアップロードしたか。

UI で材料を管理する

各プロジェクトには左側のナビゲーションに Materials セクションがあります。そこで次のことが可能です:
  • 材料を作成する — 名前を付け、任意で製造元と製品 ID を指定します。
  • 材料を開く — プロパティデータセットとメタデータを表示します。
  • 行アクションメニューから材料を 編集または削除 します。
セル仕様エディタから作成された材料は、そのセル仕様のプロジェクトを引き継ぎます。そのため、通常はプロジェクトを明示的に選ぶ必要はなく、材料はそれを使用するセルと同じプロジェクトに作成されます。

プロパティデータセットのアップロード

材料の詳細ページから Upload property dataset をクリックして:
  1. ファイルを選択する — CSV または parquet。CSV はヘッダー行を含むことも省略することもできます。ファイルを選択するとデータセット名はファイル名から自動入力されます。別の名前にしたい場合は編集してください。
  2. データセット名を確認する — ステップ 1 でファイル名から自動入力されます。別の名前にしたい場合は変更してください(例: Conductivity at 25 °C)。
  3. 列を宣言する — ファイル内で検出されたすべての列が順番に表示されます。各列について次を提供します:
    • Name — 処理済みデータセットに格納される表示名(例: c_e)。送信前に表示されているすべての列に名前を付ける必要があります。インポートしたくない列はその行を削除するか、名前を付けて後で無視してください。末尾の空の列(Excel の「末尾のカンマ」アーティファクトでよくあります)は自動的にトリムされます。
    • Unit — 物理単位(例: mol/LS/m)。無次元量の場合は空白のままにします。
    • Source column — 値の取得元となるアップロードファイル内の列。ヘッダーなし CSV では位置です。ヘッダー付きのファイルでは名前で選択できます。
  4. 送信。 ファイルが解析され、すべての値が浮動小数点数に強制変換され(数値でないセルは NaN になります)、処理済み parquet と元の生ファイルの両方が保存されます。
アップロード後、データセットは材料のプロパティリストに、行数と列ごとの NaN カウントとともに表示され、解析の問題を素早く発見できます。

データセットのプロット

データセットをクリックすると plot ダイアログ が開きます。可能なこと:
  • データセットから x と y の列を選択します。凡例には各 y 列が単位付きで表示されるため(例: kappa (S/m))、デュアル軸のプロットも読みやすくなります。
  • ズームとパン: プロットは大きなデータセットでも反応性を保つように、表示範囲の点を動的にダウンサンプリングして再取得します。
  • アクションメニューから処理済み parquet または元の生ファイルをダウンロードします。

データセットの編集

データセットの Edit アクションでは次が可能です:
  • データセットの名前を変更します。
  • 列名と単位を再宣言します。列が変更されると、保存された元のファイルから新しい仕様で parquet が再構築されます。再アップロードは不要です。
  • 同じデータセット ID とメタデータを保持したままデータファイルを完全に置き換えます。データセットを参照する他のレコードはリンクされたままです。
データを変更する編集ごとにデータセットの data_version がインクリメントされるため、下流のコンシューマーはキャッシュされた結果が古くなったことを検出できます。

データセットのプロベナンスを追跡する

すべてのプロパティデータセットにはどこから来たかを記録できます。これにより、プロット上のカーブを、それを生成したパイプライン、フィット、または解析まで辿ることができます。あるいは、デジタル化した論文、実験ノート、ベンダーシートまで遡ることもできます。 プロベナンスは 4 つの任意フィールドで表現されます: 1 つのデータセットで設定できる source_*_id フィールドは 1 つまで です。1 つのデータセットは、上流の Ionworks レコードを 1 つだけ持つか、まったく持たないかのいずれかです。参照される行が存在しない場合、リクエストは拒否されます。ただしこのチェックは行の存在のみを確認し、あなたがその行を閲覧できるかどうかは検証しません — そのため、あなたからは通常見えないレコードの ID をソースとして設定すること自体は成功し、後でリンクを辿ろうとしたときにのみ未解決として表示されます。source_label は独立しており、単独で設定できます。ソースがリンク可能な Ionworks レコードでない場合はこちらを使ってください。 材料のデータセットグリッドの Source 列は、source_label が設定されていればそれを表示し、設定されていなければソースの種類を表示します。ソースが Studio で参照可能なパイプラインまたは解析に解決される場合は、ラベルがそのソースの詳細ページへのリンクになります。

UI でアップロードまたは編集時にソースを設定する

Upload property dataset ダイアログと Edit ダイアログには Source セクションがあります:
  1. ソースの種類 を選びます — Pipeline、Simple pipeline、Analysis のいずれか、あるいは「リンク可能なソースなし」の場合は空欄のままにします。
  2. 対応する ID を貼り付けます。種類を切り替えると、先に入力していた ID はクリアされ、複数のソースが同時に設定されることを防ぎます。
  3. 任意で ソースラベル を追加します — Source 列とデータセット詳細ビューに表示される、短い自由形式のメモです。

REST API でソースを設定する

データセットを作成または更新するときに、ソースフィールドの任意のサブセットを渡します。次の例は、あるパイプラインランで生成されたことを記録し、自由形式のラベルを追加しています:
既存のデータセットのプロベナンスを変更またはクリアするには、更新したいフィールドを PATCH します。ソース ID やラベルをクリアするには null を送信します:
Python クライアントおよび REST API から返される MaterialPropertyDataset レコードはいずれも同じ 4 つのフィールドを公開しているため、データセットが現れる任意の場所からプロベナンスを読み取れます:

Python クライアント

Python API クライアント は材料とそのプロパティデータセットを 2 つのサブクライアントとして公開します:
  • client.material — 材料の一覧取得と取得。
  • client.material_property_dataset — プロパティデータセットの一覧取得、取得、ダウンロード。
いずれのクライアントも読み取り専用です。材料やデータセットを作成・変更するには、UI または REST API を使用してください。

材料の一覧取得と取得

各材料は project_id を持ちます。list()project_id を渡すと、各材料に返される property_count もそのプロジェクトにスコープされます。

材料のプロパティデータセット一覧

MaterialPropertyDataset は、columnsnameunitsource_column_index を持つ ColumnSpec レコードのリスト)、編集ごとにインクリメントされる data_version、および列ごとの nan_counts を公開します。

データセット値のダウンロード

get_data() はデータセット全体をダウンロードし、設定された DataFrame バックエンド の DataFrame として返します:

REST API

材料プロパティデータセットは /material_property_datasets の下で管理されます。材料そのものは /materials の下で管理されます。

データセットのアップロード

POST /material_property_datasets は multipart フォームを受け入れます: 1 つのデータセットで設定できる source_*_id フィールドは 1 つまで です。プロベナンスが Ionworks 上のリンク可能なレコードではない場合(例: 「Smith et al. 2023 から手動でデジタル化」など)は、source_label だけを設定してください。詳しくはデータセットのプロベナンスを追跡するを参照してください。 各列仕様はオブジェクトです:
source_column_index はアップロードファイル内の列の 0 始まりの位置です。ファイルにヘッダー行がある場合でも必須です。名前は位置で照合された後、提供した name にリネームされます。 curl でのアップロード例:
レスポンスは新しいデータセットレコードで、idstorage_pathdata_version、列ごとの nan_counts を含みます。

材料のデータセット一覧

データセットレコードのページ分割されたリストを返します。

データセット値を JSON として取得する

データセットを列指向の JSON オブジェクトとして返します:
max_points は均一にダウンサンプリングするため、大きなデータセットでもプロットの反応性が保たれます。x_colx_minx_max はある列の範囲にレスポンスを制限します。チャートのズームに便利です。

元のファイルのダウンロード

GET /material_property_datasets/{id}/file を使ってファイル用の短命の署名付き URL にリダイレクトするか、GET /material_property_datasets/{id}/download-url で URL を JSON として受け取れます(ブラウザから開きたい場合に便利)。?kind=parquet(デフォルト)で処理済み parquet を、?kind=original でアップロードした生ファイルをダウンロードできます。

メタデータの更新、ファイルの置き換え、削除

関連項目

  • セル — 材料はセル仕様の負極、正極、電解液、セパレーター構成要素から参照されます。
  • パラメータ補間子 — 測定されたプロパティデータをパラメータ化モデル内のルックアップテーブルパラメータに変換します。
  • マテリアルデータセットからの電解液輸送 — プロパティデータセットから濃度依存の電解液輸送パラメータを構築し、パイプラインに投入します。
  • データの概要 — Ionworks Studio で実験データがどのように整理されるか。