mcpField
M
marine-carbonate-chemistry

marine-carbonate-chemistry

github.com/k-dense-aiデータ・データベース55.1k272 回インストール2 日前に更新
リポジトリ

marine-carbonate-chemistry について

Marine Carbonate Chemistryは、PyCO2SYSを使い、独立した2項目の測定値から海水の炭酸系を計算するPythonスキルです。指定条件での結果、鉱物飽和度、不確かさの伝播、計算の来歴を出力し、入力規約と適用範囲も明示します。

主な機能

  1. 01測定値のペアから炭酸系を計算
  2. 02pH、ガス諸量、飽和度の算出
  3. 03指定条件への結果換算
  4. 04申告された測定不確かさの伝播
  5. 05結果と計算来歴の出力

活用シーン

  1. 01海水ボトル試料や船上測定の解析
  2. 02酸性化実験における炭酸系条件の比較
  3. 03炭酸系計算結果の不確かさの推定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill marine-carbonate-chemistry

インストール後、Claude Code で/marine-carbonate-chemistryを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
chemistry-decisions.md
input-and-results.md
scripts/
solve_carbonate.py

詳細

海洋炭酸塩化学

2 つの独立した海水炭酸塩測定値を、再現可能なスペシエーションテーブル、鉱物飽和度推定値、および計算上の前提の記録に変換します。対象は PyCO2SYS 1.8.3.4 で、Python 3.13 および NumPy 2.5.3 でテストされています。2026-10-01 時点のレビューでは、これが安定版の PyPI リリースです。v2 ドキュメントは破壊的変更を含むベータ版向けです。この固定バージョンには v1 ドキュメントを使用してください。

使用する場面

  • ボトルサンプル、船上での炭酸塩測定、または酸性化実験を分析する場合。
  • 有効な測定ペアから、トータルスケール pH、海水 pCO2/fCO2、炭酸イオン、アラゴナイト/カルサイト飽和状態、または Revelle 因子を計算する場合。
  • 実験室条件で決定された系を、指定された海洋条件に変換する場合。
  • 記載された測定不確かさが計算結果にどのように影響するかを定量化する場合。

このワークフローは海水炭酸塩平衡を対象としています。淡水、十分に特性評価されていないアルカリ度を含む間隙水、選択した検量線範囲外のブライン、および反応/輸送モデルには、追加の化学的検討と検証が必要です。炭酸塩平衡のみから海気フラックスや大気中の炭素除去を推測しないでください。

測定契約を確立する

ソルバーを実行する前に、2 つの測定変数、その単位、品質フラグ、およびそれらの温度/圧力基準を特定してください。測点、深度、タイムスタンプ、手法、標準物質、および元の QC コードを含む別のソーステーブルをサンプル ID で結合して保持してください。欠損値や却下された測定値をゼロに変換しないでください。

量必要な規約
全アルカリ度(TA)、DIC、栄養塩海水 kg あたりのマイクロモル。リットルあたりや水 kg あたりではない
塩分実用塩分。g/kg の絶対塩分ではない
温度摂氏での現場/測定温度。ポテンシャル温度や保存温度ではない
圧力dbar 単位の海面圧力。表層サンプルは 1 気圧ではなく 0
pH宣言された測定条件における、トータル、海水、フリー、または NBS スケールのいずれか
pCO2 / fCO2マイクロ atm 単位の海水分圧 / フガシティ。これらは別個の量

TA と DIC は、閉じたサンプルに対するソルバーの温度/圧力変換中は一定のままです。pH とガスパラメータは変化します。異なる条件で測定された 2 つの入力は、単純に 1 つの temperature 値を共有することはできません。まず一貫した測定基準を確立してください。温度補正は、ガス交換、生物活動、蒸発、または鉱物の溶解/沈殿によって生じたサンプルの変化を修復しません。

2 つの独立した炭酸塩パラメータを使用してください。pCO2 と fCO2 は独立したペアではありません。3 つ以上の測定値があれば過剰決定チェックが可能になります。独立したペアを解き、予測値と測定された第 3 のパラメータをその不確かさも含めて比較してください。検量線やスケールの不一致を隠すために、矛盾する解を平均しないでください。

インストール

ユーザーの作業ディレクトリに専用の環境を作成します:

uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python "PyCO2SYS==1.8.3.4" "numpy==2.5.3"

Windows では、環境のインタープリタは .venv/Scripts/python.exe です。以下のコマンドは POSIX のインタープリタパスを使用しています。シェル変数 SKILL_DIR を、このインストールされたスキルのディレクトリに設定してください。入力と生成された出力は作業ディレクトリに保持してください。

ワークフロー

  1. ペア測定を準備します。 references/input-and-results.md のスキーマを使用してください。入力ファイルを作成する前に、単位と品質フラグを解決してください。リン酸塩とケイ酸塩は明示的に指定してください。ゼロは正当化すべき仮定であり、欠損値コードではありません。
  2. 平衡定数を選択します。 pH スケール、炭酸定数、ホウ酸塩、飽和の解釈、不確かさの限界については、 references/chemistry-decisions.md をお読みください。 研究で検証済みの慣例に合わせ、それを報告してください。ヘルパーは炭酸のオプション 10 と 15 をサポートしています。その他の系では、別途検証済みの直接的な PyCO2SYS 呼び出しが必要です。
  3. scripts/solve_carbonate.py で求解します。 このスクリプトは入力テーブル全体を検証し、ペアを解き、有限の出力と DIC 種のバランスをチェックしてから、carbonate.csv と provenance.json を新しい出力ディレクトリに書き込みます。
  4. フラグと整合性を確認します。 較正範囲とガス圧のフラグ、炭酸塩バランス、利用可能な場合は測定された第三パラメータの残差、およびコントロールを検査してください。求解が成功したからといって、サンプル、定数、測定手法が検証されるわけではありません。
  5. 意図した条件で報告します。 _out で終わる結果は、指定された出力温度・圧力を表します。接尾辞のない結果は入力条件を表します。ガスの結果は、ヘルパーの未補正の静水圧ガス慣例を保持します(以下を参照)。結果テーブルには、パラメータのペア、pH スケール、単位、定数、栄養塩の仮定、不確かさの範囲、ソフトウェアのバージョン、および除外・フラグ付きサンプルを含めてください。

実施例: 閉鎖サンプルの条件補正

以下の値は合成値であり、現場観測値ではありません。これを作業ディレクトリに samples.csv として保存してください。2 つのサンプルは DIC のみが異なります。2 つ目は、固定アルカリ度での CO2 添加比較を表します。それらの測定は 25 C、0 dbar で行われ、結果は 10 C、1000 dbar でも要求されています。

sample_id,par1,par2,salinity,temperature,pressure,total_phosphate,total_silicate,temperature_out,pressure_out,u_par1,u_par2
baseline,2300,2000,35,25,0,0,0,10,1000,2,2
added_co2,2300,2100,35,25,0,0,0,10,1000,2,2

その作業ディレクトリから実行します。

.venv/bin/python "$SKILL_DIR/scripts/solve_carbonate.py" samples.csv \
  --par1-type alkalinity --par2-type dic --k-carbonic 10 \
  --output-dir carbonate-results

ベースラインについて、テスト済みバージョンでは入力条件の全 pH 8.045886、pCO2 396.958 microatm、アラゴナイト飽和度 3.386201 が得られます。指定された出力条件では、全 pH は 8.241241、アラゴナイト飽和度は 2.605691 です。これらの丸められた値は、この正確な設定に対する回帰チェックであり、普遍的な海水のベンチマークではありません。TA と DIC のみに独立した 2 micromol/kg の不確かさがある場合、u_pH_total はおよそ 0.004580 です。これは平衡定数およびその他の入力の不確かさを除外しています。 両方の行は gas_pressure_correction_disabled_output を持ちます。出力 pH と鉱物飽和度には圧力効果が含まれますが、報告される pCO2/fCO2 には CO2 溶解度とフガシティへの静水圧補正が含まれません。これらのガス値を、圧力補正された海中センサー測定値と直接比較しないでください。

TA + 測定 pH の場合、--par2-type ph --ph-scale total は、ソースが全スケール pH を明示的に特定している場合にのみ使用してください。par2 と u_par2 を、測定された pH とその絶対標準不確かさに置き換えてください。単に pH と名付けられた列だけでは、そのスケールを確立するには不十分です。

不確かさと解釈

オプションの u_ 入力列には、絶対 1 標準偏差 の不確かさが含まれます。それらは、要求された各条件における全 pH、pCO2、アラゴナイト飽和度に伝播します。ヘルパーは誤差が独立であると仮定し、記載のない入力・定数は正確であるとして扱います。共分散、定数の不確かさ、または強い非線形の不確かさについては、意思決定ガイドに従い、これらの出力を完全な不確かさバジェットと呼ぶのではなく、あつらえた伝播を検証してください。

Omega < 1 は、名前を挙げた鉱物に対する熱力学的な未飽和を示します。それは溶解速度や生物の応答を確立するものではありません。対応の取れていないサンプル間でより低い pH が得られても、それ自体は人為的な酸性化トレンドの証拠にはなりません。

出典と検証の範囲

リポジトリのテストでは、固定されたソルバー、独立ペアのラウンドトリップ、炭素収支、 pH スケールの等価性、条件補正、Revelle 因子の導関数、ガス圧の 規約、不確かさの求積、CSV のエラー、および実例を検証します。ヘルパーは ローカルの pyco2.sys Python API を呼び出します。HTTP エンドポイントや認証はありません。テストが確立するのは ソフトウェアの動作であり、独立したフィールドデータの検証ではありません。上流の検証ページには 削除された pyco2.test インターフェースを含む歴史的な例も掲載されています。

コメント